From 32b7791b2b56ee540e5e312ed62a506e89dc0208 Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Sun, 29 Sep 2019 01:54:29 +0200 Subject: [PATCH] Add internal support for damage types. still a few more useful ones to add on a per-case basis. --- src/gs-entbase/client.src | 1 + src/gs-entbase/client/point_message.cpp | 49 ++++++++++++++++++++ src/gs-entbase/server/defs.h | 11 ----- src/gs-entbase/server/env_explosion.cpp | 2 +- src/gs-entbase/server/func_breakable.cpp | 6 +-- src/gs-entbase/server/func_door_rotating.cpp | 2 +- src/gs-entbase/server/func_rotating.cpp | 2 +- src/gs-entbase/server/func_train.cpp | 2 +- src/gs-entbase/server/item_food.cpp | 2 +- src/gs-entbase/server/trigger_hurt.cpp | 2 +- src/server/defs.h | 15 +++++- src/server/rewolf/client.c | 2 +- src/server/tfc/client.c | 2 +- src/server/traceattack.c | 2 +- src/server/valve/client.c | 2 +- src/server/valve/damage.c | 12 ++--- src/server/valve/defs.h | 2 +- src/server/valve/item_healthkit.cpp | 2 +- src/shared/defs.h | 29 ++++++++++++ src/shared/gearbox/w_displacer.c | 2 +- src/shared/gearbox/w_grapple.c | 2 +- src/shared/gearbox/w_knife.c | 2 +- src/shared/gearbox/w_penguin.c | 6 +-- src/shared/gearbox/w_pipewrench.c | 4 +- src/shared/gearbox/w_shockrifle.c | 2 +- src/shared/gearbox/w_sporelauncher.c | 2 +- src/shared/math.h | 2 +- src/shared/rewolf/w_chemicalgun.c | 2 +- src/shared/tfc/w_crowbar.c | 2 +- src/shared/tfc/w_umbrella.c | 2 +- src/shared/tfc/w_wrench.c | 2 +- src/shared/valve/w_crossbow.c | 4 +- src/shared/valve/w_crowbar.c | 2 +- src/shared/valve/w_egon.c | 2 +- src/shared/valve/w_gauss.c | 4 +- src/shared/valve/w_handgrenade.c | 4 +- src/shared/valve/w_hornetgun.c | 2 +- src/shared/valve/w_mp5.c | 2 +- src/shared/valve/w_rpg.c | 2 +- src/shared/valve/w_satchel.c | 2 +- src/shared/valve/w_snark.c | 4 +- src/shared/valve/w_tripmine.c | 2 +- 42 files changed, 143 insertions(+), 64 deletions(-) create mode 100644 src/gs-entbase/client/point_message.cpp diff --git a/src/gs-entbase/client.src b/src/gs-entbase/client.src index 23798752..fde31a15 100644 --- a/src/gs-entbase/client.src +++ b/src/gs-entbase/client.src @@ -7,5 +7,6 @@ client/env_sound.cpp client/sky_camera.cpp server/func_ladder.cpp server/trigger_gravity.cpp +client/point_message.cpp client/worldspawn.cpp #endlist diff --git a/src/gs-entbase/client/point_message.cpp b/src/gs-entbase/client/point_message.cpp new file mode 100644 index 00000000..9b6308d9 --- /dev/null +++ b/src/gs-entbase/client/point_message.cpp @@ -0,0 +1,49 @@ +/*** +* +* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved. +* +* See the file LICENSE attached with the sources for usage details. +* +****/ + +/*QUAKED point_message (1 0 0) (-8 -8 -8) (8 8 8) +"message" The message to display. +"radius" The radius in which it will appear. + +Client-side overlay/message that is projected in relation to its position +in 3D space. +Used for zoo and test maps in which less interactive overlays are desired. +*/ + +class point_message:CBaseEntity +{ + float radius; + string message; + void() point_message; + virtual void(string, string) SpawnKey; +}; + +void point_message::SpawnKey(string strField, string strKey) +{ + switch (strField) { + case "radius": + radius = stof(strKey); + break; + case "message": + message = strKey; + break; + case "origin": + origin = stov( strKey ); + setorigin( this, origin ); + break; + default: + CBaseEntity::SpawnKey(strField, strKey); + } +} + +void point_message::point_message(void) +{ + radius = 512; + message = "No message"; + Init(); +} diff --git a/src/gs-entbase/server/defs.h b/src/gs-entbase/server/defs.h index 7dc8f326..25d4abb1 100644 --- a/src/gs-entbase/server/defs.h +++ b/src/gs-entbase/server/defs.h @@ -16,17 +16,6 @@ //#define GS_DEVELOPER -.float gflags; - -enumflags -{ - GF_CANRESPAWN, - GF_USE_RELEASED, - GF_IN_VEHICLE, - GF_FROZEN, - GF_SEMI_TOGGLED -}; - void Effect_CreateSpark(vector, vector); void Effect_BreakModel(int, vector, vector, vector, float); diff --git a/src/gs-entbase/server/env_explosion.cpp b/src/gs-entbase/server/env_explosion.cpp index 08886e8a..92ef85e3 100644 --- a/src/gs-entbase/server/env_explosion.cpp +++ b/src/gs-entbase/server/env_explosion.cpp @@ -60,7 +60,7 @@ void env_explosion::Trigger(void) Effect_CreateExplosion(origin); if (!(spawnflags & ENVEXPLO_NODAMAGE)) { - Damage_Radius(origin, this, m_iMagnitude, m_iMagnitude * 2.5f, TRUE); + Damage_Radius(origin, this, m_iMagnitude, m_iMagnitude * 2.5f, TRUE, 0); } // TODO: Respawn after round instead? diff --git a/src/gs-entbase/server/func_breakable.cpp b/src/gs-entbase/server/func_breakable.cpp index e4687cdc..daffba43 100755 --- a/src/gs-entbase/server/func_breakable.cpp +++ b/src/gs-entbase/server/func_breakable.cpp @@ -106,7 +106,7 @@ void func_breakable::Explode(void) vWorldPos[2] = absmin[2] + ( 0.5 * ( absmax[2] - absmin[2] ) ); Effect_BreakModel(20, absmin, absmax, '0 0 0', m_iMaterial); Effect_CreateExplosion(vWorldPos); - Damage_Radius(vWorldPos, this, m_flExplodeMag, m_flExplodeMag * 2.5f, TRUE); + Damage_Radius(vWorldPos, this, m_flExplodeMag, m_flExplodeMag * 2.5f, TRUE, 0); CBaseTrigger::UseTargets(); CBaseEntity::Hide(); } @@ -157,10 +157,10 @@ void func_breakable::PlayerTouch(void) if (fDamage >= health) { touch = __NULL__; - Damage_Apply(this, other, fDamage, absmin, FALSE, 0); + Damage_Apply(this, other, fDamage, 0, DMG_CRUSH); if ((m_iMaterial == MATERIAL_GLASS) || (m_iMaterial == MATERIAL_COMPUTER)) { - Damage_Apply(other, this, fDamage / 4, other.origin, FALSE, 0); + Damage_Apply(other, this, fDamage / 4, 0, DMG_CRUSH); } } } diff --git a/src/gs-entbase/server/func_door_rotating.cpp b/src/gs-entbase/server/func_door_rotating.cpp index 90cb3623..6a23a3de 100644 --- a/src/gs-entbase/server/func_door_rotating.cpp +++ b/src/gs-entbase/server/func_door_rotating.cpp @@ -238,7 +238,7 @@ void func_door_rotating::Touch(void) void func_door_rotating::Blocked(void) { if (m_iDamage) { - Damage_Apply(other, this, m_iDamage, other.origin, FALSE, 0); + Damage_Apply(other, this, m_iDamage, 0, DMG_CRUSH); } if (m_flWait >= 0) { diff --git a/src/gs-entbase/server/func_rotating.cpp b/src/gs-entbase/server/func_rotating.cpp index 2f931106..936499ef 100644 --- a/src/gs-entbase/server/func_rotating.cpp +++ b/src/gs-entbase/server/func_rotating.cpp @@ -72,7 +72,7 @@ void func_rotating :: Blocked ( void ) } if (other.takedamage == DAMAGE_YES) { - Damage_Apply(other, this, m_flDamage, other.origin, TRUE, 0); + Damage_Apply(other, this, m_flDamage, 0, DMG_CRUSH); } } diff --git a/src/gs-entbase/server/func_train.cpp b/src/gs-entbase/server/func_train.cpp index ddc0969d..1eb5bdd8 100644 --- a/src/gs-entbase/server/func_train.cpp +++ b/src/gs-entbase/server/func_train.cpp @@ -89,7 +89,7 @@ class func_train:CBaseTrigger void func_train::Blocked(void) { - Damage_Apply(other, this, m_flDamage, other.origin, TRUE, 0); + Damage_Apply(other, this, m_flDamage, 0, DMG_CRUSH); } void diff --git a/src/gs-entbase/server/item_food.cpp b/src/gs-entbase/server/item_food.cpp index b0725b14..a3e718b1 100644 --- a/src/gs-entbase/server/item_food.cpp +++ b/src/gs-entbase/server/item_food.cpp @@ -41,7 +41,7 @@ void item_food :: Touch ( void ) bevOwner.m_iReady = TRUE; } - Damage_Apply(other, this, -1, other.origin, FALSE, 0); + Damage_Apply(other, this, -1, 0, DMG_GENERIC); solid = SOLID_NOT; remove( this ); } diff --git a/src/gs-entbase/server/trigger_hurt.cpp b/src/gs-entbase/server/trigger_hurt.cpp index 392785bc..f8e395ba 100644 --- a/src/gs-entbase/server/trigger_hurt.cpp +++ b/src/gs-entbase/server/trigger_hurt.cpp @@ -94,7 +94,7 @@ void trigger_hurt::Touch(void) } } - Damage_Apply(other, this, m_iDamage, other.origin, FALSE, 0); + Damage_Apply(other, this, m_iDamage, 0, DMG_GENERIC); // Shut it down if used once if (spawnflags & SF_HURT_ONCE) { diff --git a/src/server/defs.h b/src/server/defs.h index f4929d7a..5ed1eef4 100644 --- a/src/server/defs.h +++ b/src/server/defs.h @@ -25,8 +25,8 @@ void Effect_GibHuman( vector vPos); void Footsteps_Update( void ); void Vox_Broadcast(string sMessage); void TraceAttack_FireBullets(int , vector, int, vector, int); -void Damage_Radius( vector vOrigin, entity eAttacker, float fDamage, float fRadius, int iCheckClip ); -void Damage_Apply( entity, entity, float, vector, int, int); +void Damage_Radius( vector, entity, float, float, int, int); +void Damage_Apply( entity, entity, float, int, int); void Client_TriggerCamera( entity eTarget, vector vPos, vector vEndPos, float fResetTime ); void Game_Input(void); @@ -46,3 +46,14 @@ entity eActivator; string startspot; string __fullspawndata; hashtable hashMaterials; + +.float gflags; + +enumflags +{ + GF_CANRESPAWN, + GF_USE_RELEASED, + GF_IN_VEHICLE, + GF_FROZEN, + GF_SEMI_TOGGLED +}; diff --git a/src/server/rewolf/client.c b/src/server/rewolf/client.c index af852ea1..90cd5fc2 100644 --- a/src/server/rewolf/client.c +++ b/src/server/rewolf/client.c @@ -58,7 +58,7 @@ Game_ClientDisconnect(void) void Game_ClientKill(void) { - Damage_Apply(self, self, self.health, self.origin, TRUE, 0); + Damage_Apply(self, self, self.health, 0, DMG_SKIP_ARMOR); } void diff --git a/src/server/tfc/client.c b/src/server/tfc/client.c index 9f255e10..91a88e9c 100644 --- a/src/server/tfc/client.c +++ b/src/server/tfc/client.c @@ -58,7 +58,7 @@ Game_ClientDisconnect(void) void Game_ClientKill(void) { - Damage_Apply(self, self, self.health, self.origin, TRUE, 0); + Damage_Apply(self, self, self.health, 0, DMG_SKIP_ARMOR); } void diff --git a/src/server/traceattack.c b/src/server/traceattack.c index 87edf963..2fdbaf10 100644 --- a/src/server/traceattack.c +++ b/src/server/traceattack.c @@ -70,7 +70,7 @@ TraceAttack_FireSingle(vector vPos, vector vAngle, int iDamage, int iWeapon) iDamage *= 3; } #endif - Damage_Apply(trace_ent, self, iDamage, trace_endpos, FALSE, iWeapon); + Damage_Apply(trace_ent, self, iDamage, iWeapon, DMG_BULLET); } if (trace_ent.iBleeds == TRUE) { diff --git a/src/server/valve/client.c b/src/server/valve/client.c index 359688bc..aa89e697 100644 --- a/src/server/valve/client.c +++ b/src/server/valve/client.c @@ -54,7 +54,7 @@ Game_ClientDisconnect(void) void Game_ClientKill(void) { - Damage_Apply(self, self, self.health, self.origin, TRUE, WEAPON_NONE); + Damage_Apply(self, self, self.health, WEAPON_NONE, DMG_SKIP_ARMOR); } void diff --git a/src/server/valve/damage.c b/src/server/valve/damage.c index 22f83365..93d880b3 100644 --- a/src/server/valve/damage.c +++ b/src/server/valve/damage.c @@ -30,14 +30,14 @@ Damage_Obituary(entity c, entity t, float weapon, float flags) /* generic function that applies damage, pain and suffering */ void -Damage_Apply(entity t, entity c, float dmg, vector pos, int a, int w) +Damage_Apply(entity t, entity c, float dmg, int w, int type) { if (t.flags & FL_GODMODE) { return; } /* skip armor */ - if (!a) + if not (type & DMG_SKIP_ARMOR) if (t.armor && dmg > 0) { float flArmor; float flNewDamage; @@ -131,7 +131,7 @@ Damage_CheckTrace(entity t, vector vecHitPos) /* even more pain and suffering, mostly used for explosives */ void -Damage_Radius(vector org, entity attacker, float dmg, float radius, int check) +Damage_Radius(vector org, entity attacker, float dmg, float r, int check, int w) { float new_dmg; float dist; @@ -145,7 +145,7 @@ Damage_Radius(vector org, entity attacker, float dmg, float radius, int check) /* don't bother if it's not anywhere near us */ dist = vlen(org - pos); - if (dist > radius) { + if (dist > r) { continue; } @@ -158,11 +158,11 @@ Damage_Radius(vector org, entity attacker, float dmg, float radius, int check) /* calculate new damage values */ diff = vlen(org - pos); - diff = (radius - diff) / radius; + diff = (r - diff) / r; new_dmg = rint(dmg * diff); if (diff > 0) { - Damage_Apply(e, attacker, new_dmg, pos, FALSE, 0); + Damage_Apply(e, attacker, new_dmg, w, DMG_EXPLODE); /* approximate, feel free to tweak */ if (e.movetype == MOVETYPE_WALK) { diff --git a/src/server/valve/defs.h b/src/server/valve/defs.h index 1440397f..b6d370c5 100644 --- a/src/server/valve/defs.h +++ b/src/server/valve/defs.h @@ -14,4 +14,4 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -void Damage_Apply(entity, entity, float, vector, int, int); +void Damage_Apply(entity, entity, float, int, int); diff --git a/src/server/valve/item_healthkit.cpp b/src/server/valve/item_healthkit.cpp index fbef9be6..59be2115 100644 --- a/src/server/valve/item_healthkit.cpp +++ b/src/server/valve/item_healthkit.cpp @@ -30,7 +30,7 @@ void item_healthkit::touch(void) if (other.health >= other.max_health) { return; } - Damage_Apply(other, this, -20, this.origin, TRUE, 0); + Damage_Apply(other, this, -20, 0, DMG_GENERIC); sound(this, CHAN_ITEM, "items/smallmedkit1.wav", 1, ATTN_NORM); Logging_Pickup(other, this, __NULL__); diff --git a/src/shared/defs.h b/src/shared/defs.h index fbef69f0..ca21bf5b 100644 --- a/src/shared/defs.h +++ b/src/shared/defs.h @@ -80,6 +80,35 @@ enum { BODY_LEGRIGHT }; +enumflags +{ + DMG_GENERIC, + DMG_CRUSH, + DMG_BULLET, + DMG_SLASH, + DMG_BURN, + DMG_VEHICLE, + DMG_FALL, + DMG_EXPLODE, + DMG_BLUNT, + DMG_ELECTRO, + DMG_SOUND, + DMG_ENERGYBEAM, + DMG_GIB_NEVER, + DMG_GIB_ALWAYS, + DMG_DROWN, + DMG_PARALYZE, + DMG_NERVEGAS, + DMG_POISON, + DMG_RADIATION, + DMG_DROWNRECOVER, + DMG_ACID, + DMG_SLOWBURN, + DMG_SLOWFREEZE, + DMG_SKIP_ARMOR, + DMG_SKIP_RAGDOLL +}; + #define clamp(d,min,max) bound(min,d,max) .float jumptime; diff --git a/src/shared/gearbox/w_displacer.c b/src/shared/gearbox/w_displacer.c index ee86c3e4..21b48edd 100644 --- a/src/shared/gearbox/w_displacer.c +++ b/src/shared/gearbox/w_displacer.c @@ -131,7 +131,7 @@ w_displacer_fireball(void) if (other.flags & FL_CLIENT) { w_displacer_teleport(other); } - Damage_Radius(self.origin, self.owner, 250, 250 * 2.5f, TRUE); + Damage_Radius(self.origin, self.owner, 250, 250 * 2.5f, TRUE, WEAPON_DISPLACER); sound(self, 1, "weapons/displacer_impact.wav", 1, ATTN_NORM); #endif remove(self); diff --git a/src/shared/gearbox/w_grapple.c b/src/shared/gearbox/w_grapple.c index 894a5ebf..da72939b 100644 --- a/src/shared/gearbox/w_grapple.c +++ b/src/shared/gearbox/w_grapple.c @@ -147,7 +147,7 @@ w_grapple_primary(void) vector src = Weapons_GetCameraPos(); traceline(src, src + (v_forward * 32), FALSE, pl); if (trace_ent.takedamage == DAMAGE_YES && trace_ent.iBleeds) { - Damage_Apply(trace_ent, pl, 25, trace_endpos, FALSE, WEAPON_GRAPPLE); + Damage_Apply(trace_ent, pl, 25, WEAPON_GRAPPLE, DMG_GENERIC); } #endif pl.w_attack_next = 0.5f; diff --git a/src/shared/gearbox/w_knife.c b/src/shared/gearbox/w_knife.c index f3520b51..245abcf0 100644 --- a/src/shared/gearbox/w_knife.c +++ b/src/shared/gearbox/w_knife.c @@ -150,7 +150,7 @@ w_knife_primary(void) } if (trace_ent.takedamage) { - Damage_Apply(trace_ent, self, 10, trace_endpos, FALSE, WEAPON_KNIFE); + Damage_Apply(trace_ent, self, 10, WEAPON_KNIFE, DMG_SLASH); if (!trace_ent.iBleeds) { return; diff --git a/src/shared/gearbox/w_penguin.c b/src/shared/gearbox/w_penguin.c index 61676c70..71a306ac 100644 --- a/src/shared/gearbox/w_penguin.c +++ b/src/shared/gearbox/w_penguin.c @@ -107,7 +107,7 @@ penguin_ai(void) self.weapon = 0.5f + random(); penguin_squeak(self); input_buttons = 2; - Damage_Apply(self, world, 1, self.origin, TRUE, 0); + Damage_Apply(self, world, 1, 0, DMG_GENERIC); makevectors(self.angles); traceline(self.origin, self.origin + (v_forward * 128), 0, self); @@ -115,7 +115,7 @@ penguin_ai(void) if (trace_ent.takedamage == DAMAGE_YES) { float pit = 100 + random(0,10); sound(self, CHAN_BODY, "squeek/sqk_deploy1.wav", 1.0, ATTN_NORM, pit); - Damage_Apply(trace_ent, self.goalentity, 10, trace_endpos, FALSE, WEAPON_PENGUIN); + Damage_Apply(trace_ent, self.goalentity, 10, WEAPON_PENGUIN, DMG_GENERIC); } if (self.aiment.health <= 0) { @@ -135,7 +135,7 @@ penguin_die(int i) /* now we can explodededededed */ Effect_CreateExplosion(self.origin); - Damage_Radius(self.origin, self.owner, 150, 150 * 2.5f, TRUE); + Damage_Radius(self.origin, self.owner, 150, 150 * 2.5f, TRUE, WEAPON_PENGUIN); if (random() < 0.5) { sound(self, 1, "weapons/explode3.wav", 1.0f, ATTN_NORM); diff --git a/src/shared/gearbox/w_pipewrench.c b/src/shared/gearbox/w_pipewrench.c index 4dd25f8d..53ef5b37 100644 --- a/src/shared/gearbox/w_pipewrench.c +++ b/src/shared/gearbox/w_pipewrench.c @@ -148,7 +148,7 @@ w_pipewrench_primary(void) } if (trace_ent.takedamage) { - Damage_Apply(trace_ent, self, 10, trace_endpos, FALSE, WEAPON_PIPEWRENCH); + Damage_Apply(trace_ent, self, 10, WEAPON_PIPEWRENCH, DMG_BLUNT); if (!trace_ent.iBleeds) { return; @@ -212,7 +212,7 @@ w_pipewrench_release(void) if (trace_ent.takedamage == DAMAGE_YES) { hitsound = floor(random(1, 2)); /* TODO Damage is 45 - 200+ (?) */ - Damage_Apply(trace_ent, pl, 200, trace_endpos, FALSE, WEAPON_PIPEWRENCH); + Damage_Apply(trace_ent, pl, 200, WEAPON_PIPEWRENCH, DMG_BLUNT); } else { hitsound = 3; } diff --git a/src/shared/gearbox/w_shockrifle.c b/src/shared/gearbox/w_shockrifle.c index 9f117cbe..f2042081 100644 --- a/src/shared/gearbox/w_shockrifle.c +++ b/src/shared/gearbox/w_shockrifle.c @@ -109,7 +109,7 @@ w_shockrifle_shoothornet(void) { static void Hornet_Touch(void) { if (other.takedamage == DAMAGE_YES) { - Damage_Apply(other, self.owner, 10, trace_endpos, FALSE, WEAPON_SHOCKRIFLE); + Damage_Apply(other, self.owner, 10, WEAPON_SHOCKRIFLE, DMG_ELECTRO); } if (other.iBleeds) { diff --git a/src/shared/gearbox/w_sporelauncher.c b/src/shared/gearbox/w_sporelauncher.c index 44d2e99d..24e5dfb2 100644 --- a/src/shared/gearbox/w_sporelauncher.c +++ b/src/shared/gearbox/w_sporelauncher.c @@ -131,7 +131,7 @@ w_sporelauncher_primary(void) string hitsnd; if (other.takedamage == DAMAGE_YES) { - Damage_Apply(other, self.owner, 50, trace_endpos, FALSE, WEAPON_SPORELAUNCHER); + Damage_Apply(other, self.owner, 50, WEAPON_SPORELAUNCHER, DMG_GENERIC); } r = floor(random(0,3)); diff --git a/src/shared/math.h b/src/shared/math.h index bccc9cfd..75e3cf47 100644 --- a/src/shared/math.h +++ b/src/shared/math.h @@ -106,7 +106,7 @@ void QPhysics_Run ( entity eTarget ) if ( ( self.flags & FL_ONGROUND ) && self.movetype == MOVETYPE_WALK && ( flFallVel > 580 )) { float fFallDamage = ( flFallVel - 580 ) * ( 100 / ( 1024 - 580 ) ); - Damage_Apply( self, world, fFallDamage, self.origin, FALSE, 0); + Damage_Apply( self, world, fFallDamage, 0, DMG_FALL); sound(self, CHAN_AUTO, "player/pl_fallpain3.wav", 1.0, ATTN_NORM); } #endif diff --git a/src/shared/rewolf/w_chemicalgun.c b/src/shared/rewolf/w_chemicalgun.c index bad965de..7e70cd96 100644 --- a/src/shared/rewolf/w_chemicalgun.c +++ b/src/shared/rewolf/w_chemicalgun.c @@ -383,7 +383,7 @@ weapon_t w_chemicalgun = /* entity definitions for pickups */ #ifdef SSQC void -weapon_chemgun(void) +weapon_SPchemicalgun(void) { Weapons_InitItem(WEAPON_CHEMICALGUN); } diff --git a/src/shared/tfc/w_crowbar.c b/src/shared/tfc/w_crowbar.c index d9831ec7..11c8536a 100644 --- a/src/shared/tfc/w_crowbar.c +++ b/src/shared/tfc/w_crowbar.c @@ -136,7 +136,7 @@ w_crowbar_primary(void) } if (trace_ent.takedamage) { - Damage_Apply(trace_ent, self, 10, trace_endpos, FALSE, WEAPON_CROWBAR); + Damage_Apply(trace_ent, self, 10, WEAPON_CROWBAR, DMG_BLUNT); if (!trace_ent.iBleeds) { return; diff --git a/src/shared/tfc/w_umbrella.c b/src/shared/tfc/w_umbrella.c index f9212fee..ef78c513 100644 --- a/src/shared/tfc/w_umbrella.c +++ b/src/shared/tfc/w_umbrella.c @@ -139,7 +139,7 @@ w_umbrella_primary(void) } if (trace_ent.takedamage) { - Damage_Apply(trace_ent, self, 10, trace_endpos, FALSE, WEAPON_UMBRELLA); + Damage_Apply(trace_ent, self, 10, WEAPON_UMBRELLA, DMG_BLUNT); if (!trace_ent.iBleeds) { return; diff --git a/src/shared/tfc/w_wrench.c b/src/shared/tfc/w_wrench.c index 510d3722..f0ffc2d8 100644 --- a/src/shared/tfc/w_wrench.c +++ b/src/shared/tfc/w_wrench.c @@ -129,7 +129,7 @@ w_wrench_primary(void) } if (trace_ent.takedamage) { - Damage_Apply(trace_ent, self, 10, trace_endpos, FALSE, WEAPON_WRENCH); + Damage_Apply(trace_ent, self, 10, WEAPON_WRENCH, DMG_BLUNT); if (!trace_ent.iBleeds) { return; diff --git a/src/shared/valve/w_crossbow.c b/src/shared/valve/w_crossbow.c index ef4e868c..47284253 100644 --- a/src/shared/valve/w_crossbow.c +++ b/src/shared/valve/w_crossbow.c @@ -111,7 +111,7 @@ void Crossbolt_Touch(void) { /* explode mode, multiplayer */ if (self.weapon) { Effect_CreateExplosion(self.origin); - Damage_Radius(self.origin, self.owner, 50, 50 * 2.5f, TRUE); + Damage_Radius(self.origin, self.owner, 50, 50 * 2.5f, TRUE, WEAPON_CROSSBOW); if (random() < 0.5) { sound(self, 1, "weapons/explode3.wav", 1.0f, ATTN_NORM); } else { @@ -130,7 +130,7 @@ void Crossbolt_Touch(void) { } /* anything else that can take damage */ - Damage_Apply(other, self.owner, 50, trace_endpos, FALSE, WEAPON_CROSSBOW); + Damage_Apply(other, self.owner, 50, WEAPON_CROSSBOW, DMG_BLUNT); if (random() < 0.5) { sound(self, 1, "weapons/xbow_hitbod1.wav", 1.0f, ATTN_NORM); } else { diff --git a/src/shared/valve/w_crowbar.c b/src/shared/valve/w_crowbar.c index 1bde641f..d38212c5 100644 --- a/src/shared/valve/w_crowbar.c +++ b/src/shared/valve/w_crowbar.c @@ -136,7 +136,7 @@ w_crowbar_primary(void) } if (trace_ent.takedamage) { - Damage_Apply(trace_ent, pl, 10, trace_endpos, FALSE, WEAPON_CROWBAR); + Damage_Apply(trace_ent, pl, 10, WEAPON_CROWBAR, DMG_BLUNT); if (!trace_ent.iBleeds) { return; diff --git a/src/shared/valve/w_egon.c b/src/shared/valve/w_egon.c index 989039fb..19e335e7 100644 --- a/src/shared/valve/w_egon.c +++ b/src/shared/valve/w_egon.c @@ -110,7 +110,7 @@ void w_egon_primary(void) vector src = Weapons_GetCameraPos(); vector endpos = src + v_forward * 1024; traceline(src, endpos, FALSE, pl); - Damage_Radius(trace_endpos, pl, 14, 64, TRUE); + Damage_Radius(trace_endpos, pl, 14, 64, TRUE, DMG_ELECTRO); pl.ammo_uranium--; Weapons_UpdateAmmo(pl, __NULL__, pl.ammo_uranium, __NULL__); #endif diff --git a/src/shared/valve/w_gauss.c b/src/shared/valve/w_gauss.c index 6448675b..d12e1b19 100644 --- a/src/shared/valve/w_gauss.c +++ b/src/shared/valve/w_gauss.c @@ -158,7 +158,7 @@ void w_gauss_fire(int one) } if (trace_ent.takedamage == DAMAGE_YES) { - Damage_Apply(trace_ent, self, iDamage, trace_endpos, FALSE, WEAPON_GAUSS); + Damage_Apply(trace_ent, self, iDamage, WEAPON_GAUSS, DMG_ELECTRO); sound(trace_ent, CHAN_ITEM, sprintf("weapons/electro%d.wav", random(0,3)+4), 1, ATTN_NORM); } #else @@ -196,7 +196,7 @@ void w_gauss_fire(int one) iLoop--; #ifdef SSQC if (trace_ent.takedamage == DAMAGE_YES) { - Damage_Apply(trace_ent, self, iDamage, trace_endpos, FALSE, WEAPON_GAUSS); + Damage_Apply(trace_ent, self, iDamage, WEAPON_GAUSS, DMG_ELECTRO); sound(trace_ent, CHAN_ITEM, sprintf("weapons/electro%d.wav", random(0,3)+4), 1, ATTN_NORM); } diff --git a/src/shared/valve/w_handgrenade.c b/src/shared/valve/w_handgrenade.c index 3d50dd6b..4df47508 100644 --- a/src/shared/valve/w_handgrenade.c +++ b/src/shared/valve/w_handgrenade.c @@ -76,7 +76,7 @@ void w_handgrenade_throw(void) static void WeaponFrag_Throw_Explode( void ) { Effect_CreateExplosion(self.origin); - Damage_Radius(self.origin, self.owner, 150, 150 * 2.5f, TRUE); + Damage_Radius(self.origin, self.owner, 150, 150 * 2.5f, TRUE, WEAPON_HANDGRENADE); sound(self, CHAN_WEAPON, sprintf( "weapons/explode%d.wav", floor( random() * 2 ) + 3 ), 1, ATTN_NORM); remove(self); } @@ -84,7 +84,7 @@ void w_handgrenade_throw(void) static void WeaponFrag_Throw_Touch( void ) { if (other.takedamage == DAMAGE_YES) { - Damage_Apply(other, self.owner, 15, self.origin, FALSE, WEAPON_HANDGRENADE); + Damage_Apply(other, self.owner, 15, WEAPON_HANDGRENADE, DMG_BLUNT); } int r = floor(random(0,6)); string sample = sprintf("weapons/g_bounce%i.wav", r); diff --git a/src/shared/valve/w_hornetgun.c b/src/shared/valve/w_hornetgun.c index 37539cf0..2a735296 100644 --- a/src/shared/valve/w_hornetgun.c +++ b/src/shared/valve/w_hornetgun.c @@ -95,7 +95,7 @@ w_hornetgun_shoothornet(void) { static void Hornet_Touch(void) { if (other.takedamage == DAMAGE_YES) { - Damage_Apply(other, self.owner, 10, trace_endpos, FALSE, WEAPON_HORNETGUN); + Damage_Apply(other, self.owner, 10, WEAPON_HORNETGUN, DMG_GENERIC); } remove(self); } diff --git a/src/shared/valve/w_mp5.c b/src/shared/valve/w_mp5.c index f6989132..63514d39 100644 --- a/src/shared/valve/w_mp5.c +++ b/src/shared/valve/w_mp5.c @@ -174,7 +174,7 @@ w_mp5_secondary(void) #else static void Grenade_ExplodeTouch(void) { Effect_CreateExplosion(self.origin); - Damage_Radius(self.origin, self.owner, 100, 100 * 2.5f, TRUE); + Damage_Radius(self.origin, self.owner, 100, 100 * 2.5f, TRUE, WEAPON_MP5); if (random() < 0.5) { sound(self, 1, "weapons/explode3.wav", 1, ATTN_NORM); diff --git a/src/shared/valve/w_rpg.c b/src/shared/valve/w_rpg.c index 78a052cb..a2629de6 100644 --- a/src/shared/valve/w_rpg.c +++ b/src/shared/valve/w_rpg.c @@ -117,7 +117,7 @@ void w_rpg_primary(void) #else static void Rocket_Touch(void) { Effect_CreateExplosion(self.origin); - Damage_Radius(self.origin, self.owner, 150, 150 * 2.5f, TRUE); + Damage_Radius(self.origin, self.owner, 150, 150 * 2.5f, TRUE, WEAPON_RPG); sound(self, CHAN_WEAPON, sprintf( "weapons/explode%d.wav", floor( random() * 2 ) + 3 ), 1, ATTN_NORM); remove(self); } diff --git a/src/shared/valve/w_satchel.c b/src/shared/valve/w_satchel.c index 54a82787..ed1a05d7 100644 --- a/src/shared/valve/w_satchel.c +++ b/src/shared/valve/w_satchel.c @@ -109,7 +109,7 @@ void s_satchel_detonate(entity master) for (entity b = world; (b = find(b, ::classname, "satchel"));) { if (b.owner == master) { Effect_CreateExplosion(b.origin); - Damage_Radius(b.origin, master, 150, 150 * 2.5f, TRUE); + Damage_Radius(b.origin, master, 150, 150 * 2.5f, TRUE, WEAPON_SATCHEL); sound(b, CHAN_WEAPON, sprintf( "weapons/explode%d.wav", floor( random() * 2 ) + 3 ), 1, ATTN_NORM); remove(b); } diff --git a/src/shared/valve/w_snark.c b/src/shared/valve/w_snark.c index 2b3b608b..93c8bf47 100644 --- a/src/shared/valve/w_snark.c +++ b/src/shared/valve/w_snark.c @@ -88,7 +88,7 @@ void w_snark_deploy(void) self.weapon = 0.5f + random(); sound(self, CHAN_VOICE, sprintf("squeek/sqk_hunt%d.wav",floor(random(1,4))), 1.0, ATTN_NORM); input_buttons = 2; - Damage_Apply(self, world, 1, self.origin, TRUE, 0); + Damage_Apply(self, world, 1, 0, DMG_GENERIC); makevectors(self.angles); traceline(self.origin, self.origin + (v_forward * 128), 0, self); @@ -96,7 +96,7 @@ void w_snark_deploy(void) if (trace_ent.takedamage == DAMAGE_YES) { float pit = 100 + random(0,10); sound(self, CHAN_BODY, "squeek/sqk_deploy1.wav", 1.0, ATTN_NORM, pit); - Damage_Apply(trace_ent, self.goalentity, 10, trace_endpos, FALSE, WEAPON_SNARK); + Damage_Apply(trace_ent, self.goalentity, 10, WEAPON_SNARK, DMG_GENERIC); } if (self.aiment.health <= 0) { diff --git a/src/shared/valve/w_tripmine.c b/src/shared/valve/w_tripmine.c index 5563760a..f3139879 100644 --- a/src/shared/valve/w_tripmine.c +++ b/src/shared/valve/w_tripmine.c @@ -88,7 +88,7 @@ void w_tripmine_trip(int unused) self.takedamage = DAMAGE_NO; Effect_CreateExplosion(self.origin); - Damage_Radius(self.origin, self.owner, 150, 150 * 2.5f, TRUE); + Damage_Radius(self.origin, self.owner, 150, 150 * 2.5f, TRUE, WEAPON_TRIPMINE); sound(self, CHAN_WEAPON, sprintf( "weapons/explode%d.wav", floor( random() * 2 ) + 3 ), 1, ATTN_NORM); remove(self); }