Combat additions

Added formulas for base EXP gain and chain experience
Added basic scripts for most player abilities and effects
Added stat gains for some abilities
Changed status flags
Fixed bug with player death
Fixed bug where auto attacks didnt work when not locked on
Added traits
This commit is contained in:
yogurt 2018-04-18 16:06:41 -05:00
parent b8d6a943aa
commit c5ce2ec771
239 changed files with 5125 additions and 1237 deletions

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View 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;

View file

@ -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;

View 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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View 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;

View file

@ -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;

View file

@ -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;

View 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;

View file

@ -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;

View file

@ -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;