Skip to content

WaspKingIntermission

Assumptions

This enemy is a lite version of WaspKing, they actually share logic, but this enemy imposes heavy restrictions. They will be taken for granted in this page for the sake of simplicity.

It is assumed that MainManager.battleloseevent is true because this enemy will deal an absurdly high damaging party wide attack on the 3rd main turn which is meant to kill the player party. Setting this field to true allows DeadParty to not call GameOver and simply exit the battle via ReturnToOverworld.

It is assumed that this enemy is immune to Freeze, Sleep and Numb conditions which avoids delaying the usage of his fire pillar move since this enemy can't be stopped.

data usage

At the start of the action, if data is null or empty, it's initialised to be 1 element with a starting value of 0.

  • data[0]: Effectively UNUSED here because while it normally would be an actor turn cooldown to using the fire pillar move, this enemy has it disabled so it has no effect. It is set to 3 when the move is used and decremented after, but this will be ignored and have no effects

Move selection

2 moves are possible:

  1. A single target axe slash attack
  2. A party wide fire pillar attack that always kills the player party

Move 1 is always used until turns is 2 or above where move 2 is always used (meaning on the 3rd main turn, this enemy is locked to use move 2).

Pre move logic

The following logic is always done at the start of the action:

  • hp is set to 999 (effectively making this enemy impossible to kill as their data should also be 999 maxhp)
  • If turns is 2 or above (2 main turns fully advanced since the start of the battle):
    • SetText is called in dialogue with the following:
      • text: commondialogue[119]
      • fonttype: 0 (BubblegumSans)
      • linebreak: messagebreak
      • tridimensional: false
      • position: Vector3.zero
      • size: Vector3.one
      • parent: This enemy
      • caller: null
    • Yield all frames until the message lock is released
    • Every player party members with a Shield condition has it removed via RemoveCondition

Move 1 - Axe slash

A single target axe slash attack.

DoDamage calls

# Conditions attacker target damageammount property overrides block
1 Always happen This enemy playertargetID after GetSingleTarget 5 Flip1 null commandsuccess

1: This property gets overriden to null in CalculateBaseDamage as the target is a player party member so it does nothing.

Logic sequence

  • GetSingleTarget called
  • Camera moves to look near playerdata[playertargetID]
  • MoveTowards playertargetentity position + (2.0, 0.0, -0.1) with a 2.0 multiplier
  • Yield all frames until forcemove is done
  • animstate set to 100
  • Yield for 0.65 seconds
  • ShakeScreen called with 0.2 ammount and 0.5 time
  • animstate set to 101
  • Slash sound plays
  • DoDamage 1 call happens
  • Jump called on playertargetentity
  • Yield for 0.75 seconds
  • animstate set to 103
  • Yield for 0.35 seconds
  • Yield all frames until playertargetentity is onground

Move 2 - Fire pillar instakill

A party wide fire pillar attack that always kills the player party.

nonphyscal set to true

This move always sets nonphyscal to true which affects the effects of the FrostBite, SpikeBod and PoisonTouch medal if equipped on the target.

PartyDamage

# Conditions caller damage property block jumpheight spinammount jumpevenonblock overrides
1 Always happen This enemy 99 NoExceptions false 0.0 Vector3.zero false null

Logic sequence

  • animstate set to 105
  • checkingdead set to a new FirePillar coroutine from this enemy without green
  • Yield all frames until checkingdead is null (the coroutine completed)

Here is what the coroutine ends up doing:

  • Yield for 0.5 seconds
  • FirePillar sound plays
  • A new Prefabs/Objects/FirePillar 1 GameObject is instantiated childed to the battlemap at partymiddle with a scale of (0.0, 1.0, 0.0 )and a DialogueAnim with the following:
    • targetscale: (0.75, 1.0, 0.75)
    • shrink: false
    • shrinkspeed: 0.015
  • Yield for 0.65 seconds
  • Prefabs/Objects/FirePillar 1's DialogueAnim's shrinkspeed set to 0.2
  • Yield for 0.2 seconds
  • ShakeScreen called with ammount of 0.25 and 0.75 time
  • PartyDamage 1 call happens
  • Yield for 1.15 seconds
  • Prefabs/Objects/FirePillar 1's DialogueAnim's targetscale set to (0.0, 1.0, 0.0)
  • All ParticleSystem under Prefabs/Objects/FirePillar 1 are stopped
  • Prefabs/Objects/FirePillar 1's DialogueAnim's shrinkspeed set to 0.05
  • Prefabs/Objects/FirePillar 1 gets destroyed
  • data[0] is set to 3 (effectively does nothing because this data slot is unused for this enemy)
  • checkingdead is set to null which signals the caller that this coroutine completed