Difference between revisions of "LlDamage"

From Second Life Wiki
Jump to navigation Jump to search
m (Clarify exceptions more directly)
 
(One intermediate revision by the same user not shown)
Line 10: Line 10:
The llDamage function triggers a damage event on the targeted task. If any scripts in the target process the [[on_damage]] event, they will be fired before the damage is applied or distributed.
The llDamage function triggers a damage event on the targeted task. If any scripts in the target process the [[on_damage]] event, they will be fired before the damage is applied or distributed.
|caveats=
|caveats=
* Calls are throttled to a rate of ≤10/30sec per recipient. This may be changed in the future.  
* Calls are throttled to a rate of ≤10/30sec per recipient. Exceptions are:
** Recipient is avatar of the attachment.
** Recipient is sitting on the object.
* Triggering the damage throttle will shout an error to the debug channel and the script will continue running.  
* Triggering the damage throttle will shout an error to the debug channel and the script will continue running.  
* The prim containing the script and the prim receiving the damage must both be in damage enable parcels.  
* The prim containing the script and the prim receiving the damage must both be in damage enable parcels.  

Latest revision as of 03:51, 5 August 2024

Summary

Function: llDamage( key target, float damage, integer damage_type );
0.0 Forced Delay
10.0 Energy

This function delivers damage to tasks and agent in the same region.

• key target The key for the task or avatar that will receive damage.
• float damage The amount of damage to deliver to the targeted task or avatar. Unlike collideable damage such as llSetDamage or REZ_DAMAGE, this can be above 100.
• integer damage_type The type of damage to deliver to the targeted task or avatar.

Specification

The llDamage function triggers a damage event on the targeted task. If any scripts in the target process the on_damage event, they will be fired before the damage is applied or distributed.

Flag Description
DAMAGE_TYPE_IMPACT −1 System damage generated by impact with terrain or a prim.
DAMAGE_TYPE_GENERIC 0 Generic or legacy damage.
DAMAGE_TYPE_ACID 1 Damage caused by a caustic substance, such as acid.
DAMAGE_TYPE_BLUDGEONING 2 Damage caused by a blunt object, such as a club.
DAMAGE_TYPE_COLD 3 Damage inflicted by exposure to extreme cold.
DAMAGE_TYPE_ELECTRIC 4 Damage caused by electricity.
DAMAGE_TYPE_FIRE 5 Damage inflicted by exposure to heat or flames.
DAMAGE_TYPE_FORCE 6 Damage inflicted by a great force or impact.
DAMAGE_TYPE_NECROTIC 7 Damage caused by a direct assault on life-force.
DAMAGE_TYPE_PIERCING 8 Damage caused by a piercing object such as a bullet, spear, or arrow.
DAMAGE_TYPE_POISON 9 Damage caused by poison.
DAMAGE_TYPE_PSYCHIC 10 Damage caused by a direct assault on the mind.
DAMAGE_TYPE_RADIANT 11 Damage caused by radiation or extreme light.
DAMAGE_TYPE_SLASHING 12 Damage caused by a slashing object such as a sword or axe.
DAMAGE_TYPE_SONIC 13 Damage caused by loud noises, like a Crash Worship concert.
DAMAGE_TYPE_EMOTIONAL 14

Damage types are provided as a convenience and a suggestion. Scripters are free to add custom ones for their own combat systems or repurpose the damage type fields.

To make it easy for the community to recognise and re-use custom damage types here is a table that scripters can add onto:

Flag Description Subtype Creator System
DAMAGE_TYPE_MEDICAL 100 Negative damage to heal a wound, damaged limb, first aid, etc. Intended for generic healing of biological nature. Positive damage would be medical malpractice Nexii Malthus Vertical Sim / SLMC
DAMAGE_TYPE_REPAIR 101 Negative damage from repairing an object or something mechanical, welding torch or wrench on a vehicle/robot/mech, etc. Positive damage can be due to mistakes, low skill or sabotage. Intended for generic healing of non-biological nature (e.g. a mechanical tank or an electrical system) Nexii Malthus Vertical Sim / SLMC
DAMAGE_TYPE_EXPLOSIVE 102 Damage caused by an explosive blast, like a grenade DAMAGE_TYPE_FORCE Nexii Malthus Vertical Sim / SLMC
DAMAGE_TYPE_CRUSHING 103 Damage caused by crushing. Such as being crushed by water pressure. More of a constant type of force damage — can be nullified/reduced via diving suit DAMAGE_TYPE_FORCE Nexii Malthus Vertical Sim / SLMC
DAMAGE_TYPE_ANTI_ARMOR 104 Damage caused by anti-tank/anti-armor. Such as from a specialised armor piercing shell, rocket or other munition DAMAGE_TYPE_PIERCING Nexii Malthus Vertical Sim / SLMC
DAMAGE_TYPE_SUFFOCATION 105 Damage caused by suffocation. Usually lacking a breathable atmosphere, such as from drowning or being in the vacuum of space Nexii Malthus Vertical Sim / SLMC

Caveats

  • Calls are throttled to a rate of ≤10/30sec per recipient. Exceptions are:
    • Recipient is avatar of the attachment.
    • Recipient is sitting on the object.
  • Triggering the damage throttle will shout an error to the debug channel and the script will continue running.
  • The prim containing the script and the prim receiving the damage must both be in damage enable parcels.
  • Targeting a seated avatar will redirect damage to the object the avatar is sitting on.


The on_damage event will NOT be triggered if the source of the damage is either:

  • An attachment on the avatar.
  • An object or vehicle that the avatar is sitting on.

final_damage will be triggered as normal.


The damage throttle is skipped if:

  • Damage is negative.
  • The source is an attachment on the avatar.
  • The source is an object that the avatar is sitting on.
  • The source is an object owned by a parcel owner or land group.

Examples

See Also

Events

•  on_damage
•  final_damage

Functions

•  llDetectedDamage
•  llAdjustDamage

Deep Notes

Signature

function void llDamage( key target, float damage, integer damage_type );

Haiku

Damage script invoked
Virtual wounds in the game
Pixels feel the pain