From: Samual Date: Wed, 28 Sep 2011 19:17:35 +0000 (-0400) Subject: Add hook primary/secondary to have health and such so it can be damaged by contents too X-Git-Tag: xonotic-v0.6.0~40^2~92^2~1^2~40 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=b5305432ceb07a7558c668ed4fef9a20d24f73ba;p=xonotic%2Fxonotic-data.pk3dir.git Add hook primary/secondary to have health and such so it can be damaged by contents too --- diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh index 1e21a7c8a..aa27f7412 100644 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@ -408,6 +408,8 @@ float autocvar_g_balance_hook_secondary_power; float autocvar_g_balance_hook_secondary_radius; float autocvar_g_balance_hook_secondary_refire; float autocvar_g_balance_hook_secondary_speed; +float autocvar_g_balance_hook_secondary_health; +float autocvar_g_balance_hook_secondary_damageforcescale; float autocvar_g_balance_keyhunt_damageforcescale; float autocvar_g_balance_keyhunt_delay_collect; float autocvar_g_balance_keyhunt_delay_return; diff --git a/qcsrc/server/g_hook.qc b/qcsrc/server/g_hook.qc index 544d197cb..dfd68e2ec 100644 --- a/qcsrc/server/g_hook.qc +++ b/qcsrc/server/g_hook.qc @@ -274,6 +274,9 @@ void GrapplingHook_Damage (entity inflictor, entity attacker, float damage, floa if(self.health > 0) { self.health = self.health - damage; + + print(strcat("hook health ", ftos(self.health), " after ", ftos(damage), " damage... (at time: ", ftos(time), ")\n")); + if (self.health <= 0) { if(attacker != self.realowner) diff --git a/qcsrc/server/sv_main.qc b/qcsrc/server/sv_main.qc index 3d2f56297..c4eb965a7 100644 --- a/qcsrc/server/sv_main.qc +++ b/qcsrc/server/sv_main.qc @@ -14,9 +14,6 @@ void CreatureFrame (void) float vehic = (self.vehicle_flags & VHF_ISVEHICLE); float projectile = (self.projectiledeathtype); - //if(projectile) - // print("waterlevel: ", ftos((self.watertype <= CONTENT_WATER && self.waterlevel > 0)), ". \n"); - if (self.watertype <= CONTENT_WATER && self.waterlevel > 0) // workaround a retarded bug made by id software :P (yes, it's that old of a bug) { if (!(self.flags & FL_INWATER)) @@ -25,7 +22,7 @@ void CreatureFrame (void) self.dmgtime = 0; //te_customflash(self.origin, 200, 20, '50 0.1 0.1'); } - + if(!vehic && !projectile) // vehicles and projectiles don't drown { if (self.waterlevel != WATERLEVEL_SUBMERGED) diff --git a/qcsrc/server/w_hook.qc b/qcsrc/server/w_hook.qc index 754ffff90..f4e8cac4d 100644 --- a/qcsrc/server/w_hook.qc +++ b/qcsrc/server/w_hook.qc @@ -52,6 +52,18 @@ void W_Hook_Explode2 (void) self.movetype = MOVETYPE_NONE; } +void W_Hook_Damage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force) +{ + if (self.health <= 0) + return; + self.health = self.health - damage; + + print(strcat("hookbomb health ", ftos(self.health), " after ", ftos(damage), " damage... (at time: ", ftos(time), ")\n")); + + if (self.health <= 0) + W_PrepareExplosionByDamage(attacker, W_Hook_Explode2); +} + void W_Hook_Touch2 (void) { PROJECTILE_TOUCH; @@ -80,6 +92,12 @@ void W_Hook_Attack2() gren.think = adaptor_think2use_hittype_splash; gren.use = W_Hook_Explode2; gren.touch = W_Hook_Touch2; + + gren.takedamage = DAMAGE_YES; + gren.health = autocvar_g_balance_hook_secondary_health; + gren.damageforcescale = autocvar_g_balance_hook_secondary_damageforcescale; + gren.event_damage = W_Hook_Damage; + gren.damagedbycontents = TRUE; gren.velocity = '0 0 1' * autocvar_g_balance_hook_secondary_speed; if(autocvar_g_projectiles_newton_style)