Skip to content
lsl.devlsl.devLSL Dev

Category:LSL Combat2

This is a historical wiki category. Explore the current topic guides →

Help: {{Help}}LSL Header: {{LSL Header|ml=*}} __NOTOC__
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.
<h2>Introduced are new concepts</h2>
  • 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 final damage is applied
  • Scripts may modify the actual amount of damage in a damage event if the region allows it
  • Objects have a health property
  • Scripts have to manage this property themselves; Unlike agents the simulator will not apply damage to the object health and instead only trigger damage and final damage events
  • Sensors can scan for damageable objects and avatars that are not on a safe parcel
  • Combat Log has been added which allows for auditing and other usecases
  • Records all damage events, damage adjustments and kills in a combat-specific public channel
  • System generated messages by a specific ID that scripts may filter to
  • Scripts may write to this channel if not restricted so by the region
  • New region-wide settings, region owners may:
  • Throttle damage per second dealt to a target by a single source
  • Limit damage to a target by a maximum per a single event
  • 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 -- Which can allow a custom scripted respawn system to act instead for example
  • 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 or disable health regeneration
  • Whether scripts are allowed to adjust damage or write to the combat log
  • Currently these new settings are available through the Region Debug Console
<h2>New Functions and Events</h2> These are the functions and events directly related to Combat2 as well as new related functions
<h2>Combat Log</h2> System-generated log messages are collected and sent into the COMBAT_CHANNEL in a JSON format. <h2>Damage Types</h2> The damage amount can be supported via a damage type field, which can match a default DAMAGE_TYPE_* or a custom integer; Additionally the field may be repurposed.
<h2>Scripting Details</h2>
Here are the new functions and events in detail
<h2>Additional</h2>
  • 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 (that is if they have a on_damage and/or final_damage event -- the object's health doesn't matter)
  • llGetObjectDetails — Additional values around health, damage and type
  • 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
  • llSetLinkPrimitiveParamsFast — New parameter added to adjust damage amount and damage type for collision damage
  • 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. This is a Damage Per Second (DPS) throttle
    • "damage_limit" — The maximum number of points of damage a single damage collision or call via llDamage may inflict
    • "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

Damage Types

Flag Description
DAMAGE_TYPE_IMPACT−1System damage generated by impact with terrain or a prim.
DAMAGE_TYPE_GENERIC0Generic or legacy damage.
DAMAGE_TYPE_ACID1Damage caused by a caustic substance, such as acid.
DAMAGE_TYPE_BLUDGEONING2Damage caused by a blunt object, such as a club.
DAMAGE_TYPE_COLD3Damage inflicted by exposure to extreme cold.
DAMAGE_TYPE_ELECTRIC4Damage caused by electricity.
DAMAGE_TYPE_FIRE5Damage inflicted by exposure to heat or flames.
DAMAGE_TYPE_FORCE6Damage inflicted by a great force or impact.
DAMAGE_TYPE_NECROTIC7Damage caused by a direct assault on life-force.
DAMAGE_TYPE_PIERCING8Damage caused by a piercing object such as a bullet, spear, or arrow.
DAMAGE_TYPE_POISON9Damage caused by poison.
DAMAGE_TYPE_PSYCHIC10Damage caused by a direct assault on the mind.
DAMAGE_TYPE_RADIANT11Damage caused by radiation or extreme light.
DAMAGE_TYPE_SLASHING12Damage caused by a slashing object such as a sword or axe.
DAMAGE_TYPE_SONIC13Damage caused by loud noises, like a Crash Worship concert.
DAMAGE_TYPE_EMOTIONAL14
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
100100Negative damage to heal a wound, damaged limb, first aid, etc. Intended for generic healing of biological nature. Positive damage would be medical malpracticeNexii MalthusVertical Sim / SLMC
101101Negative 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 MalthusVertical Sim / SLMC
102102Damage caused by an explosive blast, like a grenadeDAMAGE_TYPE_FORCENexii MalthusVertical Sim / SLMC
103103Damage caused by crushing. Such as being crushed by water pressure. More of a constant type of force damage — can be nullified/reduced via diving suitDAMAGE_TYPE_FORCENexii MalthusVertical Sim / SLMC
104104Damage caused by anti-tank/anti-armor. Such as from a specialised armor piercing shell, rocket or other munitionDAMAGE_TYPE_PIERCINGNexii MalthusVertical Sim / SLMC
105105Damage caused by suffocation. Usually lacking a breathable atmosphere, such as from drowning or being in the vacuum of spaceNexii MalthusVertical Sim / SLMC
106106Special damage to indicate combatant chose to redeploy. You can code in side effect(s) such as using up a ticket off the team to do soNexii MalthusVertical Sim / SLMC
200200Damage caused by lack of survival needs, such as starvation and dehydration. Negative damage used to heal through recovery by food and waterAdam Silver-Mane (Adamphillip)Silver-mane's survival HUD
201201Damage caused by active bleeding. Damage type check, sets health to 0 on unsustainable systemic failureAdam Silver-Mane (Adamphillip)Silver-mane's survival HUD

Known Issues

Wishlist

Original wiki source

Some wiki templates and tables need their original context. View this article on the Second Life Wiki. Technical wording and examples are retained from the source; historical guidance may differ from current behavior.