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
This commit is contained in:
yogurt 2018-04-18 16:06:41 -05:00
parent b8d6a943aa
commit c5ce2ec771
239 changed files with 5125 additions and 1237 deletions

View file

@ -9,6 +9,14 @@ function onMagicStart(caster, target, spell)
return 0;
end;
function onMagicFinish(caster, target, spell, action)
magic.onMagicFinish(caster, target, spell, action)
function onSkillFinish(caster, target, skill, action, actionContainer)
--calculate damage
action.amount = skill.basePotency;
action.statusMagnitude = 15;
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
--Try to apply status effect
action.TryStatus(caster, target, skill, actionContainer, true);
end;

View file

@ -15,13 +15,19 @@ function onCombo(caster, target, spell)
spell.potency = spell.potency * 1.5;
end;
function onMagicFinish(caster, target, spell, action)
local damage = math.random(10, 100);
function onSkillFinish(caster, target, skill, action, actionContainer)
--Dispels an effect on each target.
local effects = target.statusEffects.GetStatusEffectsByFlag(16); --lose on dispel
local effects = target.statusEffects.GetStatusEffectsByFlag2(16); --lose on dispel
if effects != nil then
target.statusEffects.RemoveStatusEffect(effects[0]);
end;
return damage;
--calculate damage
action.amount = skill.basePotency;
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
--Try to apply status effect
action.TryStatus(caster, target, skill, actionContainer, true);
end;

View file

@ -9,6 +9,7 @@ function onMagicStart(caster, target, spell)
return 0;
end;
function onMagicFinish(caster, target, spell, action)
magic.onBuffMagicFinish(caster, target, spell, action)
function onSkillFinish(caster, target, skill, action, actionContainer)
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
end;

View file

@ -9,6 +9,13 @@ function onMagicStart(caster, target, spell)
return 0;
end;
function onMagicFinish(caster, target, spell, action)
return magic.onMagicFinish(caster, target, spell, action)
function onSkillFinish(caster, target, skill, action, actionContainer)
--calculate damage
action.amount = skill.basePotency;
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
--Try to apply status effect
action.TryStatus(caster, target, skill, actionContainer, true);
end;

View file

@ -8,6 +8,13 @@ function onMagicStart(caster, target, spell)
return 0;
end;
function onMagicFinish(caster, target, spell, action)
magic.onMagicFinish(caster, target, spell, action)
function onSkillFinish(caster, target, skill, action, actionContainer)
--calculate damage
action.amount = skill.basePotency;
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
--Try to apply status effect
action.TryStatus(caster, target, skill, actionContainer, true);
end;

View file

@ -14,6 +14,13 @@ function onCombo(caster, target, spell)
end;
function onMagicFinish(caster, target, spell, action)
magic.onMagicFinish(caster, target, spell, action)
function onSkillFinish(caster, target, skill, action, actionContainer)
--calculate damage
action.amount = skill.basePotency;
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
--Try to apply status effect
action.TryStatus(caster, target, skill, actionContainer, true);
end;

View file

@ -9,6 +9,13 @@ function onMagicStart(caster, target, spell)
return 0;
end;
function onMagicFinish(caster, target, spell, action)
magic.onCureMagicFinish(caster, target, spell, action)
function onSkillFinish(caster, target, skill, action, actionContainer)
--http://forum.square-enix.com/ffxiv/threads/41900-White-Mage-A-Guide
--2.5 HP per Healing Magic Potency
--0.5 HP per MND
--this is WITH WHM AF chest, don't know formula without AF. AF seems to increase healing by 7-10%?
action.amount = 2.5 * caster.GetMod(modifiersGlobal.MagicHeal) + 0.5 * (caster.GetMod(modifiersGlobal.Mind));
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
end;

View file

@ -5,11 +5,15 @@ function onMagicPrepare(caster, target, spell)
return 0;
end;
--Idea: add way to sort list of targets by hp here?
function onMagicStart(caster, target, spell)
return 0;
end;
--http://forum.square-enix.com/ffxiv/threads/41900-White-Mage-A-Guide read
function onMagicFinish(caster, target, spell, action)
magic.onCureMagicFinish(caster, target, spell, action)
function onSkillFinish(caster, target, skill, action, actionContainer)
--calculate damage
action.amount = skill.basePotency;
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
end;

View file

@ -1,5 +1,6 @@
require("global");
require("magic");
require("modifiers");
function onMagicPrepare(caster, target, spell)
return 0;
@ -9,6 +10,28 @@ function onMagicStart(caster, target, spell)
return 0;
end;
function onMagicFinish(caster, target, spell, action)
magic.onCureMagicFinish(caster, target, spell, action)
--http://forum.square-enix.com/ffxiv/threads/41900-White-Mage-A-Guide
function onSkillFinish(caster, target, skill, action, actionContainer)
--Non-CNJ
--1.10 per HMP
--0 per MND
local hpPerHMP = 1.10;
local hpPerMND = 0;
--CNJ
--With AF:
--1.25 HP per Healing Magic Potency
--0.25 HP per MND
--This is WITH AF chest. Without is lower. AF is ~7-10% increase apparently
--I'm guessing without AF hpPerHMP will be 1.1?
if (caster.GetClass() == 23) then
hpPerHMP = 1.25;
hpPerMND = 0.25;
end
action.amount = hpPerHMP * caster.GetMod(modifiersGlobal.MagicHeal) + hpPerMND * (caster.GetMod(modifiersGlobal.Mind));
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
end;

View file

@ -9,6 +9,13 @@ function onMagicStart(caster, target, spell)
return 0;
end;
function onMagicFinish(caster, target, spell, action)
magic.onCureMagicFinish(caster, target, spell, action)
function onSkillFinish(caster, target, skill, action, actionContainer)
--calculate damage
action.amount = skill.basePotency;
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
--Try to apply status effect
action.TryStatus(caster, target, skill, actionContainer, true);
end;

View file

@ -14,6 +14,10 @@ function onCombo(caster, target, spell)
spell.castTimeMs = spell.castTimeMs / 2;
end;
function onMagicFinish(caster, target, spell, action)
magic.onMagicFinish(caster, target, spell, action)
function onSkillFinish(caster, target, skill, action, actionContainer)
--calculate damage
action.amount = skill.basePotency;
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
end;

View file

@ -14,6 +14,10 @@ function onCombo(caster, target, spell)
spell.castTimeMs = spell.castTimeMs / 2;
end;
function onMagicFinish(caster, target, spell, action)
magic.onMagicFinish(caster, target, spell, action)
function onSkillFinish(caster, target, skill, action, actionContainer)
--calculate damage
action.amount = skill.basePotency;
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
end;

View file

@ -9,6 +9,10 @@ function onMagicStart(caster, target, spell)
return 0;
end;
function onMagicFinish(caster, target, spell, action)
magic.onMagicFinish(caster, target, spell, action)
function onSkillFinish(caster, target, skill, action, actionContainer)
--calculate damage
action.amount = skill.basePotency;
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
end;

View file

@ -9,8 +9,13 @@ function onMagicStart(caster, target, spell)
return 0;
end;
function onMagicFinish(caster, target, spell, action)
--increase potency based on proximity to target
function onSkillFinish(caster, target, skill, action, actionContainer)
--calculate damage
action.amount = skill.basePotency;
magic.onMagicFinish(caster, target, spell, action)
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
--Try to apply status effect
action.TryStatus(caster, target, skill, actionContainer, true);
end;

View file

@ -9,6 +9,14 @@ function onMagicStart(caster, target, spell)
return 0;
end;
function onMagicFinish(caster, target, spell, action)
magic.onMagicFinish(caster, target, spell, action)
function onSkillFinish(caster, target, skill, action, actionContainer)
--Freeze generates 0 enmity and removes a flat 720 enmity
spell.enmityModifier = 0;
target.hateContainer.UpdateHate(caster, -720);
--calculate damage
action.amount = skill.basePotency;
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
end;

View file

@ -9,6 +9,13 @@ function onMagicStart(caster, target, spell)
return 0;
end;
function onMagicFinish(caster, target, spell, action)
magic.onMagicFinish(caster, target, spell, action)
function onSkillFinish(caster, target, skill, action, actionContainer)
--calculate damage
action.amount = skill.basePotency;
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
--Try to apply status effect
action.TryStatus(caster, target, skill, actionContainer, true);
end;

View file

@ -9,13 +9,21 @@ function onMagicStart(caster, target, spell)
return 0;
end;
function onMagicFinish(caster, target, spell, action)
spell.statusId = 228011;
spell.statusDuration = 25;
spell.statusChance = 1.0;
magic.onCureMagicFinish(caster, target, spell, action)
function onSkillFinish(caster, target, skill, action, actionContainer)
action.amount = skill.basePotency;
--8071401: Gallant Gauntlets: Enhances Holy Succor
if caster.GetEquipment().GetItemAtSlot(13).itemId == 8071401 then
action.amount = action.amount * 1.10;
end
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
--When cast on another player you also heal 50% of the amount restored.
if caster != target then
action.AddHealAction(caster.actorId, (action.amount / 2));
caster.AddHP(action.amount / 2)
--33012: You recover [amount] HP.
actionContainer.AddHPAction(caster.actorId, 33012, (action.amount / 2));
end
end;

View file

@ -9,6 +9,7 @@ function onMagicStart(caster, target, spell)
return 0;
end;
function onMagicFinish(caster, target, spell, action)
magic.onBuffMagicFinish(caster, target, spell, action)
function onSkillFinish(caster, target, skill, action, actionContainer)
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
end;

View file

@ -9,6 +9,7 @@ function onMagicStart(caster, target, spell)
return 0;
end;
function onMagicFinish(caster, target, spell, action)
magic.onBuffMagicFinish(caster, target, spell, action)
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("magic");
require("modifiers");
function onMagicPrepare(caster, target, spell)
return 0;
@ -9,6 +10,15 @@ function onMagicStart(caster, target, spell)
return 0;
end;
function onMagicFinish(caster, target, spell, action)
magic.onStatusMagicFinish(caster, target, spell, action)
function onSkillFinish(caster, target, skill, action, actionContainer)
--Actual amount of def/mdef will be calculated in OnGain
skill.statusMagnitude = caster.GetMod(modifiersGlobal.MagicEnhancePotency);
--27365: Enhanced Protect: Increases magic defense gained from Protect.
if caster.HasTrait(27365) then
skill.statusTier = 2;
end
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
end;

View file

@ -0,0 +1,18 @@
require("global");
require("magic");
function onMagicPrepare(caster, target, spell)
return 0;
end;
function onMagicStart(caster, target, spell)
--27363: Enhanced Raise: No longer inflicts weakness.
if caster.HasTrait(27363) then
ability.statusTier = 2;
end
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

@ -0,0 +1,34 @@
require("global");
require("magic");
require("modifiers");
function onMagicPrepare(caster, target, spell)
return 0;
end;
function onMagicStart(caster, target, spell)
return 0;
end;
--http://forum.square-enix.com/ffxiv/threads/41900-White-Mage-A-Guide
function onSkillFinish(caster, target, skill, action, actionContainer)
--For every 1-2-2-1-2 (repeating 3x) then 1-2-1-2-2 (repeating 3x) Enhancing magic potency you have, the amount your Regen cures per tic increases by 1.
--.625 * Enhancing
local slope = 0.625;
local intercept = -110;
if caster.GetEquipment().GetItemAtSlot(14).itemId == 8051406 then
--I don't know if the numbers in that thread are completely correct because the AF Regen table has 3 1555s in a row.
--If we assume that AF boots multiply both static parts of the regenTick equation by 1.25, we get a decently close match to actual numbers
slope = slope * 1.25;
intercept = intercept * 1.25;
end
local regenTick = (slope * caster.GetMod(modifiersGlobal.MagicEnhancePotency)) + intercept) + 1;
spell.statusMagnitude = regenTick;
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
end;

View file

@ -9,6 +9,7 @@ function onMagicStart(caster, target, spell)
return 0;
end;
function onMagicFinish(caster, target, spell, action)
magic.onMagicFinish(caster, target, spell, action)
function onSkillFinish(caster, target, skill, action, actionContainer)
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
end;

View file

@ -9,6 +9,7 @@ function onMagicStart(caster, target, spell)
return 0;
end;
function onMagicFinish(caster, target, spell, action)
magic.onStatusMagicFinish(caster, target, spell, action)
function onSkillFinish(caster, target, skill, action, actionContainer)
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
end;

View file

@ -9,6 +9,7 @@ function onMagicStart(caster, target, spell)
return 0;
end;
function onMagicFinish(caster, target, spell, action)
magic.onStatusMagicFinish(caster, target, spell, action)
function onSkillFinish(caster, target, skill, action, actionContainer)
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
end;

View file

@ -9,6 +9,14 @@ function onMagicStart(caster, target, spell)
return 0;
end;
function onMagicFinish(caster, target, spell, action)
magic.onMagicFinish(caster, target, spell, action)
function onSkillFinish(caster, target, skill, action, actionContainer)
--calculate damage
action.amount = skill.basePotency;
action.statusMagnitude = 50;
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
--Try to apply status effect
action.TryStatus(caster, target, skill, actionContainer, true);
end;

View file

@ -12,9 +12,16 @@ end;
--Increased damage and conversion to single target
function onCombo(caster, target, spell)
spell.aoeType = 0;
spell.potency = spell.potency * 1.5;
spell.basePotency = spell.basePotency * 1.5;
end;
function onMagicFinish(caster, target, spell, action)
magic.onMagicFinish(caster, target, spell, action)
function onSkillFinish(caster, target, skill, action, actionContainer)
--calculate damage
action.amount = skill.basePotency;
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
--Try to apply status effect
action.TryStatus(caster, target, skill, actionContainer, true);
end;

View file

@ -9,6 +9,18 @@ function onMagicStart(caster, target, spell)
return 0;
end;
function onMagicFinish(caster, target, spell, action)
magic.onStatusMagicFinish(caster, target, spell, action)
--http://forum.square-enix.com/ffxiv/threads/41900-White-Mage-A-Guide
function onSkillFinish(caster, target, skill, action, actionContainer)
local hpPerPoint = 1.34;--? 1.33?
--27364: Enhanced Stoneskin: Increases efficacy of Stoneskin
if caster.HasTrait(27364) then
hpPerPoint = 1.96;
end
spell.statusMagnitude = hpPerPoint * caster.GetMod(modifiersGlobal.MagicEnhancePotency);
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
end;

View file

@ -13,6 +13,13 @@ function onCombo(caster, target, spell)
spell.critDamageModifier = 1.5;
end;
function onMagicFinish(caster, target, spell, action)
magic.onMagicFinish(caster, target, spell, action)
function onSkillFinish(caster, target, skill, action, actionContainer)
--calculate damage
action.amount = skill.basePotency;
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
--Try to apply status effect
action.TryStatus(caster, target, skill, actionContainer, true);
end;

View file

@ -15,6 +15,13 @@ function onCombo(caster, target, spell)
spell.recastTimeMs = spell.recastTimeMs / 2;
end;
function onMagicFinish(caster, target, spell, action)
magic.onMagicFinish(caster, target, spell, action)
function onSkillFinish(caster, target, skill, action, actionContainer)
--calculate damage
action.amount = skill.basePotency;
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
--Try to apply status effect
action.TryStatus(caster, target, skill, actionContainer, true);
end;

View file

@ -8,6 +8,13 @@ function onMagicStart(caster, target, spell)
return 0;
end;
function onMagicFinish(caster, target, spell, action)
magic.onMagicFinish(caster, target, spell, action)
function onSkillFinish(caster, target, skill, action, actionContainer)
--calculate damage
action.amount = skill.basePotency;
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
--Try to apply status effect
action.TryStatus(caster, target, skill, actionContainer, true);
end;