Prop ragdoll: Difference between revisions
| SirYodaJedi (talk | contribs) | m (→Inputs:  Substituted IO templates) | ||
| Line 56: | Line 56: | ||
| ==Inputs== | ==Inputs== | ||
| {{ | {{I|StartRagdollBoogie|Begins ragdoll boogie effect for 5 seconds.{{bug|This input is actually supposed to use a parameter for how long the ragdoll should boogie, but it uses the wrong field type in the data description.{{code fix|In <code>CRagdollProp</code>'s data description, find <code>DEFINE_INPUTFUNC( FIELD_VOID, "StartRagdollBoogie", InputStartRadgollBoogie )</code> and replace <code>FIELD_VOID</code> with <code>FIELD_FLOAT</code>.}} | ||
| |hidetested=1 | |hidetested=1 | ||
| }} | }} | ||
| }} | }} | ||
| {{ | {{I|EnableMotion / DisableMotion|Enable / disable physics simulation.}} | ||
| {{ | {{I|FadeAndRemove|Fade out then remove (kill) self. Parameter override <nowiki>=</nowiki> duration of fade.|since={{hl2ep2}}}} | ||
| {{ | {{I|AllowBloodPool|Сorpse once will create pool of blood (particle effect) if it is placed on brush. {{note|Not available for <code>prop_ragdoll_original</code> and <code>prop_ragdoll_attached</code>.}}|nofgd=1|only={{bms}}}} | ||
| == See Also == | == See Also == | ||
Revision as of 11:15, 21 April 2025
|  Class hierarchy | 
|---|
| CRagdollProp | 
|  physics_prop_ragdoll.cpp | 
prop_ragdoll  is a   point entity  available in all  Source games. It is a VPhysics ragdoll. Ragdolls are collections of physics objects constrained together to simulate a jointed object like a dead body. They are very expensive to simulate.
 Source games. It is a VPhysics ragdoll. Ragdolls are collections of physics objects constrained together to simulate a jointed object like a dead body. They are very expensive to simulate.
 Warning:This entity generates server-side ragdolls, which collide with everything but produce very large amounts of network traffic. Network traffic can be significantly reduced by making the ragdoll start asleep, disabling motion and disabling collisions with dynamic objects (!FGD add "solid" keyvalue with value of 0) and only enabling motion when necessary.
Warning:This entity generates server-side ragdolls, which collide with everything but produce very large amounts of network traffic. Network traffic can be significantly reduced by making the ragdoll start asleep, disabling motion and disabling collisions with dynamic objects (!FGD add "solid" keyvalue with value of 0) and only enabling motion when necessary. Bug:Ragdolls are ignored in prediction, this causes lots of prediction errors when touching a ragdoll.  [todo tested in ?]
Bug:Ragdolls are ignored in prediction, this causes lots of prediction errors when touching a ragdoll.  [todo tested in ?] AltNames: This entity is also tied to
AltNames: This entity is also tied to physics_prop_ragdoll.  |  Note:Original entity version is available as prop_ragdoll_original. The difference is:prop_ragdoll_originalcan't be gibbed with explosions, crowbar can hitprop_ragdoll_originalif[4] Debrisspawnflag is unchecked (crowbar's raycast skipsprop_ragdollfor some reason),prop_ragdoll_originaldoesn't bleed or have decals on it,prop_ragdoll_originalcan't be picked up,prop_ragdoll_originalhave realistic bullet push. Bug: 
 | 
Death Ragdolls/Ragdoll Transformation
When a NPC/player dies or an entity receives the BecomeRagdoll input, it normally creates a client-side ragdoll and copies most of its animation and visual data to it. Unlike server-side prop_ragdolls, these client-side ragdolls are handled completely on a per-client basis and are much cheaper and simpler than their server-side counterparts, at the expense of being virtually nonexistent on the server, being inconsistent across client perspectives, and only colliding with entities that have physics objects on the client (e.g. worldspawn).
However, a NPC will become a server-side ragdoll while it's under any of the following conditions:
- The NPC is inside the volume of a trigger_serverragdoll
- The NPC is killed by a vehicle in singleplayer
- The gravity gun is supercharged
- The NPC dies on fire while in Alyx darkness mode
- The NPC is a vital ally (e.g., npc_alyx)
These server-side death ragdolls will collide with physics objects and beyond, like any prop_ragdoll, but they are marked as debris and do not collide with each other. They do not collide with themselves either, unlike client-side ragdolls (fixed in  Entropy : Zero 2 and
 Entropy : Zero 2 and  Black Mesa). This is believed to be intentional behavior to reduce performance/networking costs.
 Black Mesa). This is believed to be intentional behavior to reduce performance/networking costs.
 Bug:Server side ragdolls don't save blood decals. Fixed in
Bug:Server side ragdolls don't save blood decals. Fixed in  Mapbase and
 Mapbase and  Black Mesa.  (tested in:
 Black Mesa.  (tested in:  ,
, )
) Note:Most of this list theoretically applies to players as well, although that hasn't been tested.
Note:Most of this list theoretically applies to players as well, although that hasn't been tested. Warning:While most of the relevant animation/visual data is copied to ragdolls, some fields, like fade distances, are not transferred.
Warning:While most of the relevant animation/visual data is copied to ragdolls, some fields, like fade distances, are not transferred. Code:This can be modified at Code:This can be modified at- CBaseAnimating::CopyAnimationDataFrom()in- baseanimating.cppfor server-side ragdolls and- C_BaseAnimating::CreateRagdollCopy()in- c_baseanimating.cppfor client-side ragdolls.
Keyvalues
- Name (targetname) <string>[ Edit ]
- The name that other entities refer to this entity by, via Inputs/Outputs or other keyvalues (e.g. parentnameortarget).
 Also displayed in Hammer's 2D views and Entity Report.See also: Generic Keyvalues, Inputs and Outputs available to all entities
- Override Animation (angleOverride) <string>
- List of joint rotations in the format index,x y z,.... Filled in by the engine via hammer_update_entity or after simulating ragdolls in Hammer++ physics simulation. Hammer++ physics simulation.
| 
 
 GMODSandbox: 
 
 | 
| CBaseAnimating: 
 
 
 
 
 Shadow: 
 
 
 
 
 
 | 
Flags
- Debris : [4]
- Don't collide with the player or other debris
- Use 'Least Recently Used' Retirement : [4096] !FGD
- LRU in this case it's referring to Source's ragdoll cleanup system, which automatically removes ragdolls which haven't been used. Serverside ragdolls spawned by NPCs are automatically added to this system, while prop_ragdolls spawned by the map are not
- Allow Dissolve : [8192] (only in   [confirm]) [confirm])
- Allow dissolve by prop_combine_ball
- Motion Disabled : [16384]
- Allow stretch : [32768]
- Start asleep : [65536]
Inputs
- StartRagdollBoogie
- Begins ragdoll boogie effect for 5 seconds. Bug:This input is actually supposed to use a parameter for how long the ragdoll should boogie, but it uses the wrong field type in the data description. Bug:This input is actually supposed to use a parameter for how long the ragdoll should boogie, but it uses the wrong field type in the data description. Code Fix:In Code Fix:InCRagdollProp's data description, findDEFINE_INPUTFUNC( FIELD_VOID, "StartRagdollBoogie", InputStartRadgollBoogie )and replaceFIELD_VOIDwithFIELD_FLOAT.
- EnableMotion / DisableMotion
- Enable / disable physics simulation.
- FadeAndRemove   (in all games since  ) )
- Fade out then remove (kill) self. Parameter override = duration of fade.
- AllowBloodPool   (only in  ) !FGD ) !FGD
- Сorpse once will create pool of blood (particle effect) if it is placed on brush.  Note:Not available for Note:Not available forprop_ragdoll_originalandprop_ragdoll_attached.
































