//STRIKE TEAMS //Thanks to Kilakk for the admin-button portion of this code. var/global/send_emergency_team = 0 // Used for automagic response teams // 'admin_emergency_team' for admin-spawned response teams var/ert_base_chance = 10 // Default base chance. Will be incremented by increment ERT chance. var/can_call_ert var/silent_ert = 0 /client/proc/response_team() set name = "Dispatch Emergency Response Team" set category = "Special Verbs" set desc = "Send an emergency response team to the station" if(!holder) to_chat(usr, "Only administrators may use this command.") return if(!ticker) to_chat(usr, "The game hasn't started yet!") return if(ticker.current_state == 1) to_chat(usr, "The round hasn't started yet!") return if(send_emergency_team) to_chat(usr, "[using_map.boss_name] has already dispatched an emergency response team!") return if(tgui_alert(usr, "Do you want to dispatch an Emergency Response Team?","ERT",list("Yes","No")) != "Yes") return if(tgui_alert(usr, "Do you want this Response Team to be announced?","ERT",list("Yes","No")) != "Yes") silent_ert = 1 if(get_security_level() != "red") // Allow admins to reconsider if the alert level isn't Red switch(tgui_alert(usr, "The station is not in red alert. Do you still want to dispatch a response team?","ERT",list("Yes","No"))) if("No") return if(send_emergency_team) to_chat(usr, "Looks like somebody beat you to it!") return message_admins("[key_name_admin(usr)] is dispatching an Emergency Response Team.", 1) admin_chat_message(message = "[key_name(usr)] is dispatching an Emergency Response Team", color = "#CC2222") //VOREStation Add log_admin("[key_name(usr)] used Dispatch Response Team.") trigger_armed_response_team(1) /client/verb/JoinResponseTeam() set name = "Join Response Team" set category = "IC" if(!MayRespawn(1)) to_chat(usr, "You cannot join the response team at this time.") return if(istype(usr,/mob/observer/dead) || istype(usr,/mob/new_player)) if(!send_emergency_team) to_chat(usr, "No emergency response team is currently being sent.") return if(jobban_isbanned(usr, "Syndicate") || jobban_isbanned(usr, "Emergency Response Team") || jobban_isbanned(usr, "Security Officer")) to_chat(usr, "You are jobbanned from the emergency reponse team!") return if(ert.current_antagonists.len >= ert.hard_cap) to_chat(usr, "The emergency response team is already full!") return ert.create_default(usr) else to_chat(usr, "You need to be an observer or new player to use this.") // returns a number of dead players in % /proc/percentage_dead() var/total = 0 var/deadcount = 0 for(var/mob/living/carbon/human/H in mob_list) if(H.client) // Monkeys and mice don't have a client, amirite? if(H.stat == 2) deadcount++ total++ if(total == 0) return 0 else return round(100 * deadcount / total) // counts the number of antagonists in % /proc/percentage_antagonists() var/total = 0 var/antagonists = 0 for(var/mob/living/carbon/human/H in mob_list) if(is_special_character(H) >= 1) antagonists++ total++ if(total == 0) return 0 else return round(100 * antagonists / total) // Increments the ERT chance automatically, so that the later it is in the round, // the more likely an ERT is to be able to be called. /proc/increment_ert_chance() while(send_emergency_team == 0) // There is no ERT at the time. if(get_security_level() == "green") ert_base_chance += 1 if(get_security_level() == "yellow") ert_base_chance += 1 if(get_security_level() == "violet") ert_base_chance += 2 if(get_security_level() == "orange") ert_base_chance += 2 if(get_security_level() == "blue") ert_base_chance += 2 if(get_security_level() == "red") ert_base_chance += 3 if(get_security_level() == "delta") ert_base_chance += 10 // Need those big guns sleep(600 * 3) // Minute * Number of Minutes /proc/trigger_armed_response_team(var/force = 0) if(!can_call_ert && !force) return if(send_emergency_team) return var/send_team_chance = ert_base_chance // Is incremented by increment_ert_chance. send_team_chance += 2*percentage_dead() // the more people are dead, the higher the chance send_team_chance += percentage_antagonists() // the more antagonists, the higher the chance send_team_chance = min(send_team_chance, 100) if(force) send_team_chance = 100 // there's only a certain chance a team will be sent if(!prob(send_team_chance)) command_announcement.Announce("It would appear that an emergency response team was requested for [station_name()]. Unfortunately, we were unable to send one at this time.", "[using_map.boss_name]") can_call_ert = 0 // Only one call per round, ladies. return if(silent_ert == 0) command_announcement.Announce("It would appear that an emergency response team was requested for [station_name()]. We will prepare and send one as soon as possible.", "[using_map.boss_name]") can_call_ert = 0 // Only one call per round, gentleman. send_emergency_team = 1 consider_ert_load() //VOREStation Add sleep(600 * 5) send_emergency_team = 0 // Can no longer join the ERT.