X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fmutators%2Fmutator_minstagib.qc;h=8aa8c83bd8945b5c57309d15da6ec50ad453700b;hp=04de1ce4dbcd1a202042351fa394d631342e8c35;hb=660451e2a1499aae45fdf8307244814f6cae79ae;hpb=e8b6542f46abb4c4ae2afde8d37eff347ab8a33e diff --git a/qcsrc/server/mutators/mutator_minstagib.qc b/qcsrc/server/mutators/mutator_minstagib.qc index 04de1ce4db..8aa8c83bd8 100644 --- a/qcsrc/server/mutators/mutator_minstagib.qc +++ b/qcsrc/server/mutators/mutator_minstagib.qc @@ -26,7 +26,7 @@ void minstagib_stop_countdown(entity e) Kill_Notification(NOTIF_ONE_ONLY, e, MSG_CENTER_CPID, CPID_MINSTA_FINDAMMO); e.minstagib_needammo = FALSE; } -void minstagib_ammocheck(void) +void minstagib_ammocheck() { if not(IS_PLAYER(self)) return; // not a player @@ -202,22 +202,21 @@ MUTATOR_HOOKFUNCTION(minstagib_PlayerPhysics) MUTATOR_HOOKFUNCTION(minstagib_SplitHealthArmor) { damage_save = 0; - //damage_take = frag_damage; // frag_damage isn't even set here?! + damage_take = frag_damage; return FALSE; } MUTATOR_HOOKFUNCTION(minstagib_ForbidThrowing) { - if (self.health < 1) - return FALSE; - + // weapon dropping on death handled by FilterItem + return TRUE; } MUTATOR_HOOKFUNCTION(minstagib_PlayerDamage) { - if(autocvar_g_friendlyfire == 0 && !IsDifferentTeam(frag_target, frag_attacker) && IS_PLAYER(frag_target)) + if(autocvar_g_friendlyfire == 0 && !IsDifferentTeam(frag_target, frag_attacker) && IS_PLAYER(frag_target) && IS_PLAYER(frag_attacker)) frag_damage = 0; if(IS_PLAYER(frag_target)) @@ -230,7 +229,9 @@ MUTATOR_HOOKFUNCTION(minstagib_PlayerDamage) frag_damage = 0; } - if (frag_target.armorvalue && (frag_deathtype == WEP_MINSTANEX) && frag_damage) + if(IS_PLAYER(frag_attacker)) + if(DEATH_ISWEAPON(frag_deathtype, WEP_MINSTANEX)) + if(frag_target.armorvalue) { frag_target.armorvalue -= 1; Send_Notification(NOTIF_ONE, frag_target, MSG_CENTER, CENTER_MINSTA_LIVES_REMAINING, frag_target.armorvalue); @@ -238,27 +239,30 @@ MUTATOR_HOOKFUNCTION(minstagib_PlayerDamage) frag_target.hitsound += 1; frag_attacker.hitsound += 1; // TODO change this to a future specific hitsound for armor hit } + + if(IS_PLAYER(frag_attacker)) if (DEATH_ISWEAPON(frag_deathtype, WEP_LASER)) { frag_damage = 0; frag_mirrordamage = 0; if (frag_target != frag_attacker) { - if ((frag_target.health >= 1) && IS_PLAYER(frag_target)) + if (frag_target.health >= 1) Send_Notification(NOTIF_ONE, frag_attacker, MSG_CENTER, CENTER_MINSTA_SECONDARY); frag_force = '0 0 0'; // keep mirrorfrag_force - frag_attacker = frag_target; + //frag_attacker = frag_target; } } } + if(IS_PLAYER(frag_attacker)) if(frag_mirrordamage > 0) { // just lose extra LIVES, don't kill the player for mirror damage if(frag_attacker.armorvalue > 0) { - frag_attacker.armorvalue = frag_attacker.armorvalue - 1; + frag_attacker.armorvalue -= 1; Send_Notification(NOTIF_ONE, frag_attacker, MSG_CENTER, CENTER_MINSTA_LIVES_REMAINING, frag_attacker.armorvalue); frag_attacker.hitsound += 1; } @@ -368,7 +372,7 @@ MUTATOR_HOOKFUNCTION(minstagib_ItemTouch) return MUT_ITEMTOUCH_PICKUP; } - return MUT_ITEMTOUCH_RETURN; + return MUT_ITEMTOUCH_CONTINUE; } MUTATOR_HOOKFUNCTION(minstagib_OnEntityPreSpawn)