diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index 2ab48980639..2978e80f2b6 100644 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -47,6 +47,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station var/static_environ var/has_gravity = 0 + var/safe = 0 //Is the area teleport-safe: no space / radiation / aggresive mobs / other dangers var/no_air = null var/area/master // master area used for power calcluations @@ -502,6 +503,7 @@ proc/process_ghost_teleport_locs() /area/crew_quarters name = "\improper Dormitories" icon_state = "Sleep" + safe = 1 /area/crew_quarters/toilet name = "\improper Dormitory Toilets" diff --git a/code/game/gamemodes/abduction/abduction.dm b/code/game/gamemodes/abduction/abduction.dm index 16373621412..9276c1bb331 100644 --- a/code/game/gamemodes/abduction/abduction.dm +++ b/code/game/gamemodes/abduction/abduction.dm @@ -13,6 +13,7 @@ var/list/datum/mind/agents = list() var/list/datum/objective/team_objectives = list() var/list/team_names = list() + var/finished = 0 /datum/game_mode/abduction/announce() world << "The current game mode is - Abduction!" @@ -258,11 +259,14 @@ /datum/game_mode/abduction/check_finished() - for(var/team_number=1,team_number<=teams,team_number++) - var/obj/machinery/abductor/console/con = get_team_console(team_number) - var/datum/objective/objective = team_objectives[team_number] - if (con.experiment.points > objective.target_amount) - return 1 + if(!finished) + for(var/team_number=1,team_number<=teams,team_number++) + var/obj/machinery/abductor/console/con = get_team_console(team_number) + var/datum/objective/objective = team_objectives[team_number] + if (con.experiment.points > objective.target_amount) + SSshuttle.emergency.request(null, 0.5) + finished = 1 + return ..() return ..() /datum/game_mode/abduction/declare_completion() @@ -297,7 +301,7 @@ world << printobjectives(abductee.mind) /datum/game_mode/proc/auto_declare_completion_abduction() - if(abductors.len) + if(abductors.len && ticker.mode.config_tag != "abduction") // no repeating for the gamemode world << "
The Abductors were:" for(var/datum/mind/M in abductors) world << "Abductor [M.current ? M.current.name : "Abductor"]([M.key])" diff --git a/code/game/gamemodes/abduction/machinery/experiment.dm b/code/game/gamemodes/abduction/machinery/experiment.dm index 371011323df..2de8bdd41ff 100644 --- a/code/game/gamemodes/abduction/machinery/experiment.dm +++ b/code/game/gamemodes/abduction/machinery/experiment.dm @@ -143,7 +143,7 @@ if(!GlandTest) say("Experimental dissection not detected!") return "No glands detected!" - if(H.mind != null || H.ckey != null) + if(H.mind != null && H.ckey != null) history += H say("Processing Specimen...") sleep(5) @@ -190,9 +190,11 @@ var/area/A if(console && console.pad && console.pad.teleport_target) A = console.pad.teleport_target - else - A = teleportlocs[pick(teleportlocs)] - TeleportToArea(H,A) + if(A.safe) // right now crew areas are safe - being locked behind closed doors is not fun + TeleportToArea(H,A) + //Area not chosen / It's not safe area - teleport to arrivals + H.forceMove(pick(latejoin)) + /obj/machinery/abductor/experiment/update_icon() if(state_open) diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index 35ab45ea708..32b0121f7d2 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -564,7 +564,7 @@ client/proc/one_click_antag() if(candidates.len >= 2) //Oh god why we can't have static functions var/teams_finished = 0 - if(ticker.mode.config_tag == "abductor") + if(ticker.mode.config_tag == "abduction") var/datum/game_mode/abduction/A = ticker.mode teams_finished = A.teams else @@ -572,7 +572,7 @@ client/proc/one_click_antag() var/number = teams_finished + 1 var/datum/game_mode/abduction/temp - if(ticker.mode.config_tag == "abductor") + if(ticker.mode.config_tag == "abduction") temp = ticker.mode else temp = new @@ -597,7 +597,7 @@ client/proc/one_click_antag() temp.abductors |= list(agent_mind,scientist_mind) temp.make_abductor_team(number,preset_scientist=scientist_mind,preset_agent=agent_mind) temp.post_setup_team(number) - if(ticker.mode.config_tag == "abductor") + if(ticker.mode.config_tag == "abduction") var/datum/game_mode/abduction/A = ticker.mode A.teams += 1 else