diff --git a/src/gs-entbase/server/func_breakable.qc b/src/gs-entbase/server/func_breakable.qc index b5bd0074..c0bd7f4f 100644 --- a/src/gs-entbase/server/func_breakable.qc +++ b/src/gs-entbase/server/func_breakable.qc @@ -408,13 +408,15 @@ func_breakable::Touch(entity eToucher) if (dmgAmount >= health) { vector dmgDir = dirFromTarget(eToucher.origin, WorldSpaceCenter()); - string dmgDef = sprintf("\"damage\" \"%i\"", dmgAmount); + NSDict damageDecl = spawn(NSDict); + damageDecl.AddKey("damage", itos(dmgAmount)); m_bCanTouch = false; - Damage(eToucher, eToucher, dmgDef, 1.0f, dmgDir, eToucher.origin); + Damage(eToucher, eToucher, damageDecl.GetDeclBody(), 1.0f, dmgDir, eToucher.origin); if ((GetSurfaceData(SURFDATA_MATERIAL) == GSMATERIAL_GLASS) || (GetSurfaceData(SURFDATA_MATERIAL) == GSMATERIAL_COMPUTER)) { - Damage(eToucher, eToucher, dmgDef, 0.25f, dmgDir, eToucher.origin); + Damage(eToucher, eToucher, damageDecl.GetDeclBody(), 0.25f, dmgDir, eToucher.origin); } + remove(damageDecl); } } diff --git a/src/gs-entbase/server/func_door.qc b/src/gs-entbase/server/func_door.qc index 22ebd56b..bb8c8e27 100644 --- a/src/gs-entbase/server/func_door.qc +++ b/src/gs-entbase/server/func_door.qc @@ -581,9 +581,11 @@ func_door::Blocked(entity eBlocker) if (m_iDamage) { vector center = WorldSpaceCenter(); vector dmgDir = dirFromTarget(center, eBlocker.origin); - string dmgDef = sprintf("\"damage\" \"%i\"", m_iDamage); + NSDict damageDecl = spawn(NSDict); + damageDecl.AddKey("damage", itos(m_iDamage)); m_bCanTouch = false; - entityDamage(eBlocker, this, eBlocker, dmgDef, "", center, dmgDir, eBlocker.origin); + entityDamage(eBlocker, this, eBlocker, damageDecl.GetDeclBody(), "", center, dmgDir, eBlocker.origin); + remove(damageDecl); } if (!m_bForceClosed) diff --git a/src/gs-entbase/server/func_door_rotating.qc b/src/gs-entbase/server/func_door_rotating.qc index 73b85791..f4ef7fcb 100644 --- a/src/gs-entbase/server/func_door_rotating.qc +++ b/src/gs-entbase/server/func_door_rotating.qc @@ -515,9 +515,11 @@ func_door_rotating::Blocked(entity eBlocker) if (m_iDamage) { vector center = WorldSpaceCenter(); vector dmgDir = dirFromTarget(center, eBlocker.origin); - string dmgDef = sprintf("\"damage\" \"%i\"", m_iDamage); + NSDict damageDecl = spawn(NSDict); + damageDecl.AddKey("damage", itos(m_iDamage)); m_bCanTouch = false; - entityDamage(eBlocker, this, eBlocker, dmgDef, "", center, dmgDir, eBlocker.origin); + entityDamage(eBlocker, this, eBlocker, damageDecl.GetDeclBody(), "", center, dmgDir, eBlocker.origin); + remove(damageDecl); } if (m_flWait >= 0) { diff --git a/src/gs-entbase/server/func_rotating.qc b/src/gs-entbase/server/func_rotating.qc index bbbd86fd..a3a78b12 100644 --- a/src/gs-entbase/server/func_rotating.qc +++ b/src/gs-entbase/server/func_rotating.qc @@ -207,8 +207,10 @@ func_rotating::Blocked(entity eBlocker) if (WithinBounds(eBlocker)) { vector center = WorldSpaceCenter(); vector dmgDir = dirFromTarget(center, eBlocker.origin); - string dmgDef = sprintf("\"damage\" \"%i\"", (int)m_flDamage); - entityDamage(eBlocker, this, eBlocker, dmgDef, "", center, dmgDir, eBlocker.origin); + NSDict damageDecl = spawn(NSDict); + damageDecl.AddKey("damage", ftos(m_flDamage)); + entityDamage(eBlocker, this, eBlocker, damageDecl.GetDeclBody(), "", center, dmgDir, eBlocker.origin); + remove(damageDecl); } } } diff --git a/src/gs-entbase/server/game_player_hurt.qc b/src/gs-entbase/server/game_player_hurt.qc index ca3a8e7c..860c0212 100644 --- a/src/gs-entbase/server/game_player_hurt.qc +++ b/src/gs-entbase/server/game_player_hurt.qc @@ -96,9 +96,10 @@ game_player_hurt::Trigger(entity activatingEntity, triggermode_t triggerMode) return; } - string damageDef = sprintf("\"damage\" \"%i\"", m_iDamage); - - entityDamage(activatingEntity, this, activatingEntity, damageDef, "", GetOrigin(), g_vec_null, activatingEntity.origin); + NSDict damageDecl = spawn(NSDict); + damageDecl.AddKey("damage", itos(m_iDamage)); + entityDamage(activatingEntity, this, activatingEntity, damageDecl.GetDeclBody(), "", GetOrigin(), g_vec_null, activatingEntity.origin); + remove(damageDecl); if (HasSpawnFlags(1)) { Destroy(); diff --git a/src/gs-entbase/shared/prop_vehicle_driveable.qc b/src/gs-entbase/shared/prop_vehicle_driveable.qc index 34bfd883..db2ab688 100644 --- a/src/gs-entbase/shared/prop_vehicle_driveable.qc +++ b/src/gs-entbase/shared/prop_vehicle_driveable.qc @@ -462,8 +462,10 @@ prop_vehicle_driveable_wheel::Accel(float flMoveTime, float m_flTurn) if (trace_ent.takedamage) { NSSurfacePropEntity foo = (NSSurfacePropEntity)trace_ent; vector dmgDir = dirFromTarget(trace_endpos, foo.origin); - string dmgDef = sprintf("\"damage\" \"%i\"", iImpactDamage); - entityDamage(foo, this, vehParent.m_eDriver, dmgDef, "", trace_endpos, dmgDir, foo.origin); + NSDict damageDecl = spawn(NSDict); + damageDecl.AddKey("damage", itos(iImpactDamage)); + entityDamage(foo, this, vehParent.m_eDriver, damageDecl.GetDeclBody(), "", trace_endpos, dmgDir, foo.origin); + remove(damageDecl); //print(sprintf("Delivering %i impact damage\n", iImpactDamage)); } #endif