X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fmutators%2Fgamemode_nexball.qc;h=78d9d707689b5ce2332287daa108aa67e00fa0b2;hb=0e8bb460f7ee90a70701957fb94b9a7a443bf20e;hp=6fcb8647bbe97114d2fa6cc46f303095193f2c4f;hpb=8db035f374df1c19ea24531f8a96f04625f5f559;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/mutators/gamemode_nexball.qc b/qcsrc/server/mutators/gamemode_nexball.qc index 6fcb8647b..78d9d7076 100644 --- a/qcsrc/server/mutators/gamemode_nexball.qc +++ b/qcsrc/server/mutators/gamemode_nexball.qc @@ -248,7 +248,7 @@ void football_touch(void) self.nextthink = time + autocvar_g_nexball_delay_idle; return; } - if(other.classname != "player") + if not(IS_PLAYER(other)) return; if(other.health < 1) return; @@ -288,7 +288,7 @@ void basketball_touch(void) football_touch(); return; } - if(!self.cnt && other.classname == "player" && (other != self.nb_dropper || time > self.nb_droptime + autocvar_g_nexball_delay_collect)) + if(!self.cnt && IS_PLAYER(other) && (other != self.nb_dropper || time > self.nb_droptime + autocvar_g_nexball_delay_collect)) { if(other.health <= 0) return; @@ -327,7 +327,7 @@ void GoalTouch(void) else otherteam = 0; - if((isclient = ball.pusher.flags & FL_CLIENT)) + if((isclient = IS_CLIENT(ball.pusher))) pname = ball.pusher.netname; else pname = "Someone (?)"; @@ -425,28 +425,28 @@ void nb_spawnteams(void) { switch(e.team) { - case FL_TEAM_1: + case NUM_TEAM_1: if(!t_r) { nb_spawnteam("Red", e.team-1) ; t_r = 1; } break; - case FL_TEAM_2: + case NUM_TEAM_2: if(!t_b) { nb_spawnteam("Blue", e.team-1) ; t_b = 1; } break; - case FL_TEAM_3: + case NUM_TEAM_3: if(!t_y) { nb_spawnteam("Yellow", e.team-1); t_y = 1; } break; - case FL_TEAM_4: + case NUM_TEAM_4: if(!t_p) { nb_spawnteam("Pink", e.team-1) ; @@ -479,7 +479,7 @@ void SpawnBall(void) // balls += 4; // using the remaining bits to count balls will leave more than the max edict count, so it's fine - if(!self.model) + if(self.model == "") { self.model = "models/nexball/ball.md3"; self.scale = 1.3; @@ -505,13 +505,13 @@ void SpawnBall(void) if(!autocvar_g_nexball_sound_bounce) self.noise = ""; - else if(!self.noise) + else if(self.noise == "") self.noise = "sound/nexball/bounce.wav"; //bounce sound placeholder (FIXME) - if(!self.noise1) + if(self.noise1 == "") self.noise1 = "sound/nexball/drop.wav"; //ball drop sound placeholder (FIXME) - if(!self.noise2) + if(self.noise2 == "") self.noise2 = "sound/nexball/steal.wav"; //stealing sound placeholder (FIXME) if(self.noise) precache_sound(self.noise); @@ -568,7 +568,7 @@ void SpawnGoal(void) } EXACTTRIGGER_INIT; self.classname = "nexball_goal"; - if(!self.noise) + if(self.noise == "") self.noise = "ctf/respawn.wav"; precache_sound(self.noise); self.touch = GoalTouch; @@ -576,29 +576,29 @@ void SpawnGoal(void) void spawnfunc_nexball_redgoal(void) { - self.team = FL_TEAM_1; + self.team = NUM_TEAM_1; SpawnGoal(); } void spawnfunc_nexball_bluegoal(void) { - self.team = FL_TEAM_2; + self.team = NUM_TEAM_2; SpawnGoal(); } void spawnfunc_nexball_yellowgoal(void) { - self.team = FL_TEAM_3; + self.team = NUM_TEAM_3; SpawnGoal(); } void spawnfunc_nexball_pinkgoal(void) { - self.team = FL_TEAM_4; + self.team = NUM_TEAM_4; SpawnGoal(); } void spawnfunc_nexball_fault(void) { self.team = GOAL_FAULT; - if(!self.noise) + if(self.noise == "") self.noise = "misc/typehit.wav"; SpawnGoal(); } @@ -606,7 +606,7 @@ void spawnfunc_nexball_fault(void) void spawnfunc_nexball_out(void) { self.team = GOAL_OUT; - if(!self.noise) + if(self.noise == "") self.noise = "misc/typehit.wav"; SpawnGoal(); } @@ -674,7 +674,7 @@ void W_Nexball_Touch(void) PROJECTILE_TOUCH; if(attacker.team != other.team || autocvar_g_nexball_basketball_teamsteal) - if((ball = other.ballcarried) && (attacker.classname == "player")) + if((ball = other.ballcarried) && (IS_PLAYER(attacker))) { other.velocity = other.velocity + normalize(self.velocity) * other.damageforcescale * autocvar_g_balance_nexball_secondary_force; other.flags &~= FL_ONGROUND; @@ -844,14 +844,8 @@ float w_nexball_weapon(float req) precache_sound("misc/typehit.wav"); } else if(req == WR_SETUP) - weapon_setup(WEP_PORTO); - else if(req == WR_SUICIDEMESSAGE) - { - w_deathtypestring = "is a weirdo"; - } - else if(req == WR_KILLMESSAGE) { - w_deathtypestring = "got killed by #'s black magic"; + weapon_setup(WEP_PORTO); } // No need to check WR_CHECKAMMO* or WR_AIM, it should always return TRUE return TRUE; @@ -906,7 +900,7 @@ MUTATOR_HOOKFUNCTION(nexball_PlayerPreThink) //tracebox(self.origin + self.view_ofs, '-2 -2 -2', '2 2 2', self.origin + self.view_ofs + v_forward * autocvar_g_nexball_safepass_maxdist); crosshair_trace(self); if( trace_ent && - trace_ent.flags & FL_CLIENT && + IS_CLIENT(trace_ent) && trace_ent.deadflag == DEAD_NO && trace_ent.team == self.team && vlen(trace_ent.origin - self.origin) <= autocvar_g_nexball_safepass_maxdist ) @@ -980,5 +974,18 @@ MUTATOR_DEFINITION(gamemode_nexball) InitializeEntity(world, nb_delayedinit, INITPRIO_GAMETYPE); } + MUTATOR_ONROLLBACK_OR_REMOVE + { + // we actually cannot roll back nb_delayedinit here + // BUT: we don't need to! If this gets called, adding always + // succeeds. + } + + MUTATOR_ONREMOVE + { + print("This is a game type and it cannot be removed at runtime."); + return -1; + } + return 0; }