diff --git a/baystation12.dme b/baystation12.dme index 82cc001246..3911c1518c 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -190,6 +190,7 @@ #include "code\defines\procs\command_alert.dm" #include "code\defines\procs\dbcore.dm" #include "code\defines\procs\sd_Alert.dm" +#include "code\defines\procs\statistics.dm" #include "code\game\asteroid.dm" #include "code\game\atoms.dm" #include "code\game\atoms_movable.dm" diff --git a/code/WorkInProgress/surgery.dm b/code/WorkInProgress/surgery.dm index ea94d4f8bf..3ad7627246 100644 --- a/code/WorkInProgress/surgery.dm +++ b/code/WorkInProgress/surgery.dm @@ -122,7 +122,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) /datum/surgery_step/generic/clamp_bleeders required_tool = /obj/item/weapon/hemostat - allowed_tools = list(/obj/item/weapon/cable_coil, /obj/item/weapon/mousetrap) + allowed_tools = list(/obj/item/weapon/cable_coil, /obj/item/device/assembly/mousetrap) min_duration = 40 max_duration = 60 @@ -558,7 +558,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) /datum/surgery_step/eye/mend_eyes required_tool = /obj/item/weapon/hemostat - allowed_tools = list(/obj/item/weapon/cable_coil, /obj/item/weapon/mousetrap) + allowed_tools = list(/obj/item/weapon/cable_coil, /obj/item/device/assembly/mousetrap) min_duration = 80 max_duration = 100 @@ -651,7 +651,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) /datum/surgery_step/face/mend_vocal required_tool = /obj/item/weapon/hemostat - allowed_tools = list(/obj/item/weapon/cable_coil, /obj/item/weapon/mousetrap) + allowed_tools = list(/obj/item/weapon/cable_coil, /obj/item/device/assembly/mousetrap) min_duration = 70 max_duration = 90 diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm index 87b7b14da1..27136d3de0 100644 --- a/code/game/gamemodes/events.dm +++ b/code/game/gamemodes/events.dm @@ -21,9 +21,6 @@ // Doesn't necessarily trigger an event, but might. Returns 1 if it did. /proc/event() event = 1 - if(!sent_ninja_to_station) - choose_space_ninja() - return var/minutes_passed = world.time/600 @@ -91,7 +88,7 @@ mini_blob_event() if("Space Ninja") //Handled in space_ninja.dm. Doesn't announce arrival, all sneaky-like. - choose_space_ninja() + space_ninja_arrival() if("Radiation") high_radiation_event() if("Virus") diff --git a/code/game/gamemodes/events/space_ninja.dm b/code/game/gamemodes/events/space_ninja.dm index bc07376641..dbd09ca962 100644 --- a/code/game/gamemodes/events/space_ninja.dm +++ b/code/game/gamemodes/events/space_ninja.dm @@ -93,34 +93,15 @@ When I already created about 4 new objectives, this doesn't seem terribly import /var/global/toggle_space_ninja = 1//If ninjas can spawn or not. /var/global/sent_ninja_to_station = 0//If a ninja is already on the station. -/proc/choose_space_ninja() - var/list/candidates = list() //list of candidate keys - for(var/mob/dead/observer/G in player_list) - if(G.client && ((G.client.inactivity/10)/60) <= 5 && G.client.be_spaceninja) - if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD)) - candidates += G - if(!candidates.len) return - candidates = shuffle(candidates)//Incorporating Donkie's list shuffle +var/ninja_selection_id = 1 +var/ninja_selection_active = 0 +var/ninja_confirmed_selection = 0 +/proc/space_ninja_arrival(var/assign_key = null, var/assign_mission = null) - //loop over all viable candidates, giving them a popup asking if they want to be space ninja - var/mob/dead/observer/accepted_ghost - while(candidates.len && !accepted_ghost) - //ask a different random candidate - var/mob/dead/observer/G = pick(candidates) - //give the popup a 30 second timeout in case the player is AFK - if(sd_Alert(G, "A space ninja is about to spawn. Would you like to play as the ninja?", "Space Ninja", list("Yes","No"), "Yes", 300, 1, "350x125") == "Yes") - accepted_ghost = G - else - candidates -= G - - if(accepted_ghost) - //someone accepted - space_ninja_arrival(accepted_ghost) - -/proc/space_ninja_arrival(var/mob/dead/observer/G) - if(!G) - return choose_space_ninja() + if(ninja_selection_active) + usr << "\red Ninja selection already in progress. Please wait until it ends." + return var/datum/game_mode/current_mode = ticker.mode var/datum/mind/current_mind @@ -161,25 +142,38 @@ Malf AIs/silicons aren't added. Monkeys aren't added. Messes with objective comp //Here we pick a location and spawn the ninja. var/list/spawn_list = list() for(var/obj/effect/landmark/L in landmarks_list) - //todo:: add ninjaspawn landmarks to map if(L.name == "ninjaspawn") spawn_list.Add(L) - //The ninja will be created on the right spawn point or at late join. - var/mob/living/carbon/human/new_ninja = create_space_ninja(pick(spawn_list.len ? spawn_list : latejoin )) - new_ninja.key = G.ckey - new_ninja.wear_suit:randomize_param()//Give them a random set of suit parameters. - new_ninja.internal = new_ninja.s_store //So the poor ninja has something to breath when they spawn in spess. - new_ninja.internals.icon_state = "internal1" - - ninja_key = pick(candidates) - + if(!spawn_list.len) + for(var/obj/effect/landmark/L in landmarks_list) + if(L.name == "carpspawn") + spawn_list.Add(L) + var/ninja_key = null var/mob/candidate_mob - for(var/mob/M in player_list) - if((M.key == ninja_key || M.ckey == ninja_key) && M.client) - candidate_mob = M - break + + if(assign_key) + ninja_key = assign_key + else + + var/list/candidates = list() //list of candidate keys + for(var/mob/dead/observer/G in player_list) + if(G.client && !G.client.holder && !G.client.is_afk() && G.client.be_spaceninja) + if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD)) + candidates += G + if(!candidates.len) return + candidates = shuffle(candidates)//Incorporating Donkie's list shuffle + + candidate_mob = pick(candidates) + ninja_key = candidate_mob.ckey + + + if(!candidate_mob) + for(var/mob/M in player_list) + if((M.key == ninja_key || M.ckey == ninja_key) && M.client) + candidate_mob = M + break if(!candidate_mob) usr << "\red The randomly chosen mob was not found in the second check." @@ -483,7 +477,7 @@ As such, it's hard-coded for now. No reason for it not to be, really. space_ninja_arrival(input, mission) - message_admins("\blue [key] has spawned [input] as a Space Ninja.\nTheir mission is: [mission]", 1) + message_admins("\blue [key_name_admin(key)] has spawned [input] as a Space Ninja.\nTheir mission is: [mission]") log_admin("[key] used Spawn Space Ninja.") return diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index 370e13b3dc..3288cc6971 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -20,7 +20,8 @@ desc = "Standart APLU chassis was refitted with additional thermal protection and cistern." name = "APLU \"Firefighter\"" icon_state = "firefighter" - initial_icon = "firefighter" max_temperature = 4500 + initial_icon = "firefighter" + max_temperature = 4500 health = 250 lights_power = 8 damage_absorption = list("fire"=0.5,"bullet"=0.8,"bomb"=0.5) diff --git a/code/modules/mob/living/carbon/human/human_attackalien.dm b/code/modules/mob/living/carbon/human/human_attackalien.dm index 23ba23ed92..76c5012ee1 100644 --- a/code/modules/mob/living/carbon/human/human_attackalien.dm +++ b/code/modules/mob/living/carbon/human/human_attackalien.dm @@ -42,7 +42,8 @@ updatehealth() if("disarm") - if (prob(80)) playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1) + if (prob(80)) + playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1) Weaken(rand(0.5,3)) for(var/mob/O in viewers(src, null)) if ((O.client && !( O.blinded ))) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index fe27202656..a2c2255fb3 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -824,11 +824,6 @@ var/const/BLOOD_VOLUME_SURVIVE = 122 pressure_alert = -2 else pressure_alert = -1 - - else if(pressure <= 50) - var/adjusted_pressure = calculate_affecting_pressure(pressure) //Returns how much pressure actually affects the mob. - if(adjusted_pressure < 50) - adjustBruteLoss( (50 - adjusted_pressure) / 50 ) return /* diff --git a/maps/tgstation.2.0.9.1.dmm b/maps/tgstation.2.0.9.1.dmm index afe7d888df..f99532254e 100644 --- a/maps/tgstation.2.0.9.1.dmm +++ b/maps/tgstation.2.0.9.1.dmm @@ -7275,7 +7275,7 @@ "cJU" = (/obj/item/weapon/ore/clown,/obj/item/weapon/ore/clown,/turf/unsimulated/floor{icon_state = "asteroid"; name = "dust"},/area/planet/clown) "cJV" = (/turf/unsimulated/floor{icon_state = "asteroid"; name = "dust"},/area/planet/clown) "cJW" = (/obj/item/weapon/bananapeel,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/planet/clown) -"cJX" = (/obj/item/weapon/mousetrap/armed,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/planet/clown) +"cJX" = (/obj/item/device/assembly/mousetrap/armed,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/planet/clown) "cJY" = (/obj/item/weapon/ore/clown,/turf/unsimulated/floor{icon_state = "asteroid"; name = "dust"},/area/planet/clown) "cJZ" = (/obj/effect/decal/remains/human,/turf/unsimulated/floor{icon_state = "asteroid"; name = "dust"},/area/planet/clown) "cKa" = (/obj/item/weapon/pickaxe,/turf/unsimulated/floor{icon_state = "asteroid"; name = "dust"},/area/planet/clown) @@ -8989,7 +8989,7 @@ "dqS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/disposal) "dqT" = (/obj/machinery/conveyor{dir = 1; id = "garbage"},/obj/effect/sign/vacuum{pixel_x = -32},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/disposal) "dqU" = (/turf/space,/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l (WEST)"; icon_state = "propulsion_l"; dir = 8},/turf/simulated/shuttle/wall{dir = 3; icon_state = "swall_f10"; layer = 2; tag = "icon-swall_f10"},/area/shuttle/transport1/centcom) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa