1
Fork 0
mirror of https://bitbucket.org/Ioncannon/project-meteor-server.git synced 2025-04-20 19:57:46 +00:00
project-meteor-server/data/scripts/weaponskill.lua
yogurt c5ce2ec771 Combat additions
Added formulas for base EXP gain and chain experience
Added basic scripts for most player abilities and effects
Added stat gains for some abilities
Changed status flags
Fixed bug with player death
Fixed bug where auto attacks didnt work when not locked on
Added traits
2018-04-18 16:06:41 -05:00

62 lines
No EOL
2.3 KiB
Lua

-- todo: add enums for status effects in global.lua
--require("global")
require("battleutils")
--[[
statId - see BattleTemp.cs
modifier - Modifier.Intelligence, Modifier.Mind (see Modifier.cs)
multiplier -
]]
function CalculateDamage(caster, target, skill, action)
--http://forum.square-enix.com/ffxiv/threads/36412-STR-PIE-ATK-Testing/page2
--DRG numbers
--Against Level 52 Halberdiers:
--0.8 damage/STR. Caps at 350
--0.67=0.69 damage/PIE. Hard cap at 310
--0.35-0.37 damage/ATK for both AA and WS.
--^ Old?
--http://prestigexiv.guildwork.com/forum/threads/4fecdc94205cb248b5000526-dragoon-and-other-dd-dpsbase-damage-study?page=1#4fecdc94205cb248b5000525
--10/09/2012 http://forum.square-enix.com/ffxiv/threads/55291-DPS-Testing/page4
-- 1 point prim: 0.8 damage
-- ATK: .1% damage? .38 damage?
--Possible formula for melee?:
--local strCap = CalculateCapOfWeapon(caster.getweapon)<- not sure how this is calculated yet, just an example
--local secondaryCap = CalculateSecondaryCapOfWeapon(caster.getweapon)
--local cappedStr = math.min(caster.GetMod(modifiersGlobal.Strength), strCap);
--local cappedSec = math.min(caster.GetMod(caster.secondaryStat), secCap);
--local damageBase = skill.basePotency + (0.85 * cappedStr) + (0.65 * cappedSec);
--The maximum deviation for weaponskills is ~8%.
--local dev = 0.96 + (math.random() * 8);
--damageBase = math.Clamp(damageBase * dev, 1, 9999);
--return damageBase;
return 100;
end
function HandleHealingSkill(caster, target, skill, action, statId, modifierId, multiplier, baseAmount)
potency = potency or 1.0;
healAmount = baseAmount;
-- todo: shit based on mnd
local mind = caster.GetMod(Modifier.Mind);
end;
function HandleAttackSkill(caster, target, skill, action, statId, modifierId, multiplier, baseAmount)
-- todo: actually handle this
damage = baseAmount or math.random(1,10) * 10;
return damage;
end;
function HandleStoneskin(caster, target, skill, action, statId, modifierId, damage)
--[[
if target.statusEffects.HasStatusEffect(StatusEffect.Stoneskin) then
-- todo: damage reduction
return true;
end;
]]
return false;
end;