From: Mario Date: Thu, 7 Mar 2013 18:36:52 +0000 (+1100) Subject: Clean up turretspawn command a bit X-Git-Tag: xonotic-v0.8.0~241^2^2~453 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=bd7aa362e04d8c3e94ab18ff5834c785de0e1845;p=xonotic%2Fxonotic-data.pk3dir.git Clean up turretspawn command a bit --- diff --git a/gamemodes.cfg b/gamemodes.cfg index adb9ad9a9..33e7bef41 100644 --- a/gamemodes.cfg +++ b/gamemodes.cfg @@ -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 diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh index d99cc5bfc..17e10de84 100644 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@ -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; diff --git a/qcsrc/server/mutators/gamemode_towerdefense.qc b/qcsrc/server/mutators/gamemode_towerdefense.qc index 65191fdf8..1e1a8550a 100644 --- a/qcsrc/server/mutators/gamemode_towerdefense.qc +++ b/qcsrc/server/mutators/gamemode_towerdefense.qc @@ -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")