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
|
@ -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;
|
|
@ -13,6 +13,10 @@ function onPositional(caster, target, skill)
|
|||
skill.basePotency = skill.basePotency * 1.25;
|
||||
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;
|
|
@ -9,6 +9,10 @@ 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);
|
||||
end;
|
|
@ -10,9 +10,16 @@ function onSkillStart(caster, target, skill)
|
|||
end;
|
||||
|
||||
function onCombo(caster, target, skill)
|
||||
skill.enmityModifier = skill.enmityModifier * 2
|
||||
--http://forum.square-enix.com/ffxiv/threads/50479-Gladiator-Paladin-STR-MND-Stat-Caps/page7
|
||||
--4.5 is a bonus on top of the 1x of normal flat blade
|
||||
--This is modified by MND and dlvl and caps at 4.5, dont know the values used though
|
||||
skill.enmityModifier = 5.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;
|
|
@ -9,6 +9,13 @@ function onSkillStart(caster, target, spell)
|
|||
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;
|
|
@ -9,7 +9,12 @@ function onSkillStart(caster, target, skill)
|
|||
return 0;
|
||||
end;
|
||||
|
||||
function 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);
|
||||
|
||||
caster.AddTP(1000);
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
|
@ -11,9 +11,16 @@ end;
|
|||
|
||||
--Chance to inflict blind
|
||||
function onCombo(caster, target, skill)
|
||||
skill.statusChance = 0.90;
|
||||
skill.statusChance = 0.75;
|
||||
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;
|
|
@ -12,9 +12,34 @@ end;
|
|||
--Increased crit rate
|
||||
function onCombo(caster, target, skill)
|
||||
--Get Berserk statuseffect
|
||||
skill.critRateModifier = 1.5;
|
||||
local berserk = caster.statusEffects.GetStatusEffectById(223160);
|
||||
|
||||
--if it isn't nil, remove the AP and Defense mods and reset extra to 0, increase potency
|
||||
if berserk != nil then
|
||||
local apPerHit = 20;
|
||||
local defPerHit = 20;
|
||||
|
||||
if berserk.GetTier() == 2 then
|
||||
apPerHit = 24;
|
||||
end
|
||||
|
||||
attacker.SubtractMod(modifiersGlobal.Attack, apPerHit * berserk.GetExtra());
|
||||
attacker.Add(modifiersGlobal.Defense, defPerHit * berserk.GetExtra());
|
||||
|
||||
berserk.SetExtra(0);
|
||||
|
||||
--This is about 50% crit. Don't know if that's what it gave on retail but seems kind of reasonable
|
||||
skill.critRateBonus = 300;
|
||||
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;
|
|
@ -6,6 +6,7 @@ function onSkillPrepare(caster, target, skill)
|
|||
end;
|
||||
|
||||
function onSkillStart(caster, target, skill)
|
||||
skill.statusMagnitude = 25;--could probalby have a status magnitude value
|
||||
return 0;
|
||||
end;
|
||||
|
||||
|
@ -15,10 +16,18 @@ function onPositional(caster, target, skill)
|
|||
end;
|
||||
|
||||
--Increases bleed damage
|
||||
--Bleed damage seems like it's 25 with comboed being 38 (25 * 1.5 rounded up)
|
||||
function onCombo(caster, target, skill)
|
||||
skill.statusTier = 2;
|
||||
skill.statusMagnitude = 38;
|
||||
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;
|
|
@ -9,6 +9,10 @@ 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);
|
||||
end;
|
|
@ -11,10 +11,14 @@ end;
|
|||
|
||||
--Increased accuracy
|
||||
function onCombo(caster, target, skill)
|
||||
skill.accuracyModifier = 1.5;
|
||||
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 onCombo(caster, target, skill)
|
|||
skill.statusDuration = 10;
|
||||
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;
|
|
@ -10,15 +10,19 @@ function onSkillStart(caster, target, skill)
|
|||
end;
|
||||
|
||||
--Increased accuracy
|
||||
function onCombo(caster, target, skill)
|
||||
skill.accuracyModifier = 1;
|
||||
function onPositional(caster, target, skill)
|
||||
skill.accuracyModifier = 50;
|
||||
end;
|
||||
|
||||
--Increased damage
|
||||
function onCombo(caster, target, skill)
|
||||
skill.potency = skill.potency * 1.5;
|
||||
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,14 +11,18 @@ end;
|
|||
|
||||
--Increased damage
|
||||
function onPositional(caster, target, skill)
|
||||
skill.potency = skill.potency * 1.25
|
||||
skill.basePotency = skill.basePotency * 1.25
|
||||
end;
|
||||
|
||||
--Increased crit hit rating
|
||||
function onCombo(caster, target, skill)
|
||||
skill.critRateModifier = 1.25;
|
||||
skill.bonusCritRate = 200;
|
||||
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 onCombo(caster, target, skill)
|
|||
skill.statusDuration = 60;
|
||||
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.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;
|
|
@ -10,9 +10,13 @@ function onSkillStart(caster, target, skill)
|
|||
end;
|
||||
|
||||
function onCombo(caster, target, skill)
|
||||
skill.accuracyModifier = 1.5;
|
||||
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
|
||||
skill.Potency = 100;
|
||||
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
18
data/scripts/commands/weaponskill/overpower.lua
Normal file
18
data/scripts/commands/weaponskill/overpower.lua
Normal file
|
@ -0,0 +1,18 @@
|
|||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
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;
|
|
@ -12,9 +12,15 @@ end;
|
|||
--Chance to inflict heavy when executed from behind
|
||||
function onPositional(caster, target, skill)
|
||||
skill.statusChance = 0.50;
|
||||
skill.statusDuration = 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);
|
||||
|
||||
--Try to apply status effect
|
||||
action.TryStatus(caster, target, skill, actionContainer, true);
|
||||
end;
|
18
data/scripts/commands/weaponskill/phalanx.lua
Normal file
18
data/scripts/commands/weaponskill/phalanx.lua
Normal file
|
@ -0,0 +1,18 @@
|
|||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
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;
|
|
@ -9,6 +9,10 @@ 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);
|
||||
end;
|
|
@ -11,9 +11,15 @@ end;
|
|||
|
||||
function onPositional(caster, target, skill)
|
||||
skill.statusChance = 0.50;
|
||||
skill.statusDuration = 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);
|
||||
|
||||
--Try to apply status effect
|
||||
action.TryStatus(caster, target, skill, actionContainer, true);
|
||||
end;
|
|
@ -13,6 +13,10 @@ function onPositional(caster, target, skill)
|
|||
skill.basePotency = skill.basePotency * 1.25;
|
||||
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;
|
|
@ -17,6 +17,10 @@ function onCombo(caster, target, skill)
|
|||
--animation change?
|
||||
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,15 @@ end;
|
|||
|
||||
--Accuracy increase
|
||||
function onCombo(caster, target, skill)
|
||||
skill.accuracyModifier = 1;
|
||||
--Rage of Halone normally has a -40% hit rate modifier.
|
||||
--Does the combo negate that, or does it make it even more accurate than if it didnt have the modifier?
|
||||
skill.accuracyModifier = 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);
|
||||
end;
|
|
@ -11,9 +11,16 @@ end;
|
|||
|
||||
--Chance to inflict stun
|
||||
function onCombo(caster, target, skill)
|
||||
skill.statusChance = 0.90
|
||||
skill.statusChance = 0.75
|
||||
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 critical hit rate
|
||||
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);
|
||||
end;
|
|
@ -12,8 +12,16 @@ end;
|
|||
--Chance to decrease defense when executed from behind the target
|
||||
function onPositional(caster, target, skill)
|
||||
skill.statusChance = 0.75;
|
||||
skill.statusMagnitude = 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;
|
|
@ -13,7 +13,10 @@ function onCombo(caster, target, skill)
|
|||
skill.basePotency = skill.basePotency * 1.25;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--calculate ws damage
|
||||
action.amount = skill.basePotency;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
|
@ -11,10 +11,16 @@ end;
|
|||
|
||||
--Increased Bind duration
|
||||
function onCombo(caster, target, skill)
|
||||
skill.statusDuration = 10;
|
||||
skill.statusDuration = 30;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--calculate ws damage
|
||||
action.amount = skill.basePotency;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, 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,7 +9,13 @@ function onSkillStart(caster, target, skill)
|
|||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--calculate ws damage
|
||||
action.amount = skill.basePotency;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, 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;
|
|
@ -8,11 +8,19 @@ end;
|
|||
function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--chance to influct stun only when target has no enmity towards you
|
||||
if !(target.hateContainer.HasHateForTarget(caster)) then
|
||||
if not (target.hateContainer.HasHateForTarget(caster)) then
|
||||
skill.statusChance = 0.50;
|
||||
end
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
|
||||
--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,11 +9,15 @@ function onSkillStart(caster, target, skill)
|
|||
return 0;
|
||||
end;
|
||||
|
||||
--Increased accuracy
|
||||
--Increased damage
|
||||
function onCombo(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,14 @@ end;
|
|||
|
||||
--Increased enmity
|
||||
function onCombo(caster, target, skill)
|
||||
skill.enmityModifier = 1.5;
|
||||
--https://www.bluegartr.com/threads/107403-Stats-and-how-they-work/page17
|
||||
skill.enmityModifier = 2.75;
|
||||
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,13 +11,19 @@ end;
|
|||
|
||||
--Increased enmity
|
||||
function onCombo(caster, target, skill)
|
||||
skill.enmityModifier = 1.5;
|
||||
skill.enmityModifier = 2.5;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
local damage = math.random(10, 100);
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--Increased damage with higher hp
|
||||
--random guess
|
||||
local potencyModifier = caster:GetHPP() + 25;
|
||||
skill.basePotency = skill.basePotency * (potencyModifier / 100);
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action)
|
||||
|
||||
skill.basePotency = skill.basePotency * potencyModifier;
|
||||
|
||||
--calculate ws damage
|
||||
action.amount = skill.basePotency;
|
||||
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
|
@ -11,10 +11,16 @@ end;
|
|||
|
||||
--Increased critical hit rate
|
||||
function onCombo(caster, target, skill)
|
||||
skill.critRateModifier = 1.5;
|
||||
skill.bonusCritRate = 200;
|
||||
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;
|
44
data/scripts/commands/weaponskill/sucker_punch.lua
Normal file
44
data/scripts/commands/weaponskill/sucker_punch.lua
Normal file
|
@ -0,0 +1,44 @@
|
|||
require("global");
|
||||
require("weaponskill");
|
||||
require("battleutils");
|
||||
require("hiteffect");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--
|
||||
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, action);
|
||||
|
||||
--additional effect
|
||||
--Restores MP
|
||||
--Comboed formula seems to be (0.40 * damage) + 180
|
||||
--Uncomboed formula seems to be 0.30 * damage
|
||||
--These may be wrong. It seems like max mp might influence the slope
|
||||
|
||||
--1.21: Equation used to calculate amount of MP adjusted.
|
||||
--fug
|
||||
--This might mean max MP isn't involved and the difference was between patches. need to recheck videos
|
||||
if action.GetHitType() > HitType.Evade and (action.param == HitDirection.Right or action.param == HitDirection.Left) then
|
||||
local mpToReturn = 0;
|
||||
|
||||
if skill.isCombo then
|
||||
mpToReturn = (0.40 * action.amount) + 180;
|
||||
else
|
||||
mpToReturn = (0.30 * action.amount);
|
||||
end
|
||||
|
||||
caster.AddMP(mpToReturn);
|
||||
--30452: You recover x MP.
|
||||
actionContainer.AddMPAction(caster.actorId, 30452, mpToReturn);
|
||||
end
|
||||
end;
|
|
@ -11,9 +11,13 @@ end;
|
|||
|
||||
--Increased accuracy from in front
|
||||
function onPositional(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;
|
|
@ -11,9 +11,16 @@ end;
|
|||
|
||||
--Increased crit rating from behind
|
||||
function onPositional(caster, target, skill)
|
||||
skill.critRateModifier = 1.25;
|
||||
skill.bonusCritRate = 200;
|
||||
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;
|
20
data/scripts/commands/weaponskill/war_drum.lua
Normal file
20
data/scripts/commands/weaponskill/war_drum.lua
Normal file
|
@ -0,0 +1,20 @@
|
|||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--calculate ws damage
|
||||
action.amount = skill.basePotency;
|
||||
|
||||
--might be wrong
|
||||
action.enmity = action.enmity + 400;
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
|
@ -14,15 +14,27 @@ function onCombo(caster, target, skill)
|
|||
--Get Berserk statuseffect
|
||||
local berserk = caster.statusEffects.GetStatusEffectById(223160);
|
||||
|
||||
--if it isn't nil
|
||||
--if it isn't nil, remove the AP and Defense mods and reset extra to 0, increase potency
|
||||
if berserk != nil then
|
||||
berserk.SetTier(1);
|
||||
local apPerHit = 20;
|
||||
local defPerHit = 20;
|
||||
|
||||
if berserk.GetTier() == 2 then
|
||||
apPerHit = 24;
|
||||
end
|
||||
|
||||
attacker.SubtractMod(modifiersGlobal.Attack, apPerHit * berserk.GetExtra());
|
||||
attacker.Add(modifiersGlobal.Defense, defPerHit * berserk.GetExtra());
|
||||
|
||||
berserk.SetExtra(0);
|
||||
skill.basePotency = skill.basePotency * 1.5;
|
||||
end;
|
||||
|
||||
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
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,13 @@ end;
|
|||
|
||||
--Increased Accuracy
|
||||
function onCombo(caster, target, skill)
|
||||
skill.accuracyModifier = 1.25;
|
||||
skill.accuracyModifier = 40;
|
||||
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;
|
Loading…
Add table
Add a link
Reference in a new issue