]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/mutators/gamemode_nexball.qc
Merge remote-tracking branch 'origin/Mario/vehicle_crash_fix'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / mutators / gamemode_nexball.qc
index f5b92a4808f39528ac5e769beeff3b09c5069885..8790162afa9804ed508c48bcecb4241930ad5319 100644 (file)
@@ -124,7 +124,7 @@ void GiveBall(entity plyr, entity ball)
 
        ball.velocity = '0 0 0';
        ball.movetype = MOVETYPE_NONE;
-       ball.touch = SUB_Null;
+       ball.touch = func_null;
        ball.effects |= EF_NOSHADOW;
        ball.scale = 1; // scale down.
 
@@ -205,7 +205,8 @@ void ResetBall(void)
        {
                if(time == self.teamtime)
                        bprint("The ", Team_ColoredFullName(self.team), " held the ball for too long.\n");
-               self.touch = SUB_Null;
+
+               self.touch = func_null;
                self.movetype = MOVETYPE_NOCLIP;
                self.velocity = '0 0 0'; // just in case?
                if(!self.cnt)
@@ -387,7 +388,7 @@ void GoalTouch(void)
        ball.cnt = 1;
        ball.think = ResetBall;
        if(ball.classname == "nexball_basketball")
-               ball.touch = football_touch; // better than SUB_Null: football control until the ball gets reset
+               ball.touch = football_touch; // better than func_null: football control until the ball gets reset
        ball.nextthink = time + autocvar_g_nexball_delay_goal * (self.team != GOAL_OUT);
 }
 
@@ -424,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)  ;
@@ -575,22 +576,22 @@ 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();
 }
 
@@ -668,7 +669,7 @@ void W_Nexball_Touch(void)
 {
        entity ball, attacker;
        attacker = self.owner;
-       //self.think = SUB_Null;
+       //self.think = func_null;
        //self.enemy = world;
        
        PROJECTILE_TOUCH;
@@ -773,14 +774,13 @@ void W_Nexball_Attack2(void)
        missile.flags = FL_PROJECTILE;
 }
 
-var const float() nullfunc;
 float ball_customize()
 {
        if(!self.owner)
        {
                self.effects &~= EF_FLAME;
                self.scale = 1;
-               self.customizeentityforclient = nullfunc;
+               self.customizeentityforclient = func_null;
                return TRUE;
        }               
        
@@ -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;
@@ -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;
 }