on hit

From Arx Libertatis Wiki
Revision as of 02:36, 13 January 2022 by Ds (talk | contribs) (Mention use of ^class_… to get the spell type)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

The hit script event is sent by the damage source to NPCs and props when the the entity is damaged. ^&param1 will be set to the damage received by the entity while ^$param2 is set to the weapon type if the damage source is the player: spell, bare, dagger, 1h, 2h, arrow or (for NPC targets only before Arx Libertatis 1.3) summoned if the damage is from a summoned entity. In this case, the event ^sender will be the player.

With Arx Libertatis 1.3 or newer, ^$param3 holds the spell ID or entity ID of the weapon or summoned entity used to inflict the damage and ^$param4 specifies the damage type flags as used in the dodamage and damager commands:

f Fire
m Magical
p Poison
l Lightning
c Cold
g Gas
e Metal
w Wood
s Stone
a Acid
o Organic
r Drain life
n Drain mana
u Push

Spell IDs are made up of the spell name followed by _ and then a unique instance number. Use ^spelllevel_~^$param3~ to check the spell level and use the if isin command or the ^class_… system variable to check for spell or damage types:

on hit {
  if lightning_strike isin ^$param3 {
    // Hit by a Lightning projection (Aam Rune (create)Folgora Rune (lightning)Taar Rune (missile)) or Mass lightning projection (Aam Rune (create)Folgora Rune (lightning)Spacium Rune (field)) spell
  }
  if ^class_~^$param3~ == lightning_strike {
    // Hit by a Lightning projection (Aam Rune (create)Folgora Rune (lightning)Taar Rune (missile)) spell
  }
  if l isin ^$param4 {
    // Hit with lightning damage
  }
}

For NPCs, scripts can prevent the damage to the entity by responding to the hit event with refuse.

When 0 life or durability is reached for NPCs or props, the die or break events are sent respectively.