X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fmutators%2Fgamemode_keepaway.qc;h=f92afab658a81d0eee8d51ce55e2cfdf6bc64947;hb=00098d0620fadacaa0011750414ecf2dcd840cb9;hp=07c96671c67e28b0eddc529b6e83bb58aa79d369;hpb=8a000d27bdf428db93e0304c4fdee5a26b89e9e8;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/mutators/gamemode_keepaway.qc b/qcsrc/server/mutators/gamemode_keepaway.qc index 07c96671c..f92afab65 100644 --- a/qcsrc/server/mutators/gamemode_keepaway.qc +++ b/qcsrc/server/mutators/gamemode_keepaway.qc @@ -6,7 +6,7 @@ float ka_ballcarrier_waypointsprite_visible_for_player(entity e) // runs on waypoints which are attached to ballcarriers, updates once per frame { if(e.ballcarried) - if(other.classname == "spectator") + if(IS_SPEC(other)) return FALSE; // we don't want spectators of the ballcarrier to see the attached waypoint on the top of their screen // TODO: Make the ballcarrier lack a waypointsprite whenever they have the invisibility powerup @@ -71,7 +71,7 @@ void ka_TouchEvent() // runs any time that the ball comes in contact with someth return; } if(other.deadflag != DEAD_NO) { return; } - if(other.classname != "player") + if not(IS_PLAYER(other)) { // The ball just touched an object, most likely the world pointparticles(particleeffectnum("kaball_sparks"), self.origin, '0 0 0', 1); sound(self, CH_TRIGGER, "keepaway/touch.wav", VOL_BASE, ATTN_NORM); @@ -89,7 +89,7 @@ void ka_TouchEvent() // runs any time that the ball comes in contact with someth self.velocity = '0 0 0'; self.movetype = MOVETYPE_NONE; self.effects |= EF_NODRAW; - self.touch = SUB_Null; + self.touch = func_null; self.think = ka_TimeScoring; self.nextthink = time + autocvar_g_keepaway_score_timeinterval; self.takedamage = DAMAGE_NO; @@ -101,9 +101,8 @@ void ka_TouchEvent() // runs any time that the ball comes in contact with someth // messages and sounds ka_EventLog("pickup", other); - Send_KillNotification(other.netname, "", "", KA_PICKUPBALL, MSG_KA); - WriteByte(MSG_BROADCAST, SVC_CENTERPRINT); - WriteString(MSG_BROADCAST, strcat(other.netname, "^7 has picked up the ball!")); + Send_Notification(NOTIF_ALL, world, MSG_INFO, INFO_KEEPAWAY_PICKUP, other.netname); + Send_Notification(NOTIF_ALL, world, MSG_CENTER, CENTER_KEEPAWAY_PICKUP, other.netname); sound(self.owner, CH_TRIGGER, "keepaway/pickedup.wav", VOL_BASE, ATTN_NONE); // ATTN_NONE (it's a sound intended to be heard anywhere) // scoring @@ -144,9 +143,8 @@ void ka_DropEvent(entity plyr) // runs any time that a player is supposed to los // messages and sounds ka_EventLog("dropped", plyr); - Send_KillNotification(plyr.netname, "", "", KA_DROPBALL, MSG_KA); - WriteByte(MSG_BROADCAST, SVC_CENTERPRINT); - WriteString(MSG_BROADCAST, strcat(plyr.netname, "^7 has dropped the ball!")); + Send_Notification(NOTIF_ALL, world, MSG_INFO, INFO_KEEPAWAY_DROPPED, plyr.netname); + Send_Notification(NOTIF_ALL, world, MSG_CENTER, CENTER_KEEPAWAY_DROPPED, plyr.netname); sound(other, CH_TRIGGER, "keepaway/dropped.wav", VOL_BASE, ATTN_NONE); // ATTN_NONE (it's a sound intended to be heard anywhere) // scoring @@ -161,7 +159,7 @@ void ka_DropEvent(entity plyr) // runs any time that a player is supposed to los void ka_Reset() // used to clear the ballcarrier whenever the match switches from warmup to normal { - if((self.owner) && (self.owner.classname == "player")) + if((self.owner) && (IS_PLAYER(self.owner))) ka_DropEvent(self.owner); ka_RespawnBall(); @@ -245,7 +243,7 @@ void havocbot_role_ka_collector() MUTATOR_HOOKFUNCTION(ka_Scoring) { - if((frag_attacker != frag_target) && (frag_attacker.classname == "player")) + if((frag_attacker != frag_target) && (IS_PLAYER(frag_attacker))) { if(frag_target.ballcarried) { // add to amount of times killing carrier PlayerScore_Add(frag_attacker, SP_KEEPAWAY_CARRIERKILLS, 1); @@ -254,7 +252,7 @@ MUTATOR_HOOKFUNCTION(ka_Scoring) } else if(!frag_attacker.ballcarried) if(autocvar_g_keepaway_noncarrier_warn) - centerprint(frag_attacker, "Killing people while you don't have the ball gives no points!"); + Send_Notification(NOTIF_ONE_ONLY, frag_attacker, MSG_CENTER, CENTER_KEEPAWAY_WARN); if(frag_attacker.ballcarried) // add to amount of kills while ballcarrier PlayerScore_Add(frag_attacker, SP_SCORE, autocvar_g_keepaway_score_killac); @@ -426,9 +424,17 @@ MUTATOR_DEFINITION(gamemode_keepaway) ka_Initialize(); } + MUTATOR_ONROLLBACK_OR_REMOVE + { + // we actually cannot roll back ka_Initialize here + // BUT: we don't need to! If this gets called, adding always + // succeeds. + } + MUTATOR_ONREMOVE { - error("This is a game type and it cannot be removed at runtime."); + print("This is a game type and it cannot be removed at runtime."); + return -1; } return 0;