Script fixes and new effects.

Cleaned up unneeded requires in some scripts
Fixed Second Wind
Added new effect scripts
Added bard song scripts that mostly work
This commit is contained in:
yogurt 2018-06-25 23:36:18 -05:00
parent ace4dfe58f
commit c442dc9ecd
72 changed files with 524 additions and 171 deletions

View File

@ -0,0 +1,5 @@
function onEventStarted(player, command, triggerName, arg1, arg2, arg3, arg4, targetActor, arg5, arg6, arg7, arg8)
player.Cast(command.actorId, targetActor);
player:endEvent();
end

View File

@ -0,0 +1,19 @@
require("global");
require("ability");
function onAbilityPrepare(caster, target, ability)
return 0;
end;
function onAbilityStart(caster, target, ability)
return 0;
end;
function onSkillFinish(caster, target, skill, action, actionContainer)
--Only the bard gets the Battle Voice effect
if caster == target then
actionContainer.AddAction(caster.statusEffects.AddStatusForBattleAction(223253, 1, 0, 30));
end
action.DoAction(caster, target, skill, actionContainer);
end;

View File

@ -26,7 +26,7 @@ function onSkillFinish(caster, target, skill, action, actionContainer)
caster.AddMP(amount); caster.AddMP(amount);
actionContainer.AddMPAction(caster.actorId, 30321, amount); actionContainer.AddMPAction(caster.actorId, 33007, amount);
actionContainer.AddAction(remAction); actionContainer.AddAction(remAction);
else else
--Blissful mind takes 25% of CURRENT HP and begins storing MP up to that point, at which point the buff changes to indicate its full --Blissful mind takes 25% of CURRENT HP and begins storing MP up to that point, at which point the buff changes to indicate its full

View File

@ -17,7 +17,8 @@ function onSkillFinish(caster, target, skill, action, actionContainer)
coverTier = 2; coverTier = 2;
end end
actionContainer.AddAction(caster.statusEffects.AddStatusForBattleAction(223063, coverTier)); actionContainer.AddAction(caster.statusEffects.AddStatusForBattleAction(223063, coverTier, skill.statusDuration));
--Apply Covered to target
action.DoAction(caster, target, skill, actionContainer); action.DoAction(caster, target, skill, actionContainer);
end; end;

View File

@ -0,0 +1,17 @@
require("global");
require("ability");
require("modifiers");
function onAbilityPrepare(caster, target, ability)
return 0;
end;
function onAbilityStart(caster, target, ability)
return 0;
end;
function onSkillFinish(caster, target, skill, action, actionContainer)
--Take off 1/3 of attack delay. Not sure if this is the exact amount HF reduces by
action.statusMagnitude = 0.33 * caster.GetMod(modifiersGlobal.AttackDelay);
action.DoAction(caster, target, skill, actionContainer);
end;

View File

@ -0,0 +1,15 @@
require("global");
require("ability");
function onAbilityPrepare(caster, target, ability)
return 0;
end;
function onAbilityStart(caster, target, ability)
return 0;
end;
function onSkillFinish(caster, target, skill, action, actionContainer)
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
end;

View File

@ -1,5 +1,6 @@
require("global"); require("global");
require("modifiers"); require("modifiers");
require("utils")
--require("ability"); --require("ability");
function onAbilityPrepare(caster, target, ability) function onAbilityPrepare(caster, target, ability)
@ -20,9 +21,11 @@ end;
-- An additional random integer (580 at level 50. +/- 3%) -- An additional random integer (580 at level 50. +/- 3%)
function onSkillFinish(caster, target, skill, action, actionContainer) function onSkillFinish(caster, target, skill, action, actionContainer)
--Base amount seems to be 0.215x^2 - 0.35x + 60 --Base amount seems to be 0.215x^2 - 0.35x + 60
--^ this isn't totally correct
local amount = (0.215 * math.pow(caster.GetLevel(), 2)) - (0.35 * caster.GetLevel()) + 60; local amount = (0.215 * math.pow(caster.GetLevel(), 2)) - (0.35 * caster.GetLevel()) + 60;
--Heals can vary by up to 3%
amount = math.Clamp(amount * (0.97 + (math.rand() * 3.0)), 0, 9999); --Heals can vary by up to 3.5%
amount = math.Clamp(amount * (0.965 + (math.random() * 0.07)), 0, 9999);
--PGL gets an INT bonus for Second Wind --PGL gets an INT bonus for Second Wind
if caster.GetClass() == 2 then if caster.GetClass() == 2 then
@ -34,6 +37,7 @@ function onSkillFinish(caster, target, skill, action, actionContainer)
amount = amount * 1.25; amount = amount * 1.25;
end; end;
action.amount = amount;
--DoAction handles rates, buffs, dealing damage --DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer); action.DoAction(caster, target, skill, actionContainer);
end; end;

View File

@ -1,15 +1,58 @@
require("global"); require("global");
require("magic"); require("magic");
function onMagicPrepare(caster, target, spell) function onMagicPrepare(caster, target, skill)
return 0; return 0;
end; end;
function onMagicStart(caster, target, spell) function onMagicStart(caster, target, skill)
return 0; --Ballad gives 20 MP a tick at 50
--BV gives 40 MP per tick
--Formula seems to be 0.8 * level - 20, not sure why BV gives 71 at 50 then
local mpPerTick = (0.8 * caster.GetLevel()) - 20;
--8032705: Choral Shirt: Enhances Ballad of Magi
--With Choral Shirt, Ballad gives 26 mp a tick. It could be a flat 6 or multiply by 1.3
--Because minuet seemed like a normal addition I'm assuming this is too
local shirt = caster.GetEquipment().GetItemAtSlot(10);
if shirt and shirt.itemId == 8032705 then
mpPerTick = mpPerTick + 6;
end
--223253: Battle Voice
--Battle Voice doubles effect of songs
if caster.statusEffects.HasStatusEffect(223253) then
mpPerTick = mpPerTick * 2;
--Set status tier so we can check it later when BV falls off
skill.statusTier = 2;
end
skill.statusMagnitude = mpPerTick;
end; end;
function onSkillFinish(caster, target, skill, action, actionContainer) function onSkillFinish(caster, target, skill, action, actionContainer)
--223224: Swiftsong
--223255: Paeon of War
--223256: Minuet of Rigor
--
local oldSong;
local swiftSong = target.statusEffects.GetStatusEffectById(223224);
local paeon = target.statusEffects.GetStatusEffectById(223255);
local minuet = target.statusEffects.GetStatusEffectById(223256);
if swiftSong and swiftSong.GetSource() == caster then
oldSong = swiftSong;
elseif paeon and paeon.GetSource() == caster then
oldSong = paeon;
elseif minuet and minuet.GetSource() == caster then
oldSong = minuet;
elseif ballad and ballad.GetSource() == caster then
oldSong = ballad;
end
if oldSong then
target.statusEffects.RemoveStatusEffect(oldSong);
end
--DoAction handles rates, buffs, dealing damage --DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer); action.DoAction(caster, target, skill, actionContainer);
end; end;

View File

@ -1,15 +1,56 @@
require("global"); require("global");
require("magic"); require("magic");
function onMagicPrepare(caster, target, spell) function onMagicPrepare(caster, target, skill)
return 0; return 0;
end; end;
function onMagicStart(caster, target, spell) function onMagicStart(caster, target, skill)
return 0; --Miuet gives 35 ACC/MACC by default at level 50. Minuet does scale with level
--BV apparetnly gives 71 ACc/MACC
--Formula seems to be level - 15, not sure why BV gives 71 at 50 then
local acc = caster.GetLevel() - 15;
--8071405: Choral Ringbands: Enhances Minuet of Rigor
--With Choral Tights, Minuet gives 60 ACC/MACC at 50. Unsure what it is at lower levels (ie if it's a flat added 25 MP or a multiplier)
--Assuming it's a flat 25 because that makes more sense than multiplying by 1.714
local gloves = caster.GetEquipment().GetItemAtSlot(13);
if gloves and gloves.itemId == 8071405 then
acc = acc + 25;
end
--223253: Battle Voice
--Battle Voice doubles effect of songs
if caster.statusEffects.HasStatusEffect(223253) then
acc = acc * 2;
--Set status tier so we can check it later when BV falls off
skill.statusTier = 2;
end
skill.statusMagnitude = acc;
end; end;
function onSkillFinish(caster, target, skill, action, actionContainer) function onSkillFinish(caster, target, skill, action, actionContainer)
--223224: Swiftsong
--223254: Ballad Of Magi
--223255: Paeon of War
--If target has one of these effects that was from this caster, remove it
local oldSong;
local swiftSong = target.statusEffects.GetStatusEffectById(223224);
local ballad = target.statusEffects.GetStatusEffectById(223254);
local paeon = target.statusEffects.GetStatusEffectById(223255);
if swiftSong and swiftSong.GetSource() == caster then
oldSong = swiftSong;
elseif ballad and ballad.GetSource() == caster then
oldSong = ballad;
elseif paeon and paeon.GetSource() == caster then
oldSong = paeon;
end
if oldSong then
target.statusEffects.RemoveStatusEffect(oldSong);
end
--DoAction handles rates, buffs, dealing damage --DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer); action.DoAction(caster, target, skill, actionContainer);
end; end;

View File

@ -1,15 +1,54 @@
require("global"); require("global");
require("magic"); require("magic");
function onMagicPrepare(caster, target, spell) function onMagicPrepare(caster, target, skill)
return 0; return 0;
end; end;
function onMagicStart(caster, target, spell) function onMagicStart(caster, target, skill)
return 0; --Restores 50 TP/tick normally. With Choral Tights it's 60 TP. With Battle voice it's 100, 120 with Coral Tights.
--Battle voice is handled in the Battle Voice script
--Paeon does not scale with level
local tpPerTick = 50;
--8051405: Choral Tights: Enhances Paeon Of War
local pants = caster.GetEquipment().GetItemAtSlot(12);
if pants and pants.itemId == 8051405 then
tpPerTick = 60;
end
--223253: Battle Voice
--Battle Voice doubles effect of songs
if caster.statusEffects.HasStatusEffect(223253) then
tpPerTick = tpPerTick * 2;
--Set status tier so we can check it later when BV falls off
skill.statusTier = 2;
end
skill.statusMagnitude = tpPerTick;
end; end;
function onSkillFinish(caster, target, skill, action, actionContainer) function onSkillFinish(caster, target, skill, action, actionContainer)
--223224: Swiftsong
--223254: Ballad Of Magi
--223256: Minuet of Rigor
--If target has one of these effects that was from this caster, remove it
local oldSong;
local swiftSong = target.statusEffects.GetStatusEffectById(223224);
local ballad = target.statusEffects.GetStatusEffectById(223254);
local minuet = target.statusEffects.GetStatusEffectById(223256);
if swiftSong and swiftSong.GetSource() == caster then
oldSong = swiftSong;
elseif ballad and ballad.GetSource() == caster then
oldSong = ballad;
elseif minuet and minuet.GetSource() == caster then
oldSong = minuet;
end
if oldSong then
target.statusEffects.RemoveStatusEffect(oldSong);
end
--DoAction handles rates, buffs, dealing damage --DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer); action.DoAction(caster, target, skill, actionContainer);
end; end;

View File

@ -8,11 +8,11 @@ end;
function onMagicStart(caster, target, spell) function onMagicStart(caster, target, spell)
--27363: Enhanced Raise: No longer inflicts weakness. --27363: Enhanced Raise: No longer inflicts weakness.
if caster.HasTrait(27363) then if caster.HasTrait(27363) then
ability.statusTier = 2; ability.statusId = 0;
end end
return 0; return 0;
end; end;
--Not sure how raise works yet.
function onSkillFinish(caster, target, skill, action, actionContainer) function onSkillFinish(caster, target, skill, action, actionContainer)
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
end; end;

View File

@ -1,10 +1,8 @@
require("global")
require("modifiers") require("modifiers")
require("hiteffect")
require("utils") require("utils")
--Forces a full block (0 damage taken) --Forces a full block (0 damage taken)
function onPreAction(caster, target, effect, skill, action, actionContainer) function onPreAction(effect, caster, target, skill, action, actionContainer)
--If action hit from the rear and is a weaponskill ation --If action hit from the rear and is a weaponskill ation
action.blockRate = 100.0; action.blockRate = 100.0;
end; end;

View File

@ -1,8 +1,10 @@
require("modifiers")
--Doesn't do flat damage. 20 on Lv 50 Truffle Hog, 11 on Coincounter, 7 on nael hard, 19 on 52 fachan --Doesn't do flat damage. 20 on Lv 50 Truffle Hog, 11 on Coincounter, 7 on nael hard, 19 on 52 fachan
function onGain(target, effect) function onGain(owner, effect)
owner.AddMod(modifiersGlobal.RegenDown, effect.GetMagnitude()); owner.AddMod(modifiersGlobal.RegenDown, effect.GetMagnitude());
end; end;
function onLose(target, effect) function onLose(owner, effect)
owner.AddMod(modifiersGlobal.RegenDown, effect.GetMagnitude()); owner.AddMod(modifiersGlobal.RegenDown, effect.GetMagnitude());
end; end;

View File

@ -0,0 +1,10 @@
require("modifiers")
function onGain(owner, effect)
--Only one song per bard can be active, need to figure out a good way to do this
owner.AddMod(modifiersGlobal.Refresh, effect.GetMagnitude());
end;
function onLose(owner, effect)
owner.SubtractMod(modifiersGlobal.Refresh, effect.GetMagnitude());
end;

View File

@ -1,9 +1,3 @@
require("modifiers")
require("hiteffect")
require("battleutils")
--Untraited reduces cooldown by 50%
--Traited reduces cooldown by 100%
function onCommandStart(effect, owner, skill, actionContainer) function onCommandStart(effect, owner, skill, actionContainer)
--27259: Light Shot --27259: Light Shot
if skill.id == 27259 then if skill.id == 27259 then

View File

@ -0,0 +1,3 @@
require("modifiers")
--BV doesn't really do anything i think

View File

@ -1,5 +1,4 @@
require("modifiers"); require("modifiers");
require("battleutils");
function onGain(owner, effect) function onGain(owner, effect)
owner.statusEffects.RemoveStatusEffect(223208); owner.statusEffects.RemoveStatusEffect(223208);

View File

@ -1,11 +1,7 @@
require("modifiers"); require("modifiers");
function onGain(target, effect) function onGain(target, effect)
local currEvade = target.GetMod(modifierGlobals.Evasion);
target.SetMod(modifierGlobals.Evasion, currEvade + 15);
end; end;
function onLose(target, effect) function onLose(target, effect)
local currEvade = target.GetMod(modifierGlobals.Evasion);
target.SetMod(modifierGlobals.Evasion, currEvade - 15);
end; end;

View File

@ -0,0 +1,9 @@
require("modifiers")
function onGain(owner, effect)
owner.AddMod(modifiersGlobal.Accuracy, effect.GetMagnitude());
end;
function onLose(owner, effect)
owner.AddMod(modifiersGlobal.Accuracy, effect.GetMagnitude());
end;

View File

@ -2,7 +2,7 @@ require("modifiers")
require("battleutils") require("battleutils")
--Forces crit of a single WS action from rear. --Forces crit of a single WS action from rear.
function onPreAction(caster, target, effect, skill, action, actionContainer) function onPreAction(effect, caster, target, skill, action, actionContainer)
--If action hit from the rear and is a weaponskill ation --If action hit from the rear and is a weaponskill ation
if (action.param == HitDirection.Rear and action.commandType == CommandType.WeaponSkill) then if (action.param == HitDirection.Rear and action.commandType == CommandType.WeaponSkill) then
--Set action's crit rate to 100% --Set action's crit rate to 100%

View File

@ -1,20 +1,20 @@
require("modifiers") require("battleUtils")
require("hiteffect")
--Takes 10% of hp rounded down --Takes 10% of hp rounded down when using a weaponskill
--Random guess, but increases damage by 10% (12.5% traited)? --Random guess, but increases damage by 10% (12.5% traited)?
function onPreAction(caster, target, effect, skill, action, actionContainer) function onPreAction(effect, caster, target, skill, action, actionContainer)
local hpToRemove = math.floor(caster.GetHP() * 0.10); if skill.commandType == CommandType.Weaponskill then
local modifier = 1.10; local hpToRemove = math.floor(caster.GetHP() * 0.10);
local modifier = 1.10;
if (effect.GetTier() == 2) then if effect.GetTier() == 2 then
modifier = 1.25; modifier = 1.125;
end
action.amount = action.amount * modifier;
caster.DelHP(hpToRemove);
--Remove status and add message
actionContainer.AddAction(target.statusEffects.RemoveForBattleAction(effect));
end end
action.amount = action.amount * modifier;
caster.DelHP(hpToRemove);
--Remove status and add message
actionContainer.AddAction(target.statusEffects.RemoveForBattleAction(effect));
end; end;

View File

@ -1,5 +1,4 @@
require("modifiers"); require("modifiers");
require("battleutils");
--Absorb HP on next WS or ability --Absorb HP on next WS or ability
function onHit(effect, attacker, defender, action, actionContainer) function onHit(effect, attacker, defender, action, actionContainer)

View File

@ -1,3 +1,5 @@
require("modifiers")
--This is the comboed version of bloodletter. --This is the comboed version of bloodletter.
--All videos I can find have it dealing 15 damage. --All videos I can find have it dealing 15 damage.
--Damage type is projectile. --Damage type is projectile.

View File

@ -1,3 +1,5 @@
require("modifiers")
--Bloodletter2 is the uncomboed version of Bloodletter. It doesn't deal any additional damage when it falls off but has the same tick damage --Bloodletter2 is the uncomboed version of Bloodletter. It doesn't deal any additional damage when it falls off but has the same tick damage
function onGain(owner, effect) function onGain(owner, effect)
owner.AddMod(modifiersGlobal.RegenDown, 15); owner.AddMod(modifiersGlobal.RegenDown, 15);

View File

@ -1,13 +1,12 @@
require("modifiers") require("modifiers")
require("battleutils")
function onPreAction(caster, target, effect, skill, action, actionContainer) function onGain(target, effect)
if skill.commandType == CommandType.Spell then --Multiples Attack Magic Potency by 1.2 and Healing Magic Potency by 0.8
if action.actionType == ActionType.Heal then target.SetMod(modifiersGlobal.MagicAttack, target.GetMod(modifiersGlobal.MagicAttack) * 1.2);
action.amount = action.amount * 0.80; target.SetMod(modifiersGlobal.MagicHeal, target.GetMod(modifiersGlobal.MagicHeal) * 0.8);
elseif action.actionType == ActionType.Magic then
action.amount = action.amount * 1.20;
end
end
end; end;
function onLose(target, effect)
target.SetMod(modifiersGlobal.MagicAttack, target.GetMod(modifiersGlobal.MagicAttack) / 1.2);
target.SetMod(modifiersGlobal.MagicHeal, target.GetMod(modifiersGlobal.MagicHeal) / 0.8);
end;

View File

@ -1,7 +1,4 @@
require("global")
require("modifiers") require("modifiers")
require("hiteffect")
require("utils")
function onHit(effect, attacker, defender, action, actionContainer) function onHit(effect, attacker, defender, action, actionContainer)
local enmity = action.enmity; local enmity = action.enmity;

View File

@ -1,9 +1,8 @@
require("global")
require("modifiers") require("modifiers")
require("hiteffect")
require("utils")
--Restores 25% of damage taken as MP. Does not send a message --Enahnced Cover: Restores 25% of damage taken as MP. Does not send a message
function onDamageTaken(effect, attacker, defender, action, actionContainer) function onDamageTaken(effect, attacker, defender, action, actionContainer)
defender.AddMP(0.25 * action.amount); if effect.GetTier() == 2 then
defender.AddMP(0.25 * action.amount);
end
end; end;

View File

@ -0,0 +1,15 @@
require("battleUtils")
--If person who cast cover is within 8y, change the action's target to them
--Not sure what attacks are valid. It only says "melee attacks", unsure if that includes weaponskills and abilities or just auto attacks
--Right now this will probably be really buggy, since Covered is not necessarily the first effect that will activate on the target
--Really need to do more research on this, figure out how it interacts with multi-hit attacks, aoe attacks (if those count as melee ever?), etc.
--If it redirects the whole attack instead of a single hit, we might need a new that activates while iterating over targets.
function onPreAction(effect, caster, target, skill, action, actionContainer)
if not skill.isRanged then
if effect.GetSource().IsAlive() and getDistanceBetweenActors(effect.GetSource(), target) <= 8 then
target = effect.GetSource();
end
end
end;

View File

@ -0,0 +1,13 @@
require("modifiers")
require("battleutils")
--Increases accuracy of next cast.
--There isn't really any information on this, but due to the fact it falls off BEFORE the target is hit,
--I'm assuming it increases a spell's accuracy modifier instead of giving actual magic accuracy
function onCommandStart(effect, owner, skill, actionContainer)
if skill.actionType == ActionType.Magic then
--50 is random guess.
skill.accuracyModifier = skill.accuracyModifier + 50;
actionContainer.AddAction(owner.RemoveStatusEffectForBattleAction(effect));
end
end

View File

@ -2,15 +2,15 @@ require("modifiers")
require("battleutils") require("battleutils")
--This is the untraited version of decoy. --This is the untraited version of decoy.
function onPreAction(effect, caster, target, skill, action, actionContainer)
function onPreAction(caster, target, effect, skill, action, actionContainer)
--Evade single ranged or magic attack --Evade single ranged or magic attack
--Traited allows for physical attacks --Traited allows for physical attacks
if skill.isRanged or action.actionType == ActionType.Magic then if target.allegiance != caster.allegiance and (skill.isRanged or action.actionType == ActionType.Magic) then
--Set action's hit rate to 0 --Set action's hit rate to 0
action.hirRate = 0.0; action.hirRate = 0.0;
--Remove status and add message
actionContainer.AddAction(target.statusEffects.RemoveStatusEffectForBattleAction(effect));
end end
--Remove status and add message
actionsList.AddAction(target.statusEffects.RemoveForBattleAction(effect));
end; end;

View File

@ -2,15 +2,14 @@ require("modifiers")
require("battleutils") require("battleutils")
--This is the traited version of Decoy. It can also evade physical attacks. --This is the traited version of Decoy. It can also evade physical attacks.
function onPreAction(effect, caster, target, skill, action, actionContainer)
function onPreAction(caster, target, effect, skill, action, actionContainer)
--Evade single ranged or magic attack --Evade single ranged or magic attack
--Traited allows for physical attacks --Traited allows for physical attacks
if skill.isRanged or action.actionType == ActionType.Magic or action.actionType == ActionType.Physical then if target.allegiance != caster.allegiance and (skill.isRanged or action.actionType == ActionType.Magic or action.actionType == ActionType.Physical) then
--Set action's hit rate to 0 --Set action's hit rate to 0
action.hirRate = 0.0; action.hirRate = 0.0;
--Remove status and add message
actionContainer.AddAction(target.statusEffects.RemoveStatusEffectForBattleAction(effect));
end end
--Remove status and add message
actionsList.AddAction(target.statusEffects.RemoveForBattleAction(effect));
end; end;

View File

@ -1,2 +1,5 @@
function onGain(target, effect)
end;
function onLose(target, effect) function onLose(target, effect)
end; end;

View File

@ -1,3 +1,5 @@
require("modifiers")
function onGain(owner, effect) function onGain(owner, effect)
owner.SubtractMod(modifiersGlobal.Defense, effect.GetMagnitude()); owner.SubtractMod(modifiersGlobal.Defense, effect.GetMagnitude());
end end

View File

@ -1,13 +1,6 @@
--Consistent 85HP/tick normal; 113HP/tick with AF pants require("modifiers")
function onGain(owner, effect) function onGain(owner, effect)
local magnitude = 85
--Need a better way to set magnitude when adding effects
if effect.GetTier() == 2 then
magnitude = 113;
end
effect.SetMagnitude(magnitude);
owner.AddMod(modifiersGlobal.Regen, effect.GetMagnitude()); owner.AddMod(modifiersGlobal.Regen, effect.GetMagnitude());
end end

View File

@ -1,5 +1,4 @@
require("modifiers") require("modifiers")
require("hiteffect")
--Increases block rate by 100% --Increases block rate by 100%
function onGain(owner, effect) function onGain(owner, effect)
@ -11,12 +10,21 @@ function onLose(owner, effect)
end end
--Applys Divine Regen to party in range when healed by cure or cura --Applys Divine Regen to party in range when healed by cure or cura
function onBlock(caster, target, effect, skill, action, actionContainer) function onHealed(caster, target, effect, skill, action, actionContainer)
-- cure cura -- cure cura
if (skill.id == 27346 or skill.id == 27347) and (caster != owner) then if (skill.id == 27346 or skill.id == 27347) and (caster != owner) then
local regenDuration = 30;
--Apparently heals for 85 without AF, 113 with. Unsure if these can be improved with stats
local magnitude = 85
--Need a better way to set magnitude when adding effects
if effect.GetTier() == 2 then
magnitude = 113;
end
--For each party member in range, add divine regen --For each party member in range, add divine regen
for chara in owner.GetPartyMembersInRange(8) do for chara in owner.GetPartyMembersInRange(8) do
local addAction = chara.statusEffects.AddStatusForBattleAction(223264, 2); local addAction = chara.statusEffects.AddStatusForBattleAction(223264, effect.GetTier(), magnitude, regenDuration);
actionContainer.AddAction(addAction); actionContainer.AddAction(addAction);
end end
end end

View File

@ -3,17 +3,24 @@ require("battleutils")
--Dread spike completely nullifies a physical action and absorbs how much damage it would have done (when it's powered up) --Dread spike completely nullifies a physical action and absorbs how much damage it would have done (when it's powered up)
--I'm going to assume it only absorbs half damage without LS/PS up --I'm going to assume it only absorbs half damage without LS/PS up
--When I say it nullifies an attack, it even gets rid of the message. It's as if the attack didn't happen --When I say it nullifies an attack, it even gets rid of the message. It's as if the damage action didn't happen.
--It still shows the enemy's "Enemy used [command]." message but there is no 0 damage dealt message.
--Don't know how this works with multi-hit attacks or even how it works with stoneskin or other buffs that respond to damage --Don't know how this works with multi-hit attacks or even how it works with stoneskin or other buffs that respond to damage
-- I dont really know how this should work... -- I dont really know how this should work...
function onDamageTaken(effect, attacker, defender, action, actionContainer) function onDamageTaken(effect, attacker, defender, action, actionContainer)
if action.actionType == ActionType.Physical then if action.actionType == ActionType.Physical then
--maybe this works? --maybe this works?
local absorbAmount = action.amount; local absorbPercent = 0.5;
if effect.GetTier() == 2 then
absorbPercent = 1;
end
local absorbAmount = action.amount * absorbPercent;
action.amount = 0; action.amount = 0;
action.worldMasterTextId = 0; action.worldMasterTextId = 0;
attacker.AddHP(absorbAmount); defender.AddHP(absorbAmount);
--30451: You recover [absorbAmount] HP. --30451: You recover [absorbAmount] HP.
actionContainer.AddHPAction(defender.actorId, 30451, absorbAmount) actionContainer.AddHPAction(defender.actorId, 30451, absorbAmount)
--Dread Spike is lost after absorbing hp --Dread Spike is lost after absorbing hp

View File

@ -0,0 +1,30 @@
require("modifiers")
require("battleutils")
--Gradually increases critical rate of spells
function onTick(owner, effect)
--No clue how fast the crit rate increases or how often it ticks
--Only clue I have to go on is that the strategy seemed to be to use it
--before or after fire/thunder and you'd usually get a crit at firaga/thundaga
--Random guess, going to assume it's 25 crit rating every 3s, 50 crit rating traited
--That's 4% and 8% every 3 seconds of actual crit
local ratePerTick = 25;
if effect.GetTier() == 2 then
ratePerTick = 50;
end
effect.SetMagnitude(effect.GetMagnitude() + ratePerTick);
end
--Excruciate seems to have an effect on all hits of aoe spells, so it's changing the crit bonus of the skill itself
--rather than on a hit by hit basis
function onCommandStart(effect, owner, skill, actionContainer)
skill.bonusCritRate = skill.bonusCritRate + effect.GetMagnitude();
end
function onCrit(effect, attacker, defender, action, actionContainer)
if action.commandType == CommandType.Spell then
actionContainer.AddAction(attacker.statusEffects.RemoveStatusEffectForBattleAction(effect));
end
end

View File

@ -3,9 +3,5 @@ function onGain(owner, effect)
effect.SetExtra(effect.GetMagnitude()); effect.SetExtra(effect.GetMagnitude());
end end
function onTick(owner, effect)
print("hi")
end
function onLose(owner, effect) function onLose(owner, effect)
end end

View File

@ -0,0 +1,10 @@
require("modifiers")
--Set magnitude to milliseconds that HF will reduce delay by
function onGain(target, effect)
target.SubtractMod(modifiersGlobal.AttackDelay, effect.GetMagnitude());
end;
function onLose(target, effect)
target.AddMod(modifiersGlobal.AttackDelay, effect.GetMagnitude());
end;

View File

@ -4,6 +4,8 @@ require("modifiers");
--The player in this capture was a Dragoon, so this is untraited. --The player in this capture was a Dragoon, so this is untraited.
--Traited Hawk's Eye says it increases Accuracy by 50%. --Traited Hawk's Eye says it increases Accuracy by 50%.
--This could mean traited hawk's eye gives 28.125% (18.75% * 1.5) or it could mean it gives 68.75% (18.75% + 50%) --This could mean traited hawk's eye gives 28.125% (18.75% * 1.5) or it could mean it gives 68.75% (18.75% + 50%)
--It's also possible that Hawk's Eye gives 15 + 15% accuracy untraited, which would give 450.85, which would be rounded down.
--In that case, traited hawks eye could be 15 + 22.5% or 22.5 + 22.5% or (15 + 15%) * 1.5
function onGain(target, effect) function onGain(target, effect)
local accuracyMod = 0.1875; local accuracyMod = 0.1875;

View File

@ -11,5 +11,5 @@ function onGain(target, effect)
end; end;
function onLose(target, effect) function onLose(target, effect)
target.SetMaxHP(target.GetMaxHP() * 0.75); target.SetMaxHP(target.GetMaxHP() / 1.25);
end; end;

View File

@ -1,13 +1,10 @@
require("modifiers") require("modifiers")
--will this break with things like slow? --Set magnitude to milliseconds that HF will reduce delay by
function onGain(target, effect) function onGain(target, effect)
local currDelay = target.GetMod(modifiersGlobal.AttackDelay); target.SubtractMod(modifiersGlobal.AttackDelay), effect.GetMagnitude());
target.SetMod(modifiersGlobal.AttackDelay), 0.66 * currDelay);
end; end;
function onLose(target, effect) function onLose(target, effect)
local currDelay = target.GetMod(modifiersGlobal.AttackDelay); target.AddMod(modifiersGlobal.AttackDelay), effect.GetMagnitude());
target.SetMod(modifiersGlobal.AttackDelay), 1.50 * currDelay);
end; end;

View File

@ -1,3 +1,5 @@
require("modifiers")
--100 TP per tick without AF. 133 TP per tick with AF --100 TP per tick without AF. 133 TP per tick with AF
function onGain(owner, effect) function onGain(owner, effect)
owner.AddMod(modifiersGlobal.Regain, effect.GetMagnitude()); owner.AddMod(modifiersGlobal.Regain, effect.GetMagnitude());

View File

@ -1,5 +1,3 @@
require("modifiers")
require("hiteffect")
require("battleutils") require("battleutils")
--Untraited reduces cooldown by 50% --Untraited reduces cooldown by 50%

View File

@ -1,5 +1,3 @@
require("modifiers")
require("hiteffect")
require("battleutils") require("battleutils")
--Heals for 30%? of damage dealt on auto attacks. --Heals for 30%? of damage dealt on auto attacks.

View File

@ -1,5 +1,3 @@
require("modifiers")
require("hiteffect")
require("battleutils") require("battleutils")
function onHit(effect, attacker, defender, action, actionContainer) function onHit(effect, attacker, defender, action, actionContainer)

View File

@ -1,5 +1,3 @@
require("modifiers")
require("hiteffect")
require("battleutils") require("battleutils")
--Heals for 30%? of damage dealt on auto attacks. --Heals for 30%? of damage dealt on auto attacks.

View File

@ -1,4 +1,5 @@
--Bloodletter2 is the uncomboed version of Bloodletter. It doesn't deal any additional damage when it falls off but has the same tick damage require("modifiers")
function onGain(owner, effect) function onGain(owner, effect)
owner.SubtractMod(modifiersGlobal.MagicEvasion, effect.GetMagnitude()); owner.SubtractMod(modifiersGlobal.MagicEvasion, effect.GetMagnitude());
end end

View File

@ -1,8 +1,5 @@
require("modifiers")
require("battleutils")
--Forces crit on attacks made with axes --Forces crit on attacks made with axes
function onPreAction(caster, target, effect, skill, action, actionContainer) function onPreAction(effect, caster, target, skill, action, actionContainer)
--Assuming "attacks made with axes" means skills specific to MRD/WAR --Assuming "attacks made with axes" means skills specific to MRD/WAR
if (skill.job == 3 or skill.job == 17) then if (skill.job == 3 or skill.job == 17) then
--Set action's crit rate to 100% --Set action's crit rate to 100%

View File

@ -0,0 +1,12 @@
require("modifiers")
function onGain(owner, effect)
--Only one song per bard can be active, need to figure out a good way to do this
owner.AddMod(modifiersGlobal.Accuracy, effect.GetMagnitude());
owner.AddMod(modifiersGlobal.MagicAccuracy, effect.GetMagnitude());
end;
function onLose(owner, effect)
owner.SubtractMod(modifiersGlobal.Accuracy, effect.GetMagnitude());
owner.SubtractMod(modifiersGlobal.MagicAccuracy, effect.GetMagnitude());
end;

View File

@ -0,0 +1,12 @@
require("modifiers")
require("battleutils")
function onHit(effect, attacker, defender, action, actionContainer)
if action.commandType == CommandType.Spell then
--Necrogenesis returns 75% of damage done rounded up(?) as MP.
local hpToReturn = math.ceil(0.75 * action.amount);
attacker.AddMp(hpToReturn);
actionContainer.AddHPAction(attacker.actorId, 33012, mpToReturn);
actionContainer.AddAction(attacker.statusEffects.RemoveStatusEffectForBattleAction(effect));
end
end

View File

@ -1,6 +1,4 @@
require("modifiers") require("modifiers")
require("hiteffect")
require("battleutils")
--Add 30 raw block rate. No idea how much block it actually gives. --Add 30 raw block rate. No idea how much block it actually gives.
function onGain(owner, effect) function onGain(owner, effect)

View File

@ -0,0 +1,10 @@
require("modifiers")
function onGain(owner, effect)
--Only one song per bard can be active, need to figure out a good way to do this
owner.AddMod(modifiersGlobal.Regain, effect.GetMagnitude());
end;
function onLose(owner, effect)
owner.SubtractMod(modifiersGlobal.Regain, effect.GetMagnitude());
end;

View File

@ -0,0 +1,17 @@
require("modifiers")
require("battleutils")
--Forces crit of a single WS action from rear.
function onMagicCast(caster, effect, skill)
skill.mpCost = skill.mpCost / 2;
end;
function onHit(effect, attacker, defender, action, actionContainer)
if action.commandType == CommandType.Spell then
--Parsimony returns 35% of damage done rounded up as MP.
local mpToReturn = math.ceil(0.35 * action.amount);
attacker.AddMp(mpToReturn);
actionContainer.AddMPAction(attacker.actorId, 33007, mpToReturn);
actionContainer.AddAction(attacker.statusEffects.RemoveStatusEffectForBattleAction(effect));
end
end

View File

@ -0,0 +1,7 @@
function onGain(owner, effect)
owner.AddMod(modifiersGlobal.RegenDown, effect.GetMagnitude());
end
function onLose(owner, effect)
owner.SubtractMod(modifiersGlobal.RegenDown, effect.GetMagnitude());
end

View File

@ -1,5 +1,4 @@
require("modifiers") require("modifiers")
require("hiteffect")
require("battleutils") require("battleutils")
--https://www.bluegartr.com/threads/107403-Stats-and-how-they-work/page22 --https://www.bluegartr.com/threads/107403-Stats-and-how-they-work/page22

View File

@ -1,5 +1,4 @@
require("modifiers") require("modifiers")
require("hiteffect")
require("battleutils") require("battleutils")
--https://www.bluegartr.com/threads/107403-Stats-and-how-they-work/page22 --https://www.bluegartr.com/threads/107403-Stats-and-how-they-work/page22

View File

@ -1,5 +1,4 @@
require("modifiers") require("modifiers")
require("hiteffect")
require("battleutils") require("battleutils")
--https://www.bluegartr.com/threads/107403-Stats-and-how-they-work/page22 --https://www.bluegartr.com/threads/107403-Stats-and-how-they-work/page22

View File

@ -5,21 +5,18 @@ function onGain(target, effect)
--http://forum.square-enix.com/ffxiv/threads/41900-White-Mage-A-Guide --http://forum.square-enix.com/ffxiv/threads/41900-White-Mage-A-Guide
--5-4-5-4-5-4-5-4-5 repeating points of Enhancing for 1 defense --5-4-5-4-5-4-5-4-5 repeating points of Enhancing for 1 defense
--4.56 * Enhancing Potency --4.56 * Enhancing Potency
local defenseBuff = 5-- 4.56 * effect.GetMagnitude(); local defenseBuff = 4.56 * effect.GetMagnitude();
local magicDefenseBuff = 0; local magicDefenseBuff = 0;
target.AddMod(modifiersGlobal.Defense, defenseBuff); target.AddMod(modifiersGlobal.Defense, defenseBuff);
--27365: Enhanced Protect: Increases magic defense gained from Protect. --27365: Enhanced Protect: Increases magic defense gained from Protect.
--There is no "magic defense" stat, instead it gives stats to each resist stat. --There is no "magic defense" stat, instead it gives stats to each resist stat.
--if effect.GetTier() >= 2 then magicDefenseBuff = 6.67 * effect.GetMagnitude();
--7-6-7 repeating for i = modifiersGlobal.ResistFire, modifiersGlobal.ResistWater do
--6.67 * Enhancing Potency target.AddMod(i, magicDefenseBuff);
magicDefenseBuff = 5--6.67 * effect.GetMagnitude(); end
for i = modifiersGlobal.ResistFire, modifiersGlobal.ResistWater do
target.AddMod(i, magicDefenseBuff);
end
--end
end; end;
@ -31,13 +28,9 @@ function onLose(target, effect)
--27365: Enhanced Protect: Increases magic defense gained from Protect. --27365: Enhanced Protect: Increases magic defense gained from Protect.
--There is no "magic defense" stat, instead it gives stats to each resist stat. --There is no "magic defense" stat, instead it gives stats to each resist stat.
--if effect.GetTier() >= 2 then magicDefenseBuff = 6.67 * effect.GetMagnitude();
--7-6-7 repeating for i = modifiersGlobal.ResistFire, modifiersGlobal.ResistWater do
--6.67 * Enhancing Potency target.SubtractMod(i, magicDefenseBuff);
magicDefenseBuff = 6.67 * effect.GetMagnitude(); end
for i = modifiersGlobal.ResistFire, modifiersGlobal.ResistWater do
target.SubtractMod(i, magicDefenseBuff);
end
--end
end; end;

View File

@ -1,5 +1,4 @@
require("modifiers") require("modifiers")
require("hiteffect")
require("battleutils") require("battleutils")
--Untraited reduces cooldown by 50% --Untraited reduces cooldown by 50%

View File

@ -1,7 +1,4 @@
require("global")
require("modifiers") require("modifiers")
require("hiteffect")
require("battleutils")
require("utils") require("utils")
parryPerDT = 20; parryPerDT = 20;

View File

@ -0,0 +1,7 @@
function onGain(owner, effect)
owner.AddMod(modifiersGlobal.Refresh, effect.GetMagnitude());
end
function onLose(owner, effect)
owner.SubtractMod(modifiersGlobal.Refresh, effect.GetMagnitude());
end

View File

@ -0,0 +1,7 @@
function onGain(owner, effect)
owner.AddMod(modifiersGlobal.Regain, effect.GetMagnitude());
end
function onLose(owner, effect)
owner.SubtractMod(modifiersGlobal.Regain, effect.GetMagnitude());
end

View File

@ -1,8 +1,8 @@
--Regen is modified by Enhancing Magic Potency. Formula here: http://forum.square-enix.com/ffxiv/threads/41900-White-Mage-A-Guide --Regen is modified by Enhancing Magic Potency. Formula here: http://forum.square-enix.com/ffxiv/threads/41900-White-Mage-A-Guide
function onGain(owner, effect) function onGain(owner, effect)
owner.AddMod(modifiersGlobal.Regen, effect.magnitude); owner.AddMod(modifiersGlobal.Regen, effect.GetMagnitude());
end end
function onLose(owner, effect) function onLose(owner, effect)
owner.SubtractMod(modifiersGlobal.Regen, effect.magnitude); owner.SubtractMod(modifiersGlobal.Regen, effect.GetMagnitude());
end end

View File

@ -0,0 +1,15 @@
require("modifiers")
require("battleutils")
--Increases range of a single spell, no clue by how much, 25% is a random guess
--It isn't clear if it has an effect on the aoe portion of skills or just the normal range, i've seen people on the OF say both.
function onMagicStart(caster, effect, skill)
skill.range = skill.range * 1.25;
end;
--The effect falls off after the skill is finished, meaning if you start a cast and cancel, it shouldn't fall off.
function onCommandFinish(effect, owner, skill, actionContainer)
if action.commandType == CommandType.Spell then
actionContainer.AddAction(owner.statusEffects.RemoveStatusEffectForBattleAction(effect));
end
end

View File

@ -1,4 +1,5 @@
require("modifiers") require("modifiers")
require("battleutils")
function onGain(target, effect) function onGain(target, effect)
--Untraited Sentinel is 30% damage taken down, traited is 50% --Untraited Sentinel is 30% damage taken down, traited is 50%

View File

@ -1,8 +1,4 @@
require("global")
require("utils")
require("modifiers") require("modifiers")
require("hiteffect")
require("battleutils")
function onGain(owner, effect) function onGain(owner, effect)
@ -10,7 +6,7 @@ function onGain(owner, effect)
end end
--Using extra for how much mitigation stoneskin has --Using extra for how much mitigation stoneskin has
function onPostAction(owner, effect, caster, skill, action, actionContainer) function onPostAction(caster, target, effect, skill, action, actionContainer)
if (owner.GetMod(modifiersGlobal.Stoneskin) <= 0) then if (owner.GetMod(modifiersGlobal.Stoneskin) <= 0) then
actionContainer.AddAction(owner.statusEffects.RemoveStatusEffectForBattleAction(effect)); actionContainer.AddAction(owner.statusEffects.RemoveStatusEffectForBattleAction(effect));
end end

View File

@ -0,0 +1,7 @@
function onGain(owner, effect)
owner.AddMod(modifiersGlobal.KnockbackImmune, 1);
end
function onLose(owner, effect)
owner.SubtractMod(modifiersGlobal.KnockbackImmune, 1);
end

View File

@ -0,0 +1,7 @@
function onGain(owner, effect)
owner.SubtractMod(modifiersGlobal.Regain, effect.GetMagnitude());
end
function onLose(owner, effect)
owner.AddMod(modifiersGlobal.Regain, effect.GetMagnitude());
end

View File

@ -1,7 +1,5 @@
require("global")
require("modifiers") require("modifiers")
require("hiteffect") require("battleutils")
require("utils")
--Unclear what the exact damage is but it seems like it's the total amount of damage the attack would have done before parrying --Unclear what the exact damage is but it seems like it's the total amount of damage the attack would have done before parrying
function onDamageTaken(effect, attacker, defender, action, actionContainer) function onDamageTaken(effect, attacker, defender, action, actionContainer)

View File

@ -46,30 +46,30 @@ INSERT INTO `server_battle_traits` VALUES (27241,'enhanced_quelling_strike',7,32
INSERT INTO `server_battle_traits` VALUES (27243,'enhanced_raging_strike',7,36,0,0); INSERT INTO `server_battle_traits` VALUES (27243,'enhanced_raging_strike',7,36,0,0);
INSERT INTO `server_battle_traits` VALUES (27244,'enhanced_decoy',7,16,0,0); INSERT INTO `server_battle_traits` VALUES (27244,'enhanced_decoy',7,16,0,0);
INSERT INTO `server_battle_traits` VALUES (27245,'swift_chameleon',7,48,0,0); INSERT INTO `server_battle_traits` VALUES (27245,'swift_chameleon',7,48,0,0);
INSERT INTO `server_battle_traits` VALUES (27246,'enhanced_physical_crit_accuracy',7,40,65,10); INSERT INTO `server_battle_traits` VALUES (27246,'enhanced_physical_crit_accuracy',7,40,64,10);
INSERT INTO `server_battle_traits` VALUES (27247,'enhanced_physical_crit_evasion',7,20,66,10); INSERT INTO `server_battle_traits` VALUES (27247,'enhanced_physical_crit_evasion',7,20,65,10);
INSERT INTO `server_battle_traits` VALUES (27248,'enhanced_physical_evasion',7,12,16,8); INSERT INTO `server_battle_traits` VALUES (27248,'enhanced_physical_evasion',7,12,16,8);
INSERT INTO `server_battle_traits` VALUES (27249,'enhanced_physical_accuracy',7,8,16,8); INSERT INTO `server_battle_traits` VALUES (27249,'enhanced_physical_accuracy',7,8,15,8);
INSERT INTO `server_battle_traits` VALUES (27250,'enhanced_physical_accuracy_ii',7,24,16,10); INSERT INTO `server_battle_traits` VALUES (27250,'enhanced_physical_accuracy_ii',7,24,15,10);
INSERT INTO `server_battle_traits` VALUES (27120,'enhanced_second_wind',2,20,0,0); INSERT INTO `server_battle_traits` VALUES (27120,'enhanced_second_wind',2,20,0,0);
INSERT INTO `server_battle_traits` VALUES (27121,'enhanced_blindside',2,24,0,0); INSERT INTO `server_battle_traits` VALUES (27121,'enhanced_blindside',2,24,0,0);
INSERT INTO `server_battle_traits` VALUES (27122,'swift_taunt',2,48,0,0); INSERT INTO `server_battle_traits` VALUES (27122,'swift_taunt',2,48,0,0);
INSERT INTO `server_battle_traits` VALUES (27123,'enhanced_featherfoot',2,28,0,0); INSERT INTO `server_battle_traits` VALUES (27123,'enhanced_featherfoot',2,28,0,0);
INSERT INTO `server_battle_traits` VALUES (27124,'enhanced_fists_of_fire',2,44,0,0); INSERT INTO `server_battle_traits` VALUES (27124,'enhanced_fists_of_fire',2,44,0,0);
INSERT INTO `server_battle_traits` VALUES (27125,'enhanced_fists_of_earth',2,36,0,0); INSERT INTO `server_battle_traits` VALUES (27125,'enhanced_fists_of_earth',2,36,0,0);
INSERT INTO `server_battle_traits` VALUES (27126,'enhanced_physical_accuracy',2,16,16,8); INSERT INTO `server_battle_traits` VALUES (27126,'enhanced_physical_accuracy',2,16,15,8);
INSERT INTO `server_battle_traits` VALUES (27127,'enhanced_physical_attack',2,8,17,8); INSERT INTO `server_battle_traits` VALUES (27127,'enhanced_physical_attack',2,8,17,8);
INSERT INTO `server_battle_traits` VALUES (27128,'enhanced_physical_attack_ii',2,40,17,10); INSERT INTO `server_battle_traits` VALUES (27128,'enhanced_physical_attack_ii',2,40,17,10);
INSERT INTO `server_battle_traits` VALUES (27129,'enhanced_evasion',2,12,16,8); INSERT INTO `server_battle_traits` VALUES (27129,'enhanced_evasion',2,12,16,8);
INSERT INTO `server_battle_traits` VALUES (27130,'enhanced_physical_crit_damage',2,32,67,10); INSERT INTO `server_battle_traits` VALUES (27130,'enhanced_physical_crit_damage',2,32,66,10);
INSERT INTO `server_battle_traits` VALUES (27160,'enhanced_sentinel',3,36,0,0); INSERT INTO `server_battle_traits` VALUES (27160,'enhanced_sentinel',3,36,0,0);
INSERT INTO `server_battle_traits` VALUES (27161,'enhanced_flash',3,28,0,0); INSERT INTO `server_battle_traits` VALUES (27161,'enhanced_flash',3,28,0,0);
INSERT INTO `server_battle_traits` VALUES (27162,'enhanced_flash_ii',3,48,0,0); INSERT INTO `server_battle_traits` VALUES (27162,'enhanced_flash_ii',3,48,0,0);
INSERT INTO `server_battle_traits` VALUES (27163,'enhanced_rampart',3,12,0,0); INSERT INTO `server_battle_traits` VALUES (27163,'enhanced_rampart',3,12,0,0);
INSERT INTO `server_battle_traits` VALUES (27164,'swift_aegis_boon',3,20,0,0); INSERT INTO `server_battle_traits` VALUES (27164,'swift_aegis_boon',3,20,0,0);
INSERT INTO `server_battle_traits` VALUES (27165,'enhanced_outmaneuver',3,44,0,0); INSERT INTO `server_battle_traits` VALUES (27165,'enhanced_outmaneuver',3,44,0,0);
INSERT INTO `server_battle_traits` VALUES (27167,'enhanced_block_rate',3,16,52,10); INSERT INTO `server_battle_traits` VALUES (27167,'enhanced_block_rate',3,16,51,10);
INSERT INTO `server_battle_traits` VALUES (27166,'enhanced_physical_crit_resilience',3,32,68,10); INSERT INTO `server_battle_traits` VALUES (27166,'enhanced_physical_crit_resilience',3,32,67,10);
INSERT INTO `server_battle_traits` VALUES (27168,'enhanced_physical_defense',3,8,18,10); INSERT INTO `server_battle_traits` VALUES (27168,'enhanced_physical_defense',3,8,18,10);
INSERT INTO `server_battle_traits` VALUES (27169,'enhanced_physical_defense_ii',3,24,18,10); INSERT INTO `server_battle_traits` VALUES (27169,'enhanced_physical_defense_ii',3,24,18,10);
INSERT INTO `server_battle_traits` VALUES (27170,'enhanced_physical_defense_iii',3,40,18,12); INSERT INTO `server_battle_traits` VALUES (27170,'enhanced_physical_defense_iii',3,40,18,12);
@ -79,8 +79,8 @@ INSERT INTO `server_battle_traits` VALUES (27202,'swift_bloodbath',4,16,0,0);
INSERT INTO `server_battle_traits` VALUES (27203,'enhanced_enduring_march',4,48,0,0); INSERT INTO `server_battle_traits` VALUES (27203,'enhanced_enduring_march',4,48,0,0);
INSERT INTO `server_battle_traits` VALUES (27204,'enhanced_rampage',4,44,0,0); INSERT INTO `server_battle_traits` VALUES (27204,'enhanced_rampage',4,44,0,0);
INSERT INTO `server_battle_traits` VALUES (27205,'enhanced_berserk',4,36,0,0); INSERT INTO `server_battle_traits` VALUES (27205,'enhanced_berserk',4,36,0,0);
INSERT INTO `server_battle_traits` VALUES (27206,'enhanced_physical_crit_evasion',4,32,66,10); INSERT INTO `server_battle_traits` VALUES (27206,'enhanced_physical_crit_evasion',4,32,65,10);
INSERT INTO `server_battle_traits` VALUES (27207,'enhanced_parry',4,24,69,8); INSERT INTO `server_battle_traits` VALUES (27207,'enhanced_parry',4,24,68,8);
INSERT INTO `server_battle_traits` VALUES (27208,'enhanced_physical_defense',4,12,18,8); INSERT INTO `server_battle_traits` VALUES (27208,'enhanced_physical_defense',4,12,18,8);
INSERT INTO `server_battle_traits` VALUES (27209,'enhanced_physical_defense_ii',4,40,18,10); INSERT INTO `server_battle_traits` VALUES (27209,'enhanced_physical_defense_ii',4,40,18,10);
INSERT INTO `server_battle_traits` VALUES (27210,'enhanced_physical_attack_power',4,8,17,8); INSERT INTO `server_battle_traits` VALUES (27210,'enhanced_physical_attack_power',4,8,17,8);
@ -90,8 +90,8 @@ INSERT INTO `server_battle_traits` VALUES (27282,'enhanced_life_surge',8,32,0,0)
INSERT INTO `server_battle_traits` VALUES (27283,'enhanced_blood_for_blood',8,48,0,0); INSERT INTO `server_battle_traits` VALUES (27283,'enhanced_blood_for_blood',8,48,0,0);
INSERT INTO `server_battle_traits` VALUES (27284,'swift_blood_for_blood',8,16,0,0); INSERT INTO `server_battle_traits` VALUES (27284,'swift_blood_for_blood',8,16,0,0);
INSERT INTO `server_battle_traits` VALUES (27285,'enhanced_keen_flurry',8,36,0,0); INSERT INTO `server_battle_traits` VALUES (27285,'enhanced_keen_flurry',8,36,0,0);
INSERT INTO `server_battle_traits` VALUES (27286,'store_tp',8,12,64,50); INSERT INTO `server_battle_traits` VALUES (27286,'store_tp',8,12,63,50);
INSERT INTO `server_battle_traits` VALUES (27287,'enhanced_physical_crit_accuracy',8,24,65,10); INSERT INTO `server_battle_traits` VALUES (27287,'enhanced_physical_crit_accuracy',8,24,64,10);
INSERT INTO `server_battle_traits` VALUES (27288,'enhanced_physical_attack_power',8,8,17,8); INSERT INTO `server_battle_traits` VALUES (27288,'enhanced_physical_attack_power',8,8,17,8);
INSERT INTO `server_battle_traits` VALUES (27289,'enhanced_physical_attack_power_ii',8,20,17,10); INSERT INTO `server_battle_traits` VALUES (27289,'enhanced_physical_attack_power_ii',8,20,17,10);
INSERT INTO `server_battle_traits` VALUES (27290,'enhanced_physical_attack_power_iii',8,40,17,10); INSERT INTO `server_battle_traits` VALUES (27290,'enhanced_physical_attack_power_iii',8,40,17,10);
@ -104,8 +104,8 @@ INSERT INTO `server_battle_traits` VALUES (27325,'enhanced_enfeebling_magic',22,
INSERT INTO `server_battle_traits` VALUES (27326,'enhanced_enfeebling_magic_ii',22,28,26,10); INSERT INTO `server_battle_traits` VALUES (27326,'enhanced_enfeebling_magic_ii',22,28,26,10);
INSERT INTO `server_battle_traits` VALUES (27327,'enhanced_magic_potency',22,8,23,8); INSERT INTO `server_battle_traits` VALUES (27327,'enhanced_magic_potency',22,8,23,8);
INSERT INTO `server_battle_traits` VALUES (27328,'enhanced_magic_potency_ii',22,28,23,10); INSERT INTO `server_battle_traits` VALUES (27328,'enhanced_magic_potency_ii',22,28,23,10);
INSERT INTO `server_battle_traits` VALUES (27329,'enhanced_magic_crit_potency',22,40,70,10); INSERT INTO `server_battle_traits` VALUES (27329,'enhanced_magic_crit_potency',22,40,69,10);
INSERT INTO `server_battle_traits` VALUES (27330,'auto-refresh',22,20,45,3); INSERT INTO `server_battle_traits` VALUES (27330,'auto-refresh',22,20,44,3);
INSERT INTO `server_battle_traits` VALUES (27360,'swift_sacred_prism',23,40,0,0); INSERT INTO `server_battle_traits` VALUES (27360,'swift_sacred_prism',23,40,0,0);
INSERT INTO `server_battle_traits` VALUES (27361,'swift_shroud_of_saints',23,44,0,0); INSERT INTO `server_battle_traits` VALUES (27361,'swift_shroud_of_saints',23,44,0,0);
INSERT INTO `server_battle_traits` VALUES (27362,'enhanced_blissful_mind',23,32,0,0); INSERT INTO `server_battle_traits` VALUES (27362,'enhanced_blissful_mind',23,32,0,0);
@ -116,7 +116,7 @@ INSERT INTO `server_battle_traits` VALUES (27366,'greater_enhancing_magic',23,12
INSERT INTO `server_battle_traits` VALUES (27367,'greater_healing',23,8,24,8); INSERT INTO `server_battle_traits` VALUES (27367,'greater_healing',23,8,24,8);
INSERT INTO `server_battle_traits` VALUES (27368,'greater_healing_ii',23,18,24,10); INSERT INTO `server_battle_traits` VALUES (27368,'greater_healing_ii',23,18,24,10);
INSERT INTO `server_battle_traits` VALUES (27369,'enhanced_magic_accuracy',23,16,27,8); INSERT INTO `server_battle_traits` VALUES (27369,'enhanced_magic_accuracy',23,16,27,8);
INSERT INTO `server_battle_traits` VALUES (27370,'auto-refresh',23,20,45,3); INSERT INTO `server_battle_traits` VALUES (27370,'auto-refresh',23,20,44,3);
/*!40000 ALTER TABLE `server_battle_traits` ENABLE KEYS */; /*!40000 ALTER TABLE `server_battle_traits` ENABLE KEYS */;
UNLOCK TABLES; UNLOCK TABLES;
commit; commit;
@ -130,4 +130,4 @@ commit;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2018-04-18 14:44:11 -- Dump completed on 2018-06-25 23:30:47

View File

@ -76,9 +76,12 @@ INSERT INTO `server_statuseffects` VALUES (223129,'protect',18,2,0);
INSERT INTO `server_statuseffects` VALUES (223133,'stoneskin',16402,1,0); INSERT INTO `server_statuseffects` VALUES (223133,'stoneskin',16402,1,0);
INSERT INTO `server_statuseffects` VALUES (223173,'covered',42,2,0); INSERT INTO `server_statuseffects` VALUES (223173,'covered',42,2,0);
INSERT INTO `server_statuseffects` VALUES (223180,'regen',18,2,0); INSERT INTO `server_statuseffects` VALUES (223180,'regen',18,2,0);
INSERT INTO `server_statuseffects` VALUES (223181,'refresh',18,2,0);
INSERT INTO `server_statuseffects` VALUES (223182,'regain',18,2,0);
INSERT INTO `server_statuseffects` VALUES (223183,'tp_bleed',42,2,0);
INSERT INTO `server_statuseffects` VALUES (223205,'combo',42,2,0); INSERT INTO `server_statuseffects` VALUES (223205,'combo',42,2,0);
INSERT INTO `server_statuseffects` VALUES (223206,'goring_blade',42,2,0); INSERT INTO `server_statuseffects` VALUES (223206,'goring_blade',42,2,0);
INSERT INTO `server_statuseffects` VALUES (223207,'berserk2',1074806818,1,3000); INSERT INTO `server_statuseffects` VALUES (223207,'berserk2',1074806818,1,0);
INSERT INTO `server_statuseffects` VALUES (223208,'rampage2',1075855394,1,5000); INSERT INTO `server_statuseffects` VALUES (223208,'rampage2',1075855394,1,5000);
INSERT INTO `server_statuseffects` VALUES (223209,'fists_of_fire',1073742882,2,0); INSERT INTO `server_statuseffects` VALUES (223209,'fists_of_fire',1073742882,2,0);
INSERT INTO `server_statuseffects` VALUES (223210,'fists_of_earth',1073742882,2,0); INSERT INTO `server_statuseffects` VALUES (223210,'fists_of_earth',1073742882,2,0);
@ -90,10 +93,16 @@ INSERT INTO `server_statuseffects` VALUES (223215,'life_surge_I',1048626,2,0);
INSERT INTO `server_statuseffects` VALUES (223216,'life_surge_II',1048626,2,0); INSERT INTO `server_statuseffects` VALUES (223216,'life_surge_II',1048626,2,0);
INSERT INTO `server_statuseffects` VALUES (223217,'life_surge_III',1048626,2,0); INSERT INTO `server_statuseffects` VALUES (223217,'life_surge_III',1048626,2,0);
INSERT INTO `server_statuseffects` VALUES (223218,'dread_spike',16418,2,0); INSERT INTO `server_statuseffects` VALUES (223218,'dread_spike',16418,2,0);
INSERT INTO `server_statuseffects` VALUES (223219,'blood_for_blood',8210,2,0);
INSERT INTO `server_statuseffects` VALUES (223220,'barrage',3090,2,0); INSERT INTO `server_statuseffects` VALUES (223220,'barrage',3090,2,0);
INSERT INTO `server_statuseffects` VALUES (223221,'raging_strike2',1074855970,1,0); INSERT INTO `server_statuseffects` VALUES (223221,'raging_strike2',1074855970,1,0);
INSERT INTO `server_statuseffects` VALUES (223227,'cleric_stance',8226,1,0); INSERT INTO `server_statuseffects` VALUES (223227,'cleric_stance',8226,1,0);
INSERT INTO `server_statuseffects` VALUES (223228,'blissful_mind',1073741858,1,1000); INSERT INTO `server_statuseffects` VALUES (223228,'blissful_mind',1073741858,1,1000);
INSERT INTO `server_statuseffects` VALUES (223229,'dark_seal2',1042,2,0);
INSERT INTO `server_statuseffects` VALUES (223230,'resonance2',2578,1,0);
INSERT INTO `server_statuseffects` VALUES (223231,'excruciate',2098194,2,3000);
INSERT INTO `server_statuseffects` VALUES (223232,'necrogenesis',1048594,1,0);
INSERT INTO `server_statuseffects` VALUES (223233,'parsimony',1049106,1,0);
INSERT INTO `server_statuseffects` VALUES (223234,'sanguine_rite2',16402,1,0); INSERT INTO `server_statuseffects` VALUES (223234,'sanguine_rite2',16402,1,0);
INSERT INTO `server_statuseffects` VALUES (223236,'outmaneuver2',524338,2,0); INSERT INTO `server_statuseffects` VALUES (223236,'outmaneuver2',524338,2,0);
INSERT INTO `server_statuseffects` VALUES (223237,'blindside2',8226,1,0); INSERT INTO `server_statuseffects` VALUES (223237,'blindside2',8226,1,0);
@ -107,6 +116,10 @@ INSERT INTO `server_statuseffects` VALUES (223245,'spinning_heel',18,1,0);
INSERT INTO `server_statuseffects` VALUES (223248,'divine_veil',36914,2,0); INSERT INTO `server_statuseffects` VALUES (223248,'divine_veil',36914,2,0);
INSERT INTO `server_statuseffects` VALUES (223250,'vengeance',16418,1,5000); INSERT INTO `server_statuseffects` VALUES (223250,'vengeance',16418,1,5000);
INSERT INTO `server_statuseffects` VALUES (223251,'antagonize',1048626,2,0); INSERT INTO `server_statuseffects` VALUES (223251,'antagonize',1048626,2,0);
INSERT INTO `server_statuseffects` VALUES (223253,'battle_voice',18,2,0);
INSERT INTO `server_statuseffects` VALUES (223254,'ballad_of_magi',18,2,0);
INSERT INTO `server_statuseffects` VALUES (223255,'paeon_of_war',18,2,0);
INSERT INTO `server_statuseffects` VALUES (223256,'minuet_of_rigor',18,2,0);
INSERT INTO `server_statuseffects` VALUES (223264,'divine_regen',18,2,0); INSERT INTO `server_statuseffects` VALUES (223264,'divine_regen',18,2,0);
INSERT INTO `server_statuseffects` VALUES (228021,'heavy',42,2,0); INSERT INTO `server_statuseffects` VALUES (228021,'heavy',42,2,0);
INSERT INTO `server_statuseffects` VALUES (253003,'evade_proc',34,1,0); INSERT INTO `server_statuseffects` VALUES (253003,'evade_proc',34,1,0);
@ -127,4 +140,4 @@ commit;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2018-05-27 17:59:13 -- Dump completed on 2018-06-25 23:30:50