Skip to content

NeedlePincer

DoCommand calls

# Conditions timer commandtype data
1 None 60.0 PressKeyTimer {random between 4 and 6 include (Confirm, Cancel or Switch)}
2 DoCommand 1 set commandsuccess to true 45.0 PressKeyTimer {random between 4 and 6 include (Confirm, Cancel or Switch)}
3 Beemerang2 medal is equipped and DoCommand 2 set commandsuccess to true 45.0 PressKeyTimer {random between 4 and 6 include (Confirm, Cancel or Switch)}

DoDamage calls

# Conditions attacker target damageammount property overrides block
1a DoCommand 1 set commandsuccess to true playerdata[currentturn] The enemy party member playerdata[currentturn].atk unclamped Pierce Empty array false
1b DoCommand 1 set commandsuccess to false playerdata[currentturn] The enemy party member attacker's atk clamped from -99 to 1 null {FailSound} false
2a DoCommand 2 set commandsuccess to true playerdata[currentturn] The enemy party member playerdata[currentturn].atk * 0.7 floored clamped from 1 to 99. NOTE: This clamp incorrectly removes the influences of negative atk values Pierce Empty array false
2b DoCommand 2 set commandsuccess to false playerdata[currentturn] The enemy party member attacker's atk clamped from -99 to 1 null {FailSound} false
3a Beemerang2 medal is equipped and DoCommand 3 set commandsuccess to true playerdata[currentturn] The enemy party member playerdata[currentturn].atk * 0.49 floored clamped from 1 to 99. NOTE: This clamp incorrectly removes the influences of negative atk values Pierce Empty array false
3b Beemerang2 medal is equipped and DoCommand 3 set commandsuccess to false playerdata[currentturn] The enemy party member attacker's atk clamped from -99 to 1 null {FailSound} false

PincerStatus

Every DoDamage call after commandsuccess was set to true from the last DoCommand call has Pierce meaning they can't inflict any conditions by themselves. However, after each DoDamage call (if applicable), a method called PincerStatus happens which is exclusive to this action and NeedlePincer. It implies custom condition infliction logic.

What's unique about this infliction logic is multiple conditions could be inflicted at once and each requires at least having a medal equipped for the infliction attempt to occur. Here are the possible conditions and their requirements (not mutually exclusive, checked and attempted in the order presented):

  • If PoisonNeedle medal is equipped, 2 turns of Poison
  • If ElecNeedles medal is equipped, 1 turn of Numb
  • If NumbNeedle medal is equipped and the enemy party member doesn't have the Numb condition, 2 turns of Sleep

However, the way the infliction attempt is done isn't via SetCondition, but via a method only used by PincerStatus called TryCondition which behaves similarily to CalculateBaseDamage.

NOTE: Although similar, TryCondition has many differences depending on the condition compared to CalculateBaseDamage and it even has an off by one error in the resistance check. Check its documentation to learn more

Logic Sequence

  • attacker animstate set to 115
  • Yield for 0.65 seconds
  • The camera moves slowely up and back
  • attacker MoveTowards in front of the target (offset in x by its size) at 2.0 speed stopping at animstate 121
  • Yield until the attacker's forcemove is done
  • DoCommand 1 call happens
  • Yield for a frame
  • Yield until doingaction goes to false
  • If commandsuccess is false:
    • AtkFail sound plays if it wasn't already playing
    • attacker animstate set to 106
    • Yield for 0.25 seconds
    • DoDamage 1b happens
  • Otherwise (commandsuccess is true):
    • attacker MoveTowards 0.65 in x over 10.0 frames then back to its original position (MainManager coroutine)
    • DoDamage 1a happens
    • PincerStatus is called (check the section above for more details)
    • attacker animstate set to 122
    • Yield until commandsprite[0] goes to null (this means not only the action command is done, but that FinishAction's destroy calls are done)
    • Yield for a frame
    • Second and third hit loop (only one iteration unless Beemerang2 medal is equipped where it's 2 iterations):
      • DoCommand 2 (or 3) happens
      • Yield for a frame
      • Yield until doingaction goes to false
      • If commandsuccess is false, the same logic done than the first hit fail mentioned above is done (with DoDamage 2b or 3b) and break out of the loop early
      • attacker MoveTowards 0.65 in x over 10.0 frames then back to its original position (MainManager coroutine)
      • DoDamage 2a (or 3a) happens
      • PincerStatus is called (check the section above for more details)
      • attacker animstate set to 123
      • Break out of the loop if Beemerang2 medal is not equipped or if it's the second time this is reached
      • Yield until commandsprite[0] goes to null (this means not only the action command is done, but that FinishAction's destroy calls are done)
      • Yield for a frame
      • attacker animsate set to 121
  • Yield for 0.5 seconds