Refactor StatusEffectContainer to better handle messages using

CommandResultContainer.

Alter Modifiers to be the same as ParamNames.

Add LoseOnClassChange flag for status effects.

Add a few missing status effects.

Fix EndTime for stance status effects to stop icon from blinking.
This commit is contained in:
Yogurt 2019-05-27 23:05:20 -07:00
parent cc07e1f453
commit 26ef649a6c
17 changed files with 586 additions and 381 deletions

View file

@ -0,0 +1,11 @@
require("modifiers")
function onGain(target, effect)
local newMaxHP = target.GetMaxHP() * 0.75;
target.SetMaxHP(newMaxHP);
end;
function onLose(target, effect)
target.SetMaxHP(target.GetMaxHP() / 0.75);
end;

View file

@ -0,0 +1,23 @@
require("modifiers")
require("battleutils")
function onCommandStart(effect, attacker, command, actionContainer)
--Random guess
command.enmityModifier += 0.25;
end
function onHit(effect, attacker, defender, action, actionContainer)
if skill.id == 27259 then
--Effect stacks up to 3 times
if effect.GetTier() < 3 then
effect.SetTier(effect.GetTier() + 1);
end
end
end
function onMiss(effect, attacker, defender, action, actionContainer)
if skill.id == 27259 then
effect.SetTier(0);
end
end

View file

@ -36,13 +36,13 @@ function onTick(owner, effect)
--Enduring march prevents fading of rampage effect
if not owner.statusEffects.HasStatusEffect(223078) and (effect.GetExtra() > 0) then
--Going to assume that every 5 seconds a single hits worth of rampage is lost.
attacker.SubtractMod(modifiersGlobal.Parry, parryPerDT);
attacker.AddMod(modifiersGlobal.Delay, delayMsPerDT);
owner.SubtractMod(modifiersGlobal.Parry, parryPerDT);
owner.AddMod(modifiersGlobal.Delay, delayMsPerDT);
effect.SetExtra(effect.GetExtra() - 1);
end
end
function onLose(owner, effect)
attacker.SubtractMod(modifiersGlobal.Parry, effect.GetExtra() * parryPerDT);
attacker.AddMod(modifiersGlobal.Delay, effect.GetExtra() * delayMsPerDT);
owner.SubtractMod(modifiersGlobal.Parry, effect.GetExtra() * parryPerDT);
owner.AddMod(modifiersGlobal.Delay, effect.GetExtra() * delayMsPerDT);
end

View file

@ -1,88 +1,157 @@
modifiersGlobal =
{
NAMEPLATE_SHOWN = 0,
TARGETABLE = 1,
NAMEPLATE_SHOWN2 = 2,
--NAMEPLATE_SHOWN2 = 3,
--These line up with ParamNames starting at 15001 and appear on gear
--Health
Hp = 0, --Max HP
Mp = 1, --Max MP
Tp = 2, --Max TP
Strength = 3,
Vitality = 4,
Dexterity = 5,
Intelligence = 6,
Mind = 7,
Piety = 8,
--Main stats
Strength = 3,
Vitality = 4,
Dexterity = 5,
Intelligence = 6,
Mind = 7,
Piety = 8,
ResistFire = 9,
ResistIce = 10,
ResistWind = 11,
ResistLightning = 12,
ResistEarth = 13,
ResistWater = 14,
--Elemental Resistances
FireResistance = 9, --Lowers Fire damage taken
IceResistance = 10, --Lowers Ice damage taken
WindResistance = 11, --Lowers Wind damage taken
EarthResistance = 12, --Lowers Earth damage taken
LightningResistance = 13, --Lowers Lightning damage taken
WaterResistance = 14, --Lowers Water damage taken
Accuracy = 15,
Evasion = 16,
Attack = 17,
Defense = 18, --Is there a magic defense stat? 19 maybe?
MagicAttack = 23,
MagicHeal = 24,
MagicEnhancePotency = 25,
MagicEnfeeblingPotency = 26,
--Physical Secondary stats
Accuracy = 15, --Increases chance to hit with physical attacks
Evasion = 16, --Decreases chance to be hit by physical attacks
Attack = 17, --Increases damage done with physical attacks
Defense = 18, --Decreases damage taken from physical attacks
MagicAccuracy = 27,
MagicEvasion = 28,
--Physical crit stats
CriticalHitRating = 19, --Increases chance to crit with physical attacks
CriticalHitEvasion = 20, --Decreases chance to be crit by physical attacks
CriticalHitAttackPower = 21, --Increases damage done by critical physical attacks
CriticalHitResilience = 22, --Decreases damage taken from critical physical attacks
CraftProcessing = 30,
CraftMagicProcessing = 31,
CraftProcessControl = 32,
--Magic secondary stats
AttackMagicPotency = 23, --Increases damage done with magical attacks
HealingMagicPotency = 24, --Increases healing done with magic healing
EnhancementMagicPotency = 25, --Increases effect of enhancement magic
EnfeeblingMagicPotency = 26, --Increases effect of enfeebling magic
MagicAccuracy = 27, --Decreases chance for magic to be evaded
MagicEvasion = 28, --Increases chance to evade magic
HarvestPotency = 33,
HarvestLimit = 34,
HarvestRate = 35,
--Crafting stats
Craftsmanship = 29,
MagicCraftsmanship = 30,
Control = 31,
Gathering = 32,
Output = 33,
Perception = 34,
None = 36,
Hp = 37,
HpPercent = 38,
Mp = 39,
MpPercent = 40,
Tp = 41,
TpPercent = 42,
Regen = 43,
Refresh = 44,
--Magic crit stats
MagicCriticalHitRating = 35, --Increases chance to crit with magical attacks
MagicCriticalHitEvasion = 36, --Decreases chance to be crit by magical attacks
MagicCriticalHitPotency = 37, --Increases damage done by critical magical attacks
MagicCriticalHitResilience = 38, --Decreases damage taken from critical magical attacks
AttackRange = 45,
Speed = 46,
AttackDelay = 47,
--Blocking stats
Parry = 39, --Increases chance to parry
BlockRate = 40, --Increases chance to block
Block = 41, --Reduces damage taken from blocked attacks
Raise = 48,
MinimumHpLock = 49, -- hp cannot fall below this value
AttackType = 50, -- slashing, piercing, etc
BlockRate = 51,
Block = 52,
CritRating = 53,
HasShield = 54, -- Need this because shields are required for blocks. Could have used BlockRate or Block but BlockRate is provided by Gallant Sollerets and Block is provided by some buffs.
HitCount = 55, -- Amount of hits in an auto attack. Usually 1, 2 for h2h, 3 with spinning heel
--Elemental Potencies
FireMagicPotency = 42, --Increases damage done by Fire Magic
IceMagicPotency = 43, --Increases damage done by Ice Magic
WindMagicPotency = 44, --Increases damage done by Wind Magic
EarthMagicPotency = 45, --Increases damage done by Earth Magic
LightningMagicPotency = 46, --Increases damage done by Lightning Magic
WaterMagicPotency = 47, --Increases damage done by Water Magic
--Flat percent increases to these rates. Probably a better way to do this
RawEvadeRate = 56,
RawParryRate = 57,
RawBlockRate = 58,
RawResistRate = 59,
RawHitRate = 60,
RawCritRate = 61,
--Miscellaneous
Regen = 48, --Restores health over time
Refresh = 49, --Restores MP over time
StoreTp = 50, --Increases TP gained by auto attacks and damaging abiltiies
Enmity = 51, --Increases enmity gained from actions
Spikes = 52, --Deals damage or status to attacker when hit
Haste = 53, --Increases attack speed
--54 and 55 didn't have names and seem to be unused
ReducedDurabilityLoss = 56, --Reduces durability loss
IncreasedSpiritbondGain = 57, --Increases rate of spiritbonding
Damage = 58, --Increases damage of auto attacks
Delay = 59, --Increases rate of auto attacks
Fastcast = 60, --Increases speed of casts
MovementSpeed = 61, --Increases movement speed
Exp = 62, --Increases experience gained
RestingHp = 63, --?
RestingMp = 64, --?
DamageTakenDown = 62, -- Percent damage taken down
StoreTP = 63, --.1% extra tp per point. Lancer trait is 50 StoreTP
PhysicalCritRate = 64, --CritRating but only for physical attacks. Increases chance of critting.
PhysicalCritEvasion = 65, --Opposite of CritRating. Reduces chance of being crit by phyiscal attacks
PhysicalCritAttack = 66, --Increases damage done by Physical Critical hits
PhysicalCritResilience = 67, --Decreases damage taken by Physical Critical hits
Parry = 68, --Increases chance to parry
MagicCritPotency = 69, --Increases
Regain = 70, --TP regen, should be -90 out of combat, Invigorate sets to 100+ depending on traits
RegenDown = 71, --Damage over time effects. Separate from normal Regen because of how they are displayed in game
Stoneskin = 72, --Nullifies damage
MinimumTpLock = 73, --Don't let TP fall below this, used in openings
KnockbackImmune = 74 --Immune to knockback effects when above 0
--Attack property resistances
SlashingResistance = 65, --Reduces damage taken by slashing attacks
PiercingResistance = 66, --Reduces damage taken by piercing attacks
BluntResistance = 67, --Reduces damage taken by blunt attacks
ProjectileResistance = 68, --Reduces damage taken by projectile attacks
SonicResistance = 69, --Reduces damage taken by sonic attacks
BreathResistance = 70, --Reduces damage taken by breath attacks
PhysicalResistance = 71, --Reduces damage taken by physical attacks
MagicResistance = 72, --Reduces damage taken by magic attacks
--Status resistances
SlowResistance = 73, --Reduces chance to be inflicted with slow by status magic
PetrificationResistance = 74, --Reduces chance to be inflicted with petrification by status magic
ParalysisResistance = 75, --Reduces chance to be inflicted with paralysis by status magic
SilenceResistance = 76, --Reduces chance to be inflicted with silence by status magic
BlindResistance = 77, --Reduces chance to be inflicted with blind by status magic
PoisonResistance = 78, --Reduces chance to be inflicted with poison by status magic
StunResistance = 79, --Reduces chance to be inflicted with stun by status magic
SleepResistance = 80, --Reduces chance to be inflicted with sleep by status magic
BindResistance = 81, --Reduces chance to be inflicted with bind by status magic
HeavyResistance = 82, --Reduces chance to be inflicted with heavy by status magic
DoomResistance = 83, --Reduces chance to be inflicted with doom by status magic
--84-101 didn't have names and seem to be unused
--Miscellaneous
ConserveMp = 101, --Chance to reduce mp used by actions
SpellInterruptResistance = 102, --Reduces chance to be interrupted by damage while casting
DoubleDownOdds = 103, --Increases double down odds
HqDiscoveryRate = 104,
--Non-gear mods
None = 105,
NAMEPLATE_SHOWN = 106,
TARGETABLE = 107,
NAMEPLATE_SHOWN2 = 108,
HpPercent = 109,
MpPercent = 110,
TpPercent = 111,
AttackRange = 112, --How far away in yalms this character can attack from (probably won't need this when auto attack skills are done)
Raise = 113,
MinimumHpLock = 114, --Stops HP from falling below this value
MinimumMpLock = 115, --Stops MP from falling below this value
MinimumTpLock = 116, --Stops TP from falling below this value
AttackType = 117, --Attack property of auto attacks (might not need this when auto attack skills are done, unsure)
CanBlock = 118, --Whether the character can block attacks. (For players this is only true when they have a shield)
HitCount = 119, --Amount of hits in an auto attack. Usually 1, 2 for h2h, 3 with spinning heel
--Flat percent increases to these rates. Might not need these?
RawEvadeRate = 120,
RawParryRate = 121,
RawBlockRate = 122,
RawResistRate = 123,
RawHitRate = 124,
RawCritRate = 125,
DamageTakenDown = 126, --Percent damage taken down
Regain = 127, --TP regen, should be -90 out of combat, Invigorate sets to 100+ depending on traits
RegenDown = 128, --Damage over time effects. Separate from normal Regen because of how they are displayed in game
Stoneskin = 129, --Nullifies damage
KnockbackImmune = 130, --Immune to knockback effects when above 0
Stealth = 131,
}
mobModifiersGlobal =