Difference between revisions of "LlDamage"

From Second Life Wiki
Jump to navigation Jump to search
(Have added another statement about exceptions see https://feedback.secondlife.com/combat-20/p/lldamage-unthrottle-for-cases-where-abuse-is-unlikely -- Also all limits/throttles are up to being changed at any time. We just need to document these changes when they happen or are noticed. Otherwise we'd end up plastering the whole wiki with these notices.)
m (Clarify exceptions more directly)
 
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.
* Calls are throttled to a rate of ≤10/30sec per recipient. Exceptions are:
** There may be some exceptions to this throttle like the recipient being the avatar of the attachment or if the recipient is sitting on the object.
** 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