diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm
index 01a6b2a46d..1d853c332b 100644
--- a/code/controllers/configuration.dm
+++ b/code/controllers/configuration.dm
@@ -5,6 +5,10 @@
#define SECURITY_HAS_MAINT_ACCESS 2
#define EVERYONE_HAS_MAINT_ACCESS 4
+GLOBAL_VAR_INIT(config_dir, "config/")
+GLOBAL_PROTECT(config_dir)
+
+
/datum/configuration/can_vv_get(var_name)
var/static/list/banned_gets = list("autoadmin", "autoadmin_rank")
if (var_name in banned_gets)
@@ -295,19 +299,20 @@
Reload()
/datum/configuration/proc/Reload()
- load("config/config.txt")
- load("config/comms.txt", "comms")
- load("config/game_options.txt","game_options")
- load("config/policies.txt", "policies")
- loadsql("config/dbconfig.txt")
+ load("config.txt")
+ load("comms.txt", "comms")
+ load("game_options.txt","game_options")
+ load("policies.txt", "policies")
+ loadsql("dbconfig.txt")
reload_custom_roundstart_items_list()
if (maprotation)
- loadmaplist("config/maps.txt")
+ loadmaplist("maps.txt")
// apply some settings from config..
GLOB.abandon_allowed = respawn
/datum/configuration/proc/load(filename, type = "config") //the type can also be game_options, in which case it uses a different switch. not making it separate to not copypaste code - Urist
+ filename = "[GLOB.config_dir][filename]"
var/list/Lines = world.file2list(filename)
for(var/t in Lines)
@@ -822,6 +827,7 @@
WRITE_FILE(GLOB.config_error_log, "Unknown setting in configuration: '[name]'")
/datum/configuration/proc/loadmaplist(filename)
+ filename = "[GLOB.config_dir][filename]"
var/list/Lines = world.file2list(filename)
var/datum/map_config/currentmap = null
@@ -874,6 +880,7 @@
/datum/configuration/proc/loadsql(filename)
+ filename = "[GLOB.config_dir][filename]"
var/list/Lines = world.file2list(filename)
for(var/t in Lines)
if(!t)
diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm
index 10e10e878a..7c1904d2fe 100644
--- a/code/game/machinery/buttons.dm
+++ b/code/game/machinery/buttons.dm
@@ -105,8 +105,8 @@
/obj/machinery/button/emag_act(mob/user)
if(emagged)
return
- req_access = null
- req_one_access = null
+ req_access = list()
+ req_one_access = list()
playsound(src, "sparks", 100, 1)
emagged = TRUE
diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm
index 14efd0a610..79c4971665 100644
--- a/code/game/mecha/mech_fabricator.dm
+++ b/code/game/mecha/mech_fabricator.dm
@@ -76,7 +76,7 @@
if(emagged)
return
emagged = TRUE
- req_access = null
+ req_access = list()
say("DB error \[Code 0x00F1\]")
sleep(10)
say("Attempting auto-repair...")
diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm
index ea1f1f5214..5600fc16f3 100644
--- a/code/game/objects/structures/watercloset.dm
+++ b/code/game/objects/structures/watercloset.dm
@@ -535,6 +535,7 @@
name = "puddle"
desc = "A puddle used for washing one's hands and face."
icon_state = "puddle"
+ resistance_flags = UNACIDABLE
/obj/structure/sink/puddle/attack_hand(mob/M)
icon_state = "puddle-splash"
@@ -546,6 +547,10 @@
. = ..()
icon_state = "puddle"
+/obj/structure/sink/puddle/deconstruct(disassembled = TRUE)
+ qdel(src)
+
+
//Shower Curtains//
//Defines used are pre-existing in layers.dm//
diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm
index d15c7dd5f4..5cbbd1d3d5 100644
--- a/code/modules/clothing/head/misc_special.dm
+++ b/code/modules/clothing/head/misc_special.dm
@@ -125,17 +125,18 @@
desc = "A pair of kitty ears. Meow!"
icon_state = "kitty"
color = "#999999"
- dynamic_hair_suffix = ""
+ dynamic_hair_suffix = ""
dog_fashion = /datum/dog_fashion/head/kitty
-/obj/item/clothing/head/kitty/equipped(mob/user, slot)
- if(user && slot == slot_head)
+/obj/item/clothing/head/kitty/equipped(mob/living/carbon/human/user, slot)
+ if(ishuman(user) && slot == slot_head)
update_icon(user)
+ user.update_inv_head() //Color might have been changed by update_icon.
..()
/obj/item/clothing/head/kitty/update_icon(mob/living/carbon/human/user)
- if(istype(user))
+ if(ishuman(user))
add_atom_colour("#[user.hair_color]", FIXED_COLOUR_PRIORITY)
/obj/item/clothing/head/kitty/genuine
@@ -151,7 +152,7 @@
flags_inv = 0
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
brightness_on = 1 //luminosity when on
- dynamic_hair_suffix = ""
+ dynamic_hair_suffix = ""
dog_fashion = /datum/dog_fashion/head/reindeer
diff --git a/code/modules/hydroponics/beekeeping/beebox.dm b/code/modules/hydroponics/beekeeping/beebox.dm
index b01892e636..316b2298ca 100644
--- a/code/modules/hydroponics/beekeeping/beebox.dm
+++ b/code/modules/hydroponics/beekeeping/beebox.dm
@@ -25,7 +25,7 @@
/obj/structure/beebox
name = "apiary"
- desc = "Dr Miles Manners is just your average wasp-themed super hero by day, but by night he becomes DR BEES!"
+ desc = "Dr. Miles Manners is just your average wasp-themed super hero by day, but by night he becomes DR. BEES!"
icon = 'icons/obj/hydroponics/equipment.dmi'
icon_state = "beebox"
anchored = TRUE
@@ -45,9 +45,7 @@
/obj/structure/beebox/Destroy()
STOP_PROCESSING(SSobj, src)
bees.Cut()
- bees = null
honeycombs.Cut()
- honeycombs = null
queen_bee = null
return ..()
@@ -151,7 +149,7 @@
honey_frames += HF
else
to_chat(user, "There's no room for any more frames in the apiary!")
-
+ return
if(istype(I, /obj/item/wrench))
if(default_unfasten_wrench(user, I, time = 20))
return
@@ -187,6 +185,9 @@
to_chat(user, "The queen bee disappeared! Disappearing bees have been in the news lately...")
qdel(qb)
+ return
+
+ ..()
/obj/structure/beebox/attack_hand(mob/user)
@@ -203,8 +204,10 @@
bees = TRUE
if(bees)
visible_message("[user] disturbs the bees!")
+ else
+ visible_message("[user] disturbs the [name] to no effect!")
else
- var/option = alert(user, "What action do you wish to perform?","Apiary","Remove a Honey Frame","Remove the Queen Bee")
+ var/option = alert(user, "What action do you wish to perform?","Apiary","Remove a Honey Frame","Remove the Queen Bee", "Cancel")
if(!Adjacent(user))
return
switch(option)
@@ -244,3 +247,13 @@
QB.loc = get_turf(src)
visible_message("[user] removes the queen from the apiary.")
queen_bee = null
+
+/obj/structure/beebox/deconstruct(disassembled = TRUE)
+ new /obj/item/stack/sheet/mineral/wood (loc, 20)
+ for(var/mob/living/simple_animal/hostile/poison/bees/B in bees)
+ if(B.loc == src)
+ B.loc = get_turf(src)
+ for(var/obj/item/honey_frame/HF in honey_frames)
+ if(HF.loc == src)
+ HF.loc = get_turf(src)
+ qdel(src)
\ No newline at end of file
diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm
index 4c7af3250b..66a15ac705 100644
--- a/code/modules/hydroponics/hydroponics.dm
+++ b/code/modules/hydroponics/hydroponics.dm
@@ -915,9 +915,11 @@
name = "soil"
icon = 'icons/obj/hydroponics/equipment.dmi'
icon_state = "soil"
+ circuit = null
density = FALSE
use_power = NO_POWER_USE
- unwrenchable = 0
+ flags_1 = NODECONSTRUCT_1
+ unwrenchable = FALSE
/obj/machinery/hydroponics/soil/update_icon_hoses()
return // Has no hoses
diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm
index 4d3c468191..562b51945b 100644
--- a/code/modules/mob/living/silicon/silicon.dm
+++ b/code/modules/mob/living/silicon/silicon.dm
@@ -36,11 +36,11 @@
var/d_hud = DATA_HUD_DIAGNOSTIC //There is only one kind of diag hud
var/law_change_counter = 0
- var/obj/machinery/camera/builtInCamera = null
- var/updating = FALSE //portable camera camerachunk update
+ var/obj/machinery/camera/builtInCamera = null
+ var/updating = FALSE //portable camera camerachunk update
/mob/living/silicon/Initialize()
- . = ..()
+ . = ..()
GLOB.silicon_mobs += src
var/datum/atom_hud/data/diagnostic/diag_hud = GLOB.huds[DATA_HUD_DIAGNOSTIC]
diag_hud.add_to_hud(src)
@@ -56,7 +56,7 @@
/mob/living/silicon/Destroy()
radio = null
aicamera = null
- QDEL_NULL(builtInCamera)
+ QDEL_NULL(builtInCamera)
GLOB.silicon_mobs -= src
return ..()
@@ -310,7 +310,7 @@
else //For department channels, if any, given by the internal radio.
for(var/key in GLOB.department_radio_keys)
if(GLOB.department_radio_keys[key] == Autochan)
- radiomod = key
+ radiomod = ":" + key
break
to_chat(src, "Automatic announcements [Autochan == "None" ? "will not use the radio." : "set to [Autochan]."]")
diff --git a/code/modules/mob/living/simple_animal/friendly/butterfly.dm b/code/modules/mob/living/simple_animal/friendly/butterfly.dm
index 07222ade05..9c16c2a924 100644
--- a/code/modules/mob/living/simple_animal/friendly/butterfly.dm
+++ b/code/modules/mob/living/simple_animal/friendly/butterfly.dm
@@ -28,3 +28,6 @@
. = ..()
var/newcolor = rgb(rand(0, 255), rand(0, 255), rand(0, 255))
add_atom_colour(newcolor, FIXED_COLOUR_PRIORITY)
+
+/mob/living/simple_animal/butterfly/bee_friendly()
+ return TRUE //treaty signed at the Beeneeva convention
diff --git a/code/modules/shuttle/computer.dm b/code/modules/shuttle/computer.dm
index bdaac1d3cb..a3ebba05a1 100644
--- a/code/modules/shuttle/computer.dm
+++ b/code/modules/shuttle/computer.dm
@@ -78,7 +78,7 @@
/obj/machinery/computer/shuttle/emag_act(mob/user)
if(emagged)
return
- req_access = null
+ req_access = list()
emagged = TRUE
to_chat(user, "You fried the consoles ID checking system.")