Particle damage types

From OniGalore
Revision as of 12:30, 19 October 2021 by Iritscen (talk | contribs) (→‎Knockback: oops)
Jump to navigation Jump to search

"DamageType" is a parameter that can be passed to the PAR3 actions "DamageChar" and "DamageBlast". (In engine, these terms are written "damage type", "Damage Char" and "Blast Damage", so you will see those variant phrasings on the wiki as well.) The damage type determines how a character reacts to a PAR3 particle which utilizes DamageBlast or DamageChar.

ONCC multipliers

In the ONCC's DamageType section, each DamageType is assigned its own multiplier, a float ranging from 0.0-1.0. The higher the number, the greater the character's immunity to that damage type; 1.0 is total immunity and 0.0 means no immunity. But note that these multipliers only affect the "StunDamage" and "Knockback" parameters of DamageBlast and DamageChar. The "Damage" parameter for actual HP damage dealt is left intact. The purpose of specific resistance to StunDamage and Knockback effects is to allow heavy characters to suffer from less knockback than lighter ones.

Knockback

The Knockback parameter sets the distance to push the character back in world units (1 unit = 4" or about 0.1m). If no multipliers are in effect (such as the ONCC DamageType field, a boss shield, DamageBlast falloff, etc.), then the actual distance travelled by the affected character will fall within about 0.1 world units of the Knockback value. Multiple knockbacks from different sources can also be stacked for a combined effect on the character. The velocity of the knockback has an exponential fade-out.

DamageType 0 - Normal

StunDamage: no visible effect
Knockback: no special effect, simply repositions the target character
Target character AnimType: HitOverlay

A simple type that just deals damage, applies knockback on the target character and makes them play HitOverlay.

DamageType 1 - MinorStun

StunDamage: length of target character's stun status (if frames). Decreases over time at -1.0/frame.
Knockback: no special effect, simply repositions the target character
Target character AnimType: Stun

Makes the target character play their Stun animation till the StunDamage variable drops to zero. If hit again by a MinorStun while already MinorStunned, the StunDamage variable is reset to the newly dealt StunDamage value and the character restarts the Stun animation.

DamageType 2 - MajorStun

StunDamage: length of target character's stun status (if frames). Decreases over time at -1.0/frame.
Knockback: no special effect, simply repositions the target character
Target character AnimType: first Stagger or StaggerBehind, then Stun

Makes the target character play the first 30 frames of their Stagger/StaggerBehind animation (during which it starts running the timer on the StunDamage variable), followed by a looped Stun animation till the StunDamage variable reached zero.

If the inflicted StunDamage is below 30, the target character still plays at least the first 30 frames of Stagger/StaggerBehind. If the target character is hit repeatedly with MajorStun, and StunDamage is less than 30, then the target character keeps staggering but will not enter the Stun loop.

If the target character is hit with MajorStun while already in the Stun loop, then the StunDamage variable is reset to the newest dealt StunDamage value, but the target character seamlessly continues the Stun loop till the StunDamage variable reaches zero.

DamageType 3 - MinorKnockdown

StunDamage: no visible effect
Knockback: not only repositions the target character, but also serves as a threshold for triggering a Stagger or a Knockdown
Target character AnimType: Stagger/StaggerBehind, or KnockdownHead/KnockdownHeadBehind

This poor DamageType was neglected even by Bungie West, being fully used only for the PSP. But it looks pretty useful, especially when combined with DamageBlast's falloff feature.

When the target character suffers some knockback (be it from PAR3 interaction or even from TRAM attacks), the value is also added to some sort of variable which sums all incoming knockback values. This sum variable also decreases over time, but the exact decrease mechanism is not fully understood yet as it looks to be non-linear.

When hit by a PAR3 with MinorKnockdown, the engine decides what to do based on the value stored in the Knockback sum variable at the moment of impact (after the knockback of the impacting MinorKnockdown is added in):

  • < 2.2: The target character does not play any special animation.
  • 2.2 ≥ value < 4.1: The target character plays the first 22 frames of their Stagger/StaggerBehind. This Stagger status can stack if the target character is hit again by MinorKnockdown while still staggering and the Knockback sum variable is still within this range.
  • ≥ 4.1: The target character gets knocked down (plays their Knockdown TRAM).

DamageType 4 - MajorKnockdown

StunDamage: no visible effect
Knockback: no special effect, simply repositions the target character
Target character AnimType: KnockdownHead or KnockdownHeadBehind

Simply applies Damage, Knockback and the "knockdown" animation on the target character.

DamageType 5 - Blownup

StunDamage: no visible effect
Knockback: no special effect, simply repositions the target character
Target character AnimType: Blownup or BlownupBehind

Simply applies Damage, Knockback and the "blownup" animation on the target character.

DamageType 6 - Pickup

StunDamage: allows the pickup mechanism to work; minimal 1.5 required for stable pickup mechanism
Knockback: no special effect, simply repositions the target character
Target character AnimType: first Fly, but then looping FallingFlail

Designed specially for Mutant Muro's attractor lightning attack, this DamageType utilizes the Damage parameter of a DamageBlast/DamageChar PAR3 action in a different way than all the others. While it still drains the blue force shield, as all other DamageTypes do, it does not subtract hitpoints from the target character when it hits them.

Instead, all dealt Pickup "damage" is added to some sort of Pickup sum variable. The value of this variable dies off at a rate of roughly 1.0/frame (however it might be nonlinear), so it eventually drops to 0 if the character is no longer being hit with the particle. If the value in the sum variable exceeds 100 AND the target character has at least 0.5 StunDamage (however, 1.5 is the required minimum for a stable pickup), the pickup process can start. Please note that the Pickup damage type only accepts StunDamage induced by this specific damage type. It cannot be combined with StunDamages from other DamageTypes.

If the pickup mechanism starts and the distance between the Pickupper and the target character is less than 35 world units, then the target character enters the pickup state and that's that.

If the pickup mechanism starts when the distance between them is more than 35 world units, then the target enters the pickup state and simultaneously:

  • Starts ascending vertically to a point 45° above the Pickupper.
  • Starts sliding horizontally towards the Pickupper. The sliding speed rises from 0 to 2.4 m/s within the first 30 frames of the pickup process, then stays at that speed. Once the target character has been dragged within 35 world units of the Pickupper, their horizontal velocity decreases within 30 frames from 2.4 m/s to 0 m/s.

Warning: Even when all the criteria are met, the Pickup DamageType does not override the current animation, but always waits till the end of it before the pickup kicks in. So the effect of Pickup can appear to be delayed if the target character is playing a long animation such as a 60-frame idle TRAM.