Difference between revisions of "LlSetDamage"

From Second Life Wiki
Jump to navigation Jump to search
m (Replaced old <LSL> block with <source lang="lsl2">)
(Add caveat about damage NOT being a prim property, thus meaning projectiles must be scripted. Formatting cleanup.)
Line 2: Line 2:
|func_id=157|func_sleep=0.0|func_energy=10.0
|func_id=157|func_sleep=0.0|func_energy=10.0
|sort=SetDamage
|sort=SetDamage
|func=llSetDamage|p1_type=float|p1_name=damage|p1_desc=range: 0.0 (no [[damage]]) ~ 100.0 (instant [[death|kill]])
|func=llSetDamage|p1_type=float|p1_name=damage|p1_desc=range: 0.0 (no damage) ~ 100.0 (instant kill)
|func_footnote
|func_footnote
|func_desc=Sets the amount of '''damage''' that will be done when this object hits an avatar.
|func_desc=Sets the amount of {{LSLP|damage}} that will be done when this object hits an avatar.
|return_text
|return_text
|spec=
|spec=
Line 13: Line 13:
When these preconditions are met, the avatar receives the damage, and the object will [[llDie|die]] without calling the {{LSLGC|Collision|collision}} events.
When these preconditions are met, the avatar receives the damage, and the object will [[llDie|die]] without calling the {{LSLGC|Collision|collision}} events.
|caveats=
|caveats=
*If '''damage''' is 100.0 or greater, the object will instantly [[death|kill]] even a fully healthy avatar.
*{{LSLP|damage}} is '''not''' a [[Prim Properties|Prim Property]], and thus damage is only active so long as the script applying the damage is in the object, and is running.
*If '''damage''' is zero or less, no damage will be inflicted and the object will ''not'' die and the {{LSLGC|Collision|collision}} or {{LSLGC|Land Collision|land_collision}} events will be queued.
*If {{LSLP|damage}} is 100.0 or greater, the object will instantly [[death|kill]] even a fully healthy avatar.
*If {{LSLP|damage}} is zero or less, no damage will be inflicted and the object will ''not'' die and the {{LSLGC|Collision|collision}} or {{LSLGC|Land Collision|land_collision}} events will be queued.
*If a damage enabled object hits a physics enabled object that an avatar is sitting on, the avatar receives the damage just the same as they would if they had been hit directly.
*If a damage enabled object hits a physics enabled object that an avatar is sitting on, the avatar receives the damage just the same as they would if they had been hit directly.
|constants
|constants
|examples=
|examples=
<source lang="lsl2">//Simple autokiller bullet:
<syntaxhighlight lang="lsl2">//Simple autokiller bullet:
// This will instantly "kill" on collision if contact is made with avatar on damage enabled land.
// This will instantly "kill" on collision if contact is made with avatar on damage enabled land.


Line 42: Line 43:
         llDie(); // Auto destruct.
         llDie(); // Auto destruct.
     }
     }
}</source>
}</syntaxhighlight>
|helpers
|helpers
|also_functions
|also_functions
|also_events
|also_events
|also_articles
|also_articles=
{{LSL DefineRow||[[Damage]]|How damage works in Second Life}}
{{LSL DefineRow||[[Death]]|The concept of death in Second Life}}
{{LSL DefineRow||[[Combat]]|Combat in Second Life}}
{{LSL DefineRow||[[Weapon]]|Weapons in Second Life}}
|notes
|notes
|permission
|permission

Revision as of 15:36, 9 July 2022

Summary

Function: llSetDamage( float damage );
0.0 Forced Delay
10.0 Energy

Sets the amount of damage that will be done when this object hits an avatar.

• float damage range: 0.0 (no damage) ~ 100.0 (instant kill)

Specification

For an avatar to take damage when the object collides with an avatar...

  • The object must not be phantom or llVolumeDetect(TRUE)
  • The avatar must be on the land where "Safe (no damage)" is disabled.
    • The object however does not need to be on or even partially over damage enabled land.

When these preconditions are met, the avatar receives the damage, and the object will die without calling the collision events.

Caveats

  • damage is not a Prim Property, and thus damage is only active so long as the script applying the damage is in the object, and is running.
  • If damage is 100.0 or greater, the object will instantly kill even a fully healthy avatar.
  • If damage is zero or less, no damage will be inflicted and the object will not die and the collision or land_collision events will be queued.
  • If a damage enabled object hits a physics enabled object that an avatar is sitting on, the avatar receives the damage just the same as they would if they had been hit directly.

Examples

//Simple autokiller bullet:
// This will instantly "kill" on collision if contact is made with avatar on damage enabled land.

default
{
    on_rez(integer param) // Becomes active when rezzed.
    {
        llSetDamage(100.0); // Set the damage to maximum.
        llSensor("", "", AGENT, 96.0, PI); // Sweep a 96 meter sphere searching for agents.
    }
    sensor(integer num) // If an agent is detected...
    {
        llSetStatus(STATUS_PHYSICS, TRUE); // Enable physics to allow physical movement.
        llSetTimerEvent(10.0); // Set a 10 second timer.
        llMoveToTarget(llDetectedPos(0), 0.5); // Move to the detected position.
    }
    no_sensor() // If no agents are detected...
    {
        llDie(); // Auto destruct.
    }
    timer() // If we missed our target...
    {
        llDie(); // Auto destruct.
    }
}

See Also

Articles

•  Damage How damage works in Second Life
•  Death The concept of death in Second Life
•  Combat Combat in Second Life
•  Weapon Weapons in Second Life

Deep Notes

Signature

function void llSetDamage( float damage );