From: Rudolf Polzer Date: Wed, 12 Oct 2011 04:39:43 +0000 (+0200) Subject: remove grappling hook more safely X-Git-Tag: xonotic-v0.6.0~40^2~52 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=16cea387d79ea9bedaaf0f91657632300f3aa23b;p=xonotic%2Fxonotic-data.pk3dir.git remove grappling hook more safely --- diff --git a/qcsrc/server/cl_player.qc b/qcsrc/server/cl_player.qc index 13cf1ad68..92e1ce4de 100644 --- a/qcsrc/server/cl_player.qc +++ b/qcsrc/server/cl_player.qc @@ -660,6 +660,8 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht MUTATOR_CALLHOOK(PlayerDies); weapon_action(self.weapon, WR_PLAYERDEATH); + RemoveGrapplingHook(self); + if(self.flagcarried) { if(attacker.classname != "player") diff --git a/qcsrc/server/g_hook.qc b/qcsrc/server/g_hook.qc index ce815fad4..b08ef0986 100644 --- a/qcsrc/server/g_hook.qc +++ b/qcsrc/server/g_hook.qc @@ -116,9 +116,9 @@ void GrapplingHookThink() { float spd, dist, minlength, pullspeed, ropestretch, ropeairfriction, rubberforce, newlength, rubberforce_overstretch, s; vector dir, org, end, v0, dv, v, myorg, vs; - if(self.realowner.health <= 0 || self.realowner.hook != self) // how did that happen? - { // well, better fix it anyway - remove(self); + if(self.realowner.hook != self) // how did that happen? + { + error("Owner lost the hook!\n"); return; } if(LostMovetypeFollow(self))