diff --git a/src/NosCore.Data/Enumerations/Buff/AdditionalTypes.cs b/src/NosCore.Data/Enumerations/Buff/AdditionalTypes.cs index c540af286..f37b0fc7a 100644 --- a/src/NosCore.Data/Enumerations/Buff/AdditionalTypes.cs +++ b/src/NosCore.Data/Enumerations/Buff/AdditionalTypes.cs @@ -110,7 +110,13 @@ public enum Block : byte ChanceRangedIncreased = 31, ChanceRangedDecreased = 32, ChanceMagicalIncreased = 41, - ChanceMagicalDecreased = 42 + ChanceMagicalDecreased = 42, + + /// + /// Per-critical reduction over a run of hits, not a chance like 11-42. + /// + CriticalDamageReducedPerHit = 51, + CriticalDamageReducedPerHitNegated = 52 } public enum BossMonstersSkill : byte @@ -631,16 +637,36 @@ public enum Morale : byte IgnoreEnemyMoraleNegated = 52 } + /// + /// 21-22 are a percentage and 41-42 are flat, which the names do not say. 11-12 and 51-52 + /// carry the same text as each other in the files, so the X2 slot has no meaning of its own. + /// public enum Move : byte { MovementImpossible = 11, MovementImpossibleNegated = 12, + + /// Movement speed is increased by %s%%. MoveSpeedIncreased = 21, + + /// Movement speed is decreased by %s%%. MoveSpeedDecreased = 22, - SetMovement = 31, - SetMovementNegated = 32, + + /// + /// Your movement speed is increased by %s while you are hidden. Not a "set + /// movement" of any kind: it is a flat bonus that only applies while invisible. + /// + SpeedWhileHiddenIncreased = 31, + + /// Your movement speed is decreased by %s while you are hidden. + SpeedWhileHiddenDecreased = 32, + + /// Movement speed is increased by %s. This is the unconditional flat one. MovementSpeedIncreased = 41, + + /// Movement speed is decreased by %s. MovementSpeedDecreased = 42, + TempMaximized = 51, TempMaximizedNegated = 52 } @@ -1292,14 +1318,21 @@ public enum Type103 : byte DecreaseConcentration = 52 } + /// + /// 52 targets allies, not enemies - it is not the negation of 51. + /// public enum Type104 : byte { ReflectOnDeff = 11, ReflectOnDeffNegated = 12, AreaDamageEachSecond = 21, + AreaDamageEachSecondNegated = 22, SummonMonsterOnDef = 31, - //SubType 4 didn't exist. - AreaBuffEachSecond = 51 + SummonTwoMonstersOnDef = 32, + MateAttackIncreased = 41, + MateAttackIncreasedNegated = 42, + AreaBuffEachSecond = 51, + AreaBuffOnAlliesEachSecond = 52 } public enum Type107 : byte diff --git a/src/NosCore.GameObject/Services/SpeedCalculationService/SpeedCalculationService.cs b/src/NosCore.GameObject/Services/SpeedCalculationService/SpeedCalculationService.cs index 6e1237e81..5df15dfaf 100644 --- a/src/NosCore.GameObject/Services/SpeedCalculationService/SpeedCalculationService.cs +++ b/src/NosCore.GameObject/Services/SpeedCalculationService/SpeedCalculationService.cs @@ -18,7 +18,12 @@ private byte CalculateSpeed(IAliveEntity aliveEntity, byte defaultSpeed) // return 0; // } - var bonusSpeed = 0; /*(byte)GetBuff(CardType.Move, (byte)AdditionalTypes.Move.SetMovementNegated)[0];*/ + // The movement BCards are still not read. The placeholder that used to sit + // here reached for subtype 32, which the files say is "movement speed is + // DECREASED by %s while you are hidden": wrong slot and wrong condition for a + // general speed bonus. The unconditional flat pair is 41-42, and 21-22 is the + // percentage. + var bonusSpeed = 0; if (defaultSpeed + bonusSpeed > 59) { return 59;