mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-06-08 21:44:35 +02:00
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:
parent
b8d6a943aa
commit
c5ce2ec771
239 changed files with 5125 additions and 1237 deletions
|
@ -16,5 +16,4 @@ local attackMagicHandlers = {
|
|||
function onEventStarted(player, command, triggerName, arg1, arg2, arg3, arg4, targetActor, arg5, arg6, arg7, arg8)
|
||||
player.Ability(command.actorId, targetActor);
|
||||
player:endEvent();
|
||||
|
||||
end
|
|
@ -10,9 +10,9 @@ Switches between active and passive mode states
|
|||
|
||||
function onEventStarted(player, command, triggerName)
|
||||
|
||||
if (player.newMainState == 0x0000) then
|
||||
if (player.currentMainState == 0x0000) then
|
||||
player.Engage(0, 0x0002);
|
||||
elseif (player.newMainState == 0x0002) then
|
||||
elseif (player.currentMainState == 0x0002) then
|
||||
player.Disengage(0x0000);
|
||||
end
|
||||
player:endEvent();
|
||||
|
|
6
data/scripts/commands/ChangeJobCommand.lua
Normal file
6
data/scripts/commands/ChangeJobCommand.lua
Normal file
|
@ -0,0 +1,6 @@
|
|||
function onEventStarted(player, caller, commandRequest, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)
|
||||
|
||||
player:SetCurrentJob(17);
|
||||
|
||||
player:EndEvent();
|
||||
end
|
|
@ -70,7 +70,7 @@ function onEventStarted(player, equipAbilityWidget, triggername, slot, commandid
|
|||
ability = worldManager.GetBattleCommand(commandid);
|
||||
--Is the ability a part of the player's current class?
|
||||
--This check isn't correct because of jobs having different ids
|
||||
local classId = player:GetClass();
|
||||
local classId = player:GetCurrentClassOrJob();
|
||||
local jobId = player:ConvertClassIdToJobId(classId);
|
||||
|
||||
if(ability.job == classId or ability.job == jobId) then
|
||||
|
|
7
data/scripts/commands/PointSearchAbility.lua
Normal file
7
data/scripts/commands/PointSearchAbility.lua
Normal file
|
@ -0,0 +1,7 @@
|
|||
|
||||
function onEventStarted(player, command, triggerName, arg1, arg2, arg3, arg4, targetActor, arg5, arg6, arg7, arg8)
|
||||
|
||||
|
||||
player.Cast(command.actorId, targetActor);
|
||||
player:endEvent();
|
||||
end
|
18
data/scripts/commands/ability/aegis_boon.lua
Normal file
18
data/scripts/commands/ability/aegis_boon.lua
Normal file
|
@ -0,0 +1,18 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27164: Swift Aegis Boon
|
||||
if caster.HasTrait(27164) then
|
||||
ability.recastTimeMs = ability.recastTimeMs - 15000;
|
||||
end
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
22
data/scripts/commands/ability/barrage.lua
Normal file
22
data/scripts/commands/ability/barrage.lua
Normal file
|
@ -0,0 +1,22 @@
|
|||
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)
|
||||
ability.statusMagnitude = 4;
|
||||
|
||||
--27242: Enhanced Barrage: Adds an additional attack to barrage ( 4 -> 5 )
|
||||
if caster.HasTrait(27242) then
|
||||
ability.statusMagnitude = 5;
|
||||
end
|
||||
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
19
data/scripts/commands/ability/berserk.lua
Normal file
19
data/scripts/commands/ability/berserk.lua
Normal file
|
@ -0,0 +1,19 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27205: Enhanced Berserk: Increases the effect of Berserk by 20%
|
||||
if caster.HasTrait(27205) 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;
|
19
data/scripts/commands/ability/blindside.lua
Normal file
19
data/scripts/commands/ability/blindside.lua
Normal file
|
@ -0,0 +1,19 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27121: Enhanced Blindside
|
||||
if caster.HasTrait(27121) 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;
|
43
data/scripts/commands/ability/blissful_mind.lua
Normal file
43
data/scripts/commands/ability/blissful_mind.lua
Normal file
|
@ -0,0 +1,43 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27362: Enhanced Blissful Mind
|
||||
if caster.HasTrait(27362) then
|
||||
ability.statusTier = 2;
|
||||
end
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--Blissful Mind
|
||||
--223228: Blissful Mind
|
||||
--223242: Fully Blissful Mind
|
||||
local buff = caster.statusEffects.GetStatusEffectById(223228) or caster.statusEffects.GetStatusEffectById(223242);
|
||||
|
||||
--If we have a buff then Blissful Mind removes that buff and restores MP. Otherwise, it adds the Blissful Mind effect
|
||||
if buff ~= nil then
|
||||
local amount = buff.GetExtra();
|
||||
local remAction = caster.statusEffects.RemoveStatusEffectForBattleAction(buff, 30329);
|
||||
|
||||
caster.AddMP(amount);
|
||||
|
||||
actionContainer.AddMPAction(caster.actorId, 30321, amount);
|
||||
actionContainer.AddAction(remAction);
|
||||
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
|
||||
local amount = caster.GetHP() * 0.25;
|
||||
|
||||
caster.DelHP(amount);
|
||||
skill.statusMagnitude = amount;
|
||||
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
|
||||
end
|
||||
|
||||
end;
|
24
data/scripts/commands/ability/blood_for_blood.lua
Normal file
24
data/scripts/commands/ability/blood_for_blood.lua
Normal file
|
@ -0,0 +1,24 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27283: Enhanced Blood for Blood: Increases damage dealt to enemies by B4B by 25%
|
||||
if caster.HasTrait(27283) then
|
||||
ability.statusTier = 2;
|
||||
end
|
||||
|
||||
--27284: Swift Blood for Blood: Reduces recast time of B4B by 15 seconds
|
||||
if caster.HasTrait(27284) then
|
||||
ability.recastTimeMs = ability.recastTimeMs - 15000;
|
||||
end
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
19
data/scripts/commands/ability/bloodbath.lua
Normal file
19
data/scripts/commands/ability/bloodbath.lua
Normal file
|
@ -0,0 +1,19 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27202: Swift Bloodbath
|
||||
if caster.HasTrait(27202) then
|
||||
ability.recastTimeMs = ability.recastTimeMs - 15000;
|
||||
end
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
18
data/scripts/commands/ability/chameleon.lua
Normal file
18
data/scripts/commands/ability/chameleon.lua
Normal file
|
@ -0,0 +1,18 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27245: Swift Chameleon
|
||||
if caster.HasTrait(27245) then
|
||||
ability.recastTimeMs = ability.recastTimeMs - 60000;
|
||||
end
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
target.hateContainer.UpdateHate(caster, -840);
|
||||
end;
|
15
data/scripts/commands/ability/cleric_stance.lua
Normal file
15
data/scripts/commands/ability/cleric_stance.lua
Normal 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;
|
19
data/scripts/commands/ability/collusion.lua
Normal file
19
data/scripts/commands/ability/collusion.lua
Normal 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)
|
||||
--8032701: Fighter's Gauntlets: Reduces Collusion cooldown by 10 seconds
|
||||
if caster.GetEquipment().GetItemAtSlot(14).itemId == 8032701 then
|
||||
skill.recastTimeMs = skill.recastTimeMs - 10000;
|
||||
end
|
||||
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
23
data/scripts/commands/ability/cover.lua
Normal file
23
data/scripts/commands/ability/cover.lua
Normal file
|
@ -0,0 +1,23 @@
|
|||
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)
|
||||
--This is for the "Cover" effect the caster receives.
|
||||
local coverTier = 1
|
||||
--8032701: Gallant Surcoat: Enhances Cover
|
||||
if caster.GetEquipment().GetItemAtSlot(10).itemId == 8032701 then
|
||||
coverTier = 2;
|
||||
end
|
||||
|
||||
actionContainer.AddAction(caster.statusEffects.AddStatusForBattleAction(223063, coverTier));
|
||||
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
19
data/scripts/commands/ability/dark_seal.lua
Normal file
19
data/scripts/commands/ability/dark_seal.lua
Normal file
|
@ -0,0 +1,19 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27320: Swift Dark Seal
|
||||
if caster.HasTrait(27320) then
|
||||
ability.recastTimeMs = ability.recastTimeMs - 30000;
|
||||
end
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
19
data/scripts/commands/ability/decoy.lua
Normal file
19
data/scripts/commands/ability/decoy.lua
Normal file
|
@ -0,0 +1,19 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27244: Enhanced Decoy: Renders Decoy capable of evading melee attacks
|
||||
if caster.HasTrait(27244) then
|
||||
ability.statusId = 223238;
|
||||
end
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
|
@ -9,6 +9,5 @@ function onAbilityStart(caster, target, skill)
|
|||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityFinish(caster, target, skill, action)
|
||||
return onStatusAbilityFinish(caster, target, skill, action);
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
end;
|
20
data/scripts/commands/ability/divine_veil.lua
Normal file
20
data/scripts/commands/ability/divine_veil.lua
Normal file
|
@ -0,0 +1,20 @@
|
|||
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)
|
||||
--8051401: Gallant Cuisses
|
||||
if caster.GetEquipment().GetItemAtSlot(14).itemId == 8051401 then
|
||||
ability.statusTier = 2;
|
||||
end
|
||||
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
|
@ -9,6 +9,8 @@ function onAbilityStart(caster, target, ability)
|
|||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityFinish(caster, target, skill, action)
|
||||
return onAttackAbilityFinish(caster, target, skill, action);
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
action.amount = skill.basePotency;
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
24
data/scripts/commands/ability/dread_spike.lua
Normal file
24
data/scripts/commands/ability/dread_spike.lua
Normal file
|
@ -0,0 +1,24 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--Need a better way to do this
|
||||
|
||||
for i = 223212,223217 do
|
||||
local remAction = caster.statusEffects.RemoveStatusEffectForBattleAction(i, 30329)
|
||||
|
||||
if remAction ~= nil then
|
||||
actionContainer.AddAction(remAction);
|
||||
skill.statusTier = 2;
|
||||
break;
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
16
data/scripts/commands/ability/elusive_jump.lua
Normal file
16
data/scripts/commands/ability/elusive_jump.lua
Normal file
|
@ -0,0 +1,16 @@
|
|||
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)
|
||||
--How to do enmity?
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
19
data/scripts/commands/ability/enduring_march.lua
Normal file
19
data/scripts/commands/ability/enduring_march.lua
Normal file
|
@ -0,0 +1,19 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27203: Enhanced Outmaneuver
|
||||
if caster.HasTrait(27203) 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;
|
19
data/scripts/commands/ability/excruciate.lua
Normal file
19
data/scripts/commands/ability/excruciate.lua
Normal file
|
@ -0,0 +1,19 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27321: Enhanced Excruciate: Increases critical rate bonus from Excruciate.
|
||||
if caster.HasTrait(27321) 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;
|
19
data/scripts/commands/ability/featherfoot.lua
Normal file
19
data/scripts/commands/ability/featherfoot.lua
Normal file
|
@ -0,0 +1,19 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27123: Enhanced Featherfoot
|
||||
if caster.HasTrait(27123) 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;
|
19
data/scripts/commands/ability/fists_of_earth.lua
Normal file
19
data/scripts/commands/ability/fists_of_earth.lua
Normal file
|
@ -0,0 +1,19 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27124: Enhanced Fists of Earth
|
||||
if caster.HasTrait(27125) 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;
|
19
data/scripts/commands/ability/fists_of_fire.lua
Normal file
19
data/scripts/commands/ability/fists_of_fire.lua
Normal file
|
@ -0,0 +1,19 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27124: Enhanced Fists of Fire
|
||||
if caster.HasTrait(27124) 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;
|
27
data/scripts/commands/ability/flash.lua
Normal file
27
data/scripts/commands/ability/flash.lua
Normal file
|
@ -0,0 +1,27 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27161: Enhanced Flash: Adds Blind effect to flash
|
||||
if caster.HasTrait(27161) then
|
||||
ability.statusChance = 1;
|
||||
end
|
||||
|
||||
--27162: Enhanced Flash II: Expands Flash to affect enemies near target
|
||||
if caster.HasTrait(27162) then
|
||||
ability.aoeTarget = TargetFindAOEType.Circle;
|
||||
end
|
||||
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
action.enmity = 400;
|
||||
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
19
data/scripts/commands/ability/foresight.lua
Normal file
19
data/scripts/commands/ability/foresight.lua
Normal file
|
@ -0,0 +1,19 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27201: Swift Foresight
|
||||
if caster.HasTrait(27201) then
|
||||
ability.recastTimeMs = ability.recastTimeMs - 15000;
|
||||
end
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
28
data/scripts/commands/ability/hallowed_ground.lua
Normal file
28
data/scripts/commands/ability/hallowed_ground.lua
Normal file
|
@ -0,0 +1,28 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27245: Swift Chameleon
|
||||
if caster.HasTrait(27245) then
|
||||
ability.recastTimeMs = ability.recastTimeMs - 60000;
|
||||
end
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--Get all targets with hate on caster and spread 1140 enmity between them.
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--[[
|
||||
local enemies = caster.GetTargetsWithHate()
|
||||
local enmity = 1140 / enemies.Count
|
||||
for enemy in enemies do
|
||||
enemy.hateContainer.updateHate(enmity);
|
||||
end]]
|
||||
|
||||
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
19
data/scripts/commands/ability/hawks_eye.lua
Normal file
19
data/scripts/commands/ability/hawks_eye.lua
Normal file
|
@ -0,0 +1,19 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27240: Enhanced Hawks Eye
|
||||
--Increases accuracy gained by 50%. (Hawks Eye normally gives 12.5% of your accuracy, Traited it gives 18.75%)
|
||||
if caster.HasTrait(27240) then
|
||||
ability.statusTier = 2
|
||||
end
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
|
@ -6,9 +6,24 @@ function onAbilityPrepare(caster, target, ability)
|
|||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27280: Enhanced Invigorate: Increases duration of Invigorate by 15 seconds
|
||||
if caster.HasTrait(27280) then
|
||||
ability.statusDuration = ability.statusDuration + 15;
|
||||
end
|
||||
|
||||
--Drachen Mail: Increases Invigorate TP tick from 100 to 120.
|
||||
local magnitude = 100;
|
||||
|
||||
--8032704: Drachen Mail
|
||||
if caster.GetEquipment().GetItemAtSlot(10).itemId == 8032704 then
|
||||
magnitude = 120;
|
||||
end
|
||||
|
||||
ability.statusMagnitude = magnitude;
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityFinish(caster, target, ability, action)
|
||||
return onStatusAbilityFinish(caster, target, ability, action)
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
|
@ -9,6 +9,9 @@ function onAbilityStart(caster, target, ability)
|
|||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityFinish(caster, target, skill, action)
|
||||
return onAttackAbilityFinish(caster, target, skill, action);
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
action.amount = skill.basePotency;
|
||||
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
19
data/scripts/commands/ability/keen_flurry.lua
Normal file
19
data/scripts/commands/ability/keen_flurry.lua
Normal file
|
@ -0,0 +1,19 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27285: Enhanced Keen Flurry: Reduces recast time of WS used during KF by 50%
|
||||
if caster.HasTrait(27285) 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;
|
53
data/scripts/commands/ability/life_surge.lua
Normal file
53
data/scripts/commands/ability/life_surge.lua
Normal file
|
@ -0,0 +1,53 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27282: Enhanced Life Surge: Increases effect of Life Surge by 20%
|
||||
if caster.HasTrait(27282) then
|
||||
ability.statusTier = 2;
|
||||
end
|
||||
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--Need a better way to do this
|
||||
--223212: Power Surge I
|
||||
--223213: Power Surge II
|
||||
--223212: Power Surge III
|
||||
--No message is sent when PS is removed by Life Surge
|
||||
caster.statusEffects.RemoveStatusEffect(223212, true);
|
||||
caster.statusEffects.RemoveStatusEffect(223213, true);
|
||||
caster.statusEffects.RemoveStatusEffect(223214, true);
|
||||
|
||||
|
||||
--Using this ability moves to the next LS buff
|
||||
local removeId = 0;
|
||||
--223215: Life Surge I
|
||||
--223216: Life Surge II
|
||||
--223217: Life Surge III
|
||||
if caster.statusEffects.HasStatusEffect(223215) then
|
||||
removeId = 223215;
|
||||
skill.statusId = 223216;
|
||||
skill.statusTier = 2;
|
||||
elseif caster.statusEffects.HasStatusEffect(223216) then
|
||||
removeId = 223216;
|
||||
skill.statusId = 223217;
|
||||
skill.statusTier = 3;
|
||||
elseif caster.statusEffects.HasStatusEffect(223217) then
|
||||
effect = caster.statusEffects.GetStatusEffectById(223217)
|
||||
effect.RefreshTime();
|
||||
skill.statusId = 223217;
|
||||
end
|
||||
|
||||
if not (removeId == 0) then
|
||||
--caster.statusEffects.RemoveStatusEffect(removeId, true);
|
||||
caster.statusEffects.ReplaceEffect(caster.statusEffects.GetStatusEffectById(removeId), skill.statusId, skill.statusTier, skill.statusMagnitude, skill.statusDuration);
|
||||
end
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
|
@ -9,6 +9,8 @@ function onAbilityStart(caster, target, ability)
|
|||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityFinish(caster, target, skill, action)
|
||||
return onAttackAbilityFinish(caster, target, skill, action);
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
action.amount = skill.basePotency;
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
19
data/scripts/commands/ability/necrogenesis.lua
Normal file
19
data/scripts/commands/ability/necrogenesis.lua
Normal file
|
@ -0,0 +1,19 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27322: Swift Dark Seal
|
||||
if caster.HasTrait(27322) then
|
||||
ability.recastTimeMs = ability.recastTimeMs - 30000;
|
||||
end
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
19
data/scripts/commands/ability/outmaneuver.lua
Normal file
19
data/scripts/commands/ability/outmaneuver.lua
Normal file
|
@ -0,0 +1,19 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27164: Enhanced Outmaneuver
|
||||
if caster.HasTrait(27164) 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;
|
19
data/scripts/commands/ability/parsimony.lua
Normal file
19
data/scripts/commands/ability/parsimony.lua
Normal file
|
@ -0,0 +1,19 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27323: Enhanced Parsimony: Increases MP gained from Parsimony by 25%
|
||||
if caster.HasTrait(27323) 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;
|
24
data/scripts/commands/ability/power_surge.lua
Normal file
24
data/scripts/commands/ability/power_surge.lua
Normal file
|
@ -0,0 +1,24 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27281: Enhanced Power Surge: Increases effect of Power Surge by 50%
|
||||
if caster.HasTrait(27281) then
|
||||
ability.statusTier = 2;
|
||||
end
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--Need a better way to do this
|
||||
actionContainer.AddAction(caster.statusEffects.RemoveStatusEffectForBattleAction(223215));
|
||||
actionContainer.AddAction(caster.statusEffects.RemoveStatusEffectForBattleAction(223216));
|
||||
actionContainer.AddAction(caster.statusEffects.RemoveStatusEffectForBattleAction(223217));
|
||||
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
21
data/scripts/commands/ability/provoke.lua
Normal file
21
data/scripts/commands/ability/provoke.lua
Normal file
|
@ -0,0 +1,21 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27200: Enhanced Provoke: Adds Attack Down effect to Provoke.
|
||||
if caster.HasTrait(27200) then
|
||||
ability.statusChance = 1.0;
|
||||
end
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--http://forum.square-enix.com/ffxiv/threads/47393-Tachi-s-Guide-to-Paladin-%28post-1.22b%29
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
action.enmity = 750;
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
29
data/scripts/commands/ability/quelling_strike.lua
Normal file
29
data/scripts/commands/ability/quelling_strike.lua
Normal file
|
@ -0,0 +1,29 @@
|
|||
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)
|
||||
--QS gives 300 TP by default.
|
||||
skill.statusMagnitude = 300;
|
||||
--I'm assuming that with raging strikes, that increases to 500.
|
||||
--and traited that increases again to 750 (or 450 without RS)
|
||||
if caster.statusEffects.HasStatusEffect(223221) then
|
||||
actionContainer.AddAction(caster.statusEffects.RemoveStatusEffectForBattleAction(223221));
|
||||
skill.statusMagnitude = 500;
|
||||
end
|
||||
|
||||
--27241: Enhanced Quelling Strike: Increases TP gained from QS by 50%
|
||||
if caster.HasTrait(27241) then
|
||||
skill.statusMagnitude = skill.statusMagnitude * 1.5;
|
||||
end
|
||||
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
19
data/scripts/commands/ability/raging_strike.lua
Normal file
19
data/scripts/commands/ability/raging_strike.lua
Normal file
|
@ -0,0 +1,19 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27243: Enhanced Raging Strike: Increases effect of Raging Strike by 50%
|
||||
if caster.HasTrait(27241) 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;
|
19
data/scripts/commands/ability/rampage.lua
Normal file
19
data/scripts/commands/ability/rampage.lua
Normal file
|
@ -0,0 +1,19 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27204: Enhanced Rampage
|
||||
if caster.HasTrait(27204) 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;
|
27
data/scripts/commands/ability/rampart.lua
Normal file
27
data/scripts/commands/ability/rampart.lua
Normal file
|
@ -0,0 +1,27 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
require("battleutils")
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
|
||||
--27163: Enhanced Rampart:Expands rampart to affect party members
|
||||
if caster.HasTrait(27163) then
|
||||
ability.aoeType = TargetFindAOEType.Circle;
|
||||
end
|
||||
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--http://forum.square-enix.com/ffxiv/threads/47393-Tachi-s-Guide-to-Paladin-%28post-1.22b%29
|
||||
--180 enmity per member that has enmity on the current enemy
|
||||
--Need to figure out enmity system
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
action.enmity = 180;
|
||||
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
19
data/scripts/commands/ability/sacred_prism.lua
Normal file
19
data/scripts/commands/ability/sacred_prism.lua
Normal file
|
@ -0,0 +1,19 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27360: Swift Sacred Prism: Reduces recast by 30 seconds
|
||||
if caster.HasTrait(27360) then
|
||||
ability.recastTimeMs = ability.recastTimeMs - 30000;
|
||||
end
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
|
@ -1,14 +1,39 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
require("modifiers");
|
||||
--require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityFinish(caster, target, ability, action)
|
||||
return onHealAbilityFinish(caster, target, ability, action)
|
||||
--http://forum.square-enix.com/ffxiv/threads/51208-2nd-wind-modifier
|
||||
--The primary modifier for SW is class level.
|
||||
|
||||
--There are three other factors that contribute to SW:
|
||||
-- PGL's SW trait, which increases potency by 25%.
|
||||
-- A bonus from INT (2INT=1HP)
|
||||
-- An additional random integer (580 at level 50. +/- 3%)
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--Base formula isn't quit known yet
|
||||
local amount = 100;
|
||||
--Heals can vary by up to ~3.5% in either direction
|
||||
amount = math.Clamp(amount * (0.965 + (math.rand() * 7.0)), 0, 9999);
|
||||
|
||||
--PGL gets an INT bonus for Second Wind
|
||||
if caster.GetClass() == 2 then
|
||||
amount = amount + caster.GetMod(modifiersGlobal.Intelligence) / 2;
|
||||
end;
|
||||
|
||||
--27120: Enhanced Second Wind
|
||||
if caster.HasTrait(27120) then
|
||||
amount = amount * 1.25;
|
||||
end;
|
||||
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
19
data/scripts/commands/ability/sentinel.lua
Normal file
19
data/scripts/commands/ability/sentinel.lua
Normal file
|
@ -0,0 +1,19 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27160: Enhanced Sentinel
|
||||
if caster.HasTrait(27160) 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;
|
19
data/scripts/commands/ability/shroud_of_saints.lua
Normal file
19
data/scripts/commands/ability/shroud_of_saints.lua
Normal file
|
@ -0,0 +1,19 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27361: Swift Shroud of Saints
|
||||
if caster.HasTrait(27361) then
|
||||
ability.recastTimeMs = ability.recastTimeMs - 60000;
|
||||
end
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
19
data/scripts/commands/ability/taunt.lua
Normal file
19
data/scripts/commands/ability/taunt.lua
Normal file
|
@ -0,0 +1,19 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
--27122: Swift Taunt: Reduces recast time by 15 seconds.
|
||||
if caster.HasTrait(27121) then
|
||||
ability.recastTimeMs = ability.recastTimeMs - 15000;
|
||||
end
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
20
data/scripts/commands/ability/tempered_will.lua
Normal file
20
data/scripts/commands/ability/tempered_will.lua
Normal file
|
@ -0,0 +1,20 @@
|
|||
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)
|
||||
--Is this before or after status is gained?
|
||||
--Will probably need to switch to a flag for this because it might include more than just these 3 effects.
|
||||
actionContainer.AddAction(caster.statusEffects.RemoveStatusEffectForBattleAction(228011));
|
||||
actionContainer.AddAction(caster.statusEffects.RemoveStatusEffectForBattleAction(228013));
|
||||
actionContainer.AddAction(caster.statusEffects.RemoveStatusEffectForBattleAction(228021));
|
||||
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
22
data/scripts/commands/ability/vengeance.lua
Normal file
22
data/scripts/commands/ability/vengeance.lua
Normal file
|
@ -0,0 +1,22 @@
|
|||
require("global");
|
||||
require("ability");
|
||||
require("battleutils")
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
|
||||
--8032703: Fighter's Cuirass: Enhances Vengeance
|
||||
if caster.GetEquipment().GetItemAtSlot(13).itemId == 8032703 then
|
||||
skill.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;
|
29
data/scripts/commands/gm/ba.lua
Normal file
29
data/scripts/commands/gm/ba.lua
Normal file
|
@ -0,0 +1,29 @@
|
|||
require("global");
|
||||
|
||||
properties = {
|
||||
permissions = 0,
|
||||
parameters = "sssss",
|
||||
description =
|
||||
[[
|
||||
Adds experience <qty> to player or <targetname>.
|
||||
!giveexp <qty> |
|
||||
!giveexp <qty> <targetname> |
|
||||
]],
|
||||
}
|
||||
|
||||
function onTrigger(player, argc, commandId, animationId, textId, effectId, amount)
|
||||
local sender = "[battleaction] ";
|
||||
|
||||
if player then
|
||||
cid = tonumber(commandId) or 0;
|
||||
aid = tonumber(animationId) or 0;
|
||||
tid = tonumber(textId) or 0;
|
||||
print(effectId)
|
||||
eid = tonumber(effectId) or 0;
|
||||
amt = tonumber(amount) or 0;
|
||||
|
||||
player:DoBattleActionAnimation(cid, aid, tid, eid, amt);
|
||||
else
|
||||
print(sender.."unable to add experience, ensure player name is valid.");
|
||||
end;
|
||||
end;
|
|
@ -31,4 +31,5 @@ function onTrigger(player, argc, slot, wId, eId, vId, cId)
|
|||
else
|
||||
player:SendMessage(messageID, sender, "No parameters sent! Usage: "..properties.description);
|
||||
end;
|
||||
|
||||
end;
|
24
data/scripts/commands/gm/setsize.lua
Normal file
24
data/scripts/commands/gm/setsize.lua
Normal file
|
@ -0,0 +1,24 @@
|
|||
require("global");
|
||||
|
||||
properties = {
|
||||
permissions = 0,
|
||||
parameters = "s",
|
||||
description =
|
||||
[[
|
||||
Changes appearance for equipment with given parameters.
|
||||
!graphic <slot> <wID> <eID> <vID> <vID>
|
||||
]],
|
||||
}
|
||||
|
||||
function onTrigger(player, argc, size)
|
||||
local messageID = MESSAGE_TYPE_SYSTEM_ERROR;
|
||||
local sender = "[setappearance] ";
|
||||
|
||||
s = tonumber(size) or 0;
|
||||
|
||||
if player and player.target then
|
||||
player.target.appearanceIds[0] = s;
|
||||
player.target.zone.BroadcastPacketAroundActor(player.target, player.target.CreateAppearancePacket());
|
||||
end;
|
||||
|
||||
end;
|
27
data/scripts/commands/gm/setstate.lua
Normal file
27
data/scripts/commands/gm/setstate.lua
Normal file
|
@ -0,0 +1,27 @@
|
|||
require("global");
|
||||
|
||||
properties = {
|
||||
permissions = 0,
|
||||
parameters = "s",
|
||||
description =
|
||||
[[
|
||||
Changes appearance for equipment with given parameters.
|
||||
!graphic <slot> <wID> <eID> <vID> <vID>
|
||||
]],
|
||||
}
|
||||
|
||||
function onTrigger(player, argc, state)
|
||||
local messageID = MESSAGE_TYPE_SYSTEM_ERROR;
|
||||
local sender = "[setstate] ";
|
||||
|
||||
max = tonumber(state) or 0;
|
||||
|
||||
for s = 0, max do
|
||||
if player and player.target then
|
||||
player.target:ChangeState(s);
|
||||
wait(0.8);
|
||||
player:SendMessage(0x20, "", "state: "..s);
|
||||
end;
|
||||
end
|
||||
|
||||
end;
|
|
@ -1,4 +1,5 @@
|
|||
require("global");
|
||||
require("modifiers");
|
||||
|
||||
properties = {
|
||||
permissions = 0,
|
||||
|
@ -149,16 +150,18 @@ function onTrigger(player, argc, width, height, blockCount)
|
|||
local zone = pos[4];
|
||||
local w = tonumber(width) or 0;
|
||||
local h = tonumber(height) or 0;
|
||||
local blocks = tonumber(blockCount) or 0;
|
||||
printf("%f %f %f", x, y, z);
|
||||
--local x, y, z = player.GetPos();
|
||||
for i = 0, blockCount do
|
||||
for i = 0, blocks do
|
||||
for i = 0, w do
|
||||
for j = 0, h do
|
||||
local actor = player.GetZone().SpawnActor(2104001, 'ass', x + (i - (w / 2) * 3), y, z + (j - (h / 2) * 3), rot, 0, 0, true);
|
||||
actor.ChangeNpcAppearance(1001149)
|
||||
actor.SetLevel(50);
|
||||
actor.ChangeNpcAppearance(1001149);
|
||||
actor.SetMaxHP(10000);
|
||||
actor.SetHP(10000);
|
||||
actor.SetMod(modifiersGlobal.HasShield, 1);
|
||||
end
|
||||
--actor.FollowTarget(player, 3.2);
|
||||
end
|
||||
|
||||
x = x + 500
|
||||
|
|
|
@ -2,20 +2,18 @@ require("global");
|
|||
|
||||
properties = {
|
||||
permissions = 0,
|
||||
parameters = "sss",
|
||||
parameters = "",
|
||||
description =
|
||||
[[
|
||||
Set movement speed for player. Enter no value to reset to default.
|
||||
!speed <run> |
|
||||
!speed <stop> <walk> <run> |
|
||||
Get the amount of actors in this zone.
|
||||
!zonecount
|
||||
]]
|
||||
|
||||
}
|
||||
|
||||
function onTrigger(player, argc, stop, walk, run)
|
||||
function onTrigger(player, argc)
|
||||
|
||||
local message = tostring(player.zone.GetAllActors().Count);
|
||||
|
||||
player.SendMessage(0x20, "", message);
|
||||
|
||||
player.SendMessage(0x20, "", message);
|
||||
end
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
18
data/scripts/commands/magic/raise.lua
Normal file
18
data/scripts/commands/magic/raise.lua
Normal 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;
|
34
data/scripts/commands/magic/regen.lua
Normal file
34
data/scripts/commands/magic/regen.lua
Normal 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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -14,6 +14,13 @@ function onCombo(caster, target, skill)
|
|||
skill.statusChance = 0.50;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--calculate ws 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;
|
|
@ -9,12 +9,18 @@ function onSkillStart(caster, target, skill)
|
|||
return 0;
|
||||
end;
|
||||
|
||||
--Inflicts additional damage when bleed ends
|
||||
--Note for later, going to set bleed tier to 2, when bleed get scripted, check if tier is 2 and add additional damage at the end
|
||||
--Changes status to Bloodletter from Bloodletter2. Changes icon of dot and adds additional damage at the end.
|
||||
function onCombo(caster, target, skill)
|
||||
skill.statusTier = 2;
|
||||
skill.statusId = 223127;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--calculate ws 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;
|
|
@ -14,6 +14,10 @@ function onPositional(caster, target, skill)
|
|||
skill.basePotency = skill.basePotency * 1.5;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--calculate ws damage
|
||||
action.amount = skill.basePotency;
|
||||
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
|
@ -11,9 +11,16 @@ end;
|
|||
|
||||
--Increased crit hit rating
|
||||
function onCombo(caster, target, skill)
|
||||
skill.critRateModifier = 1.5;
|
||||
skill.bonusCritRate = 100;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--calculate ws 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;
|
|
@ -11,8 +11,7 @@ end;
|
|||
|
||||
--Chance to inflict blind on flank
|
||||
function onPositional(caster, target, skill)
|
||||
skill.statusChance = 0.50;
|
||||
skill.statusDuration = 10;
|
||||
skill.statusChance = 0.75;
|
||||
end;
|
||||
|
||||
function onCombo(caster, target, skill)
|
||||
|
@ -20,6 +19,13 @@ function onCombo(caster, target, skill)
|
|||
end;
|
||||
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--calculate ws 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;
|
|
@ -9,6 +9,13 @@ function onSkillStart(caster, target, skill)
|
|||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--calculate ws 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;
|
|
@ -18,6 +18,13 @@ function onCombo(caster, target, skill)
|
|||
end;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--calculate ws 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;
|
|
@ -14,6 +14,13 @@ function onCombo(caster, target, skill)
|
|||
skill.statusDuration = skill.statusDuration * 2;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--calculate ws 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;
|
|
@ -11,9 +11,13 @@ end;
|
|||
|
||||
--Increased accuracy
|
||||
function onCombo(caster, target, skill)
|
||||
skill.accuracyModifier = 1.25;
|
||||
skill.accuracyModifier = 50;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--calculate ws damage
|
||||
action.amount = skill.basePotency;
|
||||
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
|
@ -14,6 +14,13 @@ function onPositional(caster, target, skill)
|
|||
skill.statusChance = 0.50;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--calculate ws 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;
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue