This repository has been archived on 2026-04-30. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
Tortuga/misc/combat damage.lua
T
2014-05-24 00:25:25 +10:00

74 lines
1.3 KiB
Lua

--NOTE: This is the outline for the final combat system
--enumeration
hitType = { MISS = 1, HIT = 2, CRITICAL = 3 }
attackType = { PHYSICAL = 1, MAGICAL = 2 }
function MakeChar()
local t = {}
t.MaxHP = 100
t.HP = t.MaxHP
t.MaxMP = 100
t.MP = t.MaxMP
t.attack = 10
t.defence = 10
t.intelligence = 10
t.resistance = 10
t.accuracy = 0.9
t.evasion = 0.1
t.luck = 0.1
t.level = 1
return t
end
function CheckHit(A, D)
local RNG = math.random(100)
local hitRate = (A.accuracy - A.accuracy * D.evasion) * 100
if RNG <= hitRate * A.luck then
return hitType.CRITICAL
end
if RNG <= hitRate then
return hitType.HIT
end
return hitType.MISS
end
function CalcDamage(A, D, t)
-- if t == attackType.PHYSICAL then
--TODO: test min & max of the rng
--TODO: overall, this needs tweaking for balance
return math.max(1, ( A.attack*3 + A.attack*(math.random(A.luck*100)/10) ) - (D.defence + D.defence*D.evasion))
-- end
-- if t == attackType.MAGICAL then
-- --??
-- end
-- --wtf?
end
A = MakeChar()
D = MakeChar()
dump = io.open("dump.txt", "w")
--top
dump:write("\t\t")
for i = 10, 100, 10 do
dump:write(i, "\t")
end
dump:write("\n\n")
--lines
for j = 10, 100, 10 do
dump:write(j, "\t\t")
for i = 10, 100, 10 do
A.attack = i
D.defence = j
dump:write(CalcDamage(A, D, 0), "\t")
end
dump:write("\n")
end
--bottom
dump:write("\n")
dump:close()