diff --git a/code/controllers/subsystem/shuttles.dm b/code/controllers/subsystem/shuttles.dm index dd6140f6eb..924b77bdb1 100644 --- a/code/controllers/subsystem/shuttles.dm +++ b/code/controllers/subsystem/shuttles.dm @@ -279,6 +279,8 @@ var/datum/controller/subsystem/shuttle/SSshuttle log_game("There is no means of calling the shuttle anymore. Shuttle automatically called.") message_admins("All the communications consoles were destroyed and all AIs are inactive. Shuttle called.") + + /datum/controller/subsystem/shuttle/proc/registerHostileEnvironment(datum/bad) hostileEnvironments[bad] = TRUE checkHostileEnvironment() @@ -349,6 +351,14 @@ var/datum/controller/subsystem/shuttle/SSshuttle if(!(M in transit_requesters)) transit_requesters += M +/datum/controller/subsystem/shuttle/proc/autoEnd() + if(world.time > 108000 && EMERGENCY_IDLE_OR_RECALLED) //3 hours + SSshuttle.emergency.request(null, 1.5) + priority_announce("The shift has come to an end and the shuttle called.") + log_game("Round time limit reached. Shuttle has been auto-called.") + message_admins("Round time limit reached. Shuttle called.") + + /datum/controller/subsystem/shuttle/proc/generate_transit_dock(obj/docking_port/mobile/M) // First, determine the size of the needed zone // Because of shuttle rotation, the "width" of the shuttle is not diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 9ffebe0911..0e228b0f3c 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -125,6 +125,7 @@ var/datum/controller/subsystem/ticker/ticker check_queue() check_maprotate() scripture_states = scripture_unlock_alert(scripture_states) + SSshuttle.autoEnd() if(!mode.explosion_in_progress && mode.check_finished() || force_ending) current_state = GAME_STATE_FINISHED diff --git a/code/controllers/subsystem/timer.dm b/code/controllers/subsystem/timer.dm index 35ed031ba2..c3bcb0e9b0 100644 --- a/code/controllers/subsystem/timer.dm +++ b/code/controllers/subsystem/timer.dm @@ -79,12 +79,12 @@ var/datum/controller/subsystem/timer/SStimer do var/datum/callback/callBack = timer.callBack if (!callBack) + message_admins("The timer SS has crashed because a timer did not return a callback. MC restarted automatically. Timer hash: [timer.hash]") qdel(timer) bucket_resolution = null //force bucket recreation - CRASH("Invalid timer: timer.timeToRun=[timer.timeToRun]||QDELETED(timer)=[QDELETED(timer)]||world.time=[world.time]||head_offset=[head_offset]||practical_offset=[practical_offset]||timer.spent=[timer.spent]") - //Temporary fix Recreate_MC() - message_admins("The timer SS has crashed. A full report can be found in the runtime viewer. MC restarted automatically.") + //I really don't know if I should keep this crash log in; I feel like it might cause problems. +// CRASH("Invalid timer: timer.timeToRun=[timer.timeToRun]||QDELETED(timer)=[QDELETED(timer)]||world.time=[world.time]||head_offset=[head_offset]||practical_offset=[practical_offset]||timer.spent=[timer.spent]") if (!timer.spent) spent += timer diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 8345f3346c..ecad2dd215 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -184,6 +184,16 @@ for(var/i in 1 to 5) new /obj/item/weapon/reagent_containers/hypospray/medipen/stimpack(src) +/obj/item/weapon/storage/box/medipens/survival + name = "Survival pen bundle" + desc = "a box with several survival pens inside, welcome to immortality!!" + illustration = "syringe" + +/obj/item/weapon/storage/box/medipens/survival/New() + ..() + for(var/i in 1 to 5) + new /obj/item/weapon/reagent_containers/hypospray/medipen/survival(src) + /obj/item/weapon/storage/box/beakers name = "box of beakers" illustration = "beaker" diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 74ee5f9e47..20a57f2d0e 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -133,7 +133,6 @@ var/list/preferences_datums = list() //Mob preview var/icon/preview_icon = null - var/icon/nude_preview_icon = null //Jobs, uses bitflags var/job_civilian_high = 0 diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm index 54d158386c..b33f1c29d5 100644 --- a/code/modules/clothing/chameleon.dm +++ b/code/modules/clothing/chameleon.dm @@ -423,6 +423,7 @@ var/list/ammo_copy_vars var/list/gun_copy_vars var/badmin_mode = FALSE + var/static/list/blacklisted_vars = list("locs", "loc", "contents", "x", "y", "z") /obj/item/weapon/gun/energy/laser/chameleon/New() ..() @@ -449,13 +450,18 @@ chameleon_ammo_vars = list() chameleon_gun_vars = list() chameleon_projectile_vars = list() - for(var/V in chambered.vars) - chambered.vars[V] = initial(chambered.vars[V]) - qdel(chambered.BB) + if(chambered) + for(var/v in ammo_copy_vars) + if(v in blacklisted_vars) //Just in case admins go crazy. + continue + chambered.vars[v] = initial(chambered.vars[v]) + for(var/v in gun_copy_vars) + if(v in blacklisted_vars) + continue + vars[v] = initial(vars[v]) + if(chambered.BB) + qdel(chambered.BB) chambered.newshot() - for(var/V in vars) - vars[V] = initial(vars[V]) - /obj/item/weapon/gun/energy/laser/chameleon/proc/set_chameleon_ammo(obj/item/ammo_casing/AC, passthrough = TRUE, reset = FALSE) if(!istype(AC)) @@ -464,7 +470,7 @@ for(var/V in ammo_copy_vars) if(AC.vars[V]) chameleon_ammo_vars[V] = AC.vars[V] - if(chambered.vars[V]) + if(chambered && chambered.vars[V]) chambered.vars[V] = AC.vars[V] if(passthrough) var/obj/item/projectile/P = AC.BB diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index 3f5d284fcf..ea64e5b912 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -51,6 +51,10 @@ new /datum/data/mining_equipment("Drone Ranged Upgrade",/obj/item/device/mine_bot_ugprade/cooldown, 600), new /datum/data/mining_equipment("Drone AI Upgrade", /obj/item/slimepotion/sentience/mining, 1000), new /datum/data/mining_equipment("Jump Boots", /obj/item/clothing/shoes/bhop, 2500), + new /datum/data/mining_equipment("Survival Knife", /obj/item/weapon/kitchen/knife/combat/survival, 350), + new /datum/data/mining_equipment("Survival Pen Economy Pack",/obj/item/weapon/storage/box/medipens/survival, 2000), + new /datum/data/mining_equipment("Stimpack", /obj/item/weapon/reagent_containers/hypospray/medipen/stimpack, 250), + new /datum/data/mining_equipment("Stimpack Economy Pack",/obj/item/weapon/storage/box/medipens/utility, 1000) ) /datum/data/mining_equipment diff --git a/tgstation.dme b/tgstation.dme index 767886c540..46d56db0e0 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -14,8 +14,8 @@ // BEGIN_INCLUDE #include "_maps\basemap.dm" -#include "_maps\citadelstation.dm" #include "_maps\loadallmaps.dm" +#include "_maps\tgstation2.dm" #include "code\_compile_options.dm" #include "code\world.dm" #include "code\__DATASTRUCTURES\heap.dm"