Skip to content

Commit

Permalink
Merge pull request #6145 from WinterSolstice8/add_storetp_subtle_blow…
Browse files Browse the repository at this point in the history
…_to_spells

[lua, core] Apply subtle blow, inhibit tp, dAGI, store tp to spells
  • Loading branch information
claywar authored Aug 23, 2024
2 parents adfc1a3 + c0dcdef commit e58c569
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 20 deletions.
15 changes: 9 additions & 6 deletions scripts/globals/bluemagic.lua
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,7 @@ xi.spells.blue.usePhysicalSpell = function(caster, target, spell, params)

params.offcratiomod = params.offcratiomod * (caster:getMerit(xi.merit.PHYSICAL_POTENCY) + 100) / 100
params.bonusacc = params.bonusacc == nil and 0 or params.bonusacc
params.tphitslanded = 0

-- params.critchance will only be non-nil if base critchance is passed from spell lua
local nativecrit = xi.combat.physical.calculateSwingCriticalRate(caster, target, 0, false)
Expand All @@ -240,7 +241,6 @@ xi.spells.blue.usePhysicalSpell = function(caster, target, spell, params)
spell:isAoE() == 0 and
params.attackType ~= xi.attackType.RANGED) and
caster:getTrickAttackChar(target) or nil

while hitsdone < params.numhits do
local chance = math.random()

Expand Down Expand Up @@ -271,9 +271,9 @@ xi.spells.blue.usePhysicalSpell = function(caster, target, spell, params)
hitslanded = hitslanded + 1
sneakIsApplicable = false

-- increment target's TP (100TP per hit landed)
-- Store number of hits that did > 0 damage
if finaldmg > 0 then
target:addTP(100)
params.tphitslanded = params.tphitslanded + 1
end
end

Expand Down Expand Up @@ -422,9 +422,10 @@ xi.spells.blue.applySpellDamage = function(caster, target, spell, dmg, params, t
dmg = 0
end

dmg = dmg * xi.settings.main.BLUE_POWER
local attackType = params.attackType or xi.attackType.NONE
local damageType = params.damageType or xi.damageType.NONE
dmg = dmg * xi.settings.main.BLUE_POWER
local attackType = params.attackType or xi.attackType.NONE
local damageType = params.damageType or xi.damageType.NONE
local extraTPGained = xi.combat.tp.calculateTPGainOnMagicalDamage(dmg, caster, target) * math.max(params.tphitslanded - 1, 0) -- Calculate extra TP gained from multihits. takeSpellDamage accounts for one already.

-- handle MDT, One For All, Liement
if attackType == xi.attackType.MAGICAL then
Expand All @@ -433,6 +434,7 @@ xi.spells.blue.applySpellDamage = function(caster, target, spell, dmg, params, t

if dmg < 0 then
target:takeSpellDamage(caster, spell, dmg, attackType, damageType)
target:addTP(extraTPGained)
-- TODO: verify Afflatus/enmity from absorb?
return dmg
end
Expand All @@ -452,6 +454,7 @@ xi.spells.blue.applySpellDamage = function(caster, target, spell, dmg, params, t
dmg = target:checkDamageCap(dmg)

target:takeSpellDamage(caster, spell, dmg, attackType, damageType)
target:addTP(extraTPGained)

if not target:isPC() then
if trickAttackTarget then
Expand Down
5 changes: 0 additions & 5 deletions scripts/globals/magic.lua
Original file line number Diff line number Diff line change
Expand Up @@ -476,11 +476,6 @@ function finalMagicAdjustments(caster, target, spell, dmg)

-- Handle Enmity.
target:updateEnmityFromDamage(caster, dmg)

-- Only add TP if the target is a mob
if target:getObjType() ~= xi.objType.PC and dmg > 0 then
target:addTP(100)
end
end

return dmg
Expand Down
5 changes: 0 additions & 5 deletions scripts/globals/spells/damage_spell.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1044,11 +1044,6 @@ xi.spells.damage.useDamageSpell = function(caster, target, spell)
-- Handle Enmity.
target:updateEnmityFromDamage(caster, finalDamage)

-- Only add TP if the target is a mob and if the spell actually does damage.
if target:getObjType() ~= xi.objType.PC and finalDamage > 0 then
target:addTP(100)
end

-- Add "Magic Burst!" message
if magicBurst > 1 then
spell:setMsg(xi.msg.basic.MAGIC_BURST_DAMAGE)
Expand Down
11 changes: 7 additions & 4 deletions src/map/utils/battleutils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2559,7 +2559,7 @@ namespace battleutils
PDefender->takeDamage(damage, PAttacker, attackType, damageType);

// Remove effects from damage
if (PSpell->canTargetEnemy() && damage > 0 && PSpell->dealsDamage())
if (PSpell->canTargetEnemy() && damage > 0)
{
PDefender->StatusEffectContainer->DelStatusEffectsByFlag(EFFECTFLAG_DAMAGE);

Expand All @@ -2570,9 +2570,12 @@ namespace battleutils
int16 tp = battleutils::CalculateSpellTP(PAttacker, PSpell);
PAttacker->addTP(tp);

// Targets of damaging spells gain 50 tp + store tp bonus
float storeTPMultiplier = 1.0f + 0.01f * static_cast<float>(PDefender->getMod(Mod::STORETP) + getStoreTPbonusFromMerit(PDefender));
PDefender->addTP(static_cast<int16>(50 * storeTPMultiplier));
// Targets of damaging spells gain TP
auto tpGainFunc = lua["xi"]["combat"]["tp"]["calculateTPGainOnMagicalDamage"];
if (tpGainFunc.valid())
{
PDefender->addTP(tpGainFunc(damage, CLuaBaseEntity(PAttacker), CLuaBaseEntity(PDefender)));
}
}

return damage;
Expand Down

0 comments on commit e58c569

Please sign in to comment.