r = game:GetService("RunService")
ching = false
sword = script.Parent.Handle
Tool = script.Parent
script.Parent.ToolTip = "Base damage: " .. script.Parent.MinDmg.Value .. "-" .. script.Parent.MaxDmg.Value .. " | Critical damage: " .. (script.Parent.CritMagnitude.Value/100).. "x"
function blow(hit)
if ching == true then return end
local humanoid = hit.Parent:FindFirstChild("Human")
local vCharacter = game.Players.LocalPlayer.Character
local vPlayer = game.Players.LocalPlayer
if humanoid~=nil then
ching = true
--print("SWORD HIT")
tagHumanoid(humanoid, vPlayer)
local damage = math.random(script.Parent.MinDmg.Value+math.floor(vPlayer.attributes.Strength.Value/2),script.Parent.MaxDmg.Value+math.floor(vPlayer.attributes.Strength.Value/2))+math.floor(vPlayer.leaderstats.Lvl.Value/5)
local hitroll = math.random(1, 100)
local critroll = math.random(1, 100)
--Hit and critical modifier.
if hitroll > Game.Workspace.GAME_PROPERTIES.BaseHitChance.Value + (vPlayer.attributes.Dexterity.Value * (Game.Workspace.GAME_PROPERTIES.HitChanceDexMagnitude.Value/100)) then
damage = 0
end
if critroll <= Game.Workspace.GAME_PROPERTIES.BaseCritChance.Value + (vPlayer.attributes.Dexterity.Value * (Game.Workspace.GAME_PROPERTIES.CritChanceDexMagnitude.Value/100)) then
damage = damage * (script.Parent.CritMagnitude.Value / 100) -- Percentage.
end
--Enemy health bar GUI
if vPlayer.PlayerGui:FindFirstChild("EnemyInfo") ~= nil and humanoid.Health > 0 then
vPlayer.PlayerGui:FindFirstChild("EnemyInfo").EnemyBar.TickUntilRemove.Value = 125
else
GUI = Game.ReplicatedStorage.EnemyInfo:Clone()
GUI.EnemyBar.Tag.Value = humanoid.Parent
GUI.Parent = vPlayer.PlayerGui
end
--Damages humanoid
humanoid:TakeDamage(damage)
--Floating damage text
local part = Instance.new("BillboardGui")
part.Size = UDim2.new(0,50,0,100)
part.StudsOffset = Vector3.new(0,2,0)
local part2 = Instance.new("TextLabel")
dt = Game.ReplicatedStorage.DynamicText:Clone()
part2.Font = "SourceSansBold"
part2.FontSize = "Size24"
part2.TextStrokeTransparency = 0
part2.Size = UDim2.new(1,0,1,0)
part2.Position = UDim2.new(0,0,0,0)
part2.BackgroundTransparency = 1
part2.Parent = part
dt.Parent = part2
dt.Disabled = false
part.Parent = humanoid.Parent.Head
part.Adornee = part.Parent
--Shows text depending on conditions. Tells either miss or number.
if (damage == 0) then
part2.TextColor3 = Color3.new(0,0.5,1)
part2.Text = "Miss!"
else
part2.TextColor3 = Color3.new(1,1,1)
if critroll <= Game.Workspace.GAME_PROPERTIES.BaseCritChance.Value + (vPlayer.attributes.Dexterity.Value * (Game.Workspace.GAME_PROPERTIES.CritChanceDexMagnitude.Value/100)) then
part2.TextColor3 = Color3.new(1,1,0)
part2.FontSize = "Size36"
part2.Text = ""..damage.."!"
else
part2.Text = ""..damage..""
end
end
wait(.75)
ching = false
wait(.1)
untagHumanoid(humanoid)
end
end
function tagHumanoid(humanoid, player)
local creator_tag = Instance.new("ObjectValue")
creator_tag.Value = player
creator_tag.Name = "creator"
creator_tag.Parent = humanoid
end
function untagHumanoid(humanoid)
if humanoid ~= nil then
local tag = humanoid:findFirstChild("creator")
if tag ~= nil then
tag.Parent = nil
end
end
end
function attack()
anim = Tool.Parent.Humanoid:LoadAnimation(script.Parent.Slash)
anim:Play()
end
Tool.Enabled = true
function onActivated()
if not Tool.Enabled then return end
Tool.Enabled = false
local character = Tool.Parent
local humanoid = character.Humanoid
if humanoid == nil then print("Humanoid not found") return end
attack()
wait(1)
Tool.Enabled = true
end
function onEquipped()
end
script.Parent.Activated:connect(onActivated)
script.Parent.Equipped:connect(onEquipped)
connection = sword.Touched:connect(blow)
After a while the swords stop doing damage. This is also a local script

1 comment
Usually happens when a player switches weapons