From: Samual Date: Mon, 26 Sep 2011 22:34:52 +0000 (-0400) Subject: Lots of new stuff... Mostly focusing around making rockets and other projectiles... X-Git-Tag: xonotic-v0.6.0~40^2~92^2~1^2~48 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=512e0b85c90be017cae7467593d600d0b7952d53;p=xonotic%2Fxonotic-data.pk3dir.git Lots of new stuff... Mostly focusing around making rockets and other projectiles explode while inside lava/slime -- known bug to fix: hagar rockets seem to always get the damage spam no matter if they're in the water or not. --- diff --git a/balance25.cfg b/balance25.cfg index 1630a405c..c63433476 100644 --- a/balance25.cfg +++ b/balance25.cfg @@ -179,6 +179,11 @@ set g_balance_falldamage_minspeed 1400 set g_balance_falldamage_factor 0.15 set g_balance_falldamage_maxdamage 25 set g_balance_damagepush_speedfactor 0 +set g_balance_contents_damagerate 5 +set g_balance_contents_playerdamage_drowning 5 +set g_balance_contents_playerdamage_lava 10 +set g_balance_contents_playerdamage_slime 5 +set g_balance_contents_projectiledamage 15 // }}} // {{{ powerups @@ -537,6 +542,8 @@ set g_balance_minstanex_reload_time 2 set g_balance_hagar_primary_damage 37 set g_balance_hagar_primary_edgedamage 15 set g_balance_hagar_primary_force 100 +set g_balance_hagar_primary_health 0 +set g_balance_hagar_primary_damageforcescale 0 set g_balance_hagar_primary_radius 65 set g_balance_hagar_primary_spread 0.010 set g_balance_hagar_primary_speed 3000 @@ -555,6 +562,8 @@ set g_balance_hagar_secondary_load_abort 1 set g_balance_hagar_secondary_damage 37 set g_balance_hagar_secondary_edgedamage 15 set g_balance_hagar_secondary_force 100 +set g_balance_hagar_secondary_health 0 +set g_balance_hagar_secondary_damageforcescale 0 set g_balance_hagar_secondary_radius 65 set g_balance_hagar_secondary_spread 0.015 set g_balance_hagar_secondary_speed 1400 diff --git a/balanceFruit.cfg b/balanceFruit.cfg index 9562170a2..c22982034 100644 --- a/balanceFruit.cfg +++ b/balanceFruit.cfg @@ -179,6 +179,11 @@ set g_balance_falldamage_minspeed 800 set g_balance_falldamage_factor 0.20 set g_balance_falldamage_maxdamage 15 set g_balance_damagepush_speedfactor 2.5 +set g_balance_contents_damagerate 5 +set g_balance_contents_playerdamage_drowning 5 +set g_balance_contents_playerdamage_lava 10 +set g_balance_contents_playerdamage_slime 5 +set g_balance_contents_projectiledamage 15 // }}} // {{{ powerups @@ -537,6 +542,8 @@ set g_balance_minstanex_reload_time 2 set g_balance_hagar_primary_damage 14 set g_balance_hagar_primary_edgedamage 6 set g_balance_hagar_primary_force 70 +set g_balance_hagar_primary_health 0 +set g_balance_hagar_primary_damageforcescale 0 set g_balance_hagar_primary_radius 110 set g_balance_hagar_primary_spread 0.1 set g_balance_hagar_primary_speed 1800 @@ -555,6 +562,8 @@ set g_balance_hagar_secondary_load_abort 1 set g_balance_hagar_secondary_damage 14 // default for _load: 32 set g_balance_hagar_secondary_edgedamage 6 // default for _load: 10 set g_balance_hagar_secondary_force 70 // default for _load: 160 +set g_balance_hagar_secondary_health 0 +set g_balance_hagar_secondary_damageforcescale 0 set g_balance_hagar_secondary_radius 125 set g_balance_hagar_secondary_spread 0.15 // default for _load: 0.08 set g_balance_hagar_secondary_speed 1800 diff --git a/balanceLeeStricklin.cfg b/balanceLeeStricklin.cfg index f9f15ab10..ad040273a 100644 --- a/balanceLeeStricklin.cfg +++ b/balanceLeeStricklin.cfg @@ -179,6 +179,11 @@ set g_balance_falldamage_minspeed 1400 set g_balance_falldamage_factor 0.15 set g_balance_falldamage_maxdamage 25 set g_balance_damagepush_speedfactor 0 +set g_balance_contents_damagerate 5 +set g_balance_contents_playerdamage_drowning 5 +set g_balance_contents_playerdamage_lava 10 +set g_balance_contents_playerdamage_slime 5 +set g_balance_contents_projectiledamage 15 // }}} // {{{ powerups @@ -537,6 +542,8 @@ set g_balance_minstanex_reload_time 2 set g_balance_hagar_primary_damage 43 set g_balance_hagar_primary_edgedamage 15 set g_balance_hagar_primary_force 94 +set g_balance_hagar_primary_health 0 +set g_balance_hagar_primary_damageforcescale 0 set g_balance_hagar_primary_radius 70 set g_balance_hagar_primary_spread 0.010 set g_balance_hagar_primary_speed 3000 @@ -555,6 +562,8 @@ set g_balance_hagar_secondary_load_abort 1 set g_balance_hagar_secondary_damage 43 set g_balance_hagar_secondary_edgedamage 15 set g_balance_hagar_secondary_force 100 +set g_balance_hagar_secondary_health 0 +set g_balance_hagar_secondary_damageforcescale 0 set g_balance_hagar_secondary_radius 70 set g_balance_hagar_secondary_spread 0.015 set g_balance_hagar_secondary_speed 1400 diff --git a/balanceXonotic.cfg b/balanceXonotic.cfg index a2b615a45..978f9165c 100644 --- a/balanceXonotic.cfg +++ b/balanceXonotic.cfg @@ -179,6 +179,11 @@ set g_balance_falldamage_minspeed 900 set g_balance_falldamage_factor 0.20 set g_balance_falldamage_maxdamage 40 set g_balance_damagepush_speedfactor 2.5 +set g_balance_contents_damagerate 5 +set g_balance_contents_playerdamage_drowning 5 +set g_balance_contents_playerdamage_lava 10 +set g_balance_contents_playerdamage_slime 5 +set g_balance_contents_projectiledamage 15 // }}} // {{{ powerups @@ -208,7 +213,7 @@ set g_balance_grapplehook_force_rubber_overstretch 1000 set g_balance_grapplehook_length_min 50 set g_balance_grapplehook_stretch 50 set g_balance_grapplehook_airfriction 0.2 -set g_balance_grapplehook_health 130 +set g_balance_grapplehook_health 30 // }}} // {{{ weapon properties @@ -323,7 +328,7 @@ set g_balance_grenadelauncher_primary_lifetime2 1 set g_balance_grenadelauncher_primary_refire 0.8 set g_balance_grenadelauncher_primary_animtime 0.3 set g_balance_grenadelauncher_primary_ammo 2 -set g_balance_grenadelauncher_primary_health 0 +set g_balance_grenadelauncher_primary_health 10 set g_balance_grenadelauncher_primary_damageforcescale 0 set g_balance_grenadelauncher_primary_remote_minbouncecnt 0 @@ -342,7 +347,7 @@ set g_balance_grenadelauncher_secondary_lifetime_stick 0 set g_balance_grenadelauncher_secondary_refire 0.7 set g_balance_grenadelauncher_secondary_animtime 0.3 set g_balance_grenadelauncher_secondary_ammo 2 -set g_balance_grenadelauncher_secondary_health 0 +set g_balance_grenadelauncher_secondary_health 30 set g_balance_grenadelauncher_secondary_damageforcescale 4 set g_balance_grenadelauncher_secondary_remote_detonateprimary 0 @@ -537,6 +542,8 @@ set g_balance_minstanex_reload_time 2 set g_balance_hagar_primary_damage 25 set g_balance_hagar_primary_edgedamage 12.5 set g_balance_hagar_primary_force 50 +set g_balance_hagar_primary_health 5 +set g_balance_hagar_primary_damageforcescale 0 set g_balance_hagar_primary_radius 60 set g_balance_hagar_primary_spread 0.04 set g_balance_hagar_primary_speed 2000 @@ -555,6 +562,8 @@ set g_balance_hagar_secondary_load_abort 1 set g_balance_hagar_secondary_damage 40 set g_balance_hagar_secondary_edgedamage 20 set g_balance_hagar_secondary_force 50 +set g_balance_hagar_secondary_health 5 +set g_balance_hagar_secondary_damageforcescale 0 set g_balance_hagar_secondary_radius 80 set g_balance_hagar_secondary_spread 0.05 set g_balance_hagar_secondary_speed 2000 @@ -577,7 +586,7 @@ set g_balance_rocketlauncher_lifetime 10 set g_balance_rocketlauncher_refire 1.1 set g_balance_rocketlauncher_animtime 0.3 set g_balance_rocketlauncher_ammo 4 -set g_balance_rocketlauncher_health 0 // 30 // 5 hitpoints above maximum laser value -- this way lasers can't blow it up, but grenadelauncher still can most the time. +set g_balance_rocketlauncher_health 30 // 30 // 5 hitpoints above maximum laser value -- this way lasers can't blow it up, but grenadelauncher still can most the time. set g_balance_rocketlauncher_damageforcescale 1 // low damage force scale so that it can still be affected by other hits, but not so much that it does a 90 degree turn set g_balance_rocketlauncher_detonatedelay 0.05 // positive: timer till detonation is allowed, negative: "security device" that prevents ANY remote detonation if it could hurt its owner, zero: detonatable at any time set g_balance_rocketlauncher_guiderate 110 // max degrees per second diff --git a/balancetZork.cfg b/balancetZork.cfg index b72343cb9..72934fdb2 100644 --- a/balancetZork.cfg +++ b/balancetZork.cfg @@ -179,6 +179,11 @@ set g_balance_falldamage_minspeed 800 set g_balance_falldamage_factor 0.02 // maxspeed = minspeed + maxdamage / factor = 4550 set g_balance_falldamage_maxdamage 75 set g_balance_damagepush_speedfactor 0 +set g_balance_contents_damagerate 5 +set g_balance_contents_playerdamage_drowning 5 +set g_balance_contents_playerdamage_lava 10 +set g_balance_contents_playerdamage_slime 5 +set g_balance_contents_projectiledamage 15 // }}} // {{{ powerups @@ -189,6 +194,7 @@ set g_balance_powerup_strength_force 3 set g_balance_powerup_strength_time 30 set g_balance_powerup_strength_selfdamage 1.5 set g_balance_powerup_strength_selfforce 1.5 + // }}} // {{{ jetpack/hook @@ -536,6 +542,8 @@ set g_balance_minstanex_reload_time 2 set g_balance_hagar_primary_damage 25 set g_balance_hagar_primary_edgedamage 5 set g_balance_hagar_primary_force 70 +set g_balance_hagar_primary_health 0 +set g_balance_hagar_primary_damageforcescale 0 set g_balance_hagar_primary_radius 60 set g_balance_hagar_primary_spread 0.010 set g_balance_hagar_primary_speed 2500 @@ -554,6 +562,8 @@ set g_balance_hagar_secondary_load_abort 1 set g_balance_hagar_secondary_damage 30 set g_balance_hagar_secondary_edgedamage 15 set g_balance_hagar_secondary_force 50 +set g_balance_hagar_secondary_health 0 +set g_balance_hagar_secondary_damageforcescale 0 set g_balance_hagar_secondary_radius 65 set g_balance_hagar_secondary_spread 0.015 set g_balance_hagar_secondary_speed 1400 diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh index bf03b2ce5..64b6b7411 100644 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@ -120,6 +120,11 @@ float autocvar_g_balance_rifle_secondary_tracer; float autocvar_g_balance_rifle_reload_ammo; float autocvar_g_balance_rifle_reload_time; float autocvar_g_balance_cloaked_alpha; +float autocvar_g_balance_contents_damagerate; +float autocvar_g_balance_contents_playerdamage_drowning; +float autocvar_g_balance_contents_playerdamage_lava; +float autocvar_g_balance_contents_playerdamage_slime; +float autocvar_g_balance_contents_projectiledamage; float autocvar_g_balance_crylink_primary_ammo; float autocvar_g_balance_crylink_primary_animtime; float autocvar_g_balance_crylink_primary_bouncedamagefactor; @@ -318,6 +323,8 @@ float autocvar_g_balance_hagar_primary_ammo; float autocvar_g_balance_hagar_primary_damage; float autocvar_g_balance_hagar_primary_edgedamage; float autocvar_g_balance_hagar_primary_force; +float autocvar_g_balance_hagar_primary_health; +float autocvar_g_balance_hagar_primary_damageforcescale; float autocvar_g_balance_hagar_primary_lifetime; float autocvar_g_balance_hagar_primary_radius; float autocvar_g_balance_hagar_primary_refire; @@ -335,6 +342,8 @@ float autocvar_g_balance_hagar_secondary_ammo; float autocvar_g_balance_hagar_secondary_damage; float autocvar_g_balance_hagar_secondary_edgedamage; float autocvar_g_balance_hagar_secondary_force; +float autocvar_g_balance_hagar_secondary_health; +float autocvar_g_balance_hagar_secondary_damageforcescale; float autocvar_g_balance_hagar_secondary_lifetime_min; float autocvar_g_balance_hagar_secondary_lifetime_rand; float autocvar_g_balance_hagar_secondary_radius; diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index bddb59332..a1c01a736 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -662,6 +662,7 @@ void PutObserverInServer (void) self.classname = "observer"; self.iscreature = FALSE; + self.damagedbycontents = FALSE; self.health = -666; self.takedamage = DAMAGE_NO; self.solid = SOLID_NOT; @@ -899,6 +900,7 @@ void PutClientInServer (void) self.classname = "player"; self.wasplayer = TRUE; self.iscreature = TRUE; + self.damagedbycontents = TRUE; self.movetype = MOVETYPE_WALK; self.solid = SOLID_SLIDEBOX; self.dphitcontentsmask = DPCONTENTS_BODY | DPCONTENTS_SOLID; diff --git a/qcsrc/server/cl_player.qc b/qcsrc/server/cl_player.qc index e5e2d377c..8ab6458ee 100644 --- a/qcsrc/server/cl_player.qc +++ b/qcsrc/server/cl_player.qc @@ -134,6 +134,7 @@ void CopyBody(float keepvelocity) self.colormap = oldself.colormap; self.glowmod = oldself.glowmod; self.iscreature = oldself.iscreature; + self.damagedbycontents = oldself.damagedbycontents; self.angles = oldself.angles; self.avelocity = oldself.avelocity; self.classname = "body"; diff --git a/qcsrc/server/defs.qh b/qcsrc/server/defs.qh index bc05d1b04..c68a161ee 100644 --- a/qcsrc/server/defs.qh +++ b/qcsrc/server/defs.qh @@ -189,6 +189,7 @@ void setanim(entity e, vector anim, float looping, float override, float restart .float watersound_finished; .float iscreature; +.float damagedbycontents; .vector oldvelocity; .float pauseregen_finished; diff --git a/qcsrc/server/monsters/m_monsters.qc b/qcsrc/server/monsters/m_monsters.qc index ceb3f207c..ee77b5445 100644 --- a/qcsrc/server/monsters/m_monsters.qc +++ b/qcsrc/server/monsters/m_monsters.qc @@ -259,6 +259,7 @@ void() walkmonster_start_go = // spread think times so they don't all happen at same time self.nextthink = self.nextthink + random()*0.5 + 0.1; self.iscreature = TRUE; + self.damagedbycontents = TRUE; force_retouch = 2; // mainly to detect teleports @@ -352,6 +353,7 @@ void() flymonster_start_go = } } self.iscreature = TRUE; + self.damagedbycontents = TRUE; force_retouch = 2; // mainly to detect teleports @@ -440,6 +442,7 @@ void() swimmonster_start_go = } } self.iscreature = TRUE; + self.damagedbycontents = TRUE; force_retouch = 2; // mainly to detect teleports diff --git a/qcsrc/server/sv_main.qc b/qcsrc/server/sv_main.qc index 15f43ad9e..07da60c55 100644 --- a/qcsrc/server/sv_main.qc +++ b/qcsrc/server/sv_main.qc @@ -4,11 +4,13 @@ void CreatureFrame (void) local entity oldself; local float dm; oldself = self; - for(self = world; (self = findfloat(self, iscreature, TRUE)); ) + for(self = world; (self = findfloat(self, damagedbycontents, TRUE)); ) { - if (self.movetype == MOVETYPE_NOCLIP) - continue; + if (self.movetype == MOVETYPE_NOCLIP) { continue; } + float vehic = (self.vehicle_flags & VHF_ISVEHICLE); + float projectile = (self.projectiledeathtype); + if (self.waterlevel) { if (!(self.flags & FL_INWATER)) @@ -16,7 +18,8 @@ void CreatureFrame (void) self.flags |= FL_INWATER; self.dmgtime = 0; } - if(!vehic) // vehicles don't drown + + if(!vehic && !projectile) // vehicles and projectiles don't drown { if (self.waterlevel != WATERLEVEL_SUBMERGED) { @@ -30,31 +33,40 @@ void CreatureFrame (void) if (!self.deadflag) if (self.pain_finished < time) { - Damage (self, world, world, 5, DEATH_DROWN, self.origin, '0 0 0'); + Damage (self, world, world, autocvar_g_balance_contents_playerdamage_drowning, DEATH_DROWN, self.origin, '0 0 0'); self.pain_finished = time + 0.5; } } } + if (self.dmgtime < time) { - self.dmgtime = time + 0.2; - if (self.watertype == CONTENT_LAVA) + self.dmgtime = time + (1 / min(1, autocvar_g_balance_contents_damagerate)); + + if (!projectile) { - if (self.watersound_finished < time) + if (self.watertype == CONTENT_LAVA) { - self.watersound_finished = time + 0.5; - sound (self, CH_PLAYER, "player/lava.wav", VOL_BASE, ATTN_NORM); + if (self.watersound_finished < time) + { + self.watersound_finished = time + 0.5; + sound (self, CH_PLAYER, "player/lava.wav", VOL_BASE, ATTN_NORM); + } + Damage (self, world, world, autocvar_g_balance_contents_playerdamage_lava * self.waterlevel, DEATH_LAVA, self.origin, '0 0 0'); } - Damage (self, world, world, 6 * self.waterlevel, DEATH_LAVA, self.origin, '0 0 0'); - } - else if (self.watertype == CONTENT_SLIME) - { - if (self.watersound_finished < time) + else if (self.watertype == CONTENT_SLIME) { - self.watersound_finished = time + 0.5; - sound (self, CH_PLAYER, "player/slime.wav", VOL_BASE, ATTN_NORM); + if (self.watersound_finished < time) + { + self.watersound_finished = time + 0.5; + sound (self, CH_PLAYER, "player/slime.wav", VOL_BASE, ATTN_NORM); + } + Damage (self, world, world, autocvar_g_balance_contents_playerdamage_slime * self.waterlevel, DEATH_SLIME, self.origin, '0 0 0'); } - Damage (self, world, world, 2 * self.waterlevel, DEATH_SLIME, self.origin, '0 0 0'); + } + else if ((self.watertype == CONTENT_LAVA) || (self.watertype == CONTENT_SLIME)) + { + Damage (self, world, world, autocvar_g_balance_contents_projectiledamage * self.waterlevel, DEATH_SLIME, self.origin, '0 0 0'); } } } @@ -70,7 +82,7 @@ void CreatureFrame (void) self.dmg = 2; } - if(!vehic) // vehicles don't get falling damage + if(!vehic && !projectile) // vehicles don't get falling damage { // check for falling damage float velocity_len = vlen(self.velocity); diff --git a/qcsrc/server/tturrets/units/unit_ewheel.qc b/qcsrc/server/tturrets/units/unit_ewheel.qc index 86f5c4402..4858cafc6 100644 --- a/qcsrc/server/tturrets/units/unit_ewheel.qc +++ b/qcsrc/server/tturrets/units/unit_ewheel.qc @@ -287,6 +287,7 @@ void turret_ewheel_dinit() self.damage_flags |= TFL_DMG_DEATH_NOGIBS; self.iscreature = TRUE; + self.damagedbycontents = TRUE; self.movetype = MOVETYPE_WALK; self.solid = SOLID_SLIDEBOX; self.takedamage = DAMAGE_AIM; diff --git a/qcsrc/server/tturrets/units/unit_walker.qc b/qcsrc/server/tturrets/units/unit_walker.qc index a438229cf..feb4b1f67 100644 --- a/qcsrc/server/tturrets/units/unit_walker.qc +++ b/qcsrc/server/tturrets/units/unit_walker.qc @@ -604,6 +604,7 @@ void turret_walker_dinit() self.target_validate_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_RANGELIMTS | TFL_TARGETSELECT_TEAMCHECK | TFL_TARGETSELECT_LOS; self.iscreature = TRUE; + self.damagedbycontents = TRUE; self.movetype = MOVETYPE_WALK; self.solid = SOLID_SLIDEBOX; self.takedamage = DAMAGE_AIM; diff --git a/qcsrc/server/vehicles/vehicles.qc b/qcsrc/server/vehicles/vehicles.qc index 6006dcf92..3d8b52851 100644 --- a/qcsrc/server/vehicles/vehicles.qc +++ b/qcsrc/server/vehicles/vehicles.qc @@ -339,6 +339,7 @@ void vehicles_spawn() self.touch = vehicles_touch; self.event_damage = vehicles_damage; self.iscreature = TRUE; + self.damagedbycontents = TRUE; self.movetype = MOVETYPE_WALK; self.solid = SOLID_SLIDEBOX; self.takedamage = DAMAGE_AIM; @@ -974,6 +975,7 @@ float vehicle_initialize(string net_name, self.takedamage = DAMAGE_AIM; self.bot_attack = TRUE; self.iscreature = TRUE; + self.damagedbycontents = TRUE; self.hud = vhud; self.vehicle_die = dieproc; diff --git a/qcsrc/server/w_grenadelauncher.qc b/qcsrc/server/w_grenadelauncher.qc index 1d2ee93b9..dcaa1f7ce 100644 --- a/qcsrc/server/w_grenadelauncher.qc +++ b/qcsrc/server/w_grenadelauncher.qc @@ -196,6 +196,7 @@ void W_Grenade_Attack (void) gren.health = autocvar_g_balance_grenadelauncher_primary_health; gren.damageforcescale = autocvar_g_balance_grenadelauncher_primary_damageforcescale; gren.event_damage = W_Grenade_Damage; + gren.damagedbycontents = TRUE; W_SETUPPROJECTILEVELOCITY_UP(gren, g_balance_grenadelauncher_primary); gren.angles = vectoangles (gren.velocity); diff --git a/qcsrc/server/w_hagar.qc b/qcsrc/server/w_hagar.qc index 147613afb..97c4e001c 100644 --- a/qcsrc/server/w_hagar.qc +++ b/qcsrc/server/w_hagar.qc @@ -20,6 +20,16 @@ void W_Hagar_Explode2 (void) remove (self); } +void W_Hagar_Damage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force) +{ + if (self.health <= 0) + return; + self.health = self.health - damage; + self.angles = vectoangles(self.velocity); + if (self.health <= 0) + W_PrepareExplosionByDamage(attacker, self.think); +} + void W_Hagar_Touch (void) { PROJECTILE_TOUCH; @@ -56,6 +66,13 @@ void W_Hagar_Attack (void) missile.classname = "missile"; missile.bot_dodge = TRUE; missile.bot_dodgerating = autocvar_g_balance_hagar_primary_damage; + + missile.takedamage = DAMAGE_YES; + missile.health = autocvar_g_balance_hagar_primary_health; + missile.damageforcescale = autocvar_g_balance_hagar_primary_damageforcescale; + missile.event_damage = W_Hagar_Damage; + missile.damagedbycontents = TRUE; + missile.touch = W_Hagar_Touch; missile.use = W_Hagar_Explode; missile.think = adaptor_think2use_hittype_splash; @@ -91,6 +108,13 @@ void W_Hagar_Attack2 (void) missile.classname = "missile"; missile.bot_dodge = TRUE; missile.bot_dodgerating = autocvar_g_balance_hagar_secondary_damage; + + missile.takedamage = DAMAGE_YES; + missile.health = autocvar_g_balance_hagar_secondary_health; + missile.damageforcescale = autocvar_g_balance_hagar_secondary_damageforcescale; + missile.event_damage = W_Hagar_Damage; + missile.damagedbycontents = TRUE; + missile.touch = W_Hagar_Touch2; missile.cnt = 0; missile.use = W_Hagar_Explode2; @@ -143,6 +167,12 @@ void W_Hagar_Attack2_Load_Release (void) missile.classname = "missile"; missile.bot_dodge = TRUE; missile.bot_dodgerating = autocvar_g_balance_hagar_secondary_damage; + + missile.takedamage = DAMAGE_YES; + missile.health = autocvar_g_balance_hagar_secondary_health; + missile.damageforcescale = autocvar_g_balance_hagar_secondary_damageforcescale; + missile.event_damage = W_Hagar_Damage; + missile.damagedbycontents = TRUE; missile.touch = W_Hagar_Touch; // not bouncy missile.use = W_Hagar_Explode2; diff --git a/qcsrc/server/w_minelayer.qc b/qcsrc/server/w_minelayer.qc index 4e56d2d94..f6d0616d8 100644 --- a/qcsrc/server/w_minelayer.qc +++ b/qcsrc/server/w_minelayer.qc @@ -38,6 +38,7 @@ void W_Mine_Stick (entity to) newmine.health = self.health; newmine.event_damage = self.event_damage; newmine.spawnshieldtime = self.spawnshieldtime; + newmine.damagedbycontents = TRUE; newmine.movetype = MOVETYPE_NONE; // lock the mine in place newmine.projectiledeathtype = self.projectiledeathtype; diff --git a/qcsrc/server/w_rocketlauncher.qc b/qcsrc/server/w_rocketlauncher.qc index b4987b69f..30201a742 100644 --- a/qcsrc/server/w_rocketlauncher.qc +++ b/qcsrc/server/w_rocketlauncher.qc @@ -270,6 +270,7 @@ void W_Rocket_Attack (void) missile.damageforcescale = autocvar_g_balance_rocketlauncher_damageforcescale; missile.health = autocvar_g_balance_rocketlauncher_health; missile.event_damage = W_Rocket_Damage; + missile.damagedbycontents = TRUE; missile.movetype = MOVETYPE_FLY; PROJECTILE_MAKETRIGGER(missile); diff --git a/qcsrc/server/w_seeker.qc b/qcsrc/server/w_seeker.qc index c108ba3cf..99de29dde 100644 --- a/qcsrc/server/w_seeker.qc +++ b/qcsrc/server/w_seeker.qc @@ -189,6 +189,7 @@ void Seeker_Fire_Missile(vector f_diff, entity m_target) missile.takedamage = DAMAGE_YES; missile.health = autocvar_g_balance_seeker_missile_health; missile.damageforcescale = autocvar_g_balance_seeker_missile_damageforcescale; + missile.damagedbycontents = TRUE; //missile.think = Seeker_Missile_Animate; // csqc projectiles. if (missile.enemy != world)