Skip to content

Commit

Permalink
Update automatonweaponskills.lua
Browse files Browse the repository at this point in the history
Solve issue where automaton ws could crash the server under certain cirscustamces
  • Loading branch information
Sennar1593 authored May 21, 2024
1 parent 4d603c1 commit a663f09
Showing 1 changed file with 16 additions and 20 deletions.
36 changes: 16 additions & 20 deletions scripts/globals/automatonweaponskills.lua
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
-- Uses a mixture of mob and player WS formulas
require("scripts/globals/weaponskills")
require("scripts/globals/magicburst")
require("scripts/globals/status")
require("scripts/globals/utils")
require("scripts/globals/magic")
require("scripts/globals/msg")
require('scripts/globals/weaponskills')
require('scripts/globals/magicburst')
require('scripts/globals/utils')
require('scripts/globals/magic')

-- TODO: Consolidate this with weaponskills
xi = xi or {}
xi.autows = xi.autows or {}

local function getAutoHitRate(attacker, defender, capHitRate, bonus, melee)
local acc = (melee and attacker:getACC() or attacker:getRACC()) + (bonus or 0)
Expand Down Expand Up @@ -163,14 +165,10 @@ local function getMeleeCRatio(attacker, defender, params, ignoredDef)
return pdif, pdifcrit
end

-- params contains: ftp100, ftp200, ftp300, str_wsc, dex_wsc, vit_wsc, int_wsc, mnd_wsc, canCrit, crit100, crit200, crit300, acc100, acc200, acc300, ignoresDef, ignore100, ignore200, ignore300, atkmulti, kick, accBonus, weaponType, weaponDamage
function doAutoPhysicalWeaponskill(attacker, target, wsID, tp, primaryMsg, action, taChar, wsParams, skill)
-- params contains: ftpMod, str_wsc, dex_wsc, vit_wsc, int_wsc, mnd_wsc, critVaries, accVaries, ignoredDefense, atkmulti, kick, accBonus, weaponType, weaponDamage
xi.autows.doAutoPhysicalWeaponskill = function(attacker, target, wsID, tp, primaryMsg, action, taChar, wsParams, skill)
-- Determine cratio and ccritratio
local ignoredDef = 0
if wsParams.ignoresDef ~= nil and wsParams.ignoresDef then
ignoredDef = xi.weaponskills.calculatedIgnoredDef(tp, target:getStat(xi.mod.DEF), wsParams.ignored100, wsParams.ignored200, wsParams.ignored300)
end

local ignoredDef = xi.weaponskills.calculatedIgnoredDef(tp, target:getStat(xi.mod.DEF), wsParams.ignoredDefense)
local cratio, ccritratio = getMeleeCRatio(attacker, target, wsParams, ignoredDef)

-- Set up conditions and wsParams used for calculating weaponskill damage
Expand All @@ -188,6 +186,7 @@ function doAutoPhysicalWeaponskill(attacker, target, wsID, tp, primaryMsg, actio
}

local calcParams = {}
calcParams.wsID = wsID
calcParams.weaponDamage = xi.weaponskills.getMeleeDmg(attacker, attack.weaponType, wsParams.kick)
calcParams.attackInfo = attack
calcParams.fSTR = utils.clamp(attacker:getStat(xi.mod.STR) - target:getStat(xi.mod.VIT), -10, 10)
Expand Down Expand Up @@ -252,14 +251,10 @@ function doAutoPhysicalWeaponskill(attacker, target, wsID, tp, primaryMsg, actio
return finaldmg, calcParams.criticalHit, calcParams.tpHitsLanded, calcParams.extraHitsLanded, calcParams.shadowsAbsorbed
end

-- params contains: ftp100, ftp200, ftp300, str_wsc, dex_wsc, vit_wsc, int_wsc, mnd_wsc, canCrit, crit100, crit200, crit300, acc100, acc200, acc300, ignoresDef, ignore100, ignore200, ignore300, atkmulti, accBonus, weaponDamage
function doAutoRangedWeaponskill(attacker, target, wsID, wsParams, tp, primaryMsg, skill, action)
-- params contains: ftpMod, str_wsc, dex_wsc, vit_wsc, int_wsc, mnd_wsc, critVaries, accVaries, ignoredDefense, atkmulti, accBonus, weaponDamage
xi.autows.doAutoRangedWeaponskill = function(attacker, target, wsID, wsParams, tp, primaryMsg, skill, action)
-- Determine cratio and ccritratio
local ignoredDef = 0
if wsParams.ignoresDef ~= nil and wsParams.ignoresDef then
ignoredDef = xi.weaponskills.calculatedIgnoredDef(tp, target:getStat(xi.mod.DEF), wsParams.ignored100, wsParams.ignored200, wsParams.ignored300)
end

local ignoredDef = xi.weaponskills.calculatedIgnoredDef(tp, target:getStat(xi.mod.DEF), wsParams.ignoredDefense)
local cratio, ccritratio = getRangedCRatio(attacker, target, wsParams, ignoredDef)

-- Set up conditions and wsParams used for calculating weaponskill damage
Expand All @@ -280,6 +275,7 @@ function doAutoRangedWeaponskill(attacker, target, wsID, wsParams, tp, primaryMs

local calcParams =
{
wsID = wsID,
weaponDamage = { wsParams.weaponDamage or rangedDamage },
attackInfo = attack,
fSTR = utils.clamp(attacker:getStat(xi.mod.STR) - target:getStat(xi.mod.VIT), -10, 10),
Expand Down

0 comments on commit a663f09

Please sign in to comment.