Skip to content

Poison

A condition that either deals non lethal damage or heals the actor each main turn depending on if they have a ReversePoison medal or not. It also allows several poison specific medals to take effect.

Resistance

This condition has a dedicated resistance field for actors to use: poisonres. If it's 100 or above, the actor is immune to it. Inflictions that requires a resistance check will use this field.

Resistance increases for player party members

For player party member, the resistance can only be increased by processing the PoisonRes BadgeEffects with the value acting as the amount to increase it by. This only matters for enemy inflicting the player party member, it does not matter for user infliction using items.

SetCondition

When amending the condition:

  • If the actor is a player party member with an EternalPoison medal, the turn amount is overriden to be 99999 and the infliction overwrites the turn counter to the new one (meaning it won't stack)
  • Otherwise, the inflicting is ammended by adding the turn amount to the existing one (meaning it will stack)

When inflicted as a new condition, the same EternalPoison logic occurs (the turn ammount is overriden to 99999).

StatusEffect

This condition is supported by this method and it might be inflicted to the actor when called.

CalculateBaseDamage

This condition may be inflicted if the property is Poison. This means it's also supported by the StatusMirror medal.

This condition allows the PoisonAttacker medal to take effect by increasing the damage amount by the amount of PoisonAttacker equipped for a player attacker while not in demomode.

A variation of the PoisonAttacker logic is also enforced (except the demomode check) in GetMultiDamage with the only difference being that the increase is by (amount of attacker's PoisonAttacker - amount of attacker's ReversePoison). That method is used by the following skills:

DefaultDamageCalc

This condition allows the PoisonDefender and ReversePoison medals to take effect by decreasing the damage amount by (amount of target's PoisonDefender - amount of target's ReversePoison).

DoDamage

This condition allows the The PoisonTouch medal to take effect is equipped on the target if the following are all true:

  • The attacker is an enemy party member
  • The attacker's poisonres is less than 100 (it's not immune)
  • nonphyscal is false

If all of the above are fufilled, SetCondition is called to set the Poison condition on the corresponding enemy party member of the attacker for 2 turns.

AdvanceTurnEntity

When the condition is processed (when hp is above 0 and there is at least one enemy party member):

  • If the actor is a player party member with a ReversePoison medal equipped:
    • The actor's hp is increased by the actor's maxhp * 0.1 rounded to nearest clamped from 1 to 3. NOTE: the nearest rounding has a quirk where if it ends in .5, the even number will be chosen over the odd one no matter if it is actually the lower or higher bound that is correct mathematically
    • If the Heal sound isn't playing or its more than halfway done player, it is played
    • ShowDamageCounter is called with type 1 with the damage amount as the amount healed earlier with the start being the battleentity position + (0.0, 1.0, 0.0) and the end being (0.0, 2.0, 0.0)
  • Otherwise, DoDamage is called with target being the actor with no attacker with a NoExceptions property without block. The damageammount is the actor's maxhp / 10.0 ceiled - 1 and then clamped from 1 to 3 for a player party member and from 1 to 2 for an enemy party member. The call also has these overrides:
    • NoFall
    • NoIceBreak
    • FakeAnim
    • DontAwake
    • IgnoreNumb
  • If the actor's hp became 0, battleentity.overrideanim is set to false followed by an OverrideOver call being invoked on the battleentity in 1.0 seconds
  • The actor's hp is clamped from 1 to its maxhp (this implies it can't be lethal)
  • A yield of 0.75 seconds is set to happen after the method is done

Exceptionally, the turn counter of the condition won't decrement if the actor has an EternalPoison medal.

HealConditions

This condition is supported by this method and it will be removed when called.

UpdateAnim

This condition will cause the currentturn player party member to have its battleentity.animstate set to 20 (WeakPickAction) instead of (PickAction) when its battleentity.overrideanim is false.

This condition may cause the other player party members to have their battleentity.animstate set to 17 (WeakBattleIdle) instead of 13 (BattleIdle). Check the method's documentation to learn more on the specifics.

UpdateEntities

This condition will have the battleentity.sprite.material.color to be set to a lerp from the existing one to 0xD800D8 (bright magenta) with a factor of 1/5 of the frametime. Check the documentation of the method to learn more about how the alpha channel is determined.