]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Knock some stuff off the WIP TODO list
authorMario <mario.mario@y7mail.com>
Sat, 13 Apr 2013 17:22:24 +0000 (03:22 +1000)
committerMario <mario.mario@y7mail.com>
Sat, 13 Apr 2013 17:22:24 +0000 (03:22 +1000)
16 files changed:
defaultXonotic.cfg
gamemodes.cfg
monsters.cfg
qcsrc/common/mapinfo.qh
qcsrc/server/autocvars.qh
qcsrc/server/miscfunctions.qc
qcsrc/server/monsters/monster/ogre.qc
qcsrc/server/monsters/monster/tarbaby.qc
qcsrc/server/mutators/gamemode_rts.qc [deleted file]
qcsrc/server/mutators/gamemode_rts.qh [deleted file]
qcsrc/server/mutators/mutator_zombie_apocalypse.qc [deleted file]
qcsrc/server/mutators/mutators.qh
qcsrc/server/progs.src
qcsrc/server/teamplay.qc
qcsrc/server/tturrets/units/unit_fusionreactor.qc
za.cfg [deleted file]

index 16a2542f6ff27dbdc841cd64d099cee70624fb48..cc662f937a63dc4949ce99d249aa1abe7856c5e6 100644 (file)
@@ -1573,7 +1573,6 @@ exec crosshairs.cfg
 exec gamemodes.cfg
 exec notifications.cfg
 exec monsters.cfg
-exec za.cfg
 
 // load console command aliases and settings
 exec commands.cfg
index 5519ce51530c4caaa97dae77bc68cd9c683aaee1..0616c8aed0402ea059fc41e6d38be329fbb60dc4 100644 (file)
@@ -38,7 +38,6 @@ alias cl_hook_gamestart_cts
 alias cl_hook_gamestart_ka
 alias cl_hook_gamestart_ft
 alias cl_hook_gamestart_td
-alias cl_hook_gamestart_rts
 alias cl_hook_gameend
 alias cl_hook_activeweapon
 
@@ -61,7 +60,6 @@ alias sv_hook_gamestart_cts
 alias sv_hook_gamestart_ka
 alias sv_hook_gamestart_ft
 alias sv_hook_gamestart_td
-alias sv_hook_gamestart_rts
 alias sv_hook_gamerestart
 alias sv_hook_gameend
 
@@ -141,9 +139,6 @@ set g_ft_weapon_stay 0
 set g_td_respawn_waves 0
 set g_td_respawn_delay 0
 set g_td_weapon_stay 0
-set g_rts_respawn_waves 0
-set g_rts_respawn_delay 0
-set g_rts_weapon_stay 0
 
 
 // =======
@@ -456,8 +451,3 @@ set g_td_barricade_damage 10
 set g_td_monsters_speed_walk 110
 set g_td_monsters_speed_run 150
 set g_td_monsters_spawn_delay 3
-
-// ====================
-//  real-time strategy
-// ====================
-set g_rts 0 "Real-Time Strategy: defend your generator & turrets by controlling monsters"
index efef254c49cf660e9cd9bd44af9644799a116a86..1e97c0aae7e3a209e89b726c7a834e1d90e0644e 100644 (file)
@@ -19,7 +19,7 @@ set g_monsters_respawn 1 "Enable monster respawning"
 set g_monsters_respawn_delay 20 "Monsters respawn in this amount of seconds"
 set g_monsters_score_kill 1 "Get this many points for killing a naturally spawned monster"
 set g_monsters_max 20 "Global maximum player-spawned monsters"
-set g_monsters_max_perplayer 3 "Maximum monsters per-player"
+set g_monsters_max_perplayer 0 "Maximum monsters per-player"
 set g_monsters_skill_easy 2 "Monster easy skill level (used for skill based functions)"
 set g_monsters_skill_normal 4 "Monster normal skill level (used for skill based functions)"
 set g_monsters_skill_hard 5 "Monster hard skill level (used for skill based functions)"
index bc95ef28ecb24c225ab3ffa95ceb15b941ea7b69..3eda45e76b01cd0bae373c9133c570639af3b4d5 100644 (file)
@@ -42,9 +42,6 @@ REGISTER_GAMETYPE(_("Last Man Standing"),lms,g_lms,LMS,"timelimit=20 lives=9 lea
 REGISTER_GAMETYPE(_("Tower Defense"),td,g_td,TD,"timelimit=0 pointlimit=10 leadlimit=0")
 #define g_td IS_GAMETYPE(TD)
 
-REGISTER_GAMETYPE(_("Real-Time Strategy"),rts,g_rts,RTS,"timelimit=0 pointlimit=10 leadlimit=0")
-#define g_rts IS_GAMETYPE(RTS)
-
 REGISTER_GAMETYPE(_("Arena"),arena,g_arena,ARENA,"timelimit=20 pointlimit=10 leadlimit=0")
 #define g_arena IS_GAMETYPE(ARENA)
 
index 2d2b6c1fe8c4f13f13cabe6e9d3bca68fdba15b4..977f6221f06563306c9edeb04daef8ca8e915243 100644 (file)
@@ -1247,7 +1247,6 @@ float autocvar_g_td_monsters_ignore_turrets;
 float autocvar_g_td_turret_upgrade_cost;
 float autocvar_g_td_turret_repair_cost;
 float autocvar_g_td_barricade_damage;
-float autocvar_g_za_monster_count;
 float autocvar_g_monsters;
 float autocvar_g_monsters_think_delay;
 float autocvar_g_monsters_max;
index 011cd331f7c045f1b6ca13d612260765518b72ff..b03e1fb73a5a1581c9791225c1f17660b43f7760 100644 (file)
@@ -1037,9 +1037,6 @@ void readlevelcvars(void)
        // is this a mutator? is this a mode?
        if(cvar("g_sandbox"))
                MUTATOR_ADD(sandbox);
-        
-    if(cvar("g_za"))
-               MUTATOR_ADD(mutator_zombie_apocalypse);
 
        if(cvar("sv_allow_fullbright"))
                serverflags |= SERVERFLAG_ALLOW_FULLBRIGHT;
index 451d89b75cf94ccdb80fcaf13e4e3470c7bc0a45..4d8b701437396c59b52f7725ed0b123c433e7210 100644 (file)
@@ -102,7 +102,7 @@ void ogre_gl ()
 float ogre_missile ()
 {
        self.ogre_cycles = 0;
-       if (random() < 0.20)
+       if (random() <= 0.20)
        {
                ogre_uzi();
                return TRUE;
index bf83d649521f1d44c9fda1334c47e9e54ab78e12..9b077d65ab115bf4f513a811b6b65c7a459ed053 100644 (file)
@@ -110,7 +110,7 @@ void tarbaby_die ()
        
        WaypointSprite_Kill(self.sprite);
        
-       self.SendFlags          |= MSF_MOVE | MSF_STATUS;
+       self.SendFlags |= MSF_MOVE | MSF_STATUS;
 }
 
 void tarbaby_spawn ()
diff --git a/qcsrc/server/mutators/gamemode_rts.qc b/qcsrc/server/mutators/gamemode_rts.qc
deleted file mode 100644 (file)
index 9b14774..0000000
+++ /dev/null
@@ -1,420 +0,0 @@
-// Real-Time Strategy
-// Gamemode by Mario
-
-// basically a fusion reactor with a new classname
-void spawnfunc_healing_tower()
-{
-       self.spawnflags = TSL_NO_RESPAWN; // healing towers don't respawn?
-       self.netname = "Monster Healing Tower"; // not used by waypoints...
-       spawnfunc_turret_fusionreactor();
-       self.classname = "healing_tower";
-       self.target_range = 1000;
-       self.shot_dmg = 30;
-}
-
-void rts_waypoint_think()
-{
-       float goalcount = 0;
-       entity e;
-       
-       self.nextthink = time + 0.1;
-       
-       for(e = world; (e = findentity(e, goalentity, self)); )
-       {
-               ++goalcount;
-       }
-       
-       if(goalcount < 1)
-       {
-               WaypointSprite_Kill(self.sprite);
-               remove(self);
-               return;
-       }
-}
-
-MUTATOR_HOOKFUNCTION(rts_PlayerSpawn)
-{
-       if(self.rts_viewangle)
-               self.angles_x = self.rts_viewangle;
-       else
-               self.angles_x = 30;
-               
-       self.effects |= EF_NODRAW;
-       self.oldorigin = self.origin;
-       self.monster_attack = FALSE;
-       self.last_click = time;
-       self.takedamage = DAMAGE_NO;
-       self.flags |= FL_NOTARGET;
-       self.movetype = MOVETYPE_NOCLIP;
-       stuffcmd(self, "cl_cmd settemp cl_prydoncursor 1\n");
-       return FALSE;
-}
-
-MUTATOR_HOOKFUNCTION(rts_FilterItem)
-{
-       // no items... yet
-       return TRUE;
-}
-
-MUTATOR_HOOKFUNCTION(rts_SetStartItems)
-{
-       WEPSET_COPY_AW(start_weapons, 0);
-       
-       return FALSE;
-}
-
-MUTATOR_HOOKFUNCTION(rts_PlayerThink)
-{
-       if not(IS_PLAYER(self))
-               return FALSE; // dont do any checks for spectators
-               
-       switch(self.impulse)
-       {
-               case 10:
-        case 15:        
-        case 18:
-            self.oldorigin_z += 50;
-            break;
-        case 12:
-        case 16:
-        case 19:
-                       self.oldorigin_z -= 50;
-                       break;
-       }
-       self.hasweapon_complain_spam = time + 9999999999; // no spam
-               
-       entity head, wp = world;
-       if(!self.cursor_trace_ent && self.BUTTON_ATCK && time >= self.last_click)
-       {       
-               FOR_EACH_MONSTER(head)
-               {
-                       if(head.owner != self) continue;
-                       
-                       head.selected = FALSE;
-                       
-                       if(!self.enemy)
-                               head.owner = world;
-               }
-       }
-       if(self.cursor_trace_ent.flags & FL_MONSTER && self.BUTTON_ATCK && time >= self.last_click)
-       {
-               if(self.cursor_trace_ent.owner != self && self.cursor_trace_ent.owner != world)
-                       return FALSE; // someone else owns it
-               else if(self.cursor_trace_ent.team != self.team)
-                       return FALSE; // not our team
-               else if(self.cursor_trace_ent.selected)
-               {
-                       self.cursor_trace_ent.selected = FALSE;
-                       self.cursor_trace_ent.owner = world;
-                       self.last_click = time + 0.5; // prevent spamming
-               }
-               else
-               {
-                       self.cursor_trace_ent.owner = self;
-                       self.cursor_trace_ent.selected = TRUE;
-                       self.last_click = time + 0.5; // prevent spamming
-               }
-       }
-       if(self.BUTTON_ATCK2)
-       {
-               entity e = self.cursor_trace_ent;
-               
-               if not(e)
-               {
-                       entity t;
-                       for(t = world; (t = findflags(t, turrcaps_flags, TFL_TURRCAPS_ISTURRET)); )
-                       {
-                               if(vlen(self.cursor_trace_endpos - t.origin) < 80)
-                               {
-                                       if(IsDifferentTeam(e, t))
-                                       {
-                                               e = t;
-                                               break; // don't bother checking any other turrets
-                                       }
-                               }
-                       }
-               }
-               
-               if(e)
-               if not(e.takedamage)
-                       e = world;
-               
-               if not(e)
-               {
-                       wp = spawn();
-                       wp.classname = "monster_waypoint"; // set so we can kill this later
-                       wp.owner = self; // hmm...
-                       wp.think = rts_waypoint_think;
-                       wp.nextthink = time;
-                       WaypointSprite_Spawn("Here", 1, 0, wp, '0 0 10', world, self.team, wp, sprite, FALSE, RADARICON_DANGER, ((teamplay) ? Team_ColorRGB(self.team) : '1 0 0'));
-                       setorigin(wp, self.cursor_trace_endpos);
-               }
-               
-               FOR_EACH_MONSTER(head)
-               {
-                       if(head.owner != self) continue;
-                       if not(head.selected) continue;
-                       
-                       if(e)
-                       {
-                               float sheight = ((e.sprite_height) ? e.sprite_height + 20 : 80);
-                               if(IsDifferentTeam(e, self))
-                               {
-                                       WaypointSprite_Spawn("Attacking", 1, 0, e, '0 0 1' * sheight, world, self.team, self, sprite, FALSE, RADARICON_DANGER, ((teamplay) ? Team_ColorRGB(self.team) : '1 0 0'));
-                                       head.goalentity = world;
-                                       head.enemy = e;
-                               }
-                               else if(e.flags & FL_MONSTER && e != head)
-                               {
-                                       WaypointSprite_Spawn("Following", 1, 0, e, '0 0 1' * sheight, world, self.team, self, sprite, FALSE, RADARICON_DANGER, ((teamplay) ? Team_ColorRGB(self.team) : '1 0 0'));
-                                       head.goalentity = e;
-                               }
-                               else // its not a monster or an enemy, so revert to waypoint
-                               {
-                                       head.goalentity = wp;
-                                       head.enemy = world;
-                               }
-                                       
-                       }
-                       else
-                       {
-                               head.goalentity = wp;
-                               head.enemy = world;
-                       }
-               }
-       }
-
-       return FALSE;
-}
-
-MUTATOR_HOOKFUNCTION(rts_MonsterSpawn)
-{
-       // new monster
-       if not(self.monster_respawned)
-       {
-               self.level = 0;
-               self.speed = 1;
-       }
-       
-       self.spawnflags = MONSTERFLAG_NORESPAWN;
-       
-       self.goalentity = world;
-       self.enemy = world;
-       self.moveto = self.origin;
-       
-       self.candrop = FALSE;
-               
-       self.respawntime = 10; // default to 10 seconds for now
-       self.effects |= EF_SELECTABLE;
-       self.monster_moveflags = MONSTER_MOVE_NOMOVE;
-       
-       WaypointSprite_Kill(self.sprite);
-       self.sprite = world;
-       self.heal_delay = -1; // this is reset when monster takes damage
-       
-       return FALSE;
-}
-
-MUTATOR_HOOKFUNCTION(rts_MonsterThink)
-{
-       vector color = ((self.team) ? Team_ColorRGB(self.team) : '1 1 1');
-               
-       if(self.health >= self.max_health)
-               self.heal_delay = -1;   
-       else if(time >= self.heal_delay)
-       {
-               self.health = min(self.health + 5, self.max_health);
-               WaypointSprite_UpdateHealth(self.sprite, self.health);
-               self.heal_delay = time + 2;
-       }
-               
-       monster_speed_run = 150 * self.speed;
-       monster_speed_walk = 150 * self.speed;
-       
-       if(IS_PLAYER(monster_target))
-               monster_target = world; // shouldn't be able to find players...
-               
-       if not(IsDifferentTeam(monster_target, self))
-       {
-               // following a fellow teammate, so attack their enemy
-               if(monster_target.deadflag != DEAD_NO || monster_target.health < 1)
-                       monster_target = world; // teammate died
-                       
-               if(monster_target.enemy)
-               {
-                       self.enemy = monster_target.enemy;
-                       monster_target = world; // don't follow anymore?
-               }
-       }
-       
-       if(self.selected)
-               self.colormod = color * 10;
-       else
-               self.colormod = color;
-               
-       if(monster_target)
-               self.enemy = world; // don't ignore our owner's commands
-       
-       if not(self.sprite)
-       {
-               WaypointSprite_Spawn(self.netname, 0, 0, self, '0 0 1' * self.sprite_height, world, self.team, self, sprite, FALSE, RADARICON_DANGER, ((teamplay) ? Team_ColorRGB(self.team) : '1 0 0'));
-               WaypointSprite_UpdateMaxHealth(self.sprite, self.max_health);
-               WaypointSprite_UpdateHealth(self.sprite, self.health);
-       }
-       
-       if(self.owner)
-       if not(self.selected)
-               self.owner = world;
-       
-       if not(IsDifferentTeam(self, self.enemy))
-               self.enemy = world; // no same team fighting
-       
-       self.last_trace = time; // realtime moving?
-               
-       return FALSE;
-}
-
-MUTATOR_HOOKFUNCTION(rts_MonsterDies)
-{
-       entity e;
-       
-       if(IsDifferentTeam(frag_attacker, frag_target) && frag_attacker.team)
-               TeamScore_AddToTeam(frag_attacker.team, ST_SCORE, 1);
-       
-       // need to keep the monster selected to get the points... hmm (TODO: realowners?)
-       if(IS_PLAYER(frag_attacker.owner))
-       {
-               PlayerScore_Add(frag_attacker.owner, SP_SCORE, 5);
-               PlayerScore_Add(frag_attacker.owner, SP_KILLS, 1);
-       }
-       
-       for(e = world; (e = findentity(e, goalentity, self)); )
-       {
-               e.goalentity = world; // fix teammates if they still see us as a valid target
-       }
-
-       self.effects &~= EF_SELECTABLE;
-       self.selected = FALSE;
-       
-       self.goalentity = world;
-       self.enemy = world;
-       
-       return FALSE;
-}
-
-MUTATOR_HOOKFUNCTION(rts_MonsterRespawn)
-{
-       if(other.team)
-               return TRUE;
-               
-       return FALSE; // if no team is set, don't respawn
-}
-
-MUTATOR_HOOKFUNCTION(rts_MonsterTarget)
-{
-       // don't search for enemies, they are given to us
-       return TRUE;
-}
-
-MUTATOR_HOOKFUNCTION(rts_MonsterBossFlag)
-{
-       // no minibosses in RTS
-       return TRUE;
-}
-
-MUTATOR_HOOKFUNCTION(rts_PlayerDamage)
-{
-       if(IS_PLAYER(frag_target))
-               frag_damage = 0; // don't damage the invincible players...
-               
-       if((frag_target.flags & FL_MONSTER) && frag_target.goalentity)
-               frag_target.enemy = world; // don't attack the attacker, we're probably pulling back
-               
-       if((frag_target.flags & FL_MONSTER) && !IsDifferentTeam(frag_target, frag_attacker))
-               frag_damage = 0; // no team damage
-               
-       if((frag_target.flags & FL_MONSTER) && frag_damage > 0)
-               frag_target.heal_delay = time + 2; // pause healing
-               
-       return FALSE;
-}
-
-MUTATOR_HOOKFUNCTION(rts_PlayerPhysics)
-{
-       if not(IS_PLAYER(self))
-               return FALSE;
-               
-       self.origin_z = self.oldorigin_z;
-       self.stat_sv_maxspeed *= 4; // lol
-       
-       return FALSE;
-}
-
-MUTATOR_HOOKFUNCTION(rts_PlayerDies)
-{
-       // prevent changing teams with selected monsters
-       entity head;
-       FOR_EACH_MONSTER(head)
-       {
-               if(head.owner != self) continue;
-               if not(head.selected) continue;
-               
-               if(IsDifferentTeam(self, head))
-               {
-                       head.selected = FALSE;
-                       head.owner = world;
-               }
-       }
-       
-       return FALSE;
-}
-
-void rts_ScoreRules()
-{
-       ScoreRules_basics(2, SFL_SORT_PRIO_PRIMARY, 0, TRUE);
-       ScoreRules_basics_end();
-}
-
-void rts_DelayedInit()
-{
-       rts_ScoreRules();
-}
-
-void rts_Initialize()
-{
-       InitializeEntity(world, rts_DelayedInit, INITPRIO_GAMETYPE);
-}
-
-MUTATOR_DEFINITION(gamemode_rts)
-{
-       MUTATOR_HOOK(PlayerPhysics, rts_PlayerPhysics, CBC_ORDER_ANY);
-       MUTATOR_HOOK(PlayerSpawn, rts_PlayerSpawn, CBC_ORDER_ANY);
-       MUTATOR_HOOK(SetStartItems, rts_SetStartItems, CBC_ORDER_ANY);
-       MUTATOR_HOOK(FilterItem, rts_FilterItem, CBC_ORDER_ANY);
-       MUTATOR_HOOK(MonsterSpawn, rts_MonsterSpawn, CBC_ORDER_ANY);
-       MUTATOR_HOOK(PlayerPreThink, rts_PlayerThink, CBC_ORDER_ANY);
-       MUTATOR_HOOK(MonsterMove, rts_MonsterThink, CBC_ORDER_ANY);
-       MUTATOR_HOOK(MonsterFindTarget, rts_MonsterTarget, CBC_ORDER_ANY);
-       MUTATOR_HOOK(MonsterDies, rts_MonsterDies, CBC_ORDER_ANY);
-       MUTATOR_HOOK(MonsterRespawn, rts_MonsterRespawn, CBC_ORDER_ANY);
-       MUTATOR_HOOK(MonsterCheckBossFlag, rts_MonsterBossFlag, CBC_ORDER_ANY);
-       MUTATOR_HOOK(PlayerDamage_Calculate, rts_PlayerDamage, CBC_ORDER_ANY);
-       MUTATOR_HOOK(PlayerDies, rts_PlayerDies, CBC_ORDER_ANY);
-       
-       MUTATOR_ONADD
-       {
-               if(time > 1) // game loads at time 1
-                       error("This is a game type and it cannot be added at runtime.");        
-               cvar_settemp("g_monsters", "1");
-               cvar_settemp("g_turrets", "1");
-               
-               rts_Initialize();
-       }
-
-       MUTATOR_ONREMOVE
-       {
-               error("This is a game type and it cannot be removed at runtime.");
-       }
-
-       return FALSE;
-}
diff --git a/qcsrc/server/mutators/gamemode_rts.qh b/qcsrc/server/mutators/gamemode_rts.qh
deleted file mode 100644 (file)
index b183159..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-.vector oldorigin;
-.float selected;
-.float last_click;
-.float heal_delay;
-.float level;
-.float rts_viewangle;
\ No newline at end of file
diff --git a/qcsrc/server/mutators/mutator_zombie_apocalypse.qc b/qcsrc/server/mutators/mutator_zombie_apocalypse.qc
deleted file mode 100644 (file)
index cf511ea..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-// Zombie Apocalypse mutator - small side project
-// Spawns a defined number of zombies at the start of a match
-
-float za_numspawns, totalzombies, roundcnt, numzoms;
-entity PickZombieSpawn()
-{
-       entity sp;
-       
-       RandomSelection_Init();
-       
-       if(teamplay)
-       {
-               for(sp = world; (sp = find(sp, classname, "info_player_team1")); )
-               {
-                       RandomSelection_Add(sp, 0, string_null, 1, 1);
-               }
-       }
-       else
-       {
-               for(sp = world; (sp = find(sp, classname, "info_player_deathmatch")); )
-               {
-                       RandomSelection_Add(sp, 0, string_null, 1, 1);
-               }
-       }
-       
-       return RandomSelection_chosen_ent;
-}
-
-void zombie_spawn_somewhere ()
-{
-       if(gameover) { return; }
-    
-    entity mon, sp;
-       
-       if(MoveToRandomMapLocation(self, DPCONTENTS_SOLID | DPCONTENTS_CORPSE | DPCONTENTS_PLAYERCLIP, DPCONTENTS_SLIME | DPCONTENTS_LAVA | DPCONTENTS_SKY | DPCONTENTS_BODY | DPCONTENTS_DONOTENTER, Q3SURFACEFLAG_SKY, 10, 1024, 256))
-       {
-               mon = spawnmonster("zombie", self, self, self.origin, TRUE, 2); // double tap needed
-               tracebox(mon.origin, mon.mins, mon.maxs, mon.origin, MOVE_NOMONSTERS, mon);
-
-               if(trace_startsolid)
-               {
-                       sp = PickZombieSpawn();
-                       if(sp)
-                               setorigin(mon, sp.origin);
-               }
-                       
-        za_numspawns += 1;
-       }
-       else
-               zombie_spawn_somewhere();
-}
-
-void() spawn_zombies;
-void za_roundwon()
-{
-       Send_Notification(NOTIF_ALL, world, MSG_CENTER, CENTER_ZA_WIN);
-       
-       roundcnt += 1;
-       
-       numzoms = autocvar_g_za_monster_count;
-       
-       monsters_total += numzoms;
-       totalzombies = numzoms;
-       
-       self.think = spawn_zombies;
-       self.nextthink = time + 10;
-}
-
-void spawn_zombies ()
-{
-       self.nextthink = time + 1;
-       
-       if(totalzombies <= 0)
-       {
-               self.think = za_roundwon;
-               self.nextthink = time;
-               return;
-       }
-       
-       if(gameover || numzoms <= 0)
-               return;
-               
-    entity e;
-    
-    dprint("Them zombies be spawnin'!\n");
-
-       while(numzoms > 0)
-       {
-        e = spawn();
-               e.think = zombie_spawn_somewhere;
-        e.nextthink = time;
-
-               numzoms -= 1;
-       }
-}
-
-void za_init ()
-{
-    entity e;
-       
-       roundcnt = 1;
-       
-    numzoms = autocvar_g_za_monster_count;
-       
-       monsters_total += numzoms;
-       totalzombies = numzoms;
-       
-    e = spawn();
-       e.think = spawn_zombies;
-       e.nextthink = time + 3;
-}
-
-MUTATOR_HOOKFUNCTION(za_ZombieDies)
-{
-       if(self.monster_respawned)
-               return FALSE; // don't count zombies that respawned
-               
-       if(frag_attacker.classname == "player")
-               PlayerScore_Add(frag_attacker, SP_SCORE, 1);
-       
-       totalzombies -= 1;
-       monsters_killed += 1;
-       return FALSE;
-}
-
-MUTATOR_HOOKFUNCTION(za_BuildMutatorsString)
-{
-       ret_string = strcat(ret_string, ":Zombies");
-       return 0;
-}
-
-MUTATOR_HOOKFUNCTION(za_BuildMutatorsPrettyString)
-{
-       ret_string = strcat(ret_string, ", Zombies");
-       return 0;
-}
-
-MUTATOR_DEFINITION(mutator_zombie_apocalypse)
-{
-       MUTATOR_HOOK(MonsterDies, za_ZombieDies, CBC_ORDER_ANY);
-       MUTATOR_HOOK(BuildMutatorsString, za_BuildMutatorsString, CBC_ORDER_ANY);
-       MUTATOR_HOOK(BuildMutatorsPrettyString, za_BuildMutatorsPrettyString, CBC_ORDER_ANY);
-    
-    MUTATOR_ONADD
-    {
-        za_init();
-    }
-
-       return 0;
-}
index 7a8b5764a5394fc404a56d0cb66dca5e84f32785..4d57fa7ee64d6b7a9ece79ccd07aa75894bab763 100644 (file)
@@ -6,7 +6,6 @@ MUTATOR_DECLARATION(gamemode_nexball);
 MUTATOR_DECLARATION(gamemode_onslaught);
 MUTATOR_DECLARATION(gamemode_td);
 MUTATOR_DECLARATION(gamemode_domination);
-MUTATOR_DECLARATION(gamemode_rts);
 
 MUTATOR_DECLARATION(mutator_dodging);
 MUTATOR_DECLARATION(mutator_invincibleprojectiles);
@@ -17,6 +16,5 @@ MUTATOR_DECLARATION(mutator_spawn_near_teammate);
 MUTATOR_DECLARATION(mutator_physical_items);
 MUTATOR_DECLARATION(mutator_vampire);
 MUTATOR_DECLARATION(mutator_superspec);
-MUTATOR_DECLARATION(mutator_zombie_apocalypse);
 
 MUTATOR_DECLARATION(sandbox);
index ba0555a2901b410e797c1e85c3150fe99862ca0b..f79845bcb27069608ddc369c50534de32a79c1ed 100644 (file)
@@ -42,7 +42,6 @@ mutators/gamemode_keepaway.qh
 mutators/gamemode_nexball.qh 
 mutators/mutator_dodging.qh
 mutators/gamemode_towerdefense.qh
-mutators/gamemode_rts.qh
 
 //// tZork Turrets ////
 tturrets/include/turrets_early.qh
@@ -228,7 +227,6 @@ mutators/gamemode_keepaway.qc
 mutators/gamemode_nexball.qc
 mutators/gamemode_onslaught.qc
 mutators/gamemode_towerdefense.qc
-mutators/gamemode_rts.qc
 mutators/mutator_invincibleproj.qc
 mutators/mutator_new_toys.qc
 mutators/mutator_nix.qc
@@ -239,7 +237,6 @@ mutators/mutator_spawn_near_teammate.qc
 mutators/mutator_physical_items.qc
 mutators/sandbox.qc
 mutators/mutator_superspec.qc
-mutators/mutator_zombie_apocalypse.qc
 
 ../warpzonelib/anglestransform.qc
 ../warpzonelib/mathlib.qc
index 1fb7ad122d3adc8214190ab4667205b4a3e7ed52..89976a2ec919e6dee3328621502ce3b438625a79 100644 (file)
@@ -112,15 +112,6 @@ void InitGameplayMode()
                leadlimit_override = 0;
                MUTATOR_ADD(gamemode_td);
        }
-       
-       if(g_rts)
-       {
-               ActivateTeamplay();
-               fraglimit_override = 0;
-               leadlimit_override = 0;
-               MUTATOR_ADD(gamemode_rts);
-               have_team_spawns = -1; // request team spawns
-       }
 
        if(g_lms)
        {
index f2e956586c45f42a36c68b7a4063a161a115bc12..e9db03fff3f8509c052c38361b2a6df0b5adb39d 100644 (file)
@@ -13,12 +13,6 @@ void turret_fusionreactor_fire()
                self.enemy.tur_health = min(self.enemy.tur_health + self.shot_dmg,self.enemy.max_health);
                self.enemy.SendFlags |= TNSF_STATUS;
        }
-       if(g_rts) // monster healing
-       {
-               self.enemy.heal_delay = time + 0.5;
-               self.enemy.health = min(self.enemy.health + self.shot_dmg,self.enemy.max_health);
-               WaypointSprite_UpdateHealth(self.enemy.sprite, self.enemy.health);
-       }
     fl_org = 0.5 * (self.enemy.absmin + self.enemy.absmax);
     te_smallflash(fl_org);
 }
@@ -66,22 +60,6 @@ float turret_fusionreactor_firecheck()
         if(self.enemy.health >= self.enemy.max_health)
             return 0;
     }
-       if(g_rts)
-       {
-               if(IsDifferentTeam(self, self.enemy))
-                       return 0;
-                       
-               if not(self.enemy.flags & FL_MONSTER)
-                       return 0;
-               
-               if(self.enemy.health >= self.enemy.max_health)
-                       return 0;
-                       
-               if(time < self.enemy.heal_delay)
-                       return 0;
-                       
-               return 1; // this is for monsters, so don't do the other checks
-       }
        
        if (self.enemy.ammo >= self.enemy.ammo_max)
                return 0;
diff --git a/za.cfg b/za.cfg
deleted file mode 100644 (file)
index 1e6682e..0000000
--- a/za.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-set g_za 0 "Enable zombie apocalypse mutator"
-set g_za_monster_count 20
\ No newline at end of file