diff --git a/code/ZAS/ZAS_Zones.dm b/code/ZAS/ZAS_Zones.dm
index 17867abf266..a6d76a91f70 100644
--- a/code/ZAS/ZAS_Zones.dm
+++ b/code/ZAS/ZAS_Zones.dm
@@ -409,7 +409,7 @@ zone/proc/Rebuild()
//
var/list/turfs_to_consider = contents.Copy()
- while(!sample.CanPass(null, sample, 1.5, 1))
+ while(!sample || !sample.CanPass(null, sample, 1.5, 1))
if(sample)
turfs_to_consider.Remove(sample)
sample = locate() in turfs_to_consider
diff --git a/code/controllers/_DynamicAreaLighting_TG.dm b/code/controllers/_DynamicAreaLighting_TG.dm
index c8f52ef9365..baed6adaf4f 100644
--- a/code/controllers/_DynamicAreaLighting_TG.dm
+++ b/code/controllers/_DynamicAreaLighting_TG.dm
@@ -236,18 +236,24 @@ turf/proc/update_lumcount(amount)
turf/proc/shift_to_subarea()
lighting_changed = 0
-
var/area/Area = loc
+
if(!istype(Area) || !Area.lighting_use_dynamic) return
// change the turf's area depending on its brightness
// restrict light to valid levels
var/light = min(max(round(lighting_lumcount,1),0),lighting_controller.lighting_states)
- var/new_tag = "[Area.type]sd_L[light]"
+
+ var/find = findtextEx(Area.tag, "sd_L")
+ var/new_tag = copytext(Area.tag, 1, find)
+ new_tag += "sd_L[light]"
if(Area.tag!=new_tag) //skip if already in this area
+
var/area/A = locate(new_tag) // find an appropriate area
+
if(!A)
+
A = new Area.type() // create area if it wasn't found
// replicate vars
for(var/V in Area.vars)
@@ -362,6 +368,7 @@ atom
return brightness
+
#undef LIGHTING_MAX_LUMINOSITY
#undef LIGHTING_MAX_LUMINOSITY_MOB
#undef LIGHTING_LAYER
diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm
index ea7727b1bb9..a57e5af2665 100755
--- a/code/datums/supplypacks.dm
+++ b/code/datums/supplypacks.dm
@@ -618,8 +618,7 @@
"/obj/item/weapon/reagent_containers/glass/paint/remover",
"/obj/item/weapon/wrapping_paper",
"/obj/item/weapon/wrapping_paper",
- "/obj/item/weapon/wrapping_paper",
- "/obj/item/weapon/contraband/poster")
+ "/obj/item/weapon/wrapping_paper")
cost = 5
containertype = "/obj/structure/closet/crate"
containername = "Arts and Crafts crate"
@@ -628,8 +627,9 @@
/datum/supply_packs/randomised/contraband
num_contained = 5
contains = list("/obj/item/seeds/bloodtomatoseed",
- "/obj/item/weapon/storage/pill_bottle/zoom",
- "/obj/item/weapon/storage/pill_bottle/happy",
+ //"/obj/item/weapon/storage/pill_bottle/zoom",
+ //"/obj/item/weapon/storage/pill_bottle/happy",,
+ "/obj/item/weapon/contraband/poster",
"/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe")
name = "Contraband crate"
cost = 30
@@ -659,12 +659,12 @@
"/obj/item/weapon/surgicaldrill",
"/obj/item/clothing/mask/breath/medical",
"/obj/item/weapon/tank/anesthetic",
- "/obj/item/weapon/FixOVein",
+ //"/obj/item/weapon/FixOVein",
"/obj/item/weapon/hemostat",
"/obj/item/weapon/scalpel",
- "/obj/item/weapon/surgical_tool/bonegel",
+ //"/obj/item/weapon/surgical_tool/bonegel",
"/obj/item/weapon/retractor",
- "/obj/item/weapon/surgical_tool/bonesetter",
+ //"/obj/item/weapon/surgical_tool/bonesetter",
"/obj/item/weapon/circular_saw")
cost = 25
containertype = "/obj/structure/closet/crate/secure"
diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm
index 23fd8ab112a..2549d62b2ff 100644
--- a/code/game/gamemodes/gameticker.dm
+++ b/code/game/gamemodes/gameticker.dm
@@ -313,7 +313,10 @@ var/global/datum/controller/gameticker/ticker
if(!delay_end)
sleep(restart_timeout)
- world.Reboot()
+ if(!delay_end)
+ world.Reboot()
+ else
+ world << "\blue An admin has delayed the round end"
else
world << "\blue An admin has delayed the round end"
diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm
index 5ce14b361ec..ce9a25b0602 100644
--- a/code/game/objects/items/blueprints.dm
+++ b/code/game/objects/items/blueprints.dm
@@ -130,6 +130,12 @@ move an amendment to the drawing.
A.power_light = 0
A.power_environ = 0
move_turfs_to_area(turfs, A)
+
+ A.always_unpowered = 0
+ for(var/turf/T in A.contents)
+ T.lighting_changed = 1
+ lighting_controller.changed_turfs += T
+
spawn(5)
//ma = A.master ? "[A.master]" : "(null)"
//world << "DEBUG: create_area(5):
A.name=[A.name]
A.tag=[A.tag]
A.master=[ma]"
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index 791b6d2c172..315dd7363e5 100644
--- a/code/game/turfs/turf.dm
+++ b/code/game/turfs/turf.dm
@@ -213,12 +213,12 @@
/turf/proc/ReplaceWithFloor(explode=0)
var/prior_icon = icon_old
var/old_dir = dir
- var/aoxy = 0//Holders to assimilate air from nearby turfs
+ /*var/aoxy = 0//Holders to assimilate air from nearby turfs
var/anitro = 0
var/aco = 0
var/atox = 0
var/atemp = 0
- var/turf_count = 0
+ var/turf_count = 0*/
var/old_lumcount = lighting_lumcount - initial(lighting_lumcount)
var/turf/simulated/floor/W = new /turf/simulated/floor( locate(src.x, src.y, src.z) )
@@ -228,6 +228,7 @@
lighting_controller.changed_turfs += W
//////Assimilate Air//////
+ /*
for(var/direction in cardinal)//Only use cardinals to cut down on lag
var/turf/T = get_step(src,direction)
if(istype(T,/turf/space))//Counted as no air
@@ -247,6 +248,7 @@
W.air.carbon_dioxide = (aco/max(turf_count,1))
W.air.toxins = (atox/max(turf_count,1))
W.air.temperature = (atemp/max(turf_count,1))//Trace gases can get bant
+ */
W.RemoveLattice()
W.dir = old_dir
@@ -259,12 +261,12 @@
/turf/proc/ReplaceWithPlating()
var/prior_icon = icon_old
var/old_dir = dir
- var/aoxy = 0//Holders to assimilate air from nearby turfs
+ /*var/aoxy = 0//Holders to assimilate air from nearby turfs
var/anitro = 0
var/aco = 0
var/atox = 0
var/atemp = 0
- var/turf_count = 0
+ var/turf_count = 0*/
//////Assimilate Air//////
var/old_lumcount = lighting_lumcount - initial(lighting_lumcount)
@@ -274,6 +276,7 @@
W.lighting_changed = 1
lighting_controller.changed_turfs += W
+ /*
for(var/direction in cardinal)
var/turf/T = get_step(src,direction)
if(istype(T,/turf/space))
@@ -293,6 +296,7 @@
W.air.carbon_dioxide = (aco/max(turf_count,1))
W.air.toxins = (atox/max(turf_count,1))
W.air.temperature = (atemp/max(turf_count,1))
+ */
W.RemoveLattice()
W.dir = old_dir
@@ -321,6 +325,11 @@
/turf/proc/ReplaceWithSpace()
var/old_dir = dir
+ var/zone/Z
+ if(src.zone)
+ Z = src.zone
+ Z.RemoveTurf(src)
+
var/old_lumcount = lighting_lumcount - initial(lighting_lumcount)
var/turf/space/S = new /turf/space( locate(src.x, src.y, src.z) )
S.lighting_lumcount += old_lumcount
@@ -328,6 +337,11 @@
S.lighting_changed = 1
lighting_controller.changed_turfs += S
+ if(Z)
+ //Z.AddTurf(S)
+ for(var/turf/simulated/T in orange(src,1))
+ air_master.tiles_to_update.Add(T)
+
S.dir = old_dir
S.levelupdate()
return S
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 7a14927c057..2d956d6928a 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -799,10 +799,16 @@ var/global/floorIsLava = 0
/datum/admins/proc/delay()
set category = "Server"
- set desc="Delay the game start"
+ set desc="Delay the game start/end"
set name="Delay"
if (!ticker || ticker.current_state != GAME_STATE_PREGAME)
- return alert("Too late... The game has already started!", null, null, null, null, null)
+ if (src.rank in list("Badmin", "Game Admin", "Game Master"))
+ ticker.delay_end = !ticker.delay_end
+ log_admin("[key_name(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].")
+ message_admins("\blue [key_name(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].", 1)
+ else
+ usr << "\red You are not a high enough rank."
+ return //alert("Round end delayed", null, null, null, null, null)
going = !( going )
if (!( going ))
world << "The game start has been delayed."
diff --git a/code/modules/clothing/spacesuits/rig.dm b/code/modules/clothing/spacesuits/rig.dm
index ff07fc01983..ba900e828f2 100644
--- a/code/modules/clothing/spacesuits/rig.dm
+++ b/code/modules/clothing/spacesuits/rig.dm
@@ -102,6 +102,7 @@
armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 60)
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen)
+
//Security rig
/obj/item/clothing/head/helmet/space/rig/security
name = "security hardsuit helmet"
@@ -118,6 +119,7 @@
armor = list(melee = 60, bullet = 10, laser = 30, energy = 5, bomb = 45, bio = 100, rad = 10)
allowed = list(/obj/item/weapon/gun/energy/laser, /obj/item/weapon/gun/energy/pulse_rifle, /obj/item/device/flashlight, /obj/item/weapon/tank/emergency_oxygen, /obj/item/weapon/gun/energy/taser, /obj/item/weapon/melee/baton)
+
//Wizard Rig
/obj/item/clothing/head/helmet/space/rig/wizard
name = "gem-encrusted hardsuit helmet"
@@ -143,21 +145,10 @@
icon_state = "rig0-atmos"
item_state = "atmos_helm"
color = "atmos"
- flags = STOPSPRESSUREDMAGE
armor = list(melee = 40, bullet = 0, laser = 0, energy = 0, bomb = 25, bio = 100, rad = 0)
- gas_transfer_coefficient = 0
- permeability_coefficient = 0
- heat_protection = HEAD
- max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECITON_TEMPERATURE
/obj/item/clothing/suit/space/rig/atmos
icon_state = "rig-atmos"
name = "atmospherics pressure suit"
item_state = "atmos_hardsuit"
- flags = STOPSPRESSUREDMAGE
armor = list(melee = 40, bullet = 0, laser = 0, energy = 0, bomb = 25, bio = 100, rad = 0)
- gas_transfer_coefficient = 0
- permeability_coefficient = 0
- slowdown = 1.0
- heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
- max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECITON_TEMPERATURE
\ No newline at end of file
diff --git a/config/admins.txt b/config/admins.txt
index 4467f45452c..e7a1cb9781d 100644
--- a/config/admins.txt
+++ b/config/admins.txt
@@ -3,7 +3,9 @@ arcalane - Game Admin
asanadas - Game Admin
bobbehluvspropane - Game Admin
cacophony - Game Admin
+caelaislinn - Game Master
cajoes - Game Admin
+chinsky - Game Master
cib - Retired Admin
compactninja - Retired Admin
duntadaman - Game Admin
diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi
index 3dae01cfc85..f165af0475d 100644
Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ
diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi
index 1a3675622fc..32e655af310 100644
Binary files a/icons/obj/drinks.dmi and b/icons/obj/drinks.dmi differ