diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index d03909fefbe..7bcb54660e8 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -792,7 +792,7 @@ datum/mind
if(src in ticker.mode.wizards)
ticker.mode.wizards -= src
special_role = null
- current.spellremove(current, config.feature_object_spell_system? "object":"verb")
+ current.spellremove(current)
current.faction = list("Station")
current << "\red You have been brainwashed! You are no longer a wizard!"
log_admin("[key_name_admin(usr)] has de-wizard'ed [current].")
diff --git a/code/datums/spells/fake_gib.dm b/code/datums/spells/fake_gib.dm
new file mode 100644
index 00000000000..275bdef67bf
--- /dev/null
+++ b/code/datums/spells/fake_gib.dm
@@ -0,0 +1,17 @@
+/obj/effect/proc_holder/spell/wizard/targeted/fake_gib
+ name = "Disintegrate"
+ desc = "This spell instantly kills somebody adjacent to you with the vilest of magick."
+
+ school = "conjuration"
+ charge_max = 20
+ clothes_req = 0
+ invocation = "EI NATH"
+ invocation_type = "shout"
+ range = -1
+ include_user = 1
+ cooldown_min = 5 //25 deciseconds reduction per rank
+
+ sparks_spread = 3
+ sparks_amt = 1
+
+ icon_power_button = "spell_disintegrate"
\ No newline at end of file
diff --git a/code/game/dna/genes/disabilities.dm b/code/game/dna/genes/disabilities.dm
index 3fe9c14ae73..eaf4500359e 100644
--- a/code/game/dna/genes/disabilities.dm
+++ b/code/game/dna/genes/disabilities.dm
@@ -67,7 +67,7 @@
disability=EPILEPSY
New()
- block=HEADACHEBLOCK
+ block=EPILEPSYBLOCK
/datum/dna/gene/disability/cough
name="Coughing"
diff --git a/code/game/gamemodes/setupgame.dm b/code/game/gamemodes/setupgame.dm
index 1a81fa9a704..96b1a3d7920 100644
--- a/code/game/gamemodes/setupgame.dm
+++ b/code/game/gamemodes/setupgame.dm
@@ -49,7 +49,6 @@
NERVOUSBLOCK = getAssignedBlock("NERVOUS", numsToAssign)
// Bay muts
- HEADACHEBLOCK = getAssignedBlock("HEADACHE", numsToAssign)
NOBREATHBLOCK = getAssignedBlock("NOBREATH", numsToAssign, DNA_HARD_BOUNDS, good=1)
REMOTEVIEWBLOCK = getAssignedBlock("REMOTEVIEW", numsToAssign, DNA_HARDER_BOUNDS, good=1)
REGENERATEBLOCK = getAssignedBlock("REGENERATE", numsToAssign, DNA_HARDER_BOUNDS, good=1)
diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm
index f788b8145e8..150911e29d6 100644
--- a/code/game/gamemodes/traitor/traitor.dm
+++ b/code/game/gamemodes/traitor/traitor.dm
@@ -98,7 +98,7 @@
traitor.objectives += block_objective
else
- if(!exchange_blue && traitors.len >= 5) //Set up an exchange if there are enough traitors
+ if(!exchange_blue && traitors.len >= 5 && name != "AutoTraitor") //Set up an exchange if there are enough traitors, turned off during autotraitor temporarily due to bugs.
if(!exchange_red)
exchange_red = traitor
else
diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm
index b4724e42414..d546970870d 100644
--- a/code/game/gamemodes/wizard/spellbook.dm
+++ b/code/game/gamemodes/wizard/spellbook.dm
@@ -192,7 +192,7 @@
var/area/wizard_station/A = locate()
if(usr in A.contents)
uses = max_uses
- H.spellremove(usr)
+ H.spellremove(usr,0)
temp = "All spells have been removed. You may now memorize a new set of spells."
feedback_add_details("wizard_spell_learned","UM") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
else
@@ -585,3 +585,10 @@
..()
user <<"[src] suddenly vanishes!"
qdel(src)
+
+
+/obj/item/weapon/spellbook/oneuse/fake_gib
+ spell = /obj/effect/proc_holder/spell/wizard/targeted/fake_gib
+ spellname = "disintegrate"
+ icon_state ="bookfireball"
+ desc = "This book feels like it will rip stuff apart."
\ No newline at end of file
diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm
index efd37412bb7..cd59d23d0b5 100644
--- a/code/game/gamemodes/wizard/wizard.dm
+++ b/code/game/gamemodes/wizard/wizard.dm
@@ -273,8 +273,9 @@
//OTHER PROCS
//To batch-remove wizard spells. Linked to mind.dm.
-/mob/proc/spellremove(var/mob/M as mob)
+/mob/proc/spellremove(var/mob/M as mob, var/removeallspells=1)
for(var/obj/effect/proc_holder/spell/wizard/spell_to_remove in src.spell_list)
+ if (spell_to_remove.name == "Artificer" && !removeallspells) continue
del(spell_to_remove)
update_power_buttons()
diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm
index e991c569706..98747fbb3a6 100644
--- a/code/game/machinery/adv_med.dm
+++ b/code/game/machinery/adv_med.dm
@@ -527,7 +527,6 @@
src.printing = 1
for(var/mob/O in viewers(usr))
O.show_message("\blue \the [src] rattles and prints out a sheet of paper.", 1)
- sleep(20)
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( src.loc )
P.info = "
Body Scan - [href_list["name"]]
"
P.info += "Time of scan: [worldtime2text(world.time)]
"
diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm
index 7c7ea673335..968a166a153 100644
--- a/code/game/machinery/atmoalter/canister.dm
+++ b/code/game/machinery/atmoalter/canister.dm
@@ -9,7 +9,51 @@
var/valve_open = 0
var/release_pressure = ONE_ATMOSPHERE
- var/_color = "yellow"
+ var/list/_color = list("yellow", null, null, null)//variable that stores colours
+ var/list/decals = list() // var that stores the decals, NOTE: Not the actual POSSIBLE decals, but the ones currently used
+ var/list/oldcolor = list()//lists for check_change()
+ var/list/olddecals = list()
+ var/list/possibledecals = list( //var that stores all possible decals, here for adminbus I guess? NOTE: LEAVE "done" IN HERE
+ "Low temperature canister" = "cold",
+ "High temperature canister" = "hot",
+ "Plasma containing canister" = "plasma",
+ "Done" = "DONE"
+ )
+ var/list/possiblemaincolor = list( //these lists contain the possible colors of a canister, here for adminbus
+ "\[N2O\]" = "redws",
+ "\[N2\]" = "red",
+ "\[O2\]" = "blue",
+ "\[Toxin (Bio)\]" = "orange",
+ "\[CO2\]" = "black",
+ "\[Air\]" = "grey",
+ "\[CAUTION\]" = "yellow",
+ "\[SPECIAL\]" = "whiters"
+ )
+ var/list/possibleseccolor = list( // no point in having the N2O and "whiters" ones in these lists
+ "\[N2\]" = "red-c",
+ "\[O2\]" = "blue-c",
+ "\[Toxin (Bio)\]" = "orange-c",
+ "\[CO2\]" = "black-c",
+ "\[Air\]" = "grey-c",
+ "\[CAUTION\]" = "yellow-c"
+ )
+ var/list/possibletertcolor = list(
+ "\[N2\]" = "red-c-1",
+ "\[O2\]" = "blue-c-1",
+ "\[Toxin (Bio)\]" = "orange-c-1",
+ "\[CO2\]" = "black-c-1",
+ "\[Air\]" = "grey-c-1",
+ "\[CAUTION\]" = "yellow-c-1"
+ )
+ var/list/possiblequartcolor = list(
+ "\[N2\]" = "red-c-2",
+ "\[O2\]" = "blue-c-2",
+ "\[Toxin (Bio)\]" = "orange-c-2",
+ "\[CO2\]" = "black-c-2",
+ "\[Air\]" = "grey-c-2",
+ "\[CAUTION\]" = "yellow-c-2"
+ )
+
var/can_label = 1
var/filled = 0.5
pressure_resistance = 7*ONE_ATMOSPHERE
@@ -23,37 +67,38 @@
/obj/machinery/portable_atmospherics/canister/sleeping_agent
name = "Canister: \[N2O\]"
icon_state = "redws"
- _color = "redws"
+ _color = list("redsw", null, null, null)
can_label = 0
/obj/machinery/portable_atmospherics/canister/nitrogen
name = "Canister: \[N2\]"
icon_state = "red"
- _color = "red"
+ _color = list("red", null, null, null)
+ decals = list("plasma")
can_label = 0
/obj/machinery/portable_atmospherics/canister/oxygen
name = "Canister: \[O2\]"
icon_state = "blue"
- _color = "blue"
+ _color = list("blue", null, null, null)
can_label = 0
/obj/machinery/portable_atmospherics/canister/toxins
name = "Canister \[Toxin (Plasma)\]"
icon_state = "orange"
- _color = "orange"
+ _color = list("orange", null, null, null)
can_label = 0
/obj/machinery/portable_atmospherics/canister/carbon_dioxide
name = "Canister \[CO2\]"
icon_state = "black"
- _color = "black"
+ _color = list("black", null, null, null)
can_label = 0
/obj/machinery/portable_atmospherics/canister/air
name = "Canister \[Air\]"
icon_state = "grey"
- _color = "grey"
+ _color = list("grey", null, null, null)
can_label = 0
/obj/machinery/portable_atmospherics/canister/custom_mix
name = "Canister \[Custom\]"
icon_state = "whiters"
- _color = "whiters"
+ _color = list("whiters", null, null, null)
can_label = 0
/obj/machinery/portable_atmospherics/canister/proc/check_change()
@@ -74,6 +119,11 @@
else
update_flag |= 32
+ if(oldcolor != _color || olddecals != decals)
+ update_flag |= 64
+ olddecals = decals
+ oldcolor = _color
+
if(update_flag == old_flag)
return 1
else
@@ -88,20 +138,33 @@ update_flag
8 = tank_pressure < ONE_ATMOS
16 = tank_pressure < 15*ONE_ATMOS
32 = tank_pressure go boom.
+64 = decals/colors got changed
*/
if (src.destroyed)
src.overlays = 0
- src.icon_state = text("[]-1", src._color)
+ src.icon_state = text("[]-1", src._color[1])//yes, I KNOW the colours don't reflect when the can's borked, whatever.
- if(icon_state != "[_color]")
- icon_state = "[_color]"
+ if(icon_state != src._color[1])
+ icon_state = src._color[1]
if(check_change()) //Returns 1 if no change needed to icons.
return
src.overlays = 0
+ if (_color[2])//COLORS!
+ overlays.Add(_color[2])
+
+ if (_color[3])
+ overlays.Add(_color[3])
+
+ if (_color[4])
+ overlays.Add(_color[4])
+
+ for(var/D in decals)
+ overlays.Add("decal-" + D)
+
if(update_flag & 1)
overlays += "can-open"
if(update_flag & 2)
@@ -333,21 +396,36 @@ update_flag
if (href_list["relabel"])
if (can_label)
- var/list/colors = list(\
- "\[N2O\]" = "redws", \
- "\[N2\]" = "red", \
- "\[O2\]" = "blue", \
- "\[Toxin (Plasma)\]" = "orange", \
- "\[CO2\]" = "black", \
- "\[Air\]" = "grey", \
- "\[CAUTION\]" = "yellow", \
- "\[Custom\]" = "whiters",\
+
+ var/label1 = input("Choose canister label", "Primary color") as null|anything in possiblemaincolor
+
+ var/label2 = input("Choose canister label", "Secondary color") as null|anything in possibleseccolor
+
+ var/label3 = input("Choose canister label", "Tertiary color") as null|anything in possibletertcolor
+
+ var/label4 = input("Choose canister label", "Quaternary color") as null|anything in possiblequartcolor
+
+ decals = list()
+
+ _color = list(
+ (label1 ? possiblemaincolor[label1] : color[1]),//if the user didn't specify a primary colour, keep the current one.
+ possibleseccolor[label2],
+ possibletertcolor[label3],
+ possiblequartcolor[label4]
)
- var/label = input("Choose canister label", "Gas canister") as null|anything in colors
- if (label)
- src._color = colors[label]
- src.icon_state = colors[label]
- src.name = "Canister: [label]"
+
+ decals = list()
+
+ var/list/tempposdecals = possibledecals
+ while (src && !src.gc_destroyed && usr)//allow the user to select (theoretically) INFINITE DECALS!!!
+ var/newdecal = input("Choose canister label", "Decal") as anything in tempposdecals
+ if (newdecal == "Done")
+ break
+ decals.Add(tempposdecals[newdecal])
+ tempposdecals.Remove(newdecal)
+
+ src.name = (input("Choose canister label", "Name") as text) + " canister"
+
src.add_fingerprint(usr)
update_icon()
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index 19e2cbfff35..f7eb7803fd4 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -44,7 +44,7 @@
component_parts += new /obj/item/stack/cable_coil(src, 1)
component_parts += new /obj/item/stack/cable_coil(src, 1)
RefreshParts()
-
+
/obj/machinery/clonepod/upgraded/New()
..()
component_parts = list()
@@ -66,7 +66,7 @@
for(var/obj/item/weapon/stock_parts/manipulator/P in component_parts)
speed_coeff += P.rating
heal_level = (efficiency * 15) + 10
-
+
//The return of data disks?? Just for transferring between genetics machine/cloning machine.
//TO-DO: Make the genetics machine accept them.
/obj/item/weapon/disk/data
@@ -261,9 +261,10 @@
H.dna.UpdateSE()
H.dna.UpdateUI()
+/* //let's not make people waste even more time after being cloned.
H.f_style = "Shaved"
if(R.dna.species == "Human") //no more xenos losing ears/tentacles
- H.h_style = pick("Bedhead", "Bedhead 2", "Bedhead 3")
+ H.h_style = pick("Bedhead", "Bedhead 2", "Bedhead 3") */
H.set_species(R.dna.species)
@@ -336,8 +337,8 @@
return
if(exchange_parts(user, W))
- return
-
+ return
+
if(istype(W, /obj/item/weapon/crowbar))
if(panel_open)
default_deconstruction_crowbar(W)
@@ -402,7 +403,7 @@
set name = "Eject Cloner"
set category = "Object"
set src in oview(1)
-
+
if(!usr)
return
if (usr.stat != 0)
@@ -429,7 +430,7 @@
if (src.locked)
user << "The cloning pod is locked!"
- return
+ return
/*
for(var/obj/O in src)
O.loc = src.loc
diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm
index 83aa3d30386..a3402129d88 100644
--- a/code/game/machinery/computer/arcade.dm
+++ b/code/game/machinery/computer/arcade.dm
@@ -30,6 +30,14 @@
/obj/item/toy/cards/deck = 2,
/obj/item/toy/carpplushie = 2,
/obj/item/toy/minimeteor = 2,
+ /obj/item/toy/redbutton = 2,
+ /obj/item/clothing/head/blob = 2,
+ /obj/item/weapon/id_decal/gold = 2,
+ /obj/item/weapon/id_decal/silver = 2,
+ /obj/item/weapon/id_decal/prisoner = 2,
+ /obj/item/weapon/id_decal/centcom = 2,
+ /obj/item/weapon/id_decal/emag = 2,
+ /obj/item/weapon/spellbook/oneuse/fake_gib = 2
)
/obj/machinery/computer/arcade/power_change()
diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm
index 7b5ba784ef8..eea611886da 100644
--- a/code/game/machinery/rechargestation.dm
+++ b/code/game/machinery/rechargestation.dm
@@ -22,13 +22,13 @@
component_parts += new /obj/item/weapon/cell/high(src)
RefreshParts()
build_icon()
-
+
/obj/machinery/recharge_station/upgraded/New()
..()
component_parts += new /obj/item/weapon/stock_parts/capacitor/super(src)
component_parts += new /obj/item/weapon/stock_parts/capacitor/super(src)
component_parts += new /obj/item/weapon/stock_parts/manipulator/pico(src)
- component_parts += new /obj/item/weapon/cell/hyper(src)
+ component_parts += new /obj/item/weapon/cell/hyper(src)
RefreshParts()
/obj/machinery/recharge_station/RefreshParts()
@@ -39,8 +39,8 @@
for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts)
repairs += M.rating - 1
for(var/obj/item/weapon/cell/C in component_parts)
- recharge_speed *= C.maxcharge / 10000
-
+ recharge_speed *= C.maxcharge / 10000
+
/obj/machinery/recharge_station/process()
if(!(NOPOWER|BROKEN))
return
@@ -65,8 +65,8 @@
if(occupant)
occupant.emp_act(severity)
go_out()
- ..(severity)
-
+ ..(severity)
+
/obj/machinery/recharge_station/proc/build_icon()
if(NOPOWER|BROKEN)
if(src.occupant)
@@ -80,15 +80,15 @@
if (istype(P, /obj/item/weapon/screwdriver))
if(src.occupant)
user << "The maintenance panel is locked."
- return
+ return
default_deconstruction_screwdriver(user, "borgdecon2", "borgcharger0", P)
- return
+ return
if(exchange_parts(user, P))
- return
-
- default_deconstruction_crowbar(P)
-
+ return
+
+ default_deconstruction_crowbar(P)
+
/obj/machinery/recharge_station/proc/process_occupant()
if(src.occupant)
if (istype(occupant, /mob/living/silicon/robot))
@@ -137,7 +137,7 @@
O:broken = 0
O:times_used = 0
O:icon_state = "flash"
- if(istype(O,/obj/item/weapon/gun/energy/taser/cyborg))
+ if(istype(O,/obj/item/weapon/gun/energy/disabler/cyborg))
if(O:power_supply.charge < O:power_supply.maxcharge)
O:power_supply.give(O:charge_cost)
O:update_icon()
diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm
index a35f3837021..3ff89c5fd60 100644
--- a/code/game/objects/items/bodybag.dm
+++ b/code/game/objects/items/bodybag.dm
@@ -35,6 +35,7 @@
icon_state = "bodybag_closed"
icon_closed = "bodybag_closed"
icon_opened = "bodybag_open"
+ sound = 'sound/items/zip.ogg'
var/item_path = /obj/item/bodybag
density = 0
diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm
index 66db8bfb189..23bed41262c 100644
--- a/code/game/objects/items/robot/robot_upgrades.dm
+++ b/code/game/objects/items/robot/robot_upgrades.dm
@@ -100,15 +100,15 @@
return 1
-/obj/item/borg/upgrade/tasercooler
- name = "robotic Rapid Taser Cooling Module"
- desc = "Used to cool a mounted taser, increasing the potential current in it and thus its recharge rate."
+/obj/item/borg/upgrade/disablercooler
+ name = "robotic Rapid Disabler Cooling Module"
+ desc = "Used to cool a mounted disabler, increasing the potential current in it and thus its recharge rate."
construction_cost = list("metal"=80000 , "glass"=6000 , "gold"= 2000, "diamond" = 500)
icon_state = "cyborg_upgrade3"
require_module = 1
-/obj/item/borg/upgrade/tasercooler/action(var/mob/living/silicon/robot/R)
+/obj/item/borg/upgrade/disablercooler/action(var/mob/living/silicon/robot/R)
if(..()) return 0
if(!istype(R.module, /obj/item/weapon/robot_module/security))
@@ -116,13 +116,13 @@
usr << "There's no mounting point for the module!"
return 0
- var/obj/item/weapon/gun/energy/taser/cyborg/T = locate() in R.module
+ var/obj/item/weapon/gun/energy/disabler/cyborg/T = locate() in R.module
if(!T)
T = locate() in R.module.contents
if(!T)
T = locate() in R.module.modules
if(!T)
- usr << "This robot has had its taser removed!"
+ usr << "This robot has had its disabler removed!"
return 0
if(T.recharge_time <= 2)
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index b1d0e0783fe..33858980b99 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -1100,4 +1100,28 @@ obj/item/toy/cards/deck/syndicate/black
icon = 'icons/obj/toy.dmi'
icon_state = "carpplushie"
w_class = 2.0
- flags = FPRINT | TABLEPASS
\ No newline at end of file
+ flags = FPRINT | TABLEPASS
+
+/*
+ * Toy big red button
+ */
+/obj/item/toy/redbutton
+ name = "big red button"
+ desc = "A big, plastic red button. Reads 'From HonkCo Pranks?' on the back."
+ icon = 'icons/obj/assemblies.dmi'
+ icon_state = "bigred"
+ w_class = 2.0
+ var/cooldown = 0
+
+/obj/item/toy/redbutton/attack_self(mob/user)
+ if (cooldown < world.time)
+ cooldown = (world.time + 300) // Sets cooldown at 30 seconds
+ user.visible_message("[user] presses the big red button.", "You press the button, it plays a loud noise!", "The button clicks loudly.")
+ playsound(src, 'sound/effects/explosionfar.ogg', 50, 0, 0)
+ for(var/mob/M in range(10, src)) // Checks range
+ if(!M.stat && !istype(M, /mob/living/silicon/ai)) // Checks to make sure whoever's getting shaken is alive/not the AI
+ sleep(8) // Short delay to match up with the explosion sound
+ shake_camera(M, 2, 1) // Shakes player camera 2 squares for 1 second.
+
+ else
+ user << "Nothing happens."
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm
index 1c7850ffa13..5a608dc8abe 100644
--- a/code/game/objects/items/weapons/cards_ids.dm
+++ b/code/game/objects/items/weapons/cards_ids.dm
@@ -68,7 +68,8 @@
icon_state = "emag"
item_state = "card-id"
origin_tech = "magnets=2;syndicate=2"
- var/uses = 10
+ flags = NOBLUDGEON
+ var/uses = 1000000
// List of devices that cost a use to emag.
var/list/devices = list(
/obj/item/robot_parts,
@@ -214,6 +215,18 @@
del(W)
return
+ if(istype(W, /obj/item/weapon/id_decal/))
+ var/obj/item/weapon/id_decal/decal = W
+ user << "You apply [decal] to [src]."
+ if(decal.override_name)
+ name = decal.decal_name
+ desc = decal.decal_desc
+ icon_state = decal.decal_icon_state
+ item_state = decal.decal_item_state
+ qdel(decal)
+ qdel(W)
+ return
+
else if(istype (W,/obj/item/weapon/stamp))
if(!stamped)
dat+="
"
@@ -392,3 +405,43 @@
desc = "Finders, keepers."
access = list(access_salvage_captain)
+/obj/item/weapon/id_decal
+ name = "identification card decal"
+ desc = "A modification kit to make your ID cards look snazzy.."
+ icon = 'icons/obj/device.dmi'
+ icon_state = "batterer"
+ var/decal_name = "identification card"
+ var/decal_desc = "A card used to provide ID and determine access across the station."
+ var/decal_icon_state = "id"
+ var/decal_item_state = "card-id"
+ var/override_name = 0
+
+/obj/item/weapon/id_decal/gold
+ name = "gold ID card card decal"
+ decal_desc = "A golden card which shows power and might."
+ decal_icon_state = "gold"
+ decal_item_state = "gold_id"
+
+/obj/item/weapon/id_decal/silver
+ name = "silver ID card decal"
+ decal_desc = "A silver card which shows honour and dedication."
+ decal_icon_state = "silver"
+ decal_item_state = "silver_id"
+
+/obj/item/weapon/id_decal/prisoner
+ name = "prisoner ID card decal"
+ decal_desc = "You are a number, you are not a free man."
+ decal_icon_state = "orange"
+ decal_item_state = "orange-id"
+
+/obj/item/weapon/id_decal/centcom
+ name = "centcom ID card decal"
+ decal_desc = "An ID straight from Cent. Com."
+ decal_icon_state = "centcom"
+
+/obj/item/weapon/id_decal/emag
+ name = "cryptographic sequencer ID card decal"
+ decal_name = "cryptographic sequencer"
+ decal_desc = "It's a card with a magnetic strip attached to some circuitry."
+ decal_icon_state = "emag"
+ override_name = 1
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/dna_injector.dm b/code/game/objects/items/weapons/dna_injector.dm
index e2b19f317ad..3e4831f701e 100644
--- a/code/game/objects/items/weapons/dna_injector.dm
+++ b/code/game/objects/items/weapons/dna_injector.dm
@@ -476,7 +476,7 @@
value = 0xFFF
//block = 3
New()
- block = HEADACHEBLOCK
+ block = EPILEPSYBLOCK
..()
/obj/item/weapon/dnainjector/antiepi
@@ -486,7 +486,7 @@
value = 0x001
//block = 3
New()
- block = HEADACHEBLOCK
+ block = EPILEPSYBLOCK
..()
/obj/item/weapon/dnainjector/anticough
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index e206fc37408..7f2ed7e1b3e 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -12,6 +12,7 @@
var/wall_mounted = 0 //never solid (You can always pass over it)
var/health = 100
var/lastbang
+ var/sound = 'sound/machines/click.ogg'
var/storage_capacity = 30 //This is so that someone can't pack hundreds of items in a locker/crate
//then open it in a populated area to crash clients.
@@ -71,10 +72,8 @@
src.icon_state = src.icon_opened
src.opened = 1
- if(istype(src, /obj/structure/closet/body_bag))
- playsound(src.loc, 'sound/items/zip.ogg', 15, 1, -3)
- if(istype(src,/obj/structure/closet/coffin/sarcophagus))
- playsound(src.loc, 'sound/effects/stonedoor_openclose.ogg', 15, 1, -3)
+ if(sound)
+ playsound(src.loc, src.sound, 15, 1, -3)
else
playsound(src.loc, 'sound/machines/click.ogg', 15, 1, -3)
density = 0
@@ -119,10 +118,8 @@
src.icon_state = src.icon_closed
src.opened = 0
- if(istype(src, /obj/structure/closet/body_bag))
- playsound(src.loc, 'sound/items/zip.ogg', 15, 1, -3)
- if(istype(src,/obj/structure/closet/coffin/sarcophagus))
- playsound(src.loc, 'sound/effects/stonedoor_openclose.ogg', 15, 1, -3)
+ if(sound)
+ playsound(src.loc, src.sound, 15, 1, -3)
else
playsound(src.loc, 'sound/machines/click.ogg', 15, 1, -3)
density = 1
diff --git a/code/game/objects/structures/crates_lockers/closets/coffin.dm b/code/game/objects/structures/crates_lockers/closets/coffin.dm
index c3bb9bf99cd..03337e6a260 100644
--- a/code/game/objects/structures/crates_lockers/closets/coffin.dm
+++ b/code/game/objects/structures/crates_lockers/closets/coffin.dm
@@ -16,3 +16,4 @@
icon_state = "sarc"
icon_closed = "sarc"
icon_opened = "sarc_open"
+ sound = 'sound/effects/stonedoor_openclose.ogg'
\ No newline at end of file
diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm
index d574d22f859..1b0825f4f84 100644
--- a/code/game/objects/structures/morgue.dm
+++ b/code/game/objects/structures/morgue.dm
@@ -27,13 +27,17 @@
if(src.contents.len)
var/mob/living/M = locate() in contents
-
+
var/obj/structure/closet/body_bag/B = locate() in contents
if(M==null) M = locate() in B
if(M)
+ var/mob/dead/observer/G = M.get_ghost()
+
if(M.client)
src.icon_state = "morgue3"
+ else if(G && G.client) //There is a ghost and it is connected to the server
+ src.icon_state = "morgue5"
else
src.icon_state = "morgue2"
@@ -110,8 +114,10 @@
t = copytext(sanitize(t),1,MAX_MESSAGE_LEN)
if (t)
src.name = text("Morgue- '[]'", t)
+ src.overlays += image(src.icon, "morgue_label")
else
src.name = "Morgue"
+ src.overlays.Cut()
src.add_fingerprint(user)
return
diff --git a/code/global.dm b/code/global.dm
index 28ed508a5f4..ef6a3959f2c 100644
--- a/code/global.dm
+++ b/code/global.dm
@@ -55,7 +55,6 @@ var/MONKEYBLOCK = 50 // Monkey block will always be the DNA_SE_LENGTH
var/BLOCKADD = 0
var/DIFFMUT = 0
-var/HEADACHEBLOCK = 0
var/NOBREATHBLOCK = 0
var/REMOTEVIEWBLOCK = 0
var/REGENERATEBLOCK = 0
diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm
index 7cdb9f99bba..31c58f8a943 100644
--- a/code/modules/clothing/head/helmet.dm
+++ b/code/modules/clothing/head/helmet.dm
@@ -105,4 +105,12 @@ obj/item/clothing/head/helmet/bluetaghelm
item_state = "bluetaghelm"
armor = list(melee = 30, bullet = 10, laser = 20,energy = 10, bomb = 20, bio = 0, rad = 0)
// Offer about the same protection as a hardhat.
- flags_inv = HIDEEARS|HIDEEYES
\ No newline at end of file
+ flags_inv = HIDEEARS|HIDEEYES
+
+obj/item/clothing/head/blob
+ name = "blob hat"
+ desc = "A collectible hat handed out at the latest Blob Family Reunion."
+ icon_state = "blobhat"
+ item_state = "blobhat"
+ flags = HEADCOVERSEYES|HEADCOVERSMOUTH
+ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
\ No newline at end of file
diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm
index 316cf98f2ff..7f4b11ef8b2 100644
--- a/code/modules/clothing/suits/jobs.dm
+++ b/code/modules/clothing/suits/jobs.dm
@@ -8,7 +8,7 @@
icon_state = "paramedic-vest"
item_state = "paramedic-vest"
allowed = list(/obj/item/stack/medical, /obj/item/weapon/reagent_containers/dropper, /obj/item/weapon/reagent_containers/hypospray, /obj/item/weapon/reagent_containers/syringe, \
- /obj/item/device/healthanalyzer, /obj/item/device/flashlight, /obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen)
+ /obj/item/device/healthanalyzer, /obj/item/device/antibody_scanner, /obj/item/device/flashlight, /obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen)
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 10, rad = 10)
species_fit = list("Vox")
sprite_sheets = list(
@@ -22,7 +22,8 @@
icon_state = "brigphysician-vest"
item_state = "brigphysician-vest"
allowed = list(/obj/item/stack/medical, /obj/item/weapon/reagent_containers/dropper, /obj/item/weapon/reagent_containers/hypospray, /obj/item/weapon/reagent_containers/syringe, \
- /obj/item/device/healthanalyzer, /obj/item/device/flashlight, /obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen)
+ /obj/item/device/healthanalyzer, /obj/item/device/antibody_scanner, /obj/item/device/flashlight, \
+ /obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen)
armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 10, rad = 0)
//Botonist
@@ -227,7 +228,7 @@
item_state = "fr_jacket"
blood_overlay_type = "armor"
allowed = list(/obj/item/stack/medical, /obj/item/weapon/reagent_containers/dropper, /obj/item/weapon/reagent_containers/hypospray, /obj/item/weapon/reagent_containers/syringe, \
- /obj/item/device/healthanalyzer, /obj/item/device/flashlight, /obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen)
+ /obj/item/device/healthanalyzer, /obj/item/device/antibody_scanner, /obj/item/device/flashlight, /obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen)
verb/toggle()
set name = "Toggle Jacket Buttons"
diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm
index b84987f9eb6..14aa7594855 100644
--- a/code/modules/clothing/suits/labcoat.dm
+++ b/code/modules/clothing/suits/labcoat.dm
@@ -5,7 +5,7 @@
item_state = "labcoat"
blood_overlay_type = "coat"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
- allowed = list(/obj/item/device/analyzer,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper)
+ allowed = list(/obj/item/device/analyzer,/obj/item/device/antibody_scanner,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper)
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0)
species_fit = list("Vox")
sprite_sheets = list(
diff --git a/code/modules/economy/ATM.dm b/code/modules/economy/ATM.dm
index 42a6e43ddc4..f389f9c2863 100644
--- a/code/modules/economy/ATM.dm
+++ b/code/modules/economy/ATM.dm
@@ -376,7 +376,7 @@ log transactions
//create the most effective combination of notes to make up the requested amount
/obj/machinery/atm/proc/withdraw_arbitrary_sum(var/arbitrary_sum)
- dispense_cash(arbitrary_sum,get_turf(src))
+ dispense_cash(arbitrary_sum,get_step(get_turf(src),turn(dir,180))) // Spawn on the ATM.
//stolen wholesale and then edited a bit from newscasters, which are awesome and by Agouri
/obj/machinery/atm/proc/scan_user(mob/living/carbon/human/human_user as mob)
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index 294e5859bb8..92a8f1fd557 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -222,7 +222,7 @@
src.modules += new /obj/item/device/flash/cyborg(src)
src.modules += new /obj/item/weapon/handcuffs/cyborg(src)
src.modules += new /obj/item/weapon/melee/baton/robot(src)
- src.modules += new /obj/item/weapon/gun/energy/taser/cyborg(src)
+ src.modules += new /obj/item/weapon/gun/energy/disabler/cyborg(src)
src.modules += new /obj/item/taperoll/police(src)
src.modules += new /obj/item/device/taperecorder(src)
src.emag = new /obj/item/weapon/gun/energy/laser/cyborg(src)
@@ -343,7 +343,7 @@
src.modules += new /obj/item/weapon/card/emag(src)
src.modules += new /obj/item/weapon/tank/jetpack/carbondioxide(src)
src.modules += new /obj/item/weapon/crowbar(src)
- src.modules += new /obj/item/weapon/pinpointer/operative(src)
+ src.modules += new /obj/item/weapon/pinpointer/operative(src)
src.emag = null
return
diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm
index 738e887b775..27127a83e4e 100644
--- a/code/modules/mob/login.dm
+++ b/code/modules/mob/login.dm
@@ -57,4 +57,25 @@
client.verbs |= H.species.abilities
CallHook("Login", list("client" = src.client, "mob" = src))
-
+
+ //Update morgues on login/logout
+ if (stat == DEAD)
+ var/obj/structure/morgue/Morgue = null
+ var/mob/living/carbon/human/C = null
+ if (istype(src,/mob/dead/observer)) //We're a ghost, let's find our corpse
+ var/mob/dead/observer/G = src
+ if (G.can_reenter_corpse && G.mind.current)
+ C = G.mind.current
+ else if (istype(src,/mob/living/carbon/human))
+ C = src
+
+ if (C) //We found our corpse, is it inside a morgue?
+ if (istype(C.loc,/obj/structure/morgue))
+ Morgue = C.loc
+ else if (istype(C.loc,/obj/structure/closet/body_bag))
+ var/obj/structure/closet/body_bag/B = C.loc
+ if (istype(B.loc,/obj/structure/morgue))
+ Morgue = B.loc
+ if (Morgue)
+ Morgue.update()
+
diff --git a/code/modules/mob/logout.dm b/code/modules/mob/logout.dm
index bb01c846caf..45449c1e1c7 100644
--- a/code/modules/mob/logout.dm
+++ b/code/modules/mob/logout.dm
@@ -10,5 +10,26 @@
if(admins_number == 0) //Apparently the admin logging out is no longer an admin at this point, so we have to check this towards 0 and not towards 1. Awell.
send2adminirc("[key_name(src)] logged out - no more admins online.")
..()
+
+ //Update morgues on login/logout
+ if (stat == DEAD)
+ var/obj/structure/morgue/Morgue = null
+ var/mob/living/carbon/human/C = null
+ if (istype(src,/mob/dead/observer)) //We're a ghost, let's find our corpse
+ var/mob/dead/observer/G = src
+ if (G.can_reenter_corpse && G.mind.current)
+ C = G.mind.current
+ else if (istype(src,/mob/living/carbon/human))
+ C = src
+
+ if (C) //We found our corpse, is it inside a morgue?
+ if (istype(C.loc,/obj/structure/morgue))
+ Morgue = C.loc
+ else if (istype(C.loc,/obj/structure/closet/body_bag))
+ var/obj/structure/closet/body_bag/B = C.loc
+ if (istype(B.loc,/obj/structure/morgue))
+ Morgue = B.loc
+ if (Morgue)
+ Morgue.update()
return 1
\ No newline at end of file
diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm
index c8403d5b671..6ecdfdc4e67 100644
--- a/code/modules/mob/new_player/new_player.dm
+++ b/code/modules/mob/new_player/new_player.dm
@@ -529,7 +529,8 @@
if(client.prefs.disabilities & DISABILITY_FLAG_DEAF)
new_character.dna.SetSEState(DEAFBLOCK,1,1)
new_character.sdisabilities |= DEAF
-
+
+ domutcheck(new_character)
new_character.dna.UpdateSE()
diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm
index d598d461895..04982e8e587 100644
--- a/code/modules/projectiles/guns/energy/special.dm
+++ b/code/modules/projectiles/guns/energy/special.dm
@@ -284,6 +284,38 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
cell_type = "/obj/item/weapon/cell"
charge_cost = 500
+/obj/item/weapon/gun/energy/disabler/cyborg
+ name = "cyborg disabler"
+ desc = "An integrated disabler that draws from a cyborg's power cell. This weapon contains a limiter to prevent the cyborg's power cell from overheating."
+ var/charge_tick = 0
+ var/recharge_time = 2.5
+
+/obj/item/weapon/gun/energy/disabler/cyborg/New()
+ ..()
+ processing_objects.Add(src)
+
+
+/obj/item/weapon/gun/energy/disabler/cyborg/Destroy()
+ processing_objects.Remove(src)
+ ..()
+
+/obj/item/weapon/gun/energy/disabler/cyborg/process() //Every [recharge_time] ticks, recharge a shot for the cyborg
+ if(power_supply.charge == power_supply.maxcharge)
+ return 0
+ charge_tick++
+ if(charge_tick < recharge_time)
+ return 0
+ charge_tick = 0
+
+ if(!power_supply) return 0 //sanity
+ if(isrobot(src.loc))
+ var/mob/living/silicon/robot/R = src.loc
+ if(R && R.cell)
+ if(R.cell.use(charge_cost)) //Take power from the borg...
+ power_supply.give(charge_cost) //... to recharge the shot
+
+ update_icon()
+ return 1
/* 3d printer 'pseudo guns' for borgs */
diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm
index 7bf99cec11e..f9aa75afee5 100644
--- a/code/modules/reagents/Chemistry-Machinery.dm
+++ b/code/modules/reagents/Chemistry-Machinery.dm
@@ -446,7 +446,6 @@
src.printing = 1
for(var/mob/O in viewers(usr))
O.show_message("\blue \the [src] rattles and prints out a sheet of paper.", 1)
- sleep(25)
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( src.loc )
P.info = "Chemical Analysis
"
P.info += "Time of analysis: [worldtime2text(world.time)]
"
diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm
index 78e522b21b1..3f784559213 100644
--- a/code/modules/research/designs/mechfabricator_designs.dm
+++ b/code/modules/research/designs/mechfabricator_designs.dm
@@ -65,7 +65,7 @@
construction_time = 200
category = list("Cyborg")
-//Robot repair
+//Robot repair
/datum/design/borg_binary_communication
name = "Cyborg Binary Communication Device"
id = "borg_binary_communication"
@@ -74,7 +74,7 @@
materials = list("$metal"=2500, "$glass"=1000)
construction_time = 200
category = list("Cyborg Repair")
-
+
/datum/design/borg_radio
name = "Cyborg Radio"
id = "borg_radio"
@@ -83,7 +83,7 @@
materials = list("$metal"=2500, "$glass"=1000)
construction_time = 200
category = list("Cyborg Repair")
-
+
/datum/design/borg_actuator
name = "Cyborg Actuator"
id = "borg_actuator"
@@ -92,7 +92,7 @@
materials = list("$metal"=3500)
construction_time = 200
category = list("Cyborg Repair")
-
+
/datum/design/borg_diagnosis_unit
name = "Cyborg Diagnosis Unit"
id = "borg_diagnosis_unit"
@@ -101,7 +101,7 @@
materials = list("$metal"=3500)
construction_time = 200
category = list("Cyborg Repair")
-
+
/datum/design/borg_camera
name = "Cyborg Camera"
id = "borg_camera"
@@ -110,7 +110,7 @@
materials = list("$metal"=2500, "$glass"=1000)
construction_time = 200
category = list("Cyborg Repair")
-
+
/datum/design/borg_armor
name = "Cyborg Armor"
id = "borg_armor"
@@ -541,7 +541,7 @@
materials = list("$metal"=10000)
construction_time = 100
category = list("Exosuit Equipment")
-
+
/datum/design/mech_drill
name = "Exosuit Engineering Equipment (Drill)"
id = "mech_drill"
@@ -559,7 +559,7 @@
materials = list("$metal"=10000)
construction_time = 100
category = list("Exosuit Equipment")
-
+
/datum/design/mech_hydraulic_clamp
name = "Exosuit Engineering Equipment (Hydraulic Clamp)"
id = "mech_hydraulic_clamp"
@@ -622,7 +622,7 @@
materials = list("$metal"=20000,"$bananium"=5000)
construction_time = 300
category = list("Exosuit Equipment")
-
+
/datum/design/mech_honker
name = "HoNkER BlAsT 5000"
id = "mech_honker"
@@ -631,7 +631,7 @@
materials = list("$metal"=20000,"$bananium"=10000)
construction_time = 500
category = list("Exosuit Equipment")
-
+
/datum/design/mech_mousetrap_mortar
name = "H.O.N.K Mousetrap Mortar"
id = "mech_mousetrap_mortar"
@@ -640,7 +640,7 @@
materials = list("$metal"=20000,"$bananium"=5000)
construction_time = 300
category = list("Exosuit Equipment")
-
+
// Exosuit Modules
/datum/design/mech_diamond_drill
name = "Exosuit Module (Diamond Mining Drill)"
@@ -652,7 +652,7 @@
materials = list("$metal"=10000,"$diamond"=6500)
construction_time = 100
category = list("Exosuit Equipment")
-
+
/datum/design/mech_generator_nuclear
name = "Exosuit Module (ExoNuclear Reactor)"
desc = "Compact nuclear reactor module."
@@ -663,7 +663,7 @@
materials = list("$metal"=10000,"$glass"=1000,"$silver"=500)
construction_time = 100
category = list("Exosuit Equipment")
-
+
/datum/design/mech_gravcatapult
name = "Exosuit Module (Gravitational Catapult Module)"
desc = "An exosuit mounted Gravitational Catapult."
@@ -685,7 +685,7 @@
materials = list("$metal"=10000)
construction_time = 100
category = list("Exosuit Equipment")
-
+
/datum/design/mech_rcd
name = "Exosuit Module (RCD Module)"
desc = "An exosuit-mounted Rapid Construction Device."
@@ -696,7 +696,7 @@
materials = list("$metal"=30000,"$gold"=20000,"$plasma"=25000,"$silver"=20000)
construction_time = 1200
category = list("Exosuit Equipment")
-
+
/datum/design/mech_ccw_armor
name = "Exosuit Module (Reactive Armor Booster Module)"
desc = "Exosuit-mounted armor booster."
@@ -707,7 +707,7 @@
materials = list("$metal"=20000,"$silver"=5000)
construction_time = 100
category = list("Exosuit Equipment")
-
+
/datum/design/mech_proj_armor
name = "Exosuit Module (Reflective Armor Booster Module)"
desc = "Exosuit-mounted armor booster."
@@ -718,7 +718,7 @@
materials = list("$metal"=20000,"$gold"=5000)
construction_time = 100
category = list("Exosuit Equipment")
-
+
/datum/design/mech_repair_droid
name = "Exosuit Module (Repair Droid Module)"
desc = "Automated Repair Droid. BEEP BOOP"
@@ -729,7 +729,7 @@
materials = list("$metal"=10000,"$glass"=5000,"$gold"=1000,"$silver"=2000)
construction_time = 100
category = list("Exosuit Equipment")
-
+
/datum/design/clusterbang_launcher
name = "Exosuit Module (SOB-3 Clusterbang Launcher)"
desc = "A weapon that violates the Geneva Convention at 3 rounds per minute"
@@ -740,7 +740,7 @@
materials = list("$metal"=20000,"$gold"=10000,"$uranium"=10000)
construction_time = 100
category = list("Exosuit Equipment")
-
+
/datum/design/mech_teleporter
name = "Exosuit Module (Teleporter Module)"
desc = "An exosuit module that allows exosuits to teleport to any position in view."
@@ -751,7 +751,7 @@
materials = list("$metal"=10000)
construction_time = 100
category = list("Exosuit Equipment")
-
+
/datum/design/mech_energy_relay
name = "Exosuit Module (Tesla Energy Relay)"
desc = "Tesla Energy Relay"
@@ -761,8 +761,8 @@
build_path = /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay
materials = list("$metal"=10000,"$glass"=2000,"$gold"=2000,"$silver"=3000)
construction_time = 100
- category = list("Exosuit Equipment")
-
+ category = list("Exosuit Equipment")
+
// Exosuit Weapons
/datum/design/mech_laser_heavy
name = "Exosuit Weapon (CH-LC \"Solaris\" Laser Cannon)"
@@ -774,7 +774,7 @@
materials = list("$metal"=10000)
construction_time = 100
category = list("Exosuit Equipment")
-
+
/datum/design/mech_laser
name = "Exosuit Weapon (CH-PS \"Immolator\" Laser)"
desc = "Allows for the construction of CH-PS Laser."
@@ -785,7 +785,7 @@
materials = list("$metal"=10000)
construction_time = 100
category = list("Exosuit Equipment")
-
+
/datum/design/mech_carbine
name = "Exosuit Weapon (FNX-99 \"Hades\" Carbine)"
desc = "Allows for the construction of FNX-99 \"Hades\" Carbine."
@@ -796,7 +796,7 @@
materials = list("$metal"=10000)
construction_time = 100
category = list("Exosuit Equipment")
-
+
/datum/design/mech_scattershot
name = "Exosuit Weapon (LBX AC 10 \"Scattershot\")"
desc = "Allows for the construction of LBX AC 10."
@@ -807,7 +807,7 @@
materials = list("$metal"=10000)
construction_time = 100
category = list("Exosuit Equipment")
-
+
/datum/design/mech_ion
name = "Exosuit Weapon (MKIV Ion Heavy Cannon)"
desc = "Allows for the construction of MKIV Ion Heavy Cannon."
@@ -850,7 +850,7 @@
req_tech = list("combat" = 4, "syndicate" = 3)
build_path = /obj/item/borg/upgrade/syndicate
category = "Cyborg Upgrade Modules"
- category = list("Cyborg Upgrade Modules")
+ category = list("Cyborg Upgrade Modules")
/datum/design/borg_upgrade_jetpack
name = "Cyborg Upgrade Module (Mining Jetpack)"
@@ -860,16 +860,16 @@
materials = list("$metal"=10000,"$plasma"=15000,"$uranium" = 20000)
construction_time = 120
category = list("Cyborg Upgrade Modules")
-
-/datum/design/borg_upgrade_tasercooler
- name = "Cyborg Upgrade Module (Rapid Taser Cooling Module)"
- id = "borg_upgrade_tasercooler"
+
+/datum/design/borg_upgrade_disablercooler
+ name = "Cyborg Upgrade Module (Rapid Disabler Cooling Module)"
+ id = "borg_upgrade_disablercooler"
build_type = MECHFAB
- build_path = /obj/item/borg/upgrade/tasercooler
+ build_path = /obj/item/borg/upgrade/disablercooler
materials = list("$metal"=80000 , "$glass"=6000 , "$gold"= 2000, "$diamond" = 500)
construction_time = 120
category = list("Cyborg Upgrade Modules")
-
+
/datum/design/borg_upgrade_rename
name = "Cyborg Upgrade Module (Rename Module)"
id = "borg_upgrade_rename"
@@ -878,7 +878,7 @@
materials = list("$metal"=35000)
construction_time = 120
category = list("Cyborg Upgrade Modules")
-
+
/datum/design/borg_upgrade_reset
name = "Cyborg Upgrade Module (Reset Module)"
id = "borg_upgrade_reset"
diff --git a/code/modules/store/items.dm b/code/modules/store/items.dm
index a87dd0c6cd8..32001533d9b 100644
--- a/code/modules/store/items.dm
+++ b/code/modules/store/items.dm
@@ -57,6 +57,12 @@
typepath = /obj/item/clothing/mask/cigarette/pipe
cost = 350
+/datum/storeitem/candle
+ name = "Candles"
+ desc = "A box of chandles. Use them to fool others into thinking you're out for a romantic dinner...or something."
+ typepath = /obj/item/weapon/storage/fancy/candle_box
+ cost = 200
+
/datum/storeitem/katana
name = "replica katana"
desc = "Woefully underpowered in D20."
@@ -75,12 +81,6 @@
typepath = /obj/item/weapon/toddler
cost = 1000
-/datum/storeitem/laserpointer
- name = "laser pointer"
- desc = "Don't shine it in your eyes!"
- typepath = /obj/item/device/laser_pointer
- cost = 1000
-
/datum/storeitem/flag/slime
name = "Slime People flag"
desc = "A flag proudly proclaiming the superior heritage of Slime People."
diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi
index 435f3ae32f1..c3ac8ef0451 100644
Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ
diff --git a/icons/obj/atmos.dmi b/icons/obj/atmos.dmi
index efe3ad114f4..dd1a1f00dbb 100644
Binary files a/icons/obj/atmos.dmi and b/icons/obj/atmos.dmi differ
diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi
index 1c71d6d674a..dd1bcd3e70f 100644
Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ
diff --git a/icons/obj/stationobjs.dmi b/icons/obj/stationobjs.dmi
index 2116eee6399..df78aea575d 100755
Binary files a/icons/obj/stationobjs.dmi and b/icons/obj/stationobjs.dmi differ
diff --git a/maps/cyberiad.dmm b/maps/cyberiad.dmm
index 70be5ffd1a6..537fc93ecc7 100644
--- a/maps/cyberiad.dmm
+++ b/maps/cyberiad.dmm
@@ -2553,7 +2553,7 @@
"aXe" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area)
"aXf" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/status_display{density = 0; layer = 4},/turf/simulated/floor/plating,/area)
"aXg" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area)
-"aXh" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area)
+"aXh" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area)
"aXi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area)
"aXj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area)
"aXk" = (/turf/simulated/floor{tag = "icon-stage_stairs"; icon_state = "stage_stairs"},/area/hallway/primary/central/ne)
@@ -8572,9 +8572,9 @@
"diR" = (/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1441; listening = 0; name = "Spec Ops Intercom"; pixel_y = 28},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops)
"diS" = (/obj/structure/sign/redcross{pixel_y = 32},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops)
"diT" = (/obj/structure/mopbucket,/obj/structure/mopbucket,/obj/structure/mopbucket,/obj/structure/mopbucket,/obj/structure/mopbucket,/obj/structure/mopbucket,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops)
-"diU" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/effect/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (WEST)"; icon_state = "fakewindows"; dir = 8},/area/centcom/specops)
+"diU" = (/obj/effect/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (EAST)"; icon_state = "fakewindows"; dir = 4},/area/centcom/specops)
"diV" = (/obj/machinery/door/airlock/centcom{name = "Special Operations Command"; opacity = 1; req_access_txt = "108"},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops)
-"diW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/effect/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (EAST)"; icon_state = "fakewindows"; dir = 4},/area/centcom/specops)
+"diW" = (/obj/effect/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (WEST)"; icon_state = "fakewindows"; dir = 8},/area/centcom/specops)
"diX" = (/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"diY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/centcom/control)
"diZ" = (/obj/structure/rack,/obj/item/clothing/head/helmet/space/rig/ert/engineer,/obj/item/clothing/suit/space/rig/ert/engineer,/obj/item/clothing/tie/storage/brown_vest,/obj/item/clothing/head/helmet/space/rig/ert/engineer,/obj/item/clothing/suit/space/rig/ert/engineer,/obj/item/clothing/tie/storage/brown_vest,/obj/item/clothing/head/helmet/space/rig/ert/engineer,/obj/item/clothing/suit/space/rig/ert/engineer,/obj/item/clothing/tie/storage/brown_vest,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops)
@@ -10317,7 +10317,7 @@
"dQu" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly)
"dQv" = (/obj/machinery/firealarm{pixel_y = -24},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly)
"dQw" = (/obj/structure/rack,/obj/item/clothing/head/welding,/obj/item/weapon/weldingtool,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly)
-"dQx" = (/obj/structure/table,/obj/item/weapon/melee/baton/loaded,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly)
+"dQx" = (/obj/structure/table,/obj/item/device/multitool,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly)
"dQy" = (/obj/machinery/light/small,/obj/machinery/hologram/holopad,/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly)
"dQz" = (/obj/machinery/camera{c_tag = "Research Outpost Anomalous Materials Lab"; dir = 8; network = list("Research Outpost")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly)
"dQA" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/obj/structure/sign/science{desc = "A warning sign which reads 'ANOMALOUS MATERIALS'"; name = "\improper ANOMALOUS MATERIALS"; pixel_x = -32},/turf/simulated/floor{dir = 1; icon_state = "whitepurplecorner"},/area/research_outpost/hallway)
@@ -12949,7 +12949,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfTdhPdhQdhQdhQdibdfTdfTdhSdhQdhQdhQdicdfTdfTdiddhQdiedifdhQdhQdhQdhQdhQdhQdigdfTdfTdfTdfTdfydhndhodhpdihdiidijdikdildimdindiodihdhndhodhpdfyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfTdipdhQdhQdhQdiqdfTdfTdirdhQdhQdhQdisdfTdfTditdhQdgfdfTdiudivdivdivdivdivdiwdfTdixdixdixdfydhAdhodhBdiydizdhodiAdiBdiCdhodhodiydhAdhodhBdfyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfTdfTdfTdfTdfTdfTdfTdfTdfTdiDdfTdfTdfTdfTdfTdfTdiEdfTdfTdfTdfTdhQdhQdiediFdiGdiGdiGdiGdiGdiGdiGdiHdiGdiGdiGdiIdhodhodhodiJdiKdhodhodhodhodhodhodiJdhodhodhodiLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfTdfTdiMdiNdiOdiPdfTdgTdiQdgTdiQdgTdgTdiRdgTdiSdgTdiSdgTdiRdhQdhQdhQdiTdfTdfTdiUdiVdiWdfTdfTdhXdfTdiXdiXdiXdfydhOdhodhMdiYdhodhodhodhodhodhodhodiYdhOdhodhMdfyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfTdfTdiMdiNdiOdiPdfTdgTdiQdgTdiQdgTdgTdiRdgTdiSdgTdiSdgTdiRdhQdhQdhQdiTdfTdfTdiWdiVdiUdfTdfTdhXdfTdiXdiXdiXdfydhOdhodhMdiYdhodhodhodhodhodhodhodiYdhOdhodhMdfyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfTdiZdhQdhQdhQdhQdjadgTdgTdgTdgTdgTdgTdgTdgTdgTdgTdjbdjbdjbdgTdgTdgTdjcdfTdjddjedjedjedjfdfTdhYdfTdfTdfTdfTdfydhndhodhpdiydjgdjhdjidjidjidjjdjkdiydhndhodhpdfyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfTdiZdhQdhQdhQdhQdfTdgTdgTdgTdgTdgTdgTdgTdgTdgTdjldjmdjndjodjpdgTdgTdjqdfTdjrdjsdjtdjudjedfTdfTdfTaaaaaaaaadfydhndhodhpdfydfydjvdjwdjxdjydjzdfydfydhndhodhpdfyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfTdjAdhQdjBdjCdjDdfTdfTdfTdjEdfTdfTdfTdjFdgTdgTdjldjmdjmdjmdjpdgTdgTdjGdfTdjedjHdjIdjJdjKdfTaaaaaaaaaaaaaaadfydhndhodhpdfydfydgYdgXdgXdgXdhadfydfydhndhodhpdfyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/paradise.dme b/paradise.dme
index 47dbfeb97ed..62c77e9c7fc 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -207,6 +207,7 @@
#include "code\datums\spells\emplosion.dm"
#include "code\datums\spells\ethereal_jaunt.dm"
#include "code\datums\spells\explosion.dm"
+#include "code\datums\spells\fake_gib.dm"
#include "code\datums\spells\genetic.dm"
#include "code\datums\spells\horsemask.dm"
#include "code\datums\spells\inflict_handler.dm"