Difference between revisions of "Category:LSL Combat2"
(Forgot to mention the new link sit flags esp the one on damage; Also mention llDerezObject as there were combat related requests of this feature) |
(Mention damage types) |
||
Line 12: | Line 12: | ||
==Introduced are new concepts== | ==Introduced are new concepts== | ||
* Can apply damage directly | |||
* Damage can have a damage type associated to it | |||
* Damage events | * Damage events | ||
** If a script (object, vehicle or attachment) has a damage event this will be called first before damage is applied | ** If a script (object, vehicle or attachment) has a damage event this will be called first before damage is applied | ||
* Objects can have health | ** Scripts may modify the actual amount of damage in a damage event | ||
* Objects can have health | |||
** Sensors can scan for damageable objects | |||
* Combat Log has been added which allows for auditing | * Combat Log has been added which allows for auditing | ||
** Records all damage events, damage adjustments and kills | ** Records all damage events, damage adjustments and kills | ||
Line 61: | Line 65: | ||
==Additional== | ==Additional== | ||
* [[:Template:LSL_Constants/Damage_Types|Damage types]] — Provided for convenience and a suggestion. Scripters can add custom ones or repurpose the damage type fields | |||
* [[llListen]] | * [[llListen]] | ||
** Channel reserved at [[COMBAT_CHANNEL]] | ** Channel reserved at [[COMBAT_CHANNEL]] |
Revision as of 14:11, 11 June 2024
Help Portal: |
Avatar | Bug Fixes | Communication | Community | Glossary | Land & Sim | Multimedia | Navigation | Object | Video Tutorials | Viewer | Wiki | Misc |
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
The Combat2 Project is an enhancement to the Linden Combat system.
This is not meant to be a complete combat system on its own but to provide the tools that allow you to do that.
In Second Life there are a host of combat communities scattered across the grid. These communities use a wide variety of combat systems, HUDs and weapon systems. Some are completely custom, relying on scripts to arbitrate health and damage, while others are based on the Linden Lab Combat System (LLCS). See Combat for more.
The goal of the Combat2 project is to provide a coherent set of tools and systems that allow the residents to create complex and compelling combat systems using a common and easy to use framework.
Introduced are new concepts
- Can apply damage directly
- Damage can have a damage type associated to it
- Damage events
- If a script (object, vehicle or attachment) has a damage event this will be called first before damage is applied
- Scripts may modify the actual amount of damage in a damage event
- Objects can have health
- Sensors can scan for damageable objects
- Combat Log has been added which allows for auditing
- Records all damage events, damage adjustments and kills
- System generated messages by a specific ID that scripts may filter to
- Scripts may write to this channel if not restricted by the region
- Region-wide settings, region owners may:
- Throttle damage to limit how much damage a single source may inflict on a target per second
- Select a number of options as to what happens when agent health drops to 0 such as:
- Teleport home (same as old LLCS)
- Teleport to region's telehub
- Teleport to parcel's landing point
- No action
- Set a brief period of invulnerability, during which agents may neither deal nor receive damage
- Whether health is reset to 100% on death
- Tweak the speed of health regeneration per second
- Whether scripts are allowed to adjust damage or write to the combat log
Testing
Start playing with it and build interesting things.
There are two regions on the beta grid open and available for testing:
Scripting
• key | llRezObjectWithParams(string inventory, list params) | – | New function for rezzing objects with a variety of parameters, particularly useful for avoiding the overhead of starting a script for each bullet | |
• void | llAdjustDamage(integer number, float new_damage) | – | Modifies the amount of damage that will be applied by the current on_damage event after it has completed processing | |
• void | llDamage(key target, float damage, integer damage_type) | – | Delivers damage to tasks and agent in the same region of DAMAGE_TYPE_*. Negative damage can be used to heal instead | |
• list | llDetectedDamage(integer number) | – | Returns a list describing a single damage event within an on_damage event | |
• key | llDetectedRezzer(integer number) | – | Returns a key that is the UUID of the object or avatar that rezzed the detected object | |
• float | llGetHealth(key id) | – | Returns the current health of an avatar or object in the region | |
• event | on_damage(integer num_detected) | – | Triggered when damage has been inflicted on an avatar or task in the world but before damage has been applied or distributed | |
• event | final_damage(integer num_detected) | – | Triggered after after all on_damage events in all scripts and attachments have processed and damage has been applied to the avatar or distributed to all seated avatars | |
• event | on_death() | – | Triggered on all attachments worn by an avatar when that avatar's health reaches 0 (-- Does this trigger on objects too Rider?) | |
• string | llGetStartString() | – | New function to retrieve the string passed with llRezObjectWithParams via REZ_PARAM_STRING, particularly useful for avoiding overhead and delay when having to communicate any necessary information | |
• string | llDerezObject(key id, integer flag) | – | Derezzes an object previously rezzed from within the object containing the script |
Additional
- Damage types — Provided for convenience and a suggestion. Scripters can add custom ones or repurpose the damage type fields
- llListen
- Channel reserved at COMBAT_CHANNEL
- System generated combat log messages sent by COMBAT_LOG_ID
- Scripts may also write to this channel if the region allows it (see "restrict_combat_log" below)
- llSensor — Scripts may filter by DAMAGEABLE for objects in world that process damage
- llGetObjectDetails — Additional values around health, damage and type
- OBJECT_HEALTH — Retrieves the health of an avatar or prim
- OBJECT_DAMAGE — Retrieves the amount of damage a prim inflicts on collision
- OBJECT_DAMAGE_TYPE — Retrieves the type of damage a prim inflicts on collision
- llRezObjectWithParams — Apply damage to rezzed objects
- REZ_DAMAGE — The amount of damage applied to an agent upon collision with this object
- REZ_DAMAGE_TYPE — The damage type to apply when this prim collides with another object
- REZ_PARAM_STRING — String parameter that can be passed into the rezzed object with a maximum string length of 1024 bytes
- llGetEnv — Several new values are added
- "allow_damage_adjust" — Are scripts allowed to adjust damage
- "restrict_combat_log" — Are scripts allowed to write to the combat log
- "restore_health" — Is health reset to 100% on death
- "invulnerability_time" — Invulnerablitiy time applied after avatar death
- "damage_throttle" — The maximum number of points of damage a single source may inflict on a target per second
- "health_regen_rate" — The speed of health regeneration in hitpoints per second
- "death_action" — Set the action to take when an avatar dies in the region
- llSetLinkSitFlags — Flags that can be applied to sit targets
- SIT_FLAG_NO_COLLIDE — Disable the avatar's collision volume when they are seated on this sit target
- SIT_FLAG_NO_DAMAGE — Do not distribute damage to agents sitting on this sit target
Related
- Thread on the Second Life community forums by Rider Linden announcing the project: Pew! Pew! Pew! Linden Damage & Combat 2.0
- Feedback for suggesting, voting and commenting on ideas
Pages in category "LSL Combat2"
The following 21 pages are in this category, out of 21 total.