]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Clean up turretspawn command a bit
authorMario <mario.mario@y7mail.com>
Thu, 7 Mar 2013 18:36:52 +0000 (05:36 +1100)
committerMario <mario.mario@y7mail.com>
Thu, 7 Mar 2013 18:36:52 +0000 (05:36 +1100)
gamemodes.cfg
qcsrc/server/autocvars.qh
qcsrc/server/mutators/gamemode_towerdefense.qc

index adb9ad9a9bad35cf37fd22bfb52b104007767afc..33e7bef41aaf7b025813c356309f898c826e1de2 100644 (file)
@@ -510,12 +510,12 @@ set g_td_turret_max 4
 set g_td_turret_plasma_cost 50
 set g_td_turret_mlrs_cost 80
 set g_td_turret_walker_cost 100
-set g_td_tower_buff_cost 70
-set g_td_barricade_damage 10
-set g_td_barricade_cost 20
+set g_td_turret_towerbuff_cost 70
+set g_td_turret_barricade_cost 20
 set g_td_turret_flac_cost 40
 set g_td_turret_upgrade_cost 100
 set g_td_turret_repair_cost 20
+set g_td_barricade_damage 10
 set g_td_monsters_speed_walk 75
 set g_td_monsters_speed_run 110
 set g_td_monsters_spawn_delay 3
index d99cc5bfcd5df4107e9c06907aaff8b350253c2e..17e10de847d340a70dbb52e34790b8d5269c7df1 100644 (file)
@@ -1281,11 +1281,6 @@ float autocvar_g_td_turretkill_points;
 float autocvar_g_td_generator_dontend;
 float autocvar_g_td_force_settings;
 float autocvar_g_td_turret_max;
-float autocvar_g_td_turret_plasma_cost;
-float autocvar_g_td_turret_mlrs_cost;
-float autocvar_g_td_turret_walker_cost;
-float autocvar_g_td_tower_buff_cost;
-float autocvar_g_td_turret_flac_cost;
 float autocvar_g_td_monsters_skill_start;
 float autocvar_g_td_monsters_skill_increment;
 float autocvar_g_td_monsters_speed_walk;
@@ -1296,7 +1291,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_td_barricade_cost;
 float autocvar_g_za_monster_count;
 float autocvar_g_monsters;
 float autocvar_g_monsters_max;
index 65191fdf86ac0383284e732ceba8f19a8907a8f3..1e1a8550a2472dc80e9c49094ce48f88c119845d 100644 (file)
@@ -234,13 +234,24 @@ void spawn_barricade()
        self.movetype = MOVETYPE_NONE;
 }
 
-void spawnturret(entity spawnedby, entity own, string turet, vector orig)
+float td_checkfuel(entity ent, string tur)
 {
-       if(!IS_PLAYER(spawnedby))
+       float turcost = cvar(strcat("g_td_turret_", tur, "_cost"));
+       
+       if(ent.ammo_fuel < turcost)
        {
-               dprint("Warning: A non-player entity tried to spawn a turret\n");
-               return;
+               Send_Notification(NOTIF_ONE, ent, MSG_INFO, INFO_TD_NOFUEL);
+               return FALSE;
        }
+       
+       ent.ammo_fuel -= turcost;
+       
+       return TRUE;
+}      
+
+void spawnturret(entity spawnedby, entity own, string turet, vector orig)
+{
+       if not(IS_PLAYER(spawnedby)) { dprint("Warning: A non-player entity tried to spawn a turret\n"); return; }
                
        entity oldself;
        
@@ -257,17 +268,16 @@ void spawnturret(entity spawnedby, entity own, string turet, vector orig)
        
        switch(turet)
        {
-               default:
-               case "plasma": spawnfunc_turret_plasma(); break;
-               case "mlrs": spawnfunc_turret_mlrs(); break;
-               case "phaser": spawnfunc_turret_phaser(); break;
-               case "hellion": spawnfunc_turret_hellion(); break;
-               case "walker": spawnfunc_turret_walker(); break;
-               case "flac": spawnfunc_turret_flac(); break;
-               case "tesla": spawnfunc_turret_tesla(); break;
-               case "fusionreactor": spawnfunc_turret_fusionreactor(); break;
-               case "barricade": spawn_barricade(); break;
+               case "plasma": if not(td_checkfuel(spawnedby, turet)) return; spawnfunc_turret_plasma(); break;
+               case "mlrs": if not(td_checkfuel(spawnedby, turet)) return; spawnfunc_turret_mlrs(); break;
+               case "walker": if not(td_checkfuel(spawnedby, turet)) return; spawnfunc_turret_walker(); break;
+               case "flac": if not(td_checkfuel(spawnedby, turet)) return; spawnfunc_turret_flac(); break;
+               case "towerbuff": if not(td_checkfuel(spawnedby, turet)) return; spawnfunc_turret_fusionreactor(); break;
+               case "barricade": if not(td_checkfuel(spawnedby, turet)) return; spawn_barricade(); break;
+               default: Send_Notification(NOTIF_ONE, spawnedby, MSG_INFO, INFO_TD_INVALID); remove(self); self = oldself; return;
        }
+       
+       Send_Notification(NOTIF_ONE, spawnedby, MSG_INFO, INFO_TD_SPAWN);
                
        self = oldself;
 }
@@ -931,63 +941,9 @@ MUTATOR_HOOKFUNCTION(td_PlayerCommand)
                        Send_Notification(NOTIF_ONE, self, MSG_INFO, INFO_TD_MAXTURRETS, max_turrets);
                        return TRUE;
                }
-               switch(argv(1))
-               {
-                       case "plasma":
-                       {
-                if(self.ammo_fuel < autocvar_g_td_turret_plasma_cost) break;
-                               self.ammo_fuel -= autocvar_g_td_turret_plasma_cost;
-                               spawnturret(self, self, "plasma", trace_endpos);
-                               Send_Notification(NOTIF_ONE, self, MSG_INFO, INFO_TD_SPAWN);
-                               return TRUE;
-                       }
-                       case "mlrs":
-                       {
-                if(self.ammo_fuel < autocvar_g_td_turret_mlrs_cost) break;
-                               self.ammo_fuel -= autocvar_g_td_turret_mlrs_cost;
-                               spawnturret(self, self, "mlrs", trace_endpos);
-                               Send_Notification(NOTIF_ONE, self, MSG_INFO, INFO_TD_SPAWN);
-                               return TRUE;
-                       }
-                       case "flac":
-                       {
-                if(self.ammo_fuel < autocvar_g_td_turret_flac_cost) break;
-                               self.ammo_fuel -= autocvar_g_td_turret_flac_cost;
-                               spawnturret(self, self, "flac", trace_endpos);
-                               Send_Notification(NOTIF_ONE, self, MSG_INFO, INFO_TD_SPAWN);
-                               return TRUE;
-                       }
-                       case "walker":
-                       {
-                if(self.ammo_fuel < autocvar_g_td_turret_walker_cost) break;
-                               self.ammo_fuel -= autocvar_g_td_turret_walker_cost;
-                               spawnturret(self, self, "walker", trace_endpos);
-                               Send_Notification(NOTIF_ONE, self, MSG_INFO, INFO_TD_SPAWN);
-                               return TRUE;
-                       }
-                       case "towerbuff":
-                       {
-                if(self.ammo_fuel < autocvar_g_td_tower_buff_cost) break;
-                               self.ammo_fuel -= autocvar_g_td_tower_buff_cost;
-                               spawnturret(self, self, "fusionreactor", trace_endpos);
-                               Send_Notification(NOTIF_ONE, self, MSG_INFO, INFO_TD_SPAWN);
-                               return TRUE;
-                       }
-                       case "barricade":
-                       {
-                               if(self.ammo_fuel < autocvar_g_td_barricade_cost) break;
-                               self.ammo_fuel -= autocvar_g_td_barricade_cost;
-                               spawnturret(self, self, "barricade", trace_endpos);
-                               Send_Notification(NOTIF_ONE, self, MSG_INFO, INFO_TD_SPAWN);
-                               return TRUE;
-                       }
-                       default:
-                       {
-                               Send_Notification(NOTIF_ONE, self, MSG_INFO, INFO_TD_INVALID);
-                               return TRUE;
-                       }
-               }
-               Send_Notification(NOTIF_ONE, self, MSG_INFO, INFO_TD_NOFUEL);
+               
+               spawnturret(self, self, argv(1), trace_endpos);
+               
                return TRUE;
        }
        if(cmd_name == "repairturret")