Scratch

From Eternity Wiki
Jump to navigationJump to search

Description

Parameterized melee monster attack. Useful for custom damage values, unlike codepointers like SargAttack which act similarly but with fixed damage formulae.

Usage

  • misc1 = (if Args0 = usemisc1) Amount of damage to inflict (default of 0 = 0)
  • misc2 = Mnemonic of sound to play (default of null = no sound will be played)
  • Args0 = Special mode toggle (default of 0 = 0)
    • 0 or usemisc1 = Compatibility mode (Use value in "Unknown 1")
    • 1 or usedamage = Use object damage field
    • 2 or usecounter = Use value in counter specified in Args1
    • 3 or useconstant = Use constant value specified in Args1
  • Args1 = (if Args0 = useconstant) constant value or (if Args0 = usecounter) counter number, 0 to 7, holding the value
  • Args2 = Mnemonic of sound to play (default of null = no sound will be played). Used if misc2 is left null. This way you can call A_Scratch without using the misc parameters, which allows typing the codepointer in parenthesis notation or in Decorate heredocs.
  • Args3 = Reference to a damagetype, either by a string referring to the damagetype's key, or by an int referring to the damagetype's num property.

Parameters

No parameters.

Examples

For an imp-like scratch (with the same damage as that of an imp), you can use CounterDiceRoll to get similar randomness, as follows:

IMP2 G 0 A_CounterDiceRoll(0, 3, 8, 0, assign, multiplyone)
IMP2 G 6 A_Scratch(usecounter, 0, claw)

Notes

If the object's target is valid and is within melee range (64 units), it will damage the target for the indicated amount. If the misc2 parameter is non-zero and is a valid sound name, the indicated sound will played along with the attack.

Parameters Args0 and Args1 allow getting a damage value from other sources. If Args0 is usedamage, the object's damage value will be used. If Args0 is usecounter, the value of the counter specified in Args1 will be used. Finally, if Args0 is useconstant, it will use the constant value in Args1. This has a similar effect to using usemisc1 and the misc1 parameter, but without the side effects caused by the "misc" parameters. When Args0 = usecounter and the state is combined with others that use SetCounter or CounterOp, this allows you to perform your own custom damage calculations. The Args0 default value is usemisc1, ensuring compatibility with MBF.

See also