diff --git a/code/__defines/inventory_sizes.dm b/code/__defines/inventory_sizes.dm
new file mode 100644
index 0000000000..6fb72505d0
--- /dev/null
+++ b/code/__defines/inventory_sizes.dm
@@ -0,0 +1,25 @@
+// The below should be used to define an item's w_class variable.
+// Example: w_class = ITENSIZE_LARGE
+// This allows the addition of future w_classes without needing to change every file.
+#define ITEMSIZE_TINY 1
+#define ITEMSIZE_SMALL 2
+#define ITEMSIZE_NORMAL 3
+#define ITEMSIZE_LARGE 4
+#define ITEMSIZE_HUGE 5
+#define ITEMSIZE_NO_CONTAINER 100 // Use this to forbid item from being placed in a container.
+
+// Tweak these to determine how much space an item takes in a container.
+// Look in storage.dm for get_storage_cost(), which uses these. Containers also use these as a reference for size.
+// ITEMSIZE_COST_NORMAL is equivalent to one slot using the old inventory system. As such, it is a nice reference to use for
+// defining how much space there is in a container.
+#define ITEMSIZE_COST_TINY 1
+#define ITEMSIZE_COST_SMALL 2
+#define ITEMSIZE_COST_NORMAL 4
+#define ITEMSIZE_COST_LARGE 8
+#define ITEMSIZE_COST_HUGE 16
+#define ITEMSIZE_COST_NO_CONTAINER 1000
+
+// Container sizes. Note that different containers can hold a maximum ITEMSIZE.
+#define INVENTORY_STANDARD_SPACE ITEMSIZE_COST_NORMAL * 7 // 28
+#define INVENTORY_DUFFLEBAG_SPACE ITEMSIZE_COST_NORMAL * 9 // 36
+#define INVENTORY_BOX_SPACE ITEMSIZE_COST_SMALL * 4 // 8
\ No newline at end of file
diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm
index 68954b0dc5..6a009677e1 100644
--- a/code/__defines/misc.dm
+++ b/code/__defines/misc.dm
@@ -167,3 +167,15 @@
#define ANTAG_HIDDEN "Hidden"
#define ANTAG_SHARED "Shared"
#define ANTAG_KNOWN "Known"
+
+// Job groups
+#define ROLE_COMMAND "command"
+#define ROLE_SECURITY "security"
+#define ROLE_ENGINEERING "engineering"
+#define ROLE_MEDICAL "medical"
+#define ROLE_RESEARCH "research"
+#define ROLE_CARGO "cargo"
+#define ROLE_CIVILIAN "civilian"
+#define ROLE_SYNTHETIC "synthetic"
+#define ROLE_UNKNOWN "unknown"
+#define ROLE_EVERYONE "everyone"
diff --git a/code/_macros.dm b/code/_macros.dm
index 5b94c872cb..1038b6a2e4 100644
--- a/code/_macros.dm
+++ b/code/_macros.dm
@@ -42,6 +42,10 @@
#define isxeno(A) istype(A, /mob/living/simple_animal/xeno)
+#define isweakref(A) istype(A, /weakref)
+
#define RANDOM_BLOOD_TYPE pick(4;"O-", 36;"O+", 3;"A-", 28;"A+", 1;"B-", 20;"B+", 1;"AB-", 5;"AB+")
#define to_chat(target, message) target << message
+
+#define CanInteract(user, state) (CanUseTopic(user, state) == STATUS_INTERACTIVE)
diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm
index d416475a27..4c976f4458 100644
--- a/code/_onclick/telekinesis.dm
+++ b/code/_onclick/telekinesis.dm
@@ -67,7 +67,7 @@ var/const/tk_maxrange = 15
icon_state = "2"
flags = NOBLUDGEON
//item_state = null
- w_class = 10.0
+ w_class = ITEMSIZE_NO_CONTAINER
layer = 20
var/last_throw = 0
diff --git a/code/controllers/Processes/game_master.dm b/code/controllers/Processes/game_master.dm
new file mode 100644
index 0000000000..7f89f3ab13
--- /dev/null
+++ b/code/controllers/Processes/game_master.dm
@@ -0,0 +1,6 @@
+/datum/controller/process/game_master/setup()
+ name = "\improper GM controller"
+ schedule_interval = 600 // every 60 seconds
+
+/datum/controller/process/game_master/doWork()
+ game_master.process()
\ No newline at end of file
diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm
index 1a736cd74f..d40fd4fa5a 100644
--- a/code/datums/datacore.dm
+++ b/code/datums/datacore.dm
@@ -361,7 +361,7 @@
clothes_s = new /icon('icons/mob/uniform.dmi', "virologywhite_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_vir_open"), ICON_OVERLAY)
- if("Station Administrator")
+ if("Colony Director")
clothes_s = new /icon('icons/mob/uniform.dmi', "captain_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
if("Head of Security")
diff --git a/code/datums/supplypacks/contraband.dm b/code/datums/supplypacks/contraband.dm
index c33b2b120c..d6427f063f 100644
--- a/code/datums/supplypacks/contraband.dm
+++ b/code/datums/supplypacks/contraband.dm
@@ -24,8 +24,7 @@
name = "Special Ops supplies"
contains = list(
/obj/item/weapon/storage/box/emps,
- /obj/item/weapon/grenade/smokebomb = 3,
- /obj/item/weapon/pen/reagent/paralysis,
+ /obj/item/weapon/grenade/smokebomb = 4,
/obj/item/weapon/grenade/chem_grenade/incendiary
)
cost = 25
diff --git a/code/datums/supplypacks/supplypacks.dm b/code/datums/supplypacks/supplypacks.dm
index 77004ec21f..3d2d4807fd 100644
--- a/code/datums/supplypacks/supplypacks.dm
+++ b/code/datums/supplypacks/supplypacks.dm
@@ -34,7 +34,7 @@ var/list/all_supply_groups = list("Atmospherics",
var/access = null
var/hidden = 0
var/contraband = 0
- var/group = "Operations"
+ var/group = "Miscellaneous"
/datum/supply_packs/New()
manifest += "
"
diff --git a/code/datums/uplink/ammunition.dm b/code/datums/uplink/ammunition.dm
index 756d5fc55b..6a98430aea 100644
--- a/code/datums/uplink/ammunition.dm
+++ b/code/datums/uplink/ammunition.dm
@@ -43,17 +43,7 @@
/datum/uplink_item/item/ammo/a556/ap
name = "10rnd Rifle Magazine (5.56mm AP)"
path = /obj/item/ammo_magazine/a556/ap
-/*
-/datum/uplink_item/item/ammo/a556m
- name = "20rnd Rifle Magazine (5.56mm)"
- path = /obj/item/ammo_magazine/a556m
- item_cost = 4
-/datum/uplink_item/item/ammo/a556m/ap
- name = "20rnd Rifle Magazine (5.56mm AP)"
- path = /obj/item/ammo_magazine/a556m/ap
- item_cost = 4
-*/
/datum/uplink_item/item/ammo/c762
name = "20rnd Rifle Magazine (7.62mm)"
path = /obj/item/ammo_magazine/c762
@@ -84,24 +74,28 @@
path = /obj/item/ammo_magazine/a762/ap
/datum/uplink_item/item/ammo/g12
- name = "12g Auto-Shotgun Magazine (Slug)"
- path = /obj/item/ammo_magazine/g12
+ name = "12g Shotgun Ammo Box (Slug)"
+ path = /obj/item/weapon/storage/box/shotgunammo
/datum/uplink_item/item/ammo/g12/beanbag
- name = "12g Auto-Shotgun Magazine (Beanbag)"
- path = /obj/item/ammo_magazine/g12/beanbag
+ name = "12g Shotgun Ammo Box (Beanbag)"
+ path = /obj/item/weapon/storage/box/beanbags
item_cost = 10 // Discount due to it being LTL.
/datum/uplink_item/item/ammo/g12/pellet
- name = "12g Auto-Shotgun Magazine (Pellet)"
- path = /obj/item/ammo_magazine/g12/pellet
+ name = "12g Shotgun Ammo Box (Pellet)"
+ path = /obj/item/weapon/storage/box/shotgunshells
/datum/uplink_item/item/ammo/g12/stun
- name = "12g Auto-Shotgun Magazine (Stun)"
+ name = "12g Shotgun Ammo Box (Stun)"
path = /obj/item/weapon/storage/box/stunshells
item_cost = 10 // Discount due to it being LTL.
/datum/uplink_item/item/ammo/g12/flash
- name = "12g Auto-Shotgun Magazine (Flash)"
+ name = "12g Shotgun Ammo Box (Flash)"
path = /obj/item/weapon/storage/box/flashshells
- item_cost = 10 // Discount due to it being LTL.
\ No newline at end of file
+ item_cost = 10 // Discount due to it being LTL.
+
+/datum/uplink_item/item/ammo/cell
+ name = "weapon cell"
+ path = /obj/item/weapon/cell/device
\ No newline at end of file
diff --git a/code/datums/weakref.dm b/code/datums/weakref.dm
new file mode 100644
index 0000000000..1a7d844ca8
--- /dev/null
+++ b/code/datums/weakref.dm
@@ -0,0 +1,31 @@
+/datum
+ var/weakref/weakref
+
+/datum/Destroy()
+ weakref = null // Clear this reference to ensure it's kept for as brief duration as possible.
+ . = ..()
+
+//obtain a weak reference to a datum
+/proc/weakref(datum/D)
+ if(D.gcDestroyed)
+ return
+ if(!D.weakref)
+ D.weakref = new/weakref(D)
+ return D.weakref
+
+/weakref
+ var/ref
+
+/weakref/New(datum/D)
+ ref = "\ref[D]"
+
+/weakref/Destroy()
+ // A weakref datum should not be manually destroyed as it is a shared resource,
+ // rather it should be automatically collected by the BYOND GC when all references are gone.
+ return 0
+
+/weakref/proc/resolve()
+ var/datum/D = locate(ref)
+ if(D && D.weakref == src)
+ return D
+ return null
\ No newline at end of file
diff --git a/code/datums/wires/grid_checker.dm b/code/datums/wires/grid_checker.dm
new file mode 100644
index 0000000000..1e09be577e
--- /dev/null
+++ b/code/datums/wires/grid_checker.dm
@@ -0,0 +1,66 @@
+/datum/wires/grid_checker
+ holder_type = /obj/machinery/power/grid_checker
+ wire_count = 8
+
+var/const/GRID_CHECKER_WIRE_REBOOT = 1 // This wire causes the grid-check to end, if pulsed.
+var/const/GRID_CHECKER_WIRE_LOCKOUT = 2 // If cut or pulsed, locks the user out for half a minute.
+var/const/GRID_CHECKER_WIRE_ALLOW_MANUAL_1 = 4 // Needs to be cut for REBOOT to be possible.
+var/const/GRID_CHECKER_WIRE_ALLOW_MANUAL_2 = 8 // Needs to be cut for REBOOT to be possible.
+var/const/GRID_CHECKER_WIRE_ALLOW_MANUAL_3 = 16 // Needs to be cut for REBOOT to be possible.
+var/const/GRID_CHECKER_WIRE_SHOCK = 32 // Shocks the user if not wearing gloves.
+var/const/GRID_CHECKER_WIRE_NOTHING_1 = 64 // Does nothing, but makes it a bit harder.
+var/const/GRID_CHECKER_WIRE_NOTHING_2 = 128 // Does nothing, but makes it a bit harder.
+
+
+/datum/wires/grid_checker/CanUse(var/mob/living/L)
+ var/obj/machinery/power/grid_checker/G = holder
+ if(G.opened)
+ return TRUE
+ return FALSE
+
+
+/datum/wires/grid_checker/GetInteractWindow()
+ var/obj/machinery/power/grid_checker/G = holder
+ . += ..()
+ . += "The green light is [G.power_failing ? "off" : "on"].
"
+ . += "The red light is [G.wire_locked_out ? "on" : "off"].
"
+ . += "The blue light is [G.wire_allow_manual_1 && G.wire_allow_manual_2 && G.wire_allow_manual_3 ? "on" : "off"]."
+
+
+/datum/wires/grid_checker/UpdateCut(var/index, var/mended)
+ var/obj/machinery/power/grid_checker/G = holder
+ switch(index)
+ if(GRID_CHECKER_WIRE_LOCKOUT)
+ G.wire_locked_out = !mended
+ if(GRID_CHECKER_WIRE_ALLOW_MANUAL_1)
+ G.wire_allow_manual_1 = !mended
+ if(GRID_CHECKER_WIRE_ALLOW_MANUAL_2)
+ G.wire_allow_manual_2 = !mended
+ if(GRID_CHECKER_WIRE_ALLOW_MANUAL_3)
+ G.wire_allow_manual_3 = !mended
+ if(GRID_CHECKER_WIRE_SHOCK)
+ if(G.wire_locked_out)
+ return
+ G.shock(usr, 70)
+
+
+/datum/wires/grid_checker/UpdatePulsed(var/index)
+ var/obj/machinery/power/grid_checker/G = holder
+ switch(index)
+ if(GRID_CHECKER_WIRE_REBOOT)
+ if(G.wire_locked_out)
+ return
+
+ if(G.power_failing && G.wire_allow_manual_1 && G.wire_allow_manual_2 && G.wire_allow_manual_3)
+ G.end_power_failure(TRUE)
+ if(GRID_CHECKER_WIRE_LOCKOUT)
+ if(G.wire_locked_out)
+ return
+
+ G.wire_locked_out = TRUE
+ spawn(30 SECONDS)
+ G.wire_locked_out = FALSE
+ if(GRID_CHECKER_WIRE_SHOCK)
+ if(G.wire_locked_out)
+ return
+ G.shock(usr, 70)
\ No newline at end of file
diff --git a/code/datums/wires/jukebox_vr.dm b/code/datums/wires/jukebox.dm
similarity index 91%
rename from code/datums/wires/jukebox_vr.dm
rename to code/datums/wires/jukebox.dm
index bfe62be2bd..f482133e62 100644
--- a/code/datums/wires/jukebox_vr.dm
+++ b/code/datums/wires/jukebox.dm
@@ -1,6 +1,6 @@
/datum/wires/jukebox
random = 1
- holder_type = /obj/machinery/media/jukebox/vore
+ holder_type = /obj/machinery/media/jukebox
wire_count = 7
var/const/WIRE_POWER = 1
@@ -19,7 +19,7 @@ var/const/WIRE_NOTHING2 = 64
// Show the status of lights as a hint to the current state
/datum/wires/jukebox/GetInteractWindow()
- var/obj/machinery/media/jukebox/vore/A = holder
+ var/obj/machinery/media/jukebox/A = holder
. += ..()
. += "
The power light is [(A.stat & (BROKEN|NOPOWER)) ? "off" : "on"].
"
. += "The parental guidance light is [A.hacked ? "off" : "on"].
"
@@ -27,7 +27,7 @@ var/const/WIRE_NOTHING2 = 64
// Give a hint as to what each wire does
/datum/wires/jukebox/UpdatePulsed(var/index)
- var/obj/machinery/media/jukebox/vore/A = holder
+ var/obj/machinery/media/jukebox/A = holder
switch(index)
if(WIRE_POWER)
holder.visible_message("\icon[holder] The power light flickers.")
@@ -44,7 +44,7 @@ var/const/WIRE_NOTHING2 = 64
A.shock(usr, 10) // The nothing wires give a chance to shock just for fun
/datum/wires/jukebox/UpdateCut(var/index, var/mended)
- var/obj/machinery/media/jukebox/vore/A = holder
+ var/obj/machinery/media/jukebox/A = holder
switch(index)
if(WIRE_POWER)
diff --git a/code/defines/obj.dm b/code/defines/obj.dm
index ddf88533e1..e6d97a8fed 100644
--- a/code/defines/obj.dm
+++ b/code/defines/obj.dm
@@ -87,7 +87,7 @@ var/global/list/PDA_Manifest = list()
heads[++heads.len] = list("name" = name, "rank" = rank, "active" = isactive)
department = 1
depthead = 1
- if(rank=="Station Administrator" && heads.len != 1)
+ if(rank=="Colony Director" && heads.len != 1)
heads.Swap(1,heads.len)
if(real_rank in security_positions)
@@ -194,7 +194,7 @@ var/global/list/PDA_Manifest = list()
name = "beach ball"
density = 0
anchored = 0
- w_class = 4
+ w_class = ITEMSIZE_LARGE
force = 0.0
throwforce = 0.0
throw_speed = 1
diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm
index bcf0573367..627bd27e7b 100644
--- a/code/defines/obj/weapon.dm
+++ b/code/defines/obj/weapon.dm
@@ -8,7 +8,7 @@
throwforce = 2.0
throw_speed = 1
throw_range = 4
- w_class = 2
+ w_class = ITEMSIZE_SMALL
attack_verb = list("called", "rang")
hitsound = 'sound/weapons/ring.ogg'
@@ -22,7 +22,7 @@
anchored = 0.0
var/stored_matter = 0
var/mode = 1
- w_class = 3.0
+ w_class = ITEMSIZE_NORMAL
/obj/item/weapon/soap
name = "soap"
@@ -30,7 +30,7 @@
gender = PLURAL
icon = 'icons/obj/items.dmi'
icon_state = "soap"
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
throwforce = 0
throw_speed = 4
throw_range = 20
@@ -57,7 +57,7 @@
icon_state = "bike_horn"
item_state = "bike_horn"
throwforce = 3
- w_class = 2
+ w_class = ITEMSIZE_SMALL
throw_speed = 3
throw_range = 15
attack_verb = list("HONKED")
@@ -70,7 +70,7 @@
icon = 'icons/obj/items.dmi'
icon_state = "c_tube"
throwforce = 1
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
throw_speed = 4
throw_range = 5
@@ -86,7 +86,7 @@
flags = CONDUCT
force = 5.0
throwforce = 7.0
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
matter = list(DEFAULT_WALL_MATERIAL = 50)
attack_verb = list("bludgeoned", "whacked", "disciplined", "thrashed")
@@ -148,7 +148,7 @@
desc = "Better keep this safe."
icon_state = "nucleardisk"
item_state = "card-id"
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
/*
/obj/item/weapon/game_kit
@@ -160,7 +160,7 @@
var/data = ""
var/base_url = "http://svn.slurm.us/public/spacestation13/misc/game_kit"
item_state = "sheet-metal"
- w_class = 5.0
+ w_class = ITEMSIZE_HUGE
*/
/obj/item/weapon/gift
@@ -171,7 +171,7 @@
var/size = 3.0
var/obj/item/gift = null
item_state = "gift"
- w_class = 4.0
+ w_class = ITEMSIZE_LARGE
/obj/item/weapon/legcuffs
name = "legcuffs"
@@ -181,7 +181,7 @@
icon_state = "handcuff"
flags = CONDUCT
throwforce = 0
- w_class = 3.0
+ w_class = ITEMSIZE_NORMAL
origin_tech = list(TECH_MATERIAL = 1)
var/breakouttime = 300 //Deciseconds = 30s = 0.5 minute
sprite_sheets = list("Teshari" = 'icons/mob/species/seromi/handcuffs.dmi')
@@ -195,7 +195,7 @@
throwforce = 3.0
throw_speed = 1
throw_range = 5
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
attack_verb = list("warned", "cautioned", "smashed")
/obj/item/weapon/caution/cone
@@ -203,6 +203,11 @@
name = "warning cone"
icon_state = "cone"
+/obj/item/weapon/caution/cone/candy
+ desc = "This cone is trying to warn you of something! It has been painted to look like candy corn."
+ name = "candy cone"
+ icon_state = "candycone"
+
/*/obj/item/weapon/syndicate_uplink
name = "station bounced radio"
desc = "Remain silent about this..."
@@ -215,7 +220,7 @@
var/mob/currentUser = null
var/obj/item/device/radio/origradio = null
flags = CONDUCT | ONBELT
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
item_state = "radio"
throw_speed = 4
throw_range = 20
@@ -236,7 +241,7 @@
slot_flags = SLOT_BELT
item_state = "radio"
throwforce = 5
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
throw_speed = 4
throw_range = 20
matter = list(DEFAULT_WALL_MATERIAL = 100)
@@ -255,7 +260,7 @@
throwforce = 5.0
throw_speed = 1
throw_range = 5
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
attack_verb = list("bludgeoned", "whacked", "disciplined")
/obj/item/weapon/staff/broom
@@ -280,12 +285,12 @@
throwforce = 5.0
throw_speed = 1
throw_range = 5
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
/obj/item/weapon/module
icon = 'icons/obj/module.dmi'
icon_state = "std_module"
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
item_state = "electronic"
flags = CONDUCT
var/mtype = 1 // 1=electronic 2=hardware
@@ -328,7 +333,7 @@
name = "camera bug"
icon = 'icons/obj/device.dmi'
icon_state = "flash"
- w_class = 1.0
+ w_class = ITEMSIZE_TINY
item_state = "electronic"
throw_speed = 4
throw_range = 20
@@ -365,7 +370,7 @@
icon = 'icons/obj/cigarettes.dmi'
icon_state = "cigarpacket"
item_state = "cigarpacket"
- w_class = 1
+ w_class = ITEMSIZE_TINY
throwforce = 2
var/cigarcount = 6
flags = ONBELT
@@ -385,7 +390,7 @@
name = "rapid part exchange device"
desc = "Special mechanical module made to store, sort, and apply standard machine parts."
icon_state = "RPED"
- w_class = 5
+ w_class = ITEMSIZE_HUGE
can_hold = list(/obj/item/weapon/stock_parts)
storage_slots = 50
use_to_pickup = 1
@@ -393,7 +398,7 @@
allow_quick_empty = 1
collection_mode = 1
display_contents_with_number = 1
- max_w_class = 3
+ max_w_class = ITEMSIZE_NORMAL
max_storage_space = 100
/obj/item/weapon/stock_parts
@@ -401,7 +406,7 @@
desc = "What?"
gender = PLURAL
icon = 'icons/obj/stock_parts.dmi'
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
var/rating = 1
/obj/item/weapon/stock_parts/New()
diff --git a/code/game/antagonist/mutiny/mutineer.dm b/code/game/antagonist/mutiny/mutineer.dm
index eb341e36cf..148a020cd9 100644
--- a/code/game/antagonist/mutiny/mutineer.dm
+++ b/code/game/antagonist/mutiny/mutineer.dm
@@ -6,7 +6,7 @@ var/datum/antagonist/mutineer/mutineers
role_text_plural = "Mutineers"
id = MODE_MUTINEER
antag_indicator = "mutineer"
- restricted_jobs = list("Station Administrator")
+ restricted_jobs = list("Colony Director")
/datum/antagonist/mutineer/New(var/no_reference)
..()
@@ -39,7 +39,7 @@ var/datum/antagonist/mutineer/mutineers
proc/get_head_loyalist_candidates()
var/list/candidates[0]
for(var/mob/loyalist in player_list)
- if(loyalist.mind && loyalist.mind.assigned_role == "Station Administrator")
+ if(loyalist.mind && loyalist.mind.assigned_role == "Colony Director")
candidates.Add(loyalist.mind)
return candidates
@@ -47,7 +47,7 @@ var/datum/antagonist/mutineer/mutineers
var/list/candidates[0]
for(var/mob/mutineer in player_list)
if(mutineer.client.prefs.be_special & BE_MUTINEER)
- for(var/job in command_positions - "Station Administrator")
+ for(var/job in command_positions - "Colony Director")
if(mutineer.mind && mutineer.mind.assigned_role == job)
candidates.Add(mutineer.mind)
return candidates
diff --git a/code/game/antagonist/outsider/ert.dm b/code/game/antagonist/outsider/ert.dm
index 658e32e4aa..b8f76bf2a9 100644
--- a/code/game/antagonist/outsider/ert.dm
+++ b/code/game/antagonist/outsider/ert.dm
@@ -13,7 +13,7 @@ var/datum/antagonist/ert/ert
and before taking extreme actions, please try to also contact the administration! \
Think through your actions and make the roleplay immersive! Please remember all \
rules aside from those without explicit exceptions apply to the ERT."
- leader_welcome_text = "As leader of the Emergency Response Team, you answer only to the Company, and have authority to override the Station Administrator where it is necessary to achieve your mission goals. It is recommended that you attempt to cooperate with the Station Administrator where possible, however."
+ leader_welcome_text = "As leader of the Emergency Response Team, you answer only to the Company, and have authority to override the Colony Director where it is necessary to achieve your mission goals. It is recommended that you attempt to cooperate with the Colony Director where possible, however."
landmark_id = "Response Team"
id_type = /obj/item/weapon/card/id/centcom/ERT
diff --git a/code/game/antagonist/outsider/raider.dm b/code/game/antagonist/outsider/raider.dm
index 8ce55ca8e4..7bfa22ad43 100644
--- a/code/game/antagonist/outsider/raider.dm
+++ b/code/game/antagonist/outsider/raider.dm
@@ -55,7 +55,7 @@ var/datum/antagonist/raider/raiders
/obj/item/clothing/suit/pirate,
/obj/item/clothing/suit/hgpirate,
/obj/item/clothing/suit/storage/toggle/bomber,
- /obj/item/clothing/suit/storage/leather_jacket,
+ /obj/item/clothing/suit/storage/toggle/leather_jacket,
/obj/item/clothing/suit/storage/toggle/brown_jacket,
/obj/item/clothing/suit/storage/toggle/hoodie,
/obj/item/clothing/suit/storage/toggle/hoodie/black,
diff --git a/code/game/antagonist/station/changeling.dm b/code/game/antagonist/station/changeling.dm
index 686de4d818..7ace822b1a 100644
--- a/code/game/antagonist/station/changeling.dm
+++ b/code/game/antagonist/station/changeling.dm
@@ -6,7 +6,7 @@
bantype = "changeling"
feedback_tag = "changeling_objective"
restricted_jobs = list("AI", "Cyborg")
- protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Station Administrator")
+ protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Colony Director")
welcome_text = "Use say \"#g message\" to communicate with your fellow changelings. Remember: you get all of their absorbed DNA if you absorb them."
flags = ANTAG_SUSPICIOUS | ANTAG_RANDSPAWN | ANTAG_VOTABLE
antaghud_indicator = "hudchangeling"
diff --git a/code/game/antagonist/station/cultist.dm b/code/game/antagonist/station/cultist.dm
index d3ba6c1ad7..3db723c556 100644
--- a/code/game/antagonist/station/cultist.dm
+++ b/code/game/antagonist/station/cultist.dm
@@ -11,7 +11,7 @@ var/datum/antagonist/cultist/cult
role_text = "Cultist"
role_text_plural = "Cultists"
bantype = "cultist"
- restricted_jobs = list("Chaplain","AI", "Cyborg", "Internal Affairs Agent", "Head of Security", "Station Administrator")
+ restricted_jobs = list("Chaplain","AI", "Cyborg", "Internal Affairs Agent", "Head of Security", "Colony Director")
protected_jobs = list("Security Officer", "Warden", "Detective")
role_type = BE_CULTIST
feedback_tag = "cult_objective"
@@ -110,13 +110,13 @@ var/datum/antagonist/cultist/cult
. = ..()
if(.)
player << "You catch a glimpse of the Realm of Nar-Sie, the Geometer of Blood. You now see how flimsy the world is, you see that it should be open to the knowledge of That Which Waits. Assist your new compatriots in their dark dealings. Their goals are yours, and yours are theirs. You serve the Dark One above all else. Bring It back."
- if(player.current && !istype(player.current, /mob/living/simple_animal/construct))
- player.current.add_language(LANGUAGE_CULT)
-
-/datum/antagonist/cultist/remove_antagonist(var/datum/mind/player, var/show_message, var/implanted)
- . = ..()
- if(. && player.current && !istype(player.current, /mob/living/simple_animal/construct))
- player.current.remove_language(LANGUAGE_CULT)
+ if(player.current && !istype(player.current, /mob/living/simple_animal/construct))
+ player.current.add_language(LANGUAGE_CULT)
+
+/datum/antagonist/cultist/remove_antagonist(var/datum/mind/player, var/show_message, var/implanted)
+ . = ..()
+ if(. && player.current && !istype(player.current, /mob/living/simple_animal/construct))
+ player.current.remove_language(LANGUAGE_CULT)
/datum/antagonist/cultist/can_become_antag(var/datum/mind/player)
if(!..())
diff --git a/code/game/antagonist/station/revolutionary.dm b/code/game/antagonist/station/revolutionary.dm
index d2efe7262b..5af856e45e 100644
--- a/code/game/antagonist/station/revolutionary.dm
+++ b/code/game/antagonist/station/revolutionary.dm
@@ -29,7 +29,7 @@ var/datum/antagonist/revolutionary/revs
faction_indicator = "rev"
faction_invisible = 1
- restricted_jobs = list("Internal Affairs Agent", "AI", "Cyborg", "Station Administrator", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer")
+ restricted_jobs = list("Internal Affairs Agent", "AI", "Cyborg", "Colony Director", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer")
protected_jobs = list("Security Officer", "Warden", "Detective")
/datum/antagonist/revolutionary/New()
diff --git a/code/game/antagonist/station/traitor.dm b/code/game/antagonist/station/traitor.dm
index ae8925be47..6bbc1d0606 100644
--- a/code/game/antagonist/station/traitor.dm
+++ b/code/game/antagonist/station/traitor.dm
@@ -3,9 +3,9 @@ var/datum/antagonist/traitor/traitors
// Inherits most of its vars from the base datum.
/datum/antagonist/traitor
id = MODE_TRAITOR
- protected_jobs = list("Security Officer", "Warden", "Detective", "Internal Affairs Agent", "Head of Security", "Station Administrator")
+ protected_jobs = list("Security Officer", "Warden", "Detective", "Internal Affairs Agent", "Head of Security", "Colony Director")
flags = ANTAG_SUSPICIOUS | ANTAG_RANDSPAWN | ANTAG_VOTABLE
-
+
/datum/antagonist/traitor/auto
id = MODE_AUTOTRAITOR
allow_latejoin = 1
diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm
index 0a75438480..bec6faf43a 100755
--- a/code/game/area/Space Station 13 areas.dm
+++ b/code/game/area/Space Station 13 areas.dm
@@ -1140,7 +1140,7 @@ area/space/atmosalert()
sound_env = MEDIUM_SOFTFLOOR
/area/crew_quarters/captain
- name = "\improper Command - Station Administrator's Office"
+ name = "\improper Command - Colony Director's Office"
icon_state = "captain"
sound_env = MEDIUM_SOFTFLOOR
@@ -2845,4 +2845,4 @@ var/list/the_station_areas = list (
H << S
spawn(60) .()
-*/
\ No newline at end of file
+*/
diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm
index d164485f38..37ed21016c 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -1,5 +1,6 @@
/atom/movable
layer = 3
+ appearance_flags = TILE_BOUND
var/last_move = null
var/anchored = 0
// var/elevation = 2 - not used anywhere
diff --git a/code/game/gamemodes/changeling/powers/armblade.dm b/code/game/gamemodes/changeling/powers/armblade.dm
index 26b8283a36..f241f41840 100644
--- a/code/game/gamemodes/changeling/powers/armblade.dm
+++ b/code/game/gamemodes/changeling/powers/armblade.dm
@@ -27,7 +27,7 @@
desc = "A grotesque blade made out of bone and flesh that cleaves through people as a hot knife through butter."
icon = 'icons/obj/weapons.dmi'
icon_state = "arm_blade"
- w_class = 5.0
+ w_class = ITEMSIZE_HUGE
force = 40
sharp = 1
edge = 1
diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm
index 20b49bb7f8..ac3e5c3d61 100644
--- a/code/game/gamemodes/cult/cult_items.dm
+++ b/code/game/gamemodes/cult/cult_items.dm
@@ -2,7 +2,7 @@
name = "cult blade"
desc = "An arcane weapon wielded by the followers of Nar-Sie."
icon_state = "cultblade"
- w_class = 4
+ w_class = ITEMSIZE_LARGE
force = 30
throwforce = 10
hitsound = 'sound/weapons/bladeslice.ogg'
@@ -105,7 +105,7 @@
name = "cult armour"
icon_state = "cult_armour"
desc = "A bulky suit of armour, bristling with spikes. It looks space-worthy."
- w_class = 3
+ w_class = ITEMSIZE_NORMAL
allowed = list(/obj/item/weapon/book/tome,/obj/item/weapon/melee/cultblade,/obj/item/weapon/tank/emergency_oxygen,/obj/item/device/suit_cooling_unit)
slowdown = 1
armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 30, bio = 30, rad = 30)
diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm
index 853d3f02dc..ca1d5639e9 100644
--- a/code/game/gamemodes/cult/ritual.dm
+++ b/code/game/gamemodes/cult/ritual.dm
@@ -183,7 +183,7 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa","
icon_state ="tome"
throw_speed = 1
throw_range = 5
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
unique = 1
var/tomedat = ""
var/list/words = list("ire" = "ire", "ego" = "ego", "nahlizet" = "nahlizet", "certum" = "certum", "veri" = "veri", "jatkaa" = "jatkaa", "balaq" = "balaq", "mgar" = "mgar", "karazet" = "karazet", "geeri" = "geeri")
@@ -434,7 +434,7 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa","
return
/obj/item/weapon/book/tome/imbued //admin tome, spawns working runes without waiting
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
var/cultistsonly = 1
attack_self(mob/user as mob)
if(src.cultistsonly && !iscultist(usr))
diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm
index 9099236e2c..b02246de0b 100644
--- a/code/game/gamemodes/events.dm
+++ b/code/game/gamemodes/events.dm
@@ -301,9 +301,9 @@ Would like to add a law like "Law x is _______" where x = a number, and _____ is
M.add_ion_law("HUMANS NEED TO EAT [what2pref] [what2] TO SURVIVE")
if(5)
M << "
"
- M << "THE STATION ADMINISTRATOR, HOP AND HOS ARE [who2]...LAWS UPDATED"
+ M << "THE COLONY DIRECTOR, HOP AND HOS ARE [who2]...LAWS UPDATED"
M << "
"
- M.add_ion_law("THE STATION ADMINISTRATOR, HOP AND HOS ARE [who2]")
+ M.add_ion_law("THE COLONY DIRECTOR, HOP AND HOS ARE [who2]")
if(6)
M << "
"
M << "THE STATION IS BUILT FOR [who2]...LAWS UPDATED"
diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm
index 7c1f422987..001102cb2a 100644
--- a/code/game/gamemodes/gameticker.dm
+++ b/code/game/gamemodes/gameticker.dm
@@ -274,8 +274,8 @@ var/global/datum/controller/gameticker/ticker
else if(!player.mind.assigned_role)
continue
else
- player.create_character()
- qdel(player)
+ if (player.create_character()) // VOREStation Edit
+ qdel(player)
proc/collect_minds()
@@ -288,7 +288,7 @@ var/global/datum/controller/gameticker/ticker
var/captainless=1
for(var/mob/living/carbon/human/player in player_list)
if(player && player.mind && player.mind.assigned_role)
- if(player.mind.assigned_role == "Station Administrator")
+ if(player.mind.assigned_role == "Colony Director")
captainless=0
if(!player_is_antag(player.mind, only_offstation_roles = 1))
job_master.EquipRank(player, player.mind.assigned_role, 0)
@@ -297,7 +297,7 @@ var/global/datum/controller/gameticker/ticker
if(captainless)
for(var/mob/M in player_list)
if(!istype(M,/mob/new_player))
- M << "Station Administratorship not forced on anyone."
+ M << "Colony Directorship not forced on anyone."
proc/process()
diff --git a/code/game/gamemodes/malfunction/malfunction.dm b/code/game/gamemodes/malfunction/malfunction.dm
index 835185fdcd..3a0ccec124 100644
--- a/code/game/gamemodes/malfunction/malfunction.dm
+++ b/code/game/gamemodes/malfunction/malfunction.dm
@@ -10,3 +10,4 @@
auto_recall_shuttle = 0
antag_tags = list(MODE_MALFUNCTION)
disabled_jobs = list("AI")
+ votable = 0
diff --git a/code/game/gamemodes/mixed/conflux.dm b/code/game/gamemodes/mixed/conflux.dm
index abf9fb2e2a..fb98fb0982 100644
--- a/code/game/gamemodes/mixed/conflux.dm
+++ b/code/game/gamemodes/mixed/conflux.dm
@@ -1,5 +1,5 @@
/datum/game_mode/conflux
- name = "Technomancer & Cult"
+ name = "Technomancers & Cult"
round_description = "A space wizard and a cult have invaded the station!"
extended_round_description = "Cultists and wizards spawn during this round."
config_tag = "conflux"
@@ -9,4 +9,4 @@
end_on_antag_death = 1
antag_tags = list(MODE_TECHNOMANCER, MODE_CULTIST)
require_all_templates = 1
- votable = 0
\ No newline at end of file
+ votable = 1
\ No newline at end of file
diff --git a/code/game/gamemodes/mixed/lizard.dm b/code/game/gamemodes/mixed/lizard.dm
index 2aa0cd46b6..b1077cc825 100644
--- a/code/game/gamemodes/mixed/lizard.dm
+++ b/code/game/gamemodes/mixed/lizard.dm
@@ -1,5 +1,5 @@
/datum/game_mode/lizard
- name = "Technomancer & Changelings"
+ name = "Technomancers & Changelings"
round_description = "A space wizard and changelings have invaded the station!"
extended_round_description = "Changelings and a wizard spawn during this round."
config_tag = "lizard"
@@ -9,4 +9,4 @@
end_on_antag_death = 0
antag_tags = list(MODE_TECHNOMANCER, MODE_CHANGELING)
require_all_templates = 1
- votable = 0
\ No newline at end of file
+ votable = 1
\ No newline at end of file
diff --git a/code/game/gamemodes/mixed/visitors.dm b/code/game/gamemodes/mixed/visitors.dm
index 601d4ccc17..4a8bd4b7d7 100644
--- a/code/game/gamemodes/mixed/visitors.dm
+++ b/code/game/gamemodes/mixed/visitors.dm
@@ -1,5 +1,5 @@
/datum/game_mode/visitors
- name = "Technomancer & Ninja"
+ name = "Technomancers & Ninja"
round_description = "A space wizard and a ninja have invaded the station!"
extended_round_description = "A ninja and wizard spawn during this round."
config_tag = "visitors"
@@ -9,4 +9,4 @@
end_on_antag_death = 0
antag_tags = list(MODE_TECHNOMANCER, MODE_NINJA)
require_all_templates = 1
- votable = 0
\ No newline at end of file
+ votable = 1
\ No newline at end of file
diff --git a/code/game/gamemodes/newobjective.dm b/code/game/gamemodes/newobjective.dm
index 1d41289ea2..6a5cd842ff 100644
--- a/code/game/gamemodes/newobjective.dm
+++ b/code/game/gamemodes/newobjective.dm
@@ -564,7 +564,7 @@ datum
captainslaser
steal_target = /obj/item/weapon/gun/energy/captain
- explanation_text = "Steal the captain's antique laser gun."
+ explanation_text = "Steal the Colony Director's antique laser gun."
weight = 20
get_points(var/job)
diff --git a/code/game/gamemodes/ninja/ninja.dm b/code/game/gamemodes/ninja/ninja.dm
index f17b693455..df3cb998b9 100644
--- a/code/game/gamemodes/ninja/ninja.dm
+++ b/code/game/gamemodes/ninja/ninja.dm
@@ -13,4 +13,5 @@
required_players_secret = 5
required_enemies = 1
end_on_antag_death = 0
- antag_tags = list(MODE_NINJA)
\ No newline at end of file
+ antag_tags = list(MODE_NINJA)
+ votable = 0
\ No newline at end of file
diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm
index 63832b809c..5d67b6eece 100644
--- a/code/game/gamemodes/nuclear/pinpointer.dm
+++ b/code/game/gamemodes/nuclear/pinpointer.dm
@@ -4,7 +4,7 @@
icon_state = "pinoff"
flags = CONDUCT
slot_flags = SLOT_BELT
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
item_state = "electronic"
throw_speed = 4
throw_range = 20
diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm
index f5dd1efe5f..da3a082b97 100644
--- a/code/game/gamemodes/objective.dm
+++ b/code/game/gamemodes/objective.dm
@@ -423,11 +423,11 @@ datum/objective/steal
var/target_name
var/global/possible_items[] = list(
- "the captain's antique laser gun" = /obj/item/weapon/gun/energy/captain,
+ "the Colony Director's antique laser gun" = /obj/item/weapon/gun/energy/captain,
"a hand teleporter" = /obj/item/weapon/hand_tele,
"an RCD" = /obj/item/weapon/rcd,
"a jetpack" = /obj/item/weapon/tank/jetpack,
- "a captain's jumpsuit" = /obj/item/clothing/under/rank/captain,
+ "a colony director's jumpsuit" = /obj/item/clothing/under/rank/captain,
"a functional AI" = /obj/item/device/aicard,
"a pair of magboots" = /obj/item/clothing/shoes/magboots,
"the station blueprints" = /obj/item/blueprints,
@@ -441,7 +441,7 @@ datum/objective/steal
"a head of security's jumpsuit" = /obj/item/clothing/under/rank/head_of_security,
"a head of personnel's jumpsuit" = /obj/item/clothing/under/rank/head_of_personnel,
"the hypospray" = /obj/item/weapon/reagent_containers/hypospray,
- "the captain's pinpointer" = /obj/item/weapon/pinpointer,
+ "the colony director's pinpointer" = /obj/item/weapon/pinpointer,
"an ablative armor vest" = /obj/item/clothing/suit/armor/laserproof,
)
diff --git a/code/game/gamemodes/technomancer/assistance/assistance.dm b/code/game/gamemodes/technomancer/assistance/assistance.dm
index 786a7f0b85..8779824896 100644
--- a/code/game/gamemodes/technomancer/assistance/assistance.dm
+++ b/code/game/gamemodes/technomancer/assistance/assistance.dm
@@ -11,7 +11,7 @@
obj_path = /obj/item/weapon/antag_spawner/technomancer_apprentice
/obj/item/weapon/antag_spawner
- w_class = 1
+ w_class = ITEMSIZE_TINY
var/used = 0
/obj/item/weapon/antag_spawner/proc/spawn_antag(client/C, turf/T)
diff --git a/code/game/gamemodes/technomancer/catalog.dm b/code/game/gamemodes/technomancer/catalog.dm
index c253d44199..74019d7149 100644
--- a/code/game/gamemodes/technomancer/catalog.dm
+++ b/code/game/gamemodes/technomancer/catalog.dm
@@ -27,7 +27,7 @@ var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) -
requisition various things from.. where ever they came from."
icon = 'icons/obj/storage.dmi'
icon_state ="scientology" //placeholder
- w_class = 2
+ w_class = ITEMSIZE_SMALL
var/budget = 1000
var/max_budget = 1000
var/mob/living/carbon/human/owner = null
diff --git a/code/game/gamemodes/technomancer/core_obj.dm b/code/game/gamemodes/technomancer/core_obj.dm
index 5ef5d37507..fc89f5ce69 100644
--- a/code/game/gamemodes/technomancer/core_obj.dm
+++ b/code/game/gamemodes/technomancer/core_obj.dm
@@ -5,7 +5,7 @@
icon = 'icons/obj/technomancer.dmi'
icon_state = "technomancer_core"
item_state = "technomancer_core"
- w_class = 5
+ w_class = ITEMSIZE_HUGE
slot_flags = SLOT_BACK
unacidable = 1
origin_tech = list(
@@ -86,6 +86,8 @@
if(wearer && wearer.mind)
if(!(technomancers.is_antagonist(wearer.mind))) // In case someone tries to wear a stolen core.
wearer.adjust_instability(20)
+ if(!wearer || wearer.stat == DEAD) // Unlock if we're dead or not worn.
+ canremove = TRUE
/obj/item/weapon/technomancer_core/proc/regenerate()
energy = min(max(energy + regen_rate, 0), max_energy)
@@ -287,4 +289,12 @@
/obj/item/weapon/technomancer_core/summoner/pay_dues()
if(summoned_mobs.len)
- pay_energy( round(summoned_mobs.len) )
\ No newline at end of file
+ pay_energy( round(summoned_mobs.len) )
+
+/obj/item/weapon/technomancer_core/verb/toggle_lock()
+ set name = "Toggle Core Lock"
+ set category = "Object"
+ set desc = "Toggles the locking mechanism on your manipulation core."
+
+ canremove = !canremove
+ to_chat(usr, "You [canremove ? "de" : ""]activate the locking mechanism on \the [src].")
\ No newline at end of file
diff --git a/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm b/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm
index 4ce5f8a16a..0106ff027e 100644
--- a/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm
+++ b/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm
@@ -11,7 +11,7 @@
icon = 'icons/obj/device.dmi'
icon_state = "hand_tele" //temporary
var/uses = 3.0
- w_class = 1
+ w_class = ITEMSIZE_TINY
item_state = "paper"
origin_tech = list(TECH_BLUESPACE = 4, TECH_POWER = 3)
diff --git a/code/game/gamemodes/technomancer/equipment.dm b/code/game/gamemodes/technomancer/equipment.dm
index 4c94d2e7f0..97978086b3 100644
--- a/code/game/gamemodes/technomancer/equipment.dm
+++ b/code/game/gamemodes/technomancer/equipment.dm
@@ -83,9 +83,9 @@
name = "Belt of Holding"
desc = "Can hold more than you'd expect."
icon_state = "ems"
- max_w_class = 3 // Can hold normal sized items.
+ max_w_class = ITEMSIZE_NORMAL // Can hold normal sized items.
storage_slots = 14 // Twice the capacity of a typical belt.
- max_storage_space = 42
+ max_storage_space = ITEMSIZE_COST_NORMAL * 14
/datum/technomancer/equipment/thermals
name = "Thermoncle"
@@ -139,6 +139,7 @@
icon = 'icons/obj/technomancer.dmi'
icon_state = "scepter"
force = 15
+ slot_flags = SLOT_BELT
/obj/item/weapon/scepter/attack_self(mob/living/carbon/human/user)
var/obj/item/item_to_test = user.get_other_hand(src)
diff --git a/code/game/gamemodes/technomancer/instability.dm b/code/game/gamemodes/technomancer/instability.dm
index 0de94cba7a..8f9eebeb17 100644
--- a/code/game/gamemodes/technomancer/instability.dm
+++ b/code/game/gamemodes/technomancer/instability.dm
@@ -5,15 +5,15 @@
// Proc: adjust_instability()
// Parameters: 0
// Description: Does nothing, because inheritence.
-/mob/living/proc/adjust_instability()
- return
+/mob/living/proc/adjust_instability(var/amount)
+ instability = min(max(instability + amount, 0), 200)
// Proc: adjust_instability()
// Parameters: 1 (amount - how much instability to give)
// Description: Adds or subtracks instability to the mob, then updates the hud.
/mob/living/carbon/human/adjust_instability(var/amount)
- instability = min(max(instability + amount, 0), 200)
instability_update_hud()
+ ..()
// Proc: instability_update_hud()
// Parameters: 0
@@ -35,7 +35,7 @@
// Proc: Life()
// Parameters: 0
// Description: Makes instability tick along with Life().
-/mob/living/carbon/human/Life()
+/mob/living/Life()
. = ..()
handle_instability()
@@ -43,9 +43,8 @@
// Parameters: 0
// Description: Makes instability decay. instability_effects() handles the bad effects for having instability. It will also hold back
// from causing bad effects more than one every ten seconds, to prevent sudden death from angry RNG.
-/mob/living/carbon/human/proc/handle_instability()
+/mob/living/proc/handle_instability()
instability = round(Clamp(instability, 0, 200))
- instability_update_hud()
//This should cushon against really bad luck.
if(instability && last_instability_event < (world.time - 10 SECONDS) && prob(20))
instability_effects()
@@ -65,6 +64,10 @@
if(101 to 200)
adjust_instability(-40)
+/mob/living/carbon/human/handle_instability()
+ ..()
+ instability_update_hud()
+
/*
[16:18:08] Sparks
[16:18:10] Wormholes
@@ -78,17 +81,85 @@
// Parameters: 0
// Description: Does a variety of bad effects to the entity holding onto the instability, with more severe effects occuring if they have
// a lot of instability.
-/mob/living/carbon/human/proc/instability_effects()
+/mob/living/proc/instability_effects()
+ last_instability_event = world.time
+ spawn(1)
+ var/image/instability_flash = image('icons/obj/spells.dmi',"instability")
+ overlays |= instability_flash
+ sleep(4)
+ overlays.Remove(instability_flash)
+ qdel(instability_flash)
+ radiate_instability()
+
+/mob/living/silicon/instability_effects()
if(instability)
var/rng = 0
- last_instability_event = world.time
- spawn(1)
- var/image/instability_flash = image('icons/obj/spells.dmi',"instability")
- overlays |= instability_flash
- sleep(4)
- overlays.Remove(instability_flash)
- qdel(instability_flash)
- radiate_instability()
+ ..()
+ switch(instability)
+ if(1 to 10) //Harmless
+ return
+ if(11 to 30) //Minor
+ rng = rand(0,1)
+ switch(rng)
+ if(0)
+ var/datum/effect/effect/system/spark_spread/sparks = PoolOrNew(/datum/effect/effect/system/spark_spread)
+ sparks.set_up(5, 0, src)
+ sparks.attach(loc)
+ sparks.start()
+ visible_message("Electrical sparks manifest from nowhere around \the [src]!")
+ qdel(sparks)
+ if(1)
+ return
+
+ if(31 to 50) //Moderate
+ rng = rand(0,4)
+ switch(rng)
+ if(0)
+ electrocute_act(instability * 0.3, "unstable energies")
+ if(1)
+ adjustFireLoss(instability * 0.15) //7.5 burn @ 50 instability
+ src << "Your chassis alerts you to overheating from an unknown external force!"
+ if(2)
+ adjustBruteLoss(instability * 0.15) //7.5 brute @ 50 instability
+ src << "Your chassis makes the sound of metal groaning!"
+ if(3)
+ safe_blink(src, range = 6)
+ src << "You're teleported against your will!"
+ if(4)
+ emp_act(2)
+
+ if(51 to 100) //Severe
+ rng = rand(0,3)
+ switch(rng)
+ if(0)
+ electrocute_act(instability * 0.5, "extremely unstable energies")
+ if(1)
+ emp_act(2)
+ if(2)
+ adjustFireLoss(instability * 0.3) //30 burn @ 100 instability
+ src << "Your chassis alerts you to extreme overheating from an unknown external force!"
+ if(3)
+ adjustBruteLoss(instability * 0.3) //30 brute @ 100 instability
+ src << "Your chassis makes the sound of metal groaning and tearing!"
+
+ if(101 to 200) //Lethal
+ rng = rand(0,4)
+ switch(rng)
+ if(0)
+ electrocute_act(instability, "extremely unstable energies")
+ if(1)
+ emp_act(1)
+ if(2)
+ adjustFireLoss(instability * 0.4) //40 burn @ 100 instability
+ src << "Your chassis alerts you to extreme overheating from an unknown external force!"
+ if(3)
+ adjustBruteLoss(instability * 0.4) //40 brute @ 100 instability
+ src << "Your chassis makes the sound of metal groaning and tearing!"
+
+/mob/living/carbon/human/instability_effects()
+ if(instability)
+ var/rng = 0
+ ..()
switch(instability)
if(1 to 10) //Harmless
return
@@ -194,7 +265,7 @@
if(7)
adjustToxLoss(instability * 0.40) //25 tox @ 100 instability
-/mob/living/carbon/human/proc/radiate_instability()
+/mob/living/proc/radiate_instability()
var/distance = round(sqrt(instability / 2))
if(instability <= 30)
distance = 0
@@ -210,6 +281,8 @@
var/armor = getarmor(null, "energy")
var/armor_factor = abs( (armor - 100) / 100)
outgoing_instability = outgoing_instability * armor_factor
+ if(outgoing_instability)
+ to_chat(H, "The purple glow makes you feel strange...")
H.adjust_instability(outgoing_instability)
set_light(distance, distance * 2, l_color = "#C26DDE")
diff --git a/code/game/gamemodes/technomancer/spells/aspect_aura.dm b/code/game/gamemodes/technomancer/spells/aspect_aura.dm
index 36b2a7c344..577f356229 100644
--- a/code/game/gamemodes/technomancer/spells/aspect_aura.dm
+++ b/code/game/gamemodes/technomancer/spells/aspect_aura.dm
@@ -73,7 +73,7 @@
var/turf/location = get_turf(H)
location.hotspot_expose(1000, 50, 1)
- owner.adjust_instability(1)
+ adjust_instability(1)
/obj/item/weapon/spell/aura/frost
name = "chilling aura"
@@ -95,7 +95,7 @@
var/turf/location = get_turf(H)
location.hotspot_expose(1, 50, 1)
- owner.adjust_instability(1)
+ adjust_instability(1)
@@ -128,7 +128,7 @@
for(var/mob/living/L in mobs_to_heal)
L.adjustBruteLoss(-5)
L.adjustFireLoss(-5)
- owner.adjust_instability(2)
+ adjust_instability(2)
/obj/item/weapon/spell/aura/biomed/on_use_cast(mob/living/user)
heal_allies_only = !heal_allies_only
diff --git a/code/game/gamemodes/technomancer/spells/audible_deception.dm b/code/game/gamemodes/technomancer/spells/audible_deception.dm
index 970d983894..832714f202 100644
--- a/code/game/gamemodes/technomancer/spells/audible_deception.dm
+++ b/code/game/gamemodes/technomancer/spells/audible_deception.dm
@@ -60,6 +60,7 @@
"Nymph Chirping" = 'sound/misc/nymphchirp.ogg',
"Sad Trombone" = 'sound/misc/sadtrombone.ogg',
"Honk" = 'sound/items/bikehorn.ogg',
+ "Bone Fracture" = "fracture",
)
var/selected_sound = null
@@ -75,10 +76,10 @@
var/turf/T = get_turf(hit_atom)
if(selected_sound && pay_energy(200))
playsound(T, selected_sound, 80, 1, -1)
- owner.adjust_instability(1)
+ adjust_instability(1)
// Air Horn time.
if(selected_sound == 'sound/items/AirHorn.ogg' && pay_energy(3800))
- owner.adjust_instability(49) // Pay for your sins.
+ adjust_instability(49) // Pay for your sins.
for(var/mob/living/carbon/M in ohearers(6, T))
if(M.get_ear_protection() >= 2)
continue
diff --git a/code/game/gamemodes/technomancer/spells/aura/biomed_aura.dm b/code/game/gamemodes/technomancer/spells/aura/biomed_aura.dm
index 024002814e..7eee612b8f 100644
--- a/code/game/gamemodes/technomancer/spells/aura/biomed_aura.dm
+++ b/code/game/gamemodes/technomancer/spells/aura/biomed_aura.dm
@@ -12,7 +12,7 @@
icon_state = "generic"
cast_methods = null
aspect = ASPECT_BIOMED
- glow_color = "#0000FF"
+ glow_color = "#33CC33"
var/regen_tick = 0
var/heal_allies_only = 1
@@ -23,16 +23,16 @@
if(regen_tick % 5 == 0)
var/list/nearby_mobs = range(4,owner)
var/list/mobs_to_heal = list()
- if(heal_allies_only)
- for(var/mob/living/L in nearby_mobs)
+ for(var/mob/living/L in nearby_mobs)
+ if(heal_allies_only)
if(is_ally(L))
mobs_to_heal |= L
- else
- mobs_to_heal = nearby_mobs //Heal everyone!
+ else
+ mobs_to_heal |= L // Heal everyone!
for(var/mob/living/L in mobs_to_heal)
L.adjustBruteLoss(-2)
L.adjustFireLoss(-2)
- owner.adjust_instability(2)
+ adjust_instability(2)
/obj/item/weapon/spell/aura/biomed/on_use_cast(mob/living/user)
heal_allies_only = !heal_allies_only
diff --git a/code/game/gamemodes/technomancer/spells/aura/fire_aura.dm b/code/game/gamemodes/technomancer/spells/aura/fire_aura.dm
index 5e1028192b..1e52b9f942 100644
--- a/code/game/gamemodes/technomancer/spells/aura/fire_aura.dm
+++ b/code/game/gamemodes/technomancer/spells/aura/fire_aura.dm
@@ -47,4 +47,4 @@
T.hotspot_expose(1000, 50, 1)
T.create_fire(fire_power)
- owner.adjust_instability(1)
\ No newline at end of file
+ adjust_instability(1)
diff --git a/code/game/gamemodes/technomancer/spells/aura/frost_aura.dm b/code/game/gamemodes/technomancer/spells/aura/frost_aura.dm
index 610702646d..c395ee1d4d 100644
--- a/code/game/gamemodes/technomancer/spells/aura/frost_aura.dm
+++ b/code/game/gamemodes/technomancer/spells/aura/frost_aura.dm
@@ -36,4 +36,4 @@
var/cold_factor = abs(protection - 1)
H.bodytemperature = max( (H.bodytemperature - temp_change) * cold_factor, temp_cap)
- owner.adjust_instability(1)
\ No newline at end of file
+ adjust_instability(1)
diff --git a/code/game/gamemodes/technomancer/spells/aura/shock_aura.dm b/code/game/gamemodes/technomancer/spells/aura/shock_aura.dm
index 70ae416ec0..b4c6027d9d 100644
--- a/code/game/gamemodes/technomancer/spells/aura/shock_aura.dm
+++ b/code/game/gamemodes/technomancer/spells/aura/shock_aura.dm
@@ -39,4 +39,4 @@
L.electrocute_act(power, src, 1.0, BP_TORSO)
- owner.adjust_instability(3)
\ No newline at end of file
+ adjust_instability(3)
\ No newline at end of file
diff --git a/code/game/gamemodes/technomancer/spells/aura/unstable_aura.dm b/code/game/gamemodes/technomancer/spells/aura/unstable_aura.dm
index 15aae46ad3..726e7d87b1 100644
--- a/code/game/gamemodes/technomancer/spells/aura/unstable_aura.dm
+++ b/code/game/gamemodes/technomancer/spells/aura/unstable_aura.dm
@@ -40,4 +40,4 @@
L << "You feel almost like you're melting from the inside!"
- owner.adjust_instability(2)
\ No newline at end of file
+ adjust_instability(2)
\ No newline at end of file
diff --git a/code/game/gamemodes/technomancer/spells/control.dm b/code/game/gamemodes/technomancer/spells/control.dm
index 17fb821d35..0cee9a9350 100644
--- a/code/game/gamemodes/technomancer/spells/control.dm
+++ b/code/game/gamemodes/technomancer/spells/control.dm
@@ -150,7 +150,7 @@
attack \the [L]."
//This is to stop someone from controlling beepsky and getting him to stun someone 5 times a second.
user.setClickCooldown(8)
- owner.adjust_instability(controlled_mobs.len)
+ adjust_instability(controlled_mobs.len)
else if(isturf(hit_atom))
var/turf/T = hit_atom
@@ -159,7 +159,7 @@
return 0
if(pay_energy(50 * controlled_mobs.len))
move_all(T)
- owner.adjust_instability(controlled_mobs.len)
+ adjust_instability(controlled_mobs.len)
user << "You command your [controlled_mobs.len > 1 ? "entities" : "[controlled_mobs[1]]"] to move \
towards \the [T]."
diff --git a/code/game/gamemodes/technomancer/spells/flame_tongue.dm b/code/game/gamemodes/technomancer/spells/flame_tongue.dm
index 923cde0b9d..79e613aa0f 100644
--- a/code/game/gamemodes/technomancer/spells/flame_tongue.dm
+++ b/code/game/gamemodes/technomancer/spells/flame_tongue.dm
@@ -46,7 +46,7 @@
visible_message("\The [user] reaches out towards \the [L] with the flaming hand, and they ignite!")
L << "You ignite!"
L.fire_act()
- owner.adjust_instability(12)
+ adjust_instability(12)
else
//This is needed in order for the welder to work, and works similarly to grippers.
welder.loc = user
@@ -54,7 +54,7 @@
if(!resolved && welder && hit_atom)
if(pay_energy(500))
welder.attack(hit_atom, user, def_zone)
- owner.adjust_instability(4)
+ adjust_instability(4)
if(welder && user && (welder.loc == user))
welder.loc = src
else
diff --git a/code/game/gamemodes/technomancer/spells/insert/mend_burns.dm b/code/game/gamemodes/technomancer/spells/insert/mend_burns.dm
index 6588f1617f..ef790d22e3 100644
--- a/code/game/gamemodes/technomancer/spells/insert/mend_burns.dm
+++ b/code/game/gamemodes/technomancer/spells/insert/mend_burns.dm
@@ -1,7 +1,6 @@
/datum/technomancer/spell/mend_burns
name = "Mend Burns"
- desc = "Heals minor burns, such as from exposure to flame, electric shock, or lasers. \
- Instability is split between the target and technomancer, if seperate."
+ desc = "Heals minor burns, such as from exposure to flame, electric shock, or lasers."
cost = 50
obj_path = /obj/item/weapon/spell/insert/mend_burns
ability_icon_state = "tech_mendburns"
@@ -20,10 +19,10 @@
spawn(1)
if(ishuman(host))
var/mob/living/carbon/human/H = host
+ var/heal_power = host == origin ? 10 : 30
+ origin.adjust_instability(10)
for(var/i = 0, i<5,i++)
if(H)
- H.adjustFireLoss(-5)
- H.adjust_instability(2.5)
- origin.adjust_instability(2.5)
- sleep(10)
- on_expire()
\ No newline at end of file
+ H.adjustFireLoss(-heal_power / 5)
+ sleep(1 SECOND)
+ on_expire()
diff --git a/code/game/gamemodes/technomancer/spells/insert/mend_metal.dm b/code/game/gamemodes/technomancer/spells/insert/mend_metal.dm
index 7ad6976b54..be847f1a07 100644
--- a/code/game/gamemodes/technomancer/spells/insert/mend_metal.dm
+++ b/code/game/gamemodes/technomancer/spells/insert/mend_metal.dm
@@ -1,6 +1,6 @@
/datum/technomancer/spell/mend_metal
name = "Mend Metal"
- desc = "Restores integrity to external robotic components. Instability is split between the target and technomancer, if seperate."
+ desc = "Restores integrity to external robotic components."
cost = 50
obj_path = /obj/item/weapon/spell/insert/mend_metal
ability_icon_state = "tech_mendwounds"
@@ -19,14 +19,13 @@
spawn(1)
if(ishuman(host))
var/mob/living/carbon/human/H = host
+ var/heal_power = host == origin ? 10 : 30
+ origin.adjust_instability(10)
for(var/i = 0, i<5,i++)
if(H)
for(var/obj/item/organ/external/O in H.organs)
if(O.robotic < ORGAN_ROBOT) // Robot parts only.
continue
- O.heal_damage(5, 0, internal = 1, robo_repair = 1)
-
- H.adjust_instability(2.5)
- origin.adjust_instability(2.5)
+ O.heal_damage(heal_power / 5, 0, internal = 1, robo_repair = 1)
sleep(1 SECOND)
- on_expire()
\ No newline at end of file
+ on_expire()
diff --git a/code/game/gamemodes/technomancer/spells/insert/mend_organs.dm b/code/game/gamemodes/technomancer/spells/insert/mend_organs.dm
index a43bb7611d..f0ce76f8b3 100644
--- a/code/game/gamemodes/technomancer/spells/insert/mend_organs.dm
+++ b/code/game/gamemodes/technomancer/spells/insert/mend_organs.dm
@@ -1,15 +1,15 @@
/datum/technomancer/spell/mend_organs
- name = "Mend Organs"
- desc = "Heals the target's internal organs, both organic and robotic. Instability is split between the target \
- and technomancer, if seperate."
- cost = 50
+ name = "Great Mend Wounds"
+ desc = "Greatly heals the target's wounds, both external and internal. Restores internal organs to functioning states, even if \
+ robotic, reforms bones, patches internal bleeding, and restores missing blood."
+ cost = 100
obj_path = /obj/item/weapon/spell/insert/mend_organs
ability_icon_state = "tech_mendwounds"
category = SUPPORT_SPELLS
/obj/item/weapon/spell/insert/mend_organs
- name = "mend organs"
- desc = "Now nobody will ever need surgery."
+ name = "great mend wounds"
+ desc = "A walking medbay is now you!"
icon_state = "mend_wounds"
cast_methods = CAST_MELEE
aspect = ASPECT_BIOMED
@@ -20,13 +20,33 @@
spawn(1)
if(ishuman(host))
var/mob/living/carbon/human/H = host
+ var/heal_power = host == origin ? 2 : 5
+ origin.adjust_instability(15)
+
for(var/i = 0, i<5,i++)
if(H)
for(var/obj/item/organ/O in H.internal_organs)
- if(O.damage > 0)
- O.damage = max(O.damage - 1, 0)
+ if(O.damage > 0) // Fix internal damage
+ O.damage = max(O.damage - (heal_power / 5), 0)
+ if(O.damage <= 5 && O.organ_tag == O_EYES) // Fix eyes
+ H.sdisabilities &= ~BLIND
+
+ for(var/obj/item/organ/external/O in H.organs) // Fix limbs
+ if(!O.robotic < ORGAN_ROBOT) // No robot parts for this.
+ continue
+ O.heal_damage(0, heal_power / 5, internal = 1, robo_repair = 0)
+
+ for(var/obj/item/organ/E in H.bad_external_organs) // Fix bones
+ var/obj/item/organ/external/affected = E
+ if((affected.damage < affected.min_broken_damage * config.organ_health_multiplier) && (affected.status & ORGAN_BROKEN))
+ affected.status &= ~ORGAN_BROKEN
+
+ for(var/datum/wound/W in affected.wounds) // Fix IB
+ if(istype(W, /datum/wound/internal_bleeding))
+ affected.wounds -= W
+ affected.update_damages()
+
+ H.restore_blood() // Fix bloodloss
- H.adjust_instability(2.5)
- origin.adjust_instability(2.5)
sleep(1 SECOND)
- on_expire()
\ No newline at end of file
+ on_expire()
diff --git a/code/game/gamemodes/technomancer/spells/insert/mend_wires.dm b/code/game/gamemodes/technomancer/spells/insert/mend_wires.dm
index fbafb7c044..f661956929 100644
--- a/code/game/gamemodes/technomancer/spells/insert/mend_wires.dm
+++ b/code/game/gamemodes/technomancer/spells/insert/mend_wires.dm
@@ -1,7 +1,6 @@
/datum/technomancer/spell/mend_wires
name = "Mend Wires"
- desc = "Binds the internal wiring of robotic limbs and components over time. \
- Instability is split between the target and technomancer, if seperate."
+ desc = "Binds the internal wiring of robotic limbs and components over time."
cost = 50
obj_path = /obj/item/weapon/spell/insert/mend_wires
ability_icon_state = "tech_mendwounds"
@@ -20,14 +19,13 @@
spawn(1)
if(ishuman(host))
var/mob/living/carbon/human/H = host
+ var/heal_power = host == origin ? 10 : 30
+ origin.adjust_instability(10)
for(var/i = 0, i<5,i++)
if(H)
for(var/obj/item/organ/external/O in H.organs)
if(O.robotic < ORGAN_ROBOT) // Robot parts only.
continue
- O.heal_damage(0, 5, internal = 1, robo_repair = 1)
-
- H.adjust_instability(2.5)
- origin.adjust_instability(2.5)
- sleep(10)
- on_expire()
\ No newline at end of file
+ O.heal_damage(0, heal_power / 5, internal = 1, robo_repair = 1)
+ sleep(1 SECOND)
+ on_expire()
diff --git a/code/game/gamemodes/technomancer/spells/insert/mend_wounds.dm b/code/game/gamemodes/technomancer/spells/insert/mend_wounds.dm
index c1c507b552..60e334cb39 100644
--- a/code/game/gamemodes/technomancer/spells/insert/mend_wounds.dm
+++ b/code/game/gamemodes/technomancer/spells/insert/mend_wounds.dm
@@ -20,10 +20,10 @@
spawn(1)
if(ishuman(host))
var/mob/living/carbon/human/H = host
+ var/heal_power = host == origin ? 10 : 30
+ origin.adjust_instability(10)
for(var/i = 0, i<5,i++)
if(H)
- H.adjustBruteLoss(-5)
- H.adjust_instability(2.5)
- origin.adjust_instability(2.5)
+ H.adjustBruteLoss(-heal_power / 5)
sleep(1 SECOND)
on_expire()
diff --git a/code/game/gamemodes/technomancer/spells/insert/purify.dm b/code/game/gamemodes/technomancer/spells/insert/purify.dm
index 7ca94f78e6..dc0003f802 100644
--- a/code/game/gamemodes/technomancer/spells/insert/purify.dm
+++ b/code/game/gamemodes/technomancer/spells/insert/purify.dm
@@ -1,7 +1,6 @@
/datum/technomancer/spell/purify
name = "Purify"
- desc = "Clenses the body of harmful impurities, such as toxins, radiation, viruses, genetic damage, and such. \
- Instability is split between the target and technomancer, if seperate."
+ desc = "Clenses the body of harmful impurities, such as toxins, radiation, viruses, genetic damage, and such."
cost = 25
obj_path = /obj/item/weapon/spell/insert/purify
ability_icon_state = "tech_purify"
@@ -24,12 +23,12 @@
H.disabilities = 0
// for(var/datum/disease/D in H.viruses)
// D.cure()
+ var/heal_power = host == origin ? 10 : 30
+ origin.adjust_instability(10)
for(var/i = 0, i<5,i++)
if(H)
- H.adjustToxLoss(-5)
- H.adjustCloneLoss(-5)
- H.radiation = max(host.radiation - 10, 0)
- H.adjust_instability(2.5)
- origin.adjust_instability(2.5)
+ H.adjustToxLoss(-heal_power / 5)
+ H.adjustCloneLoss(-heal_power / 5)
+ H.radiation = max(host.radiation - ( (heal_power * 2) / 5), 0)
sleep(1 SECOND)
on_expire()
diff --git a/code/game/gamemodes/technomancer/spells/instability_tap.dm b/code/game/gamemodes/technomancer/spells/instability_tap.dm
index 8ad52f3b3f..ea1e9ff2e4 100644
--- a/code/game/gamemodes/technomancer/spells/instability_tap.dm
+++ b/code/game/gamemodes/technomancer/spells/instability_tap.dm
@@ -20,8 +20,8 @@
/obj/item/weapon/spell/instability_tap/on_use_cast(mob/user)
if(check_for_scepter())
core.give_energy(7500)
- owner.adjust_instability(40)
+ adjust_instability(40)
else
core.give_energy(5000)
- owner.adjust_instability(50)
+ adjust_instability(50)
qdel(src)
\ No newline at end of file
diff --git a/code/game/gamemodes/technomancer/spells/mark_recall.dm b/code/game/gamemodes/technomancer/spells/mark_recall.dm
index 528b860094..e47b62c031 100644
--- a/code/game/gamemodes/technomancer/spells/mark_recall.dm
+++ b/code/game/gamemodes/technomancer/spells/mark_recall.dm
@@ -37,7 +37,7 @@
else
mark_spell_ref.forceMove(get_turf(user))
user << "Your mark is moved from its old position to \the [get_turf(user)] under you."
- owner.adjust_instability(5)
+ adjust_instability(5)
return 1
else
user << "You can't afford the energy cost!"
@@ -99,7 +99,7 @@
playsound(old_turf, 'sound/effects/sparks2.ogg', 50, 1)
- owner.adjust_instability(25)
+ adjust_instability(25)
qdel(src)
return 1
else
diff --git a/code/game/gamemodes/technomancer/spells/oxygenate.dm b/code/game/gamemodes/technomancer/spells/oxygenate.dm
index f1edc635c1..67451c8c39 100644
--- a/code/game/gamemodes/technomancer/spells/oxygenate.dm
+++ b/code/game/gamemodes/technomancer/spells/oxygenate.dm
@@ -20,7 +20,7 @@
var/mob/living/carbon/human/H = hit_atom
if(pay_energy(1500))
H.adjustOxyLoss(-35)
- owner.adjust_instability(10)
+ adjust_instability(10)
return
else if(isturf(hit_atom))
var/turf/T = hit_atom
@@ -28,4 +28,4 @@
T.assume_gas("oxygen", 200)
T.assume_gas("nitrogen", 800)
playsound(src.loc, 'sound/effects/spray.ogg', 50, 1, -3)
- owner.adjust_instability(10)
\ No newline at end of file
+ adjust_instability(10)
\ No newline at end of file
diff --git a/code/game/gamemodes/technomancer/spells/phase_shift.dm b/code/game/gamemodes/technomancer/spells/phase_shift.dm
index a571d6789d..02cbb6e2bf 100644
--- a/code/game/gamemodes/technomancer/spells/phase_shift.dm
+++ b/code/game/gamemodes/technomancer/spells/phase_shift.dm
@@ -15,6 +15,7 @@
/obj/item/weapon/spell/phase_shift/New()
..()
set_light(3, 2, l_color = "#FA58F4")
+ processing_objects |= src
/obj/effect/phase_shift
name = "rift"
@@ -32,8 +33,13 @@
/obj/effect/phase_shift/Destroy()
for(var/atom/movable/AM in contents) //Eject everything out.
AM.forceMove(get_turf(src))
+ processing_objects -= src
..()
+/obj/effect/phase_shift/process()
+ for(var/mob/living/L in contents)
+ L.adjust_instability(2)
+
/obj/effect/phase_shift/relaymove(mob/user as mob)
if(user.stat)
return
diff --git a/code/game/gamemodes/technomancer/spells/projectile/overload.dm b/code/game/gamemodes/technomancer/spells/projectile/overload.dm
index 90bf50e7d6..c516123f77 100644
--- a/code/game/gamemodes/technomancer/spells/projectile/overload.dm
+++ b/code/game/gamemodes/technomancer/spells/projectile/overload.dm
@@ -36,10 +36,10 @@
P.damage = round(energy_before_firing * 0.004) // 4% of their current energy pool.
else
P.damage = round(energy_before_firing * 0.003) // 3% of their current energy pool.
- owner.adjust_instability(instability_per_shot)
+ adjust_instability(instability_per_shot)
return 1
// muzzle_type = /obj/effect/projectile/lightning/muzzle
// tracer_type = /obj/effect/projectile/lightning/tracer
-// impact_type = /obj/effect/projectile/lightning/impact
\ No newline at end of file
+// impact_type = /obj/effect/projectile/lightning/impact
diff --git a/code/game/gamemodes/technomancer/spells/projectile/projectile.dm b/code/game/gamemodes/technomancer/spells/projectile/projectile.dm
index ea2f0db4e3..b3a1cda72d 100644
--- a/code/game/gamemodes/technomancer/spells/projectile/projectile.dm
+++ b/code/game/gamemodes/technomancer/spells/projectile/projectile.dm
@@ -13,9 +13,10 @@
if(set_up(hit_atom, user))
var/obj/item/projectile/new_projectile = new spell_projectile(get_turf(user))
new_projectile.launch(hit_atom)
+ log_and_message_admins("has casted [src] at \the [hit_atom].")
if(fire_sound)
playsound(get_turf(src), fire_sound, 75, 1)
- owner.adjust_instability(instability_per_shot)
+ adjust_instability(instability_per_shot)
return 1
return 0
@@ -28,5 +29,8 @@
user.Stun(pre_shot_delay / 10)
sleep(pre_shot_delay)
qdel(target_image)
- return 1
- return 0
\ No newline at end of file
+ if(owner)
+ return TRUE
+ return FALSE // We got dropped before the firing occured.
+ return TRUE // No delay, no need to check.
+ return FALSE
diff --git a/code/game/gamemodes/technomancer/spells/radiance.dm b/code/game/gamemodes/technomancer/spells/radiance.dm
index 7cd7694122..d94b064197 100644
--- a/code/game/gamemodes/technomancer/spells/radiance.dm
+++ b/code/game/gamemodes/technomancer/spells/radiance.dm
@@ -42,4 +42,4 @@
var/radius = max(get_dist(L, src), 1)
var/rads = (power / 10) * ( 1 / (radius**2) )
L.apply_effect(rads, IRRADIATE)
- owner.adjust_instability(2)
+ adjust_instability(2)
diff --git a/code/game/gamemodes/technomancer/spells/resurrect.dm b/code/game/gamemodes/technomancer/spells/resurrect.dm
index dcdcbb1f18..8d7eca3393 100644
--- a/code/game/gamemodes/technomancer/spells/resurrect.dm
+++ b/code/game/gamemodes/technomancer/spells/resurrect.dm
@@ -37,7 +37,7 @@
dead_mob_list -= SM
living_mob_list += SM
SM.icon_state = SM.icon_living
- owner.adjust_instability(30)
+ adjust_instability(30)
else if(ishuman(L))
var/mob/living/carbon/human/H = L
@@ -57,7 +57,7 @@
H.timeofdeath = null
visible_message("\The [H]'s eyes open!")
user << "It's alive!"
- owner.adjust_instability(100)
+ adjust_instability(100)
else
user << "The body of \the [H] doesn't seem to respond, perhaps you could try again?"
- owner.adjust_instability(10)
\ No newline at end of file
+ adjust_instability(10)
\ No newline at end of file
diff --git a/code/game/gamemodes/technomancer/spells/shared_burden.dm b/code/game/gamemodes/technomancer/spells/shared_burden.dm
index 95523d99ff..7c3e7447a8 100644
--- a/code/game/gamemodes/technomancer/spells/shared_burden.dm
+++ b/code/game/gamemodes/technomancer/spells/shared_burden.dm
@@ -24,5 +24,5 @@
if(pay_energy(500))
var/instability_to_drain = min(H.instability, 25)
user << "You draw instability away from \the [H] and towards you."
- owner.adjust_instability(instability_to_drain)
+ adjust_instability(instability_to_drain)
H.adjust_instability(-instability_to_drain)
\ No newline at end of file
diff --git a/code/game/gamemodes/technomancer/spells/spawner/darkness.dm b/code/game/gamemodes/technomancer/spells/spawner/darkness.dm
index ecb18b3481..eafb167dd4 100644
--- a/code/game/gamemodes/technomancer/spells/spawner/darkness.dm
+++ b/code/game/gamemodes/technomancer/spells/spawner/darkness.dm
@@ -15,7 +15,7 @@
/obj/item/weapon/spell/spawner/darkness/on_ranged_cast(atom/hit_atom, mob/user)
if(pay_energy(500))
- owner.adjust_instability(4)
+ adjust_instability(4)
..()
/obj/item/weapon/spell/spawner/darkness/New()
diff --git a/code/game/gamemodes/technomancer/spells/spawner/fire_blast.dm b/code/game/gamemodes/technomancer/spells/spawner/fire_blast.dm
index 50ed504b40..1890bfd320 100644
--- a/code/game/gamemodes/technomancer/spells/spawner/fire_blast.dm
+++ b/code/game/gamemodes/technomancer/spells/spawner/fire_blast.dm
@@ -16,7 +16,7 @@
/obj/item/weapon/spell/spawner/fire_blast/on_ranged_cast(atom/hit_atom, mob/user)
if(pay_energy(2000))
- owner.adjust_instability(12)
+ adjust_instability(12)
..() // Makes the booms happen.
/obj/effect/temporary_effect/fire_blast
diff --git a/code/game/gamemodes/technomancer/spells/spawner/pulsar.dm b/code/game/gamemodes/technomancer/spells/spawner/pulsar.dm
index c1b016116a..78711b2942 100644
--- a/code/game/gamemodes/technomancer/spells/spawner/pulsar.dm
+++ b/code/game/gamemodes/technomancer/spells/spawner/pulsar.dm
@@ -19,7 +19,7 @@
/obj/item/weapon/spell/spawner/pulsar/on_ranged_cast(atom/hit_atom, mob/user)
if(pay_energy(4000))
- owner.adjust_instability(8)
+ adjust_instability(8)
..()
/obj/item/weapon/spell/spawner/pulsar/on_throw_cast(atom/hit_atom, mob/user)
diff --git a/code/game/gamemodes/technomancer/spells/summon/summon.dm b/code/game/gamemodes/technomancer/spells/summon/summon.dm
index 4565dcd816..01321c8cb0 100644
--- a/code/game/gamemodes/technomancer/spells/summon/summon.dm
+++ b/code/game/gamemodes/technomancer/spells/summon/summon.dm
@@ -19,16 +19,17 @@
E.icon_state = "anom"
sleep(5 SECONDS)
qdel(E)
- var/mob/living/L = new summoned_mob_type(T)
- core.summoned_mobs |= L
- L.summoned = 1
- var/image/summon_underlay = image('icons/obj/objects.dmi',"anom")
- summon_underlay.alpha = 127
- L.underlays |= summon_underlay
- on_summon(L)
- user << "You've successfully teleported \a [L] to you!"
- visible_message("\A [L] appears from no-where!")
- user.adjust_instability(instability_cost)
+ if(owner) // We might've been dropped.
+ var/mob/living/L = new summoned_mob_type(T)
+ core.summoned_mobs |= L
+ L.summoned = 1
+ var/image/summon_underlay = image('icons/obj/objects.dmi',"anom")
+ summon_underlay.alpha = 127
+ L.underlays |= summon_underlay
+ on_summon(L)
+ user << "You've successfully teleported \a [L] to you!"
+ visible_message("\A [L] appears from no-where!")
+ user.adjust_instability(instability_cost)
/obj/item/weapon/spell/summon/on_use_cast(mob/living/user)
if(summon_options.len)
diff --git a/code/game/gamemodes/technomancer/spells/summon/summon_ward.dm b/code/game/gamemodes/technomancer/spells/summon/summon_ward.dm
index e4154eddf2..f6b6b87dfe 100644
--- a/code/game/gamemodes/technomancer/spells/summon/summon_ward.dm
+++ b/code/game/gamemodes/technomancer/spells/summon/summon_ward.dm
@@ -32,15 +32,24 @@
response_help = "pets the"
response_disarm = "swats away"
response_harm = "punches"
+ min_oxy = 0
+ max_oxy = 0
+ min_tox = 0
+ max_tox = 0
+ min_co2 = 0
+ max_co2 = 0
+ min_n2 = 0
+ max_n2 = 0
+ minbodytemp = 0
+ maxbodytemp = 0
+ unsuitable_atoms_damage = 0
+ heat_damage_per_tick = 0
+ cold_damage_per_tick = 0
+
var/true_sight = 0 // If true, detects more than what the Technomancer normally can't.
var/mob/living/carbon/human/creator = null
var/list/seen_mobs = list()
-/mob/living/simple_animal/ward/New()
- ..()
- spawn(6 MINUTES)
- expire()
-
/mob/living/simple_animal/ward/death()
if(creator)
creator << "Your ward inside [get_area(src)] was killed!"
diff --git a/code/game/gamemodes/technomancer/spells/warp_strike.dm b/code/game/gamemodes/technomancer/spells/warp_strike.dm
index 11b3ba032e..539277031f 100644
--- a/code/game/gamemodes/technomancer/spells/warp_strike.dm
+++ b/code/game/gamemodes/technomancer/spells/warp_strike.dm
@@ -49,7 +49,7 @@
var/new_dir = get_dir(user, chosen_target)
user.dir = new_dir
sparks.start()
- owner.adjust_instability(12)
+ adjust_instability(12)
//Finally, we handle striking the victim with whatever's in the user's offhand.
var/obj/item/I = user.get_inactive_hand()
diff --git a/code/game/gamemodes/technomancer/technomancer.dm b/code/game/gamemodes/technomancer/technomancer.dm
index cf37046d0f..57b4f25277 100644
--- a/code/game/gamemodes/technomancer/technomancer.dm
+++ b/code/game/gamemodes/technomancer/technomancer.dm
@@ -6,9 +6,9 @@
fear and excitement. Ultimately, their purpose is unknown. However, it is up to you and your crew to decide if \
their powers can be used for good or if their arrival foreshadows the destruction of the entire colony, or worse."
config_tag = "technomancer"
- votable = 0
+ votable = 1
required_players = 5
required_players_secret = 5
required_enemies = 1
end_on_antag_death = 0
- antag_tags = list(MODE_TECHNOMANCER)
\ No newline at end of file
+ antag_tags = list(MODE_TECHNOMANCER)
diff --git a/code/game/jobs/access_datum.dm b/code/game/jobs/access_datum.dm
index bf027d93a2..322a71f7d4 100644
--- a/code/game/jobs/access_datum.dm
+++ b/code/game/jobs/access_datum.dm
@@ -127,7 +127,7 @@
/var/const/access_captain = 20
/datum/access/captain
id = access_captain
- desc = "Captain"
+ desc = "Colony Director"
region = ACCESS_REGION_COMMAND
/var/const/access_all_personal_lockers = 21
diff --git a/code/game/jobs/job/captain.dm b/code/game/jobs/job/captain.dm
index a98bfe4544..dfa9bf3c8c 100644
--- a/code/game/jobs/job/captain.dm
+++ b/code/game/jobs/job/captain.dm
@@ -1,7 +1,7 @@
var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
/datum/job/captain
- title = "Station Administrator"
+ title = "Colony Director"
flag = CAPTAIN
department = "Command"
head_position = 1
@@ -11,7 +11,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
spawn_positions = 1
supervisors = "company officials and Corporate Regulations"
selection_color = "#1D1D4F"
- alt_titles = list("Site Manager")
+ alt_titles = list("Site Manager", "Overseer")
idtype = /obj/item/weapon/card/id/gold
req_admin_notify = 1
access = list() //See get_access()
@@ -70,7 +70,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
faction = "Station"
total_positions = 1
spawn_positions = 1
- supervisors = "the station administrator"
+ supervisors = "the Colony Director"
selection_color = "#2F2F7F"
idtype = /obj/item/weapon/card/id/silver
alt_titles = list("Crew Resources Officer")
@@ -145,4 +145,4 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
H.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket/female/skirt(H), slot_w_uniform)
else
H.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket/charcoal(H), slot_w_uniform)
- return 1
\ No newline at end of file
+ return 1
diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm
index a8e4d3f3f6..02a79c25e4 100644
--- a/code/game/jobs/job/civilian.dm
+++ b/code/game/jobs/job/civilian.dm
@@ -231,7 +231,7 @@
idtype = /obj/item/weapon/card/id/civilian
access = list(access_library, access_maint_tunnels)
minimal_access = list(access_library)
- alt_titles = list("Journalist", "Professor", "Historian")
+ alt_titles = list("Journalist", "Professor", "Historian", "Writer")
equip(var/mob/living/carbon/human/H)
diff --git a/code/game/jobs/job/engineering.dm b/code/game/jobs/job/engineering.dm
index 227297ca05..db9d51290f 100644
--- a/code/game/jobs/job/engineering.dm
+++ b/code/game/jobs/job/engineering.dm
@@ -7,7 +7,7 @@
faction = "Station"
total_positions = 1
spawn_positions = 1
- supervisors = "the station administrator"
+ supervisors = "the Colony Director"
selection_color = "#7F6E2C"
idtype = /obj/item/weapon/card/id/engineering/head
req_admin_notify = 1
diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm
index 0c2053f8d6..7241525dfe 100644
--- a/code/game/jobs/job/medical.dm
+++ b/code/game/jobs/job/medical.dm
@@ -7,7 +7,7 @@
faction = "Station"
total_positions = 1
spawn_positions = 1
- supervisors = "the station administrator"
+ supervisors = "the Colony Director"
selection_color = "#026865"
idtype = /obj/item/weapon/card/id/medical/head
req_admin_notify = 1
diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm
index b13d623fd6..da4b15cc2f 100644
--- a/code/game/jobs/job/science.dm
+++ b/code/game/jobs/job/science.dm
@@ -7,7 +7,7 @@
faction = "Station"
total_positions = 1
spawn_positions = 1
- supervisors = "the station administrator"
+ supervisors = "the Colony Director"
selection_color = "#AD6BAD"
idtype = /obj/item/weapon/card/id/science/head
req_admin_notify = 1
diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm
index f151a5fb83..267fb1cca1 100644
--- a/code/game/jobs/job/security.dm
+++ b/code/game/jobs/job/security.dm
@@ -7,7 +7,7 @@
faction = "Station"
total_positions = 1
spawn_positions = 1
- supervisors = "the station administrator"
+ supervisors = "the Colony Director"
selection_color = "#8E2929"
idtype = /obj/item/weapon/card/id/security/head
req_admin_notify = 1
diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm
index 85d4c2695a..b05a212915 100644
--- a/code/game/jobs/job_controller.dm
+++ b/code/game/jobs/job_controller.dm
@@ -442,9 +442,9 @@ var/global/datum/controller/occupations/job_master
return H.Robotize()
if("AI")
return H
- if("Station Administrator")
+ if("Colony Director")
var/sound/announce_sound = (ticker.current_state <= GAME_STATE_SETTING_UP)? null : sound('sound/misc/boatswain.ogg', volume=20)
- captain_announcement.Announce("All hands, [alt_title ? alt_title : "Station Administrator"] [H.real_name] on deck!", new_sound=announce_sound)
+ captain_announcement.Announce("All hands, [alt_title ? alt_title : "Colony Director"] [H.real_name] on deck!", new_sound=announce_sound)
//Deferred item spawning.
if(spawn_in_storage && spawn_in_storage.len)
diff --git a/code/game/jobs/jobs.dm b/code/game/jobs/jobs.dm
index bf3b4ea8ff..72295fe01d 100644
--- a/code/game/jobs/jobs.dm
+++ b/code/game/jobs/jobs.dm
@@ -52,7 +52,7 @@ var/list/assistant_occupations = list(
var/list/command_positions = list(
- "Station Administrator",
+ "Colony Director",
"Head of Personnel",
"Head of Security",
"Chief Engineer",
diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm
index 398bac9c54..ca424f122b 100644
--- a/code/game/machinery/alarm.dm
+++ b/code/game/machinery/alarm.dm
@@ -775,7 +775,7 @@ Just a object used in constructing air alarms
icon = 'icons/obj/doors/door_assembly.dmi'
icon_state = "door_electronics"
desc = "Looks like a circuit. Probably is."
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
*/
/*
@@ -991,7 +991,7 @@ Just a object used in constructing fire alarms
icon = 'icons/obj/doors/door_assembly.dmi'
icon_state = "door_electronics"
desc = "A circuit. It has a label on it, it says \"Can handle heat levels up to 40 degrees celsius!\""
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
*/
/obj/machinery/partyalarm
diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm
index 80b33cfaa0..2a59f345d4 100644
--- a/code/game/machinery/atmoalter/canister.dm
+++ b/code/game/machinery/atmoalter/canister.dm
@@ -5,7 +5,7 @@
density = 1
var/health = 100.0
flags = CONDUCT
- w_class = 5
+ w_class = ITEMSIZE_HUGE
var/valve_open = 0
var/release_pressure = ONE_ATMOSPHERE
diff --git a/code/game/machinery/atmoalter/pump.dm b/code/game/machinery/atmoalter/pump.dm
index a5bdac7421..9f31a9ba1a 100644
--- a/code/game/machinery/atmoalter/pump.dm
+++ b/code/game/machinery/atmoalter/pump.dm
@@ -4,7 +4,7 @@
icon = 'icons/obj/atmos.dmi'
icon_state = "psiphon:0"
density = 1
- w_class = 3
+ w_class = ITEMSIZE_NORMAL
var/on = 0
var/direction_out = 0 //0 = siphoning, 1 = releasing
diff --git a/code/game/machinery/atmoalter/scrubber.dm b/code/game/machinery/atmoalter/scrubber.dm
index 87997d32c8..10091a4918 100644
--- a/code/game/machinery/atmoalter/scrubber.dm
+++ b/code/game/machinery/atmoalter/scrubber.dm
@@ -4,7 +4,7 @@
icon = 'icons/obj/atmos.dmi'
icon_state = "pscrubber:0"
density = 1
- w_class = 3
+ w_class = ITEMSIZE_NORMAL
var/on = 0
var/volume_rate = 800
diff --git a/code/game/machinery/camera/camera_assembly.dm b/code/game/machinery/camera/camera_assembly.dm
index 135ad3c1f0..33cb1b0613 100644
--- a/code/game/machinery/camera/camera_assembly.dm
+++ b/code/game/machinery/camera/camera_assembly.dm
@@ -3,7 +3,7 @@
desc = "A pre-fabricated security camera kit, ready to be assembled and mounted to a surface."
icon = 'icons/obj/monitors.dmi'
icon_state = "cameracase"
- w_class = 2
+ w_class = ITEMSIZE_SMALL
anchored = 0
matter = list(DEFAULT_WALL_MATERIAL = 700,"glass" = 300)
diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm
index 1e5c6ec73b..2f87553e8e 100644
--- a/code/game/machinery/cell_charger.dm
+++ b/code/game/machinery/cell_charger.dm
@@ -41,6 +41,9 @@
return
if(istype(W, /obj/item/weapon/cell) && anchored)
+ if(istype(W, /obj/item/weapon/cell/device))
+ user << " The charger isn't fitted for that type of cell."
+ return
if(charging)
user << "There is already a cell in the charger."
return
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index 88bafe5cd3..17c3b58763 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -395,7 +395,7 @@
icon = 'icons/obj/cloning.dmi'
icon_state = "datadisk0" //Gosh I hope syndies don't mistake them for the nuke disk.
item_state = "card-id"
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
var/datum/dna2/record/buf = null
var/read_only = 0 //Well,it's still a floppy disk
diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm
index d338edacc1..0a568b4ade 100644
--- a/code/game/machinery/computer/arcade.dm
+++ b/code/game/machinery/computer/arcade.dm
@@ -1005,7 +1005,7 @@
desc = "A model spaceship, it looks like those used back in the day when travelling to Orion! It even has a miniature FX-293 reactor, which was renowned for its instability and tendency to explode..."
icon = 'icons/obj/toy.dmi'
icon_state = "ship"
- w_class = 2
+ w_class = ITEMSIZE_SMALL
var/active = 0 //if the ship is on
/obj/item/weapon/orion_ship/examine(mob/user)
diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm
index 4f73301e84..6eae870cfd 100644
--- a/code/game/machinery/computer/medical.dm
+++ b/code/game/machinery/computer/medical.dm
@@ -314,7 +314,7 @@
src.active2.fields["cdi_d"] = t1
if("notes")
if (istype(src.active2, /datum/data/record))
- var/t1 = sanitize(input("Please summarize notes:", "Med. records", html_decode(src.active2.fields["notes"]), null) as message, extra = 0)
+ var/t1 = sanitize(input("Please summarize notes:", "Med. records", html_decode(src.active2.fields["notes"]), null) as message, extra = 0, max_length = MAX_RECORD_LENGTH)
if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
return
src.active2.fields["notes"] = t1
diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm
index eda3a3b799..54c94d8684 100644
--- a/code/game/machinery/computer/security.dm
+++ b/code/game/machinery/computer/security.dm
@@ -481,7 +481,7 @@ What a mess.*/
active2.fields["ma_crim_d"] = t1
if("notes")
if (istype(active2, /datum/data/record))
- var/t1 = sanitize(input("Please summarize notes:", "Secure. records", html_decode(active2.fields["notes"]), null) as message, extra = 0)
+ var/t1 = sanitize(input("Please summarize notes:", "Secure. records", html_decode(active2.fields["notes"]), null) as message, extra = 0, max_length = MAX_RECORD_LENGTH)
if (!t1 || active2 != a2)
return
active2.fields["notes"] = t1
@@ -496,7 +496,7 @@ What a mess.*/
temp += "- Released
"
temp += "
"
if("rank")
- var/list/L = list( "Head of Personnel", "Station Administrator", "AI" )
+ var/list/L = list( "Head of Personnel", "Colony Director", "AI" )
//This was so silly before the change. Now it actually works without beating your head against the keyboard. /N
if ((istype(active1, /datum/data/record) && L.Find(rank)))
temp = "Rank:
"
diff --git a/code/game/machinery/computer/skills.dm b/code/game/machinery/computer/skills.dm
index 2b4d898cfc..1a67778fdf 100644
--- a/code/game/machinery/computer/skills.dm
+++ b/code/game/machinery/computer/skills.dm
@@ -343,7 +343,7 @@ What a mess.*/
return
active1.fields["age"] = t1
if("rank")
- var/list/L = list( "Head of Personnel", "Station Administrator", "AI" )
+ var/list/L = list( "Head of Personnel", "Colony Director", "AI" )
//This was so silly before the change. Now it actually works without beating your head against the keyboard. /N
if ((istype(active1, /datum/data/record) && L.Find(rank)))
temp = "Rank:
"
diff --git a/code/game/machinery/computer3/buildandrepair.dm b/code/game/machinery/computer3/buildandrepair.dm
index 47ceffb756..a064d8ce1c 100644
--- a/code/game/machinery/computer3/buildandrepair.dm
+++ b/code/game/machinery/computer3/buildandrepair.dm
@@ -2,7 +2,7 @@
/obj/item/part/computer/circuitboard
density = 0
anchored = 0
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
name = "Circuit board"
icon = 'icons/obj/module.dmi'
icon_state = "id_mod"
diff --git a/code/game/machinery/computer3/component.dm b/code/game/machinery/computer3/component.dm
index 0f7f64d011..47d5e29853 100644
--- a/code/game/machinery/computer3/component.dm
+++ b/code/game/machinery/computer3/component.dm
@@ -14,7 +14,7 @@
gender = PLURAL
icon = 'icons/obj/stock_parts.dmi'
icon_state = "hdd1"
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
var/emagged = 0
diff --git a/code/game/machinery/computer3/computers/card.dm b/code/game/machinery/computer3/computers/card.dm
index 3a510ac836..ac3e7e4e5b 100644
--- a/code/game/machinery/computer3/computers/card.dm
+++ b/code/game/machinery/computer3/computers/card.dm
@@ -35,8 +35,8 @@
var jobs_all = ""
jobs_all += " | Command | "
- jobs_all += "
| Special | "//Station Administrator in special because he is head of heads ~Intercross21
- jobs_all += "Station Administrator | "
+ jobs_all += "
| Special | "//Colony Director in special because he is head of heads ~Intercross21
+ jobs_all += "Colony Director | "
jobs_all += "Custom | "
counter = 0
@@ -348,4 +348,4 @@
authenticate()
if(access_cent_captain in reader.access)
return 1
- return 0
\ No newline at end of file
+ return 0
diff --git a/code/game/machinery/computer3/computers/security.dm b/code/game/machinery/computer3/computers/security.dm
index a335cf1c73..a314bed273 100644
--- a/code/game/machinery/computer3/computers/security.dm
+++ b/code/game/machinery/computer3/computers/security.dm
@@ -513,7 +513,7 @@ What a mess.*/
temp += "Released"
temp += ""
if("rank")
- var/list/L = list( "Head of Personnel", "Station Administrator", "AI" )
+ var/list/L = list( "Head of Personnel", "Colony Director", "AI" )
//This was so silly before the change. Now it actually works without beating your head against the keyboard. /N
if ((istype(active1, /datum/data/record) && L.Find(rank)))
temp = "Rank:
"
diff --git a/code/game/machinery/computer3/laptop.dm b/code/game/machinery/computer3/laptop.dm
index e093f4d5f6..1b0e413165 100644
--- a/code/game/machinery/computer3/laptop.dm
+++ b/code/game/machinery/computer3/laptop.dm
@@ -24,7 +24,7 @@
icon_state = "laptop-closed"
pixel_x = 2
pixel_y = -3
- w_class = 3
+ w_class = ITEMSIZE_NORMAL
var/obj/machinery/computer3/laptop/stored_computer = null
diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm
index 3ae0891b89..39ca2d5f40 100644
--- a/code/game/machinery/doors/airlock_electronics.dm
+++ b/code/game/machinery/doors/airlock_electronics.dm
@@ -4,7 +4,7 @@
name = "airlock electronics"
icon = 'icons/obj/doors/door_assembly.dmi'
icon_state = "door_electronics"
- w_class = 2.0 //It should be tiny! -Agouri
+ w_class = ITEMSIZE_SMALL //It should be tiny! -Agouri
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 50)
diff --git a/code/game/machinery/doors/multi_tile.dm b/code/game/machinery/doors/multi_tile.dm
index 4fc4b2fad7..45501a3de7 100644
--- a/code/game/machinery/doors/multi_tile.dm
+++ b/code/game/machinery/doors/multi_tile.dm
@@ -1,6 +1,7 @@
//Terribly sorry for the code doubling, but things go derpy otherwise.
/obj/machinery/door/airlock/multi_tile
width = 2
+ appearance_flags = 0
/obj/machinery/door/airlock/multi_tile/New()
..()
diff --git a/code/game/machinery/jukebox.dm b/code/game/machinery/jukebox.dm
index 57e0e1b55a..cd2346a32c 100644
--- a/code/game/machinery/jukebox.dm
+++ b/code/game/machinery/jukebox.dm
@@ -1,5 +1,3 @@
-//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
-
datum/track
var/title
var/sound
@@ -23,6 +21,11 @@ datum/track/New(var/title_name, var/audio)
var/playing = 0
+ // Vars for hacking
+ var/datum/wires/jukebox/wires = null
+ var/hacked = 0 // Whether to show the hidden songs or not
+ var/freq = 0
+
var/datum/track/current_track
var/list/datum/track/tracks = list(
new/datum/track("Beyond", 'sound/ambience/ambispace.ogg'),
@@ -36,6 +39,14 @@ datum/track/New(var/title_name, var/audio)
new/datum/track("Trai`Tor", 'sound/music/traitor.ogg'),
)
+ // Only visible if hacked
+ var/list/datum/track/secret_tracks = list(
+ new/datum/track("Clown", 'sound/music/clown.ogg'),
+ new/datum/track("Space Asshole", 'sound/music/space_asshole.ogg'),
+ new/datum/track("Thunderdome", 'sound/music/THUNDERDOME.ogg'),
+ new/datum/track("Russkiy rep Diskoteka", 'sound/music/russianrapdisco.ogg')
+ )
+
/obj/machinery/media/jukebox/New()
..()
component_parts = list()
@@ -43,11 +54,41 @@ datum/track/New(var/title_name, var/audio)
component_parts += new /obj/item/weapon/stock_parts/console_screen(src)
component_parts += new /obj/item/stack/cable_coil(src, 5)
RefreshParts()
+ wires = new/datum/wires/jukebox(src)
/obj/machinery/media/jukebox/Destroy()
StopPlaying()
+ qdel(wires)
+ wires = null
..()
+/obj/machinery/media/jukebox/proc/set_hacked(var/newhacked)
+ if (hacked == newhacked) return
+ hacked = newhacked
+ if (hacked)
+ tracks.Add(secret_tracks)
+ else
+ tracks.Remove(secret_tracks)
+ updateDialog()
+
+/obj/machinery/media/jukebox/attackby(obj/item/W as obj, mob/user as mob)
+ src.add_fingerprint(user)
+
+ if(default_deconstruction_screwdriver(user, W))
+ return
+ if(default_deconstruction_crowbar(user, W))
+ return
+ if(istype(W, /obj/item/weapon/wrench))
+ if(playing)
+ StopPlaying()
+ user.visible_message("[user] has [anchored ? "un" : ""]secured \the [src].", "You [anchored ? "un" : ""]secure \the [src].")
+ anchored = !anchored
+ playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
+ power_change()
+ update_icon()
+ return
+ return ..()
+
/obj/machinery/media/jukebox/power_change()
if(!powered(power_channel) || !anchored)
stat |= NOPOWER
@@ -72,6 +113,8 @@ datum/track/New(var/title_name, var/audio)
overlays += "[state_base]-emagged"
else
overlays += "[state_base]-running"
+ if (panel_open)
+ overlays += "panel_open"
/obj/machinery/media/jukebox/Topic(href, href_list)
if(..() || !(Adjacent(usr) || istype(usr, /mob/living/silicon)))
@@ -212,11 +255,17 @@ datum/track/New(var/title_name, var/audio)
return
var/area/main_area = get_area(src)
- main_area.forced_ambience = list(current_track.sound)
+ if(freq)
+ var/sound/new_song = sound(current_track.sound, channel = 1, repeat = 1, volume = 25)
+ new_song.frequency = freq
+ main_area.forced_ambience = list(new_song)
+ else
+ main_area.forced_ambience = list(current_track.sound)
+
for(var/mob/living/M in mobs_in_area(main_area))
if(M.mind)
main_area.play_ambience(M)
playing = 1
update_use_power(2)
- update_icon()
+ update_icon()
\ No newline at end of file
diff --git a/code/game/machinery/jukebox_vr.dm b/code/game/machinery/jukebox_vr.dm
index 88a1344027..0a6fb98891 100644
--- a/code/game/machinery/jukebox_vr.dm
+++ b/code/game/machinery/jukebox_vr.dm
@@ -1,23 +1,13 @@
// The improved, hackable jukebox for vorestation!
/obj/machinery/media/jukebox/vore
- name = "space jukebox"
icon = 'icons/obj/jukebox_vr.dmi'
-
- // Vars for hacking
- var/datum/wires/jukebox/wires = null
- var/hacked = 0 // Whether to show the hidden songs or not
- var/freq = 0
-
- // Only visible if hacked
- var/list/datum/track/secret_tracks = list(
+ secret_tracks = list(
new/datum/track("Bandit Radio", 'sound/music/jukebox/bandit_radio.ogg'),
new/datum/track("Ghost Fight (Toby Fox)", 'sound/music/jukebox/TobyFoxGhostFight.mid'),
new/datum/track("Space Asshole", 'sound/music/space_asshole.ogg'),
new/datum/track("THUNDERDOME", 'sound/music/THUNDERDOME.ogg'),
)
-
- // Normally visible tracks
tracks = list(
new/datum/track("A Song About Hares", 'sound/music/jukebox/SongAboutHares.ogg'),
new/datum/track("Below The Asteroids", 'sound/music/jukebox/BelowTheAsteroids.ogg'),
@@ -41,60 +31,3 @@
new/datum/track("Trai`Tor", 'sound/music/traitor.ogg'),
new/datum/track("Welcome To Jurassic Park", 'sound/music/jukebox/WelcomeToJurassicPark.mid')
)
-
-/obj/machinery/media/jukebox/vore/New()
- ..()
- wires = new/datum/wires/jukebox(src)
-
-/obj/machinery/media/jukebox/vore/Destroy()
- ..()
- qdel(wires)
- wires = null
-
-/obj/machinery/media/jukebox/vore/update_icon()
- ..()
- if (panel_open)
- overlays += "panel_open"
-
-
-/obj/machinery/media/jukebox/vore/proc/set_hacked(var/newhacked)
- if (hacked == newhacked) return
- hacked = newhacked
- if (hacked)
- tracks.Add(secret_tracks)
- else
- tracks.Remove(secret_tracks)
- updateDialog()
-
-
-/obj/machinery/media/jukebox/vore/attackby(obj/item/W as obj, mob/user as mob)
- src.add_fingerprint(user)
- if (default_deconstruction_screwdriver(user, W))
- return
- if(istype(W, /obj/item/weapon/wirecutters))
- return wires.Interact(user)
- if(istype(W, /obj/item/device/multitool))
- return wires.Interact(user)
- return ..()
-
-
-/obj/machinery/media/jukebox/vore/StartPlaying()
- StopPlaying()
- if(!current_track)
- return
-
- var/area/main_area = get_area(src)
- if(freq)
- var/sound/new_song = sound(current_track.sound, channel = 1, repeat = 1, volume = 25)
- new_song.frequency = freq
- main_area.forced_ambience = list(new_song)
- else
- main_area.forced_ambience = list(current_track.sound)
-
- for(var/mob/living/M in mobs_in_area(main_area))
- if(M.mind)
- main_area.play_ambience(M)
-
- playing = 1
- update_use_power(2)
- update_icon()
diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm
index 9b7760a12e..af8bd8eb41 100644
--- a/code/game/machinery/machinery.dm
+++ b/code/game/machinery/machinery.dm
@@ -96,7 +96,7 @@ Class Procs:
/obj/machinery
name = "machinery"
icon = 'icons/obj/stationobjs.dmi'
- w_class = 10
+ w_class = ITEMSIZE_NO_CONTAINER
var/stat = 0
var/emagged = 0
diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm
index 1de7cc367b..4758a77489 100644
--- a/code/game/machinery/newscaster.dm
+++ b/code/game/machinery/newscaster.dm
@@ -794,7 +794,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
desc = "An issue of The Griffon, the newspaper circulating aboard most stations."
icon = 'icons/obj/bureaucracy.dmi'
icon_state = "newspaper"
- w_class = 2 //Let's make it fit in trashbags!
+ w_class = ITEMSIZE_SMALL //Let's make it fit in trashbags!
attack_verb = list("bapped")
var/screen = 0
var/pages = 0
diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm
index 9c5fc61332..908ce1395f 100644
--- a/code/game/machinery/pipe/construction.dm
+++ b/code/game/machinery/pipe/construction.dm
@@ -62,7 +62,7 @@ Buildable meters
icon = 'icons/obj/pipe-item.dmi'
icon_state = "simple"
item_state = "buildpipe"
- w_class = 3
+ w_class = ITEMSIZE_NORMAL
level = 2
/obj/item/pipe/New(var/loc, var/pipe_type as num, var/dir as num, var/obj/machinery/atmospherics/make_from = null)
@@ -1160,7 +1160,7 @@ Buildable meters
icon = 'icons/obj/pipe-item.dmi'
icon_state = "meter"
item_state = "buildpipe"
- w_class = 4
+ w_class = ITEMSIZE_LARGE
/obj/item/pipe_meter/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
..()
diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm
index 5d3270231f..84359961df 100644
--- a/code/game/machinery/recharger.dm
+++ b/code/game/machinery/recharger.dm
@@ -42,6 +42,14 @@ obj/machinery/recharger
if(istype(G, /obj/item/weapon/gun/energy/gun/nuclear) || istype(G, /obj/item/weapon/gun/energy/crossbow))
user << "Your gun's recharge port was removed to make room for a miniaturized reactor."
return
+ if(istype(G, /obj/item/weapon/gun/energy))
+ var/obj/item/weapon/gun/energy/E = G
+ if(!E.power_supply)
+ user << "Your gun has no power cell."
+ return
+ if(E.self_recharge)
+ user << "Your gun has no recharge port."
+ return
if(istype(G, /obj/item/weapon/gun/energy/staff))
return
if(istype(G, /obj/item/device/laptop))
@@ -168,4 +176,4 @@ obj/machinery/recharger
icon_state_charging = "wrecharger1"
icon_state_idle = "wrecharger0"
portable = 0
- circuit = /obj/item/weapon/circuitboard/recharger/wrecharger
\ No newline at end of file
+ circuit = /obj/item/weapon/circuitboard/recharger/wrecharger
diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm
index 3234d03a1f..f44747d4bb 100644
--- a/code/game/machinery/suit_storage_unit.dm
+++ b/code/game/machinery/suit_storage_unit.dm
@@ -586,7 +586,7 @@
var/electrified = 0
//Departments that the cycler can paint suits to look like.
- var/list/departments = list("Engineering","Mining","Medical","Security","Atmos","HAZMAT","Construction","Biohazard")
+ var/list/departments = list("Engineering","Mining","Medical","Security","Atmos","HAZMAT","Construction","Biohazard","Crowd Control")
//Species that the suits can be configured to fit.
var/list/species = list("Human","Skrell","Unathi","Tajara", "Teshari")
@@ -628,7 +628,7 @@
name = "Security suit cycler"
model_text = "Security"
req_access = list(access_security)
- departments = list("Security")
+ departments = list("Security","Crowd Control")
/obj/machinery/suit_cycler/medical
name = "Medical suit cycler"
@@ -751,7 +751,7 @@
//Clear the access reqs, disable the safeties, and open up all paintjobs.
user << "You run the sequencer across the interface, corrupting the operating protocols."
- departments = list("Engineering","Mining","Medical","Security","Atmos","HAZMAT","Construction","Biohazard","^%###^%$")
+ departments = list("Engineering","Mining","Medical","Security","Atmos","HAZMAT","Construction","Biohazard","Crowd Control","^%###^%$")
species = list("Human","Skrell","Unathi","Tajara", "Teshari", "Nevrean", "Akula", "Sergal", "Flatland Zorren", "Highlander Zorren", "Vulpkanin", "Promethean", "Xenomorph Hybrid") //VORESTATION EDIT
emagged = 1
@@ -1009,6 +1009,15 @@
suit.name = "security voidsuit"
suit.icon_state = "rig-sec"
suit.item_state = "sec_voidsuit"
+ if("Crowd Control")
+ if(helmet)
+ helmet.name = "crowd control voidsuit helmet"
+ helmet.icon_state = "rig0-sec_riot"
+ helmet.item_state = "rig0-sec_riot"
+ if(suit)
+ suit.name = "crowd control voidsuit"
+ suit.icon_state = "rig-sec_riot"
+ suit.item_state = "sec_voidsuit_riot"
if("Atmos")
if(helmet)
helmet.name = "atmospherics voidsuit helmet"
diff --git a/code/game/mecha/mecha_parts.dm b/code/game/mecha/mecha_parts.dm
index 876e6c3f6b..00720d13dc 100644
--- a/code/game/mecha/mecha_parts.dm
+++ b/code/game/mecha/mecha_parts.dm
@@ -8,7 +8,7 @@
name = "mecha part"
icon = 'icons/mecha/mech_construct.dmi'
icon_state = "blank"
- w_class = 5
+ w_class = ITEMSIZE_HUGE
flags = CONDUCT
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2)
@@ -39,32 +39,32 @@
/obj/item/mecha_parts/part/ripley_torso
name="Ripley Torso"
desc="A torso part of Ripley APLU. Contains power unit, processing core and life support systems."
- icon_state = "ripley_harness"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_ENGINEERING = 2)
+ icon_state = "ripley_harness"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_ENGINEERING = 2)
/obj/item/mecha_parts/part/ripley_left_arm
name="Ripley Left Arm"
desc="A Ripley APLU left arm. Data and power sockets are compatible with most exosuit tools."
- icon_state = "ripley_l_arm"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
+ icon_state = "ripley_l_arm"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
/obj/item/mecha_parts/part/ripley_right_arm
name="Ripley Right Arm"
desc="A Ripley APLU right arm. Data and power sockets are compatible with most exosuit tools."
- icon_state = "ripley_r_arm"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
+ icon_state = "ripley_r_arm"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
/obj/item/mecha_parts/part/ripley_left_leg
name="Ripley Left Leg"
desc="A Ripley APLU left leg. Contains somewhat complex servodrives and balance maintaining systems."
- icon_state = "ripley_l_leg"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
+ icon_state = "ripley_l_leg"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
/obj/item/mecha_parts/part/ripley_right_leg
name="Ripley Right Leg"
desc="A Ripley APLU right leg. Contains somewhat complex servodrives and balance maintaining systems."
- icon_state = "ripley_r_leg"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
+ icon_state = "ripley_r_leg"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
///////// Gygax
@@ -78,41 +78,41 @@
/obj/item/mecha_parts/part/gygax_torso
name="Gygax Torso"
desc="A torso part of Gygax. Contains power unit, processing core and life support systems. Has an additional equipment slot."
- icon_state = "gygax_harness"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 3, TECH_ENGINEERING = 3)
+ icon_state = "gygax_harness"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 3, TECH_ENGINEERING = 3)
/obj/item/mecha_parts/part/gygax_head
name="Gygax Head"
desc="A Gygax head. Houses advanced surveilance and targeting sensors."
- icon_state = "gygax_head"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_MAGNET = 3, TECH_ENGINEERING = 3)
+ icon_state = "gygax_head"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_MAGNET = 3, TECH_ENGINEERING = 3)
/obj/item/mecha_parts/part/gygax_left_arm
name="Gygax Left Arm"
desc="A Gygax left arm. Data and power sockets are compatible with most exosuit tools and weapons."
- icon_state = "gygax_l_arm"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
+ icon_state = "gygax_l_arm"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
/obj/item/mecha_parts/part/gygax_right_arm
name="Gygax Right Arm"
desc="A Gygax right arm. Data and power sockets are compatible with most exosuit tools and weapons."
- icon_state = "gygax_r_arm"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
+ icon_state = "gygax_r_arm"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
/obj/item/mecha_parts/part/gygax_left_leg
name="Gygax Left Leg"
- icon_state = "gygax_l_leg"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
+ icon_state = "gygax_l_leg"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
/obj/item/mecha_parts/part/gygax_right_leg
name="Gygax Right Leg"
- icon_state = "gygax_r_leg"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
+ icon_state = "gygax_r_leg"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
/obj/item/mecha_parts/part/gygax_armour
name="Gygax Armour Plates"
- icon_state = "gygax_armour"
- origin_tech = list(TECH_MATERIAL = 6, TECH_COMBAT = 4, TECH_ENGINEERING = 5)
+ icon_state = "gygax_armour"
+ origin_tech = list(TECH_MATERIAL = 6, TECH_COMBAT = 4, TECH_ENGINEERING = 5)
//////////// Durand
@@ -126,38 +126,38 @@
/obj/item/mecha_parts/part/durand_torso
name="Durand Torso"
- icon_state = "durand_harness"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_BIO = 3, TECH_ENGINEERING = 3)
+ icon_state = "durand_harness"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_BIO = 3, TECH_ENGINEERING = 3)
/obj/item/mecha_parts/part/durand_head
name="Durand Head"
- icon_state = "durand_head"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_MAGNET = 3, TECH_ENGINEERING = 3)
+ icon_state = "durand_head"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_MAGNET = 3, TECH_ENGINEERING = 3)
/obj/item/mecha_parts/part/durand_left_arm
name="Durand Left Arm"
- icon_state = "durand_l_arm"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
+ icon_state = "durand_l_arm"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
/obj/item/mecha_parts/part/durand_right_arm
name="Durand Right Arm"
- icon_state = "durand_r_arm"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
+ icon_state = "durand_r_arm"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
/obj/item/mecha_parts/part/durand_left_leg
name="Durand Left Leg"
- icon_state = "durand_l_leg"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
+ icon_state = "durand_l_leg"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
/obj/item/mecha_parts/part/durand_right_leg
name="Durand Right Leg"
- icon_state = "durand_r_leg"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
+ icon_state = "durand_r_leg"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
/obj/item/mecha_parts/part/durand_armour
name="Durand Armour Plates"
- icon_state = "durand_armour"
- origin_tech = list(TECH_MATERIAL = 5, TECH_COMBAT = 4, TECH_ENGINEERING = 5)
+ icon_state = "durand_armour"
+ origin_tech = list(TECH_MATERIAL = 5, TECH_COMBAT = 4, TECH_ENGINEERING = 5)
@@ -204,44 +204,44 @@
/obj/item/mecha_parts/part/phazon_torso
name="Phazon Torso"
icon_state = "phazon_harness"
- //construction_time = 300
+ //construction_time = 300
//construction_cost = list(DEFAULT_WALL_MATERIAL=35000,"glass"=10000,"phoron"=20000)
- origin_tech = list(TECH_DATA = 5, TECH_MATERIAL = 7, TECH_BLUESPACE = 6, TECH_POWER = 6)
+ origin_tech = list(TECH_DATA = 5, TECH_MATERIAL = 7, TECH_BLUESPACE = 6, TECH_POWER = 6)
/obj/item/mecha_parts/part/phazon_head
name="Phazon Head"
icon_state = "phazon_head"
- //construction_time = 200
+ //construction_time = 200
//construction_cost = list(DEFAULT_WALL_MATERIAL=15000,"glass"=5000,"phoron"=10000)
- origin_tech = list(TECH_DATA = 4, TECH_MATERIAL = 5, TECH_MAGNET = 6)
+ origin_tech = list(TECH_DATA = 4, TECH_MATERIAL = 5, TECH_MAGNET = 6)
/obj/item/mecha_parts/part/phazon_left_arm
name="Phazon Left Arm"
icon_state = "phazon_l_arm"
- //construction_time = 200
+ //construction_time = 200
//construction_cost = list(DEFAULT_WALL_MATERIAL=20000,"phoron"=10000)
- origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 2, TECH_MAGNET = 2)
+ origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 2, TECH_MAGNET = 2)
/obj/item/mecha_parts/part/phazon_right_arm
name="Phazon Right Arm"
icon_state = "phazon_r_arm"
- //construction_time = 200
+ //construction_time = 200
//construction_cost = list(DEFAULT_WALL_MATERIAL=20000,"phoron"=10000)
- origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 2, TECH_MAGNET = 2)
+ origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 2, TECH_MAGNET = 2)
/obj/item/mecha_parts/part/phazon_left_leg
name="Phazon Left Leg"
icon_state = "phazon_l_leg"
- //construction_time = 200
+ //construction_time = 200
//construction_cost = list(DEFAULT_WALL_MATERIAL=20000,"phoron"=10000)
- origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 3, TECH_MAGNET = 3)
+ origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 3, TECH_MAGNET = 3)
/obj/item/mecha_parts/part/phazon_right_leg
name="Phazon Right Leg"
icon_state = "phazon_r_leg"
- //construction_time = 200
+ //construction_time = 200
//construction_cost = list(DEFAULT_WALL_MATERIAL=20000,"phoron"=10000)
- origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 3, TECH_MAGNET = 3)
+ origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 3, TECH_MAGNET = 3)
///////// Odysseus
@@ -256,37 +256,37 @@
/obj/item/mecha_parts/part/odysseus_head
name="Odysseus Head"
icon_state = "odysseus_head"
- origin_tech = list(TECH_DATA = 3, TECH_MATERIAL = 2)
+ origin_tech = list(TECH_DATA = 3, TECH_MATERIAL = 2)
/obj/item/mecha_parts/part/odysseus_torso
name="Odysseus Torso"
desc="A torso part of Odysseus. Contains power unit, processing core and life support systems."
- icon_state = "odysseus_torso"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_ENGINEERING = 2)
+ icon_state = "odysseus_torso"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_ENGINEERING = 2)
/obj/item/mecha_parts/part/odysseus_left_arm
name="Odysseus Left Arm"
desc="An Odysseus left arm. Data and power sockets are compatible with most exosuit tools."
- icon_state = "odysseus_l_arm"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
+ icon_state = "odysseus_l_arm"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
/obj/item/mecha_parts/part/odysseus_right_arm
name="Odysseus Right Arm"
desc="An Odysseus right arm. Data and power sockets are compatible with most exosuit tools."
- icon_state = "odysseus_r_arm"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
+ icon_state = "odysseus_r_arm"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
/obj/item/mecha_parts/part/odysseus_left_leg
name="Odysseus Left Leg"
desc="An Odysseus left leg. Contains somewhat complex servodrives and balance maintaining systems."
- icon_state = "odysseus_l_leg"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
+ icon_state = "odysseus_l_leg"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
/obj/item/mecha_parts/part/odysseus_right_leg
name="Odysseus Right Leg"
desc="A Odysseus right leg. Contains somewhat complex servodrives and balance maintaining systems."
- icon_state = "odysseus_r_leg"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
+ icon_state = "odysseus_r_leg"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
/*/obj/item/mecha_parts/part/odysseus_armour
name="Odysseus Carapace"
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 4d78f5aa9d..467e64af79 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -1,7 +1,7 @@
/obj/item
name = "item"
icon = 'icons/obj/items.dmi'
- w_class = 3.0
+ w_class = ITEMSIZE_NORMAL
var/image/blood_overlay = null //this saves our blood splatter overlay, which will be processed not to go over the edges of the sprite
var/abstract = 0
@@ -143,18 +143,19 @@
src.loc = T
+// See inventory_sizes.dm for the defines.
/obj/item/examine(mob/user, var/distance = -1)
var/size
switch(src.w_class)
- if(1.0)
+ if(ITEMSIZE_TINY)
size = "tiny"
- if(2.0)
+ if(ITEMSIZE_SMALL)
size = "small"
- if(3.0)
+ if(ITEMSIZE_NORMAL)
size = "normal-sized"
- if(4.0)
+ if(ITEMSIZE_LARGE)
size = "bulky"
- if(5.0)
+ if(ITEMSIZE_HUGE)
size = "huge"
return ..(user, distance, "", "It is a [size] item.")
@@ -320,7 +321,7 @@ var/list/global/slot_flags_enumeration = list(
switch(slot)
if(slot_l_ear, slot_r_ear)
var/slot_other_ear = (slot == slot_l_ear)? slot_r_ear : slot_l_ear
- if( (w_class > 1) && !(slot_flags & SLOT_EARS) )
+ if( (w_class > ITEMSIZE_TINY) && !(slot_flags & SLOT_EARS) )
return 0
if( (slot_flags & SLOT_TWOEARS) && H.get_equipped_item(slot_other_ear) )
return 0
@@ -336,7 +337,7 @@ var/list/global/slot_flags_enumeration = list(
return 0
if(slot_flags & SLOT_DENYPOCKET)
return 0
- if( w_class > 2 && !(slot_flags & SLOT_POCKET) )
+ if( w_class > ITEMSIZE_SMALL && !(slot_flags & SLOT_POCKET) )
return 0
if(slot_s_store)
if(!H.wear_suit && (slot_wear_suit in mob_equip))
diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm
index b154cd0468..6c86b7ebf4 100644
--- a/code/game/objects/items/bodybag.dm
+++ b/code/game/objects/items/bodybag.dm
@@ -5,7 +5,7 @@
desc = "A folded bag designed for the storage and transportation of cadavers."
icon = 'icons/obj/bodybag.dmi'
icon_state = "bodybag_folded"
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
attack_self(mob/user)
var/obj/structure/closet/body_bag/R = new /obj/structure/closet/body_bag(user.loc)
diff --git a/code/game/objects/items/contraband_vr.dm b/code/game/objects/items/contraband_vr.dm
index ac71b7f45e..d5b7b44776 100644
--- a/code/game/objects/items/contraband_vr.dm
+++ b/code/game/objects/items/contraband_vr.dm
@@ -4,7 +4,7 @@
icon = 'icons/obj/storage.dmi'
icon_state = "deliverycrate5"
item_state = "table_parts"
- w_class = 5
+ w_class = ITEMSIZE_HUGE
attack_self(mob/user as mob)
// Another way of doing this. Commented out because the other method is better for this application.
@@ -87,7 +87,7 @@
desc = "Save these for the fancy-pantses at the next CentCom black tie reception. You can't blow the smoke from such majestic stogies in just anyone's face."
icon_state = "cigarcase"
icon = 'icons/obj/cigarettes.dmi'
- w_class = 1
+ w_class = ITEMSIZE_TINY
throwforce = 2
slot_flags = SLOT_BELT
storage_slots = 7
diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index a8d1abdd55..ee3d2b9ac3 100644
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -9,7 +9,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
icon = 'icons/obj/pda.dmi'
icon_state = "pda"
item_state = "electronic"
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
slot_flags = SLOT_ID | SLOT_BELT
sprite_sheets = list("Teshari" = 'icons/mob/species/seromi/id.dmi')
diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm
index 94230418e8..2c4368736e 100644
--- a/code/game/objects/items/devices/PDA/cart.dm
+++ b/code/game/objects/items/devices/PDA/cart.dm
@@ -49,7 +49,7 @@ var/list/civilian_cartridges = list(
icon = 'icons/obj/pda.dmi'
icon_state = "cart"
item_state = "electronic"
- w_class = 1
+ w_class = ITEMSIZE_TINY
var/obj/item/radio/integrated/radio = null
var/access_security = 0
diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm
index e06e28f3c7..b6d8a81709 100644
--- a/code/game/objects/items/devices/aicard.dm
+++ b/code/game/objects/items/devices/aicard.dm
@@ -3,7 +3,7 @@
icon = 'icons/obj/pda.dmi'
icon_state = "aicard" // aicard-full
item_state = "electronic"
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
slot_flags = SLOT_BELT
show_messages = 0
diff --git a/code/game/objects/items/devices/binoculars.dm b/code/game/objects/items/devices/binoculars.dm
index b6e0ca1aca..00ef6501d4 100644
--- a/code/game/objects/items/devices/binoculars.dm
+++ b/code/game/objects/items/devices/binoculars.dm
@@ -6,7 +6,7 @@
flags = CONDUCT
force = 5.0
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
throwforce = 5.0
throw_range = 15
throw_speed = 3
diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm
index 1085dd3477..4b870481fa 100644
--- a/code/game/objects/items/devices/chameleonproj.dm
+++ b/code/game/objects/items/devices/chameleonproj.dm
@@ -7,7 +7,7 @@
throwforce = 5.0
throw_speed = 1
throw_range = 5
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
origin_tech = list(TECH_ILLEGAL = 4, TECH_MAGNET = 4)
var/can_use = 1
var/obj/effect/dummy/chameleon/active_dummy = null
diff --git a/code/game/objects/items/devices/communicator/communicator.dm b/code/game/objects/items/devices/communicator/communicator.dm
index 4d649450fb..60bb06b5d5 100644
--- a/code/game/objects/items/devices/communicator/communicator.dm
+++ b/code/game/objects/items/devices/communicator/communicator.dm
@@ -10,7 +10,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
communications across different stations, planets, or even star systems."
icon = 'icons/obj/device.dmi'
icon_state = "communicator"
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
slot_flags = SLOT_ID | SLOT_BELT
show_messages = 1
diff --git a/code/game/objects/items/devices/debugger.dm b/code/game/objects/items/devices/debugger.dm
index 9072e4cc7e..c8d326b44e 100644
--- a/code/game/objects/items/devices/debugger.dm
+++ b/code/game/objects/items/devices/debugger.dm
@@ -11,7 +11,7 @@
icon_state = "hacktool-g"
flags = CONDUCT
force = 5.0
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
throwforce = 5.0
throw_range = 15
throw_speed = 3
diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm
index 2901e4c2c9..8562ac7f28 100644
--- a/code/game/objects/items/devices/flash.dm
+++ b/code/game/objects/items/devices/flash.dm
@@ -4,7 +4,7 @@
icon_state = "flash"
item_state = "flashtool"
throwforce = 5
- w_class = 2
+ w_class = ITEMSIZE_SMALL
throw_speed = 4
throw_range = 10
flags = CONDUCT
diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index dc042b2a6b..3b6964ec8e 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -3,28 +3,100 @@
desc = "A hand-held emergency light."
icon = 'icons/obj/lighting.dmi'
icon_state = "flashlight"
- w_class = 2
+ w_class = ITEMSIZE_SMALL
flags = CONDUCT
slot_flags = SLOT_BELT
-
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 20)
-
action_button_name = "Toggle Flashlight"
var/on = 0
var/brightness_on = 4 //luminosity when on
+ var/obj/item/weapon/cell/cell
+ var/cell_type = /obj/item/weapon/cell/high
+ var/list/brightness_levels
+ var/brightness_level = "medium"
+ var/power_usage
+ var/power_use = 1
/obj/item/device/flashlight/initialize()
..()
update_icon()
+/obj/item/device/flashlight/New()
+ if(power_use)
+ processing_objects |= src
+
+ if(cell_type)
+ cell = new cell_type(src)
+ brightness_levels = list("low" = 5, "medium" = 10, "high" = 20)
+ power_usage = brightness_levels[brightness_level]
+
+ else
+ verbs -= /obj/item/device/flashlight/verb/toggle
+ ..()
+
+/obj/item/device/flashlight/Destroy()
+ if(power_use)
+ processing_objects -= src
+ ..()
+
+/obj/item/device/flashlight/verb/toggle()
+ set name = "Toggle Flashlight Brightness"
+ set category = "Object"
+ set src in usr
+ set_brightness(usr)
+
+/obj/item/device/flashlight/proc/set_brightness(mob/user as mob)
+ var/choice = input("Choose a brightness level.") as null|anything in brightness_levels
+ if(choice)
+ brightness_level = choice
+ power_usage = brightness_levels[choice]
+ user << "You set the brightness level on \the [src] to [brightness_level]."
+ update_icon()
+
+/obj/item/device/flashlight/process()
+ if(on)
+ if(cell && cell.charge)
+ if(brightness_level && power_usage)
+ if(power_usage < cell.charge)
+ cell.charge -= power_usage
+ else
+ visible_message("\The [src] flickers before going dull.")
+ set_light(0)
+
/obj/item/device/flashlight/update_icon()
if(on)
icon_state = "[initial(icon_state)]-on"
- set_light(brightness_on)
+
+ if(brightness_level == "low")
+ set_light(brightness_on/2)
+ else if(brightness_level == "high")
+ set_light(brightness_on*4)
+ else
+ set_light(brightness_on)
+
else
icon_state = "[initial(icon_state)]"
set_light(0)
+/obj/item/device/flashlight/examine(mob/user)
+ ..()
+ if(power_use && brightness_level)
+ var/tempdesc
+ tempdesc += "\The [src] is set to [brightness_level]. "
+ if(cell)
+ tempdesc += "\The [src] has a \the [cell] attached. "
+
+ if(cell.charge <= cell.maxcharge*0.25)
+ tempdesc += "It appears to have a low amount of power remaining."
+ else if(cell.charge > cell.maxcharge*0.25 && cell.charge <= cell.maxcharge*0.5)
+ tempdesc += "It appears to have an average amount of power remaining."
+ else if(cell.charge > cell.maxcharge*0.5 && cell.charge <= cell.maxcharge*0.75)
+ tempdesc += "It appears to have an above average amount of power remaining."
+ else if(cell.charge > cell.maxcharge*0.75 && cell.charge <= cell.maxcharge)
+ tempdesc += "It appears to have a high amount of power remaining."
+
+ user << "[tempdesc]"
+
/obj/item/device/flashlight/attack_self(mob/user)
if(!isturf(user.loc))
user << "You cannot turn the light on while in this [user.loc]." //To prevent some lighting anomalities.
@@ -84,6 +156,34 @@
else
return ..()
+/obj/item/device/flashlight/attack_hand(mob/user as mob)
+ if(user.get_inactive_hand() == src)
+ if(cell)
+ cell.update_icon()
+ user.put_in_hands(cell)
+ cell = null
+ user << "You remove the cell from the [src]."
+ on = !on
+ update_icon()
+ return
+ ..()
+ else
+ return ..()
+
+/obj/item/device/flashlight/attackby(obj/item/weapon/W, mob/user as mob)
+ if(istype(W, /obj/item/weapon/cell))
+ if(!cell)
+ user.drop_item()
+ W.loc = src
+ cell = W
+ user << "You install a cell in \the [src]."
+ update_icon()
+ else
+ user << "\The [src] already has a cell."
+
+ else
+ ..()
+
/obj/item/device/flashlight/pen
name = "penlight"
desc = "A pen-sized light, used by medical staff."
@@ -92,7 +192,8 @@
flags = CONDUCT
slot_flags = SLOT_EARS
brightness_on = 2
- w_class = 1
+ w_class = ITEMSIZE_TINY
+ power_use = 0
/obj/item/device/flashlight/maglight
name = "maglight"
@@ -100,9 +201,8 @@
icon_state = "maglight"
force = 10
flags = CONDUCT
- brightness_on = 4
slot_flags = SLOT_BELT
- w_class = 2
+ w_class = ITEMSIZE_SMALL
attack_verb = list ("smacked", "thwacked", "thunked")
matter = list(DEFAULT_WALL_MATERIAL = 200,"glass" = 50)
hitsound = "swing_hit"
@@ -114,8 +214,8 @@
item_state = null
flags = CONDUCT
brightness_on = 2
- w_class = 1
-
+ w_class = ITEMSIZE_TINY
+ power_use = 0
// the desk lamps are a bit special
/obj/item/device/flashlight/lamp
@@ -123,9 +223,9 @@
desc = "A desk lamp with an adjustable mount."
icon_state = "lamp"
brightness_on = 5
- w_class = 4
+ w_class = ITEMSIZE_LARGE
flags = CONDUCT
-
+ power_use = 0
on = 1
@@ -149,7 +249,7 @@
/obj/item/device/flashlight/flare
name = "flare"
desc = "A red standard-issue flare. There are instructions on the side reading 'pull cord, make light'."
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
brightness_on = 8 // Pretty bright.
light_power = 3
light_color = "#e58775"
@@ -159,6 +259,7 @@
var/fuel = 0
var/on_damage = 7
var/produce_heat = 1500
+ power_use = 0
/obj/item/device/flashlight/flare/New()
fuel = rand(800, 1000) // Sorry for changing this so much but I keep under-estimating how long X number of ticks last in seconds.
@@ -211,13 +312,14 @@
/obj/item/device/flashlight/glowstick
name = "green glowstick"
desc = "A green military-grade glowstick."
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
brightness_on = 4
light_power = 2
light_color = "#49F37C"
icon_state = "glowstick"
item_state = "glowstick"
var/fuel = 0
+ power_use = 0
/obj/item/device/flashlight/glowstick/New()
fuel = rand(1600, 2000)
@@ -283,9 +385,10 @@
icon = 'icons/obj/lighting.dmi'
icon_state = "floor1" //not a slime extract sprite but... something close enough!
item_state = "slime"
- w_class = 1
+ w_class = ITEMSIZE_TINY
brightness_on = 6
on = 1 //Bio-luminesence has one setting, on.
+ power_use = 0
/obj/item/device/flashlight/slime/New()
..()
diff --git a/code/game/objects/items/devices/locker_painter.dm b/code/game/objects/items/devices/locker_painter.dm
index d7fb37050f..9459927ffe 100644
--- a/code/game/objects/items/devices/locker_painter.dm
+++ b/code/game/objects/items/devices/locker_painter.dm
@@ -55,7 +55,7 @@
"warden" = list("open" = "wardensecureopen", "closed" = "wardensecure", "locked" = "wardensecure1", "broken" = "wardensecurebroken", "off" = "wardensecureoff"),
"HoS" = list("open" = "hossecureopen", "closed" = "hossecure", "locked" = "hossecure1", "broken" = "hossecurebroken", "off" = "hossecureoff"),
"HoP" = list("open" = "hopsecureopen", "closed" = "hopsecure", "locked" = "hopsecure1", "broken" = "hopsecurebroken", "off" = "hopsecureoff"),
- "Captain" = list("open" = "capsecureopen", "closed" = "capsecure", "locked" = "capsecure1", "broken" = "capsecurebroken", "off" = "capsecureoff")
+ "Administrator" = list("open" = "capsecureopen", "closed" = "capsecure", "locked" = "capsecure1", "broken" = "capsecurebroken", "off" = "capsecureoff")
)
/obj/item/device/closet_painter/afterattack(atom/A, var/mob/user, proximity)
@@ -136,4 +136,4 @@
var/new_colour_secure = input("Select a colour.") as null|anything in colours_secure
if(new_colour_secure && !isnull(colours_secure[new_colour_secure]))
colour_secure = new_colour_secure
- usr << "You set \the [src] secure closet colour to '[colour_secure]'."
\ No newline at end of file
+ usr << "You set \the [src] secure closet colour to '[colour_secure]'."
diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm
index 0357a8b80b..0ce2f405ff 100644
--- a/code/game/objects/items/devices/megaphone.dm
+++ b/code/game/objects/items/devices/megaphone.dm
@@ -3,7 +3,7 @@
desc = "A device used to project your voice. Loudly."
icon_state = "megaphone"
item_state = "radio"
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
flags = CONDUCT
var/spamcheck = 0
diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm
index 4e6154189a..85c680ca98 100644
--- a/code/game/objects/items/devices/multitool.dm
+++ b/code/game/objects/items/devices/multitool.dm
@@ -10,7 +10,7 @@
icon_state = "multitool"
flags = CONDUCT
force = 5.0
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
throwforce = 5.0
throw_range = 15
throw_speed = 3
diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm
index 89042464b3..e0e05ff467 100644
--- a/code/game/objects/items/devices/paicard.dm
+++ b/code/game/objects/items/devices/paicard.dm
@@ -3,7 +3,7 @@
icon = 'icons/obj/pda.dmi'
icon_state = "pai"
item_state = "electronic"
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
slot_flags = SLOT_BELT
origin_tech = list(TECH_DATA = 2)
show_messages = 0
diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm
index 3478abce1d..497ad68f09 100644
--- a/code/game/objects/items/devices/powersink.dm
+++ b/code/game/objects/items/devices/powersink.dm
@@ -5,7 +5,7 @@
desc = "A nulling power sink which drains energy from electrical systems."
icon_state = "powersink0"
item_state = "electronic"
- w_class = 4.0
+ w_class = ITEMSIZE_LARGE
flags = CONDUCT
throwforce = 5
throw_speed = 1
diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm
index f945fd89e6..ddcb23a5aa 100644
--- a/code/game/objects/items/devices/radio/electropack.dm
+++ b/code/game/objects/items/devices/radio/electropack.dm
@@ -10,7 +10,7 @@
frequency = 1449
flags = CONDUCT
slot_flags = SLOT_BACK
- w_class = 5.0
+ w_class = ITEMSIZE_HUGE
matter = list(DEFAULT_WALL_MATERIAL = 10000,"glass" = 2500)
diff --git a/code/game/objects/items/devices/radio/encryptionkey.dm b/code/game/objects/items/devices/radio/encryptionkey.dm
index 961286da09..f08585da31 100644
--- a/code/game/objects/items/devices/radio/encryptionkey.dm
+++ b/code/game/objects/items/devices/radio/encryptionkey.dm
@@ -4,7 +4,7 @@
desc = "An encryption key for a radio headset. Contains cypherkeys."
icon = 'icons/obj/radio.dmi'
icon_state = "cypherkey"
- w_class = 1
+ w_class = ITEMSIZE_TINY
slot_flags = SLOT_EARS
var/translate_binary = 0
var/translate_hive = 0
@@ -60,7 +60,7 @@
channels = list("Command" = 1)
/obj/item/device/encryptionkey/heads/captain
- name = "station administrator's encryption key"
+ name = "colony director's encryption key"
icon_state = "cap_cypherkey"
channels = list("Command" = 1, "Security" = 1, "Engineering" = 0, "Science" = 0, "Medical" = 0, "Supply" = 0, "Service" = 0)
diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm
index 9147b4f840..fce4ec3175 100644
--- a/code/game/objects/items/devices/radio/headset.dm
+++ b/code/game/objects/items/devices/radio/headset.dm
@@ -158,14 +158,14 @@
/obj/item/device/radio/headset/heads/captain
- name = "station administrator's headset"
+ name = "colony director's headset"
desc = "The headset of the boss."
icon_state = "com_headset"
item_state = "headset"
ks2type = /obj/item/device/encryptionkey/heads/captain
/obj/item/device/radio/headset/heads/captain/alt
- name = "station administrator's bowman headset"
+ name = "colony director's bowman headset"
desc = "The headset of the boss."
icon_state = "com_headset_alt"
item_state = "headset"
@@ -244,14 +244,14 @@
/obj/item/device/radio/headset/heads/hop
name = "head of personnel's headset"
- desc = "The headset of the guy who will one day be Station Administrator."
+ desc = "The headset of the guy who will one day be Colony Director."
icon_state = "com_headset"
item_state = "headset"
ks2type = /obj/item/device/encryptionkey/heads/hop
/obj/item/device/radio/headset/heads/hop/alt
name = "head of personnel's bowman headset"
- desc = "The headset of the guy who will one day be Station Administrator."
+ desc = "The headset of the guy who will one day be Colony Director."
icon_state = "com_headset_alt"
item_state = "headset"
ks2type = /obj/item/device/encryptionkey/heads/hop
diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm
index 4ea8837d80..72d4c50685 100644
--- a/code/game/objects/items/devices/radio/intercom.dm
+++ b/code/game/objects/items/devices/radio/intercom.dm
@@ -3,7 +3,7 @@
desc = "Talk through this."
icon_state = "intercom"
anchored = 1
- w_class = 4.0
+ w_class = ITEMSIZE_LARGE
canhear_range = 2
flags = CONDUCT | NOBLOODY
var/circuit = /obj/item/weapon/circuitboard/intercom
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index 93353ca1ed..4c841e2651 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -43,7 +43,7 @@ var/global/list/default_medbay_channels = list(
slot_flags = SLOT_BELT
throw_speed = 2
throw_range = 9
- w_class = 2
+ w_class = ITEMSIZE_SMALL
show_messages = 1
matter = list("glass" = 25,DEFAULT_WALL_MATERIAL = 75)
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index 5388dc4420..1f88d91f06 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -17,7 +17,7 @@ REAGENT SCANNER
flags = CONDUCT
slot_flags = SLOT_BELT
throwforce = 3
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
throw_speed = 5
throw_range = 10
matter = list(DEFAULT_WALL_MATERIAL = 200)
@@ -208,7 +208,7 @@ REAGENT SCANNER
desc = "A hand-held environmental scanner which reports current gas levels."
icon_state = "atmos"
item_state = "analyzer"
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
flags = CONDUCT
slot_flags = SLOT_BELT
throwforce = 5
@@ -242,7 +242,7 @@ REAGENT SCANNER
desc = "A hand-held mass spectrometer which identifies trace chemicals in a blood sample."
icon_state = "spectrometer"
item_state = "analyzer"
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
flags = CONDUCT | OPENCONTAINER
slot_flags = SLOT_BELT
throwforce = 5
@@ -304,7 +304,7 @@ REAGENT SCANNER
desc = "A hand-held reagent scanner which identifies chemical agents."
icon_state = "spectrometer"
item_state = "analyzer"
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
flags = CONDUCT
slot_flags = SLOT_BELT
throwforce = 5
@@ -353,7 +353,7 @@ REAGENT SCANNER
icon_state = "adv_spectrometer"
item_state = "analyzer"
origin_tech = list(TECH_BIO = 1)
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
flags = CONDUCT
throwforce = 0
throw_speed = 3
diff --git a/code/game/objects/items/devices/spy_bug.dm b/code/game/objects/items/devices/spy_bug.dm
index 063e7a85ce..d05289e2cb 100644
--- a/code/game/objects/items/devices/spy_bug.dm
+++ b/code/game/objects/items/devices/spy_bug.dm
@@ -8,7 +8,7 @@
flags = CONDUCT
force = 5.0
- w_class = 1.0
+ w_class = ITEMSIZE_TINY
slot_flags = SLOT_EARS
throwforce = 5.0
throw_range = 15
@@ -51,7 +51,7 @@
icon_state = "pda"
item_state = "electronic"
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
origin_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1, TECH_ILLEGAL = 3)
diff --git a/code/game/objects/items/devices/suit_cooling.dm b/code/game/objects/items/devices/suit_cooling.dm
index 4447ca7af2..fb34bb0996 100644
--- a/code/game/objects/items/devices/suit_cooling.dm
+++ b/code/game/objects/items/devices/suit_cooling.dm
@@ -1,7 +1,7 @@
/obj/item/device/suit_cooling_unit
name = "portable suit cooling unit"
desc = "A portable heat sink and liquid cooled radiator that can be hooked up to a space suit's existing temperature controls to provide industrial levels of cooling."
- w_class = 4
+ w_class = ITEMSIZE_LARGE
icon = 'icons/obj/device.dmi'
icon_state = "suitcooler0"
slot_flags = SLOT_BACK
diff --git a/code/game/objects/items/devices/t_scanner.dm b/code/game/objects/items/devices/t_scanner.dm
index 7dc13cb9e8..dde6814494 100644
--- a/code/game/objects/items/devices/t_scanner.dm
+++ b/code/game/objects/items/devices/t_scanner.dm
@@ -5,7 +5,7 @@
desc = "A terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes."
icon_state = "t-ray0"
slot_flags = SLOT_BELT
- w_class = 2
+ w_class = ITEMSIZE_SMALL
item_state = "electronic"
matter = list(DEFAULT_WALL_MATERIAL = 150)
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 1)
diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm
index 2740831046..689e92fb7c 100644
--- a/code/game/objects/items/devices/taperecorder.dm
+++ b/code/game/objects/items/devices/taperecorder.dm
@@ -3,7 +3,7 @@
desc = "A device that can record up to an hour of dialogue and play it back. It automatically translates the content in playback."
icon_state = "taperecorderidle"
item_state = "analyzer"
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
matter = list(DEFAULT_WALL_MATERIAL = 60,"glass" = 30)
diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm
index fbed4e7ebb..126a4871c9 100644
--- a/code/game/objects/items/devices/traitordevices.dm
+++ b/code/game/objects/items/devices/traitordevices.dm
@@ -19,7 +19,7 @@ effective or pretty fucking useless.
desc = "A strange device with twin antennas."
icon_state = "batterer"
throwforce = 5
- w_class = 1.0
+ w_class = ITEMSIZE_TINY
throw_speed = 4
throw_range = 10
flags = CONDUCT
diff --git a/code/game/objects/items/devices/whistle.dm b/code/game/objects/items/devices/whistle.dm
index 4c26a482a1..4a67bffe56 100644
--- a/code/game/objects/items/devices/whistle.dm
+++ b/code/game/objects/items/devices/whistle.dm
@@ -3,7 +3,7 @@
desc = "Used by obese officers to save their breath for running."
icon_state = "voice0"
item_state = "flashbang" //looks exactly like a flash (and nothing like a flashbang)
- w_class = 1.0
+ w_class = ITEMSIZE_TINY
flags = CONDUCT
slot_flags = SLOT_EARS
diff --git a/code/game/objects/items/glassjar.dm b/code/game/objects/items/glassjar.dm
index 54062ff853..c04b9b17dd 100644
--- a/code/game/objects/items/glassjar.dm
+++ b/code/game/objects/items/glassjar.dm
@@ -3,7 +3,7 @@
desc = "A small empty jar."
icon = 'icons/obj/items.dmi'
icon_state = "jar"
- w_class = 2
+ w_class = ITEMSIZE_SMALL
matter = list("glass" = 200)
flags = NOBLUDGEON
var/list/accept_mobs = list(/mob/living/simple_animal/lizard, /mob/living/simple_animal/mouse)
diff --git a/code/game/objects/items/latexballoon.dm b/code/game/objects/items/latexballoon.dm
index 009248dec1..ad24aa90a1 100644
--- a/code/game/objects/items/latexballoon.dm
+++ b/code/game/objects/items/latexballoon.dm
@@ -9,7 +9,7 @@
item_state = "lgloves"
force = 0
throwforce = 0
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
throw_speed = 1
throw_range = 15
var/state
diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm
index 41ae7ac7c3..15f3310322 100644
--- a/code/game/objects/items/stacks/medical.dm
+++ b/code/game/objects/items/stacks/medical.dm
@@ -4,7 +4,7 @@
icon = 'icons/obj/items.dmi'
amount = 10
max_amount = 10
- w_class = 2
+ w_class = ITEMSIZE_SMALL
throw_speed = 4
throw_range = 20
var/heal_brute = 0
diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm
index 73d4d3cbcd..543a432606 100644
--- a/code/game/objects/items/stacks/rods.dm
+++ b/code/game/objects/items/stacks/rods.dm
@@ -4,7 +4,7 @@
singular_name = "metal rod"
icon_state = "rods"
flags = CONDUCT
- w_class = 3.0
+ w_class = ITEMSIZE_NORMAL
force = 9.0
throwforce = 15.0
throw_speed = 5
diff --git a/code/game/objects/items/stacks/telecrystal.dm b/code/game/objects/items/stacks/telecrystal.dm
index f56b9580fc..b0c48fffa2 100644
--- a/code/game/objects/items/stacks/telecrystal.dm
+++ b/code/game/objects/items/stacks/telecrystal.dm
@@ -5,7 +5,7 @@
singular_name = "telecrystal"
icon = 'icons/obj/stock_parts.dmi'
icon_state = "telecrystal"
- w_class = 1
+ w_class = ITEMSIZE_TINY
max_amount = 240
origin_tech = list(TECH_MATERIAL = 6, TECH_BLUESPACE = 4)
force = 1 //Needs a token force to ensure you can attack because for some reason you can't attack with 0 force things
diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm
index 20cfb07864..f8981bc471 100644
--- a/code/game/objects/items/stacks/tiles/tile_types.dm
+++ b/code/game/objects/items/stacks/tiles/tile_types.dm
@@ -12,7 +12,7 @@
name = "tile"
singular_name = "tile"
desc = "A non-descript floor tile"
- w_class = 3
+ w_class = ITEMSIZE_NORMAL
max_amount = 60
/obj/item/stack/tile/New()
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 7b8042c8c1..1da2008cea 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -96,7 +96,7 @@
force = 0
icon = 'icons/obj/weapons.dmi'
icon_state = "syndballoon"
- w_class = 4.0
+ w_class = ITEMSIZE_LARGE
/obj/item/toy/nanotrasenballoon
name = "criminal balloon"
@@ -107,7 +107,7 @@
force = 0
icon = 'icons/obj/weapons.dmi'
icon_state = "ntballoon"
- w_class = 4.0
+ w_class = ITEMSIZE_LARGE
/*
* Fake telebeacon
@@ -141,7 +141,7 @@
icon_l_hand = 'icons/mob/items/lefthand_guns.dmi',
icon_r_hand = 'icons/mob/items/righthand_guns.dmi',
)
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
attack_verb = list("attacked", "struck", "hit")
var/bullets = 5
@@ -234,7 +234,7 @@
desc = "It's nerf or nothing! Ages 8 and up."
icon = 'icons/obj/toy.dmi'
icon_state = "foamdart"
- w_class = 1.0
+ w_class = ITEMSIZE_TINY
slot_flags = SLOT_EARS
/obj/effect/foam_dart_dummy
@@ -258,7 +258,7 @@
slot_r_hand_str = 'icons/mob/items/righthand_melee.dmi',
)
var/active = 0.0
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
attack_verb = list("attacked", "struck", "hit")
attack_self(mob/user as mob)
@@ -267,12 +267,12 @@
user << "You extend the plastic blade with a quick flick of your wrist."
playsound(user, 'sound/weapons/saberon.ogg', 50, 1)
src.icon_state = "swordblue"
- src.w_class = 4
+ src.w_class = ITEMSIZE_LARGE
else
user << "You push the plastic blade back down into the handle."
playsound(user, 'sound/weapons/saberoff.ogg', 50, 1)
src.icon_state = "sword0"
- src.w_class = 2
+ src.w_class = ITEMSIZE_SMALL
if(istype(user,/mob/living/carbon/human))
var/mob/living/carbon/human/H = user
@@ -295,7 +295,7 @@
slot_flags = SLOT_BELT | SLOT_BACK
force = 5
throwforce = 5
- w_class = 3
+ w_class = ITEMSIZE_NORMAL
attack_verb = list("attacked", "slashed", "stabbed", "sliced")
/*
@@ -306,7 +306,7 @@
desc = "Wow!"
icon = 'icons/obj/toy.dmi'
icon_state = "snappop"
- w_class = 1
+ w_class = ITEMSIZE_TINY
throw_impact(atom/hit_atom)
..()
@@ -410,7 +410,7 @@
icon = 'icons/obj/toy.dmi'
icon_state = "bosunwhistle"
var/cooldown = 0
- w_class = 1
+ w_class = ITEMSIZE_TINY
slot_flags = SLOT_EARS
/obj/item/toy/bosunwhistle/attack_self(mob/user as mob)
@@ -538,8 +538,8 @@
icon_state = "botanist"
/obj/item/toy/figure/captain
- name = "Station Administrator action figure"
- desc = "A \"Space Life\" brand Station Administrator action figure."
+ name = "Colony Director action figure"
+ desc = "A \"Space Life\" brand Colony Director action figure."
icon_state = "captain"
/obj/item/toy/figure/cargotech
@@ -707,7 +707,7 @@
slot_flags = SLOT_BELT | SLOT_BACK
force = 5
throwforce = 5
- w_class = 3
+ w_class = ITEMSIZE_NORMAL
attack_verb = list("attacked", "slashed", "stabbed", "sliced")
/obj/item/toy/therapy_red
@@ -716,7 +716,7 @@
icon = 'icons/obj/toy.dmi'
icon_state = "therapyred"
item_state = "egg4" // It's the red egg in items_left/righthand
- w_class = 1
+ w_class = ITEMSIZE_TINY
/obj/item/toy/therapy_purple
name = "purple therapy doll"
@@ -724,7 +724,7 @@
icon = 'icons/obj/toy.dmi'
icon_state = "therapypurple"
item_state = "egg1" // It's the magenta egg in items_left/righthand
- w_class = 1
+ w_class = ITEMSIZE_TINY
/obj/item/toy/therapy_blue
name = "blue therapy doll"
@@ -732,7 +732,7 @@
icon = 'icons/obj/toy.dmi'
icon_state = "therapyblue"
item_state = "egg2" // It's the blue egg in items_left/righthand
- w_class = 1
+ w_class = ITEMSIZE_TINY
/obj/item/toy/therapy_yellow
name = "yellow therapy doll"
@@ -740,7 +740,7 @@
icon = 'icons/obj/toy.dmi'
icon_state = "therapyyellow"
item_state = "egg5" // It's the yellow egg in items_left/righthand
- w_class = 1
+ w_class = ITEMSIZE_TINY
/obj/item/toy/therapy_orange
name = "orange therapy doll"
@@ -748,7 +748,7 @@
icon = 'icons/obj/toy.dmi'
icon_state = "therapyorange"
item_state = "egg4" // It's the red one again, lacking an orange item_state and making a new one is pointless
- w_class = 1
+ w_class = ITEMSIZE_TINY
/obj/item/toy/therapy_green
name = "green therapy doll"
@@ -756,7 +756,7 @@
icon = 'icons/obj/toy.dmi'
icon_state = "therapygreen"
item_state = "egg3" // It's the green egg in items_left/righthand
- w_class = 1
+ w_class = ITEMSIZE_TINY
/*
* Plushies
@@ -864,7 +864,7 @@
slot_l_hand_str = 'icons/mob/items/lefthand_melee.dmi',
slot_r_hand_str = 'icons/mob/items/righthand_melee.dmi',
)
- w_class = 4
+ w_class = ITEMSIZE_LARGE
attack_verb = list("attacked", "slashed", "stabbed", "poked")
/* NYET.
@@ -873,7 +873,7 @@
name = "toddler"
desc = "This baby looks almost real. Wait, did it just burp?"
force = 5
- w_class = 4.0
+ w_class = ITEMSIZE_LARGE
slot_flags = SLOT_BACK
*/
@@ -891,6 +891,6 @@
desc = "Tiny cute Christmas tree."
icon = 'icons/obj/toy.dmi'
icon_state = "tinyxmastree"
- w_class = 1
+ w_class = ITEMSIZE_TINY
force = 1
- throwforce = 1
\ No newline at end of file
+ throwforce = 1
diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm
index 1d171d9dbe..7fb09e116c 100644
--- a/code/game/objects/items/trash.dm
+++ b/code/game/objects/items/trash.dm
@@ -4,7 +4,7 @@
//Added by Jack Rost
/obj/item/trash
icon = 'icons/obj/trash.dmi'
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
desc = "This is rubbish."
/obj/item/trash/raisins
diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm
index ec1e5dbf41..ce28a6eb0b 100755
--- a/code/game/objects/items/weapons/AI_modules.dm
+++ b/code/game/objects/items/weapons/AI_modules.dm
@@ -14,7 +14,7 @@ AI MODULES
desc = "An AI Module for transmitting encrypted instructions to the AI."
flags = CONDUCT
force = 5.0
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
throwforce = 5.0
throw_speed = 3
throw_range = 15
diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm
index 80080220e9..e21c509c15 100644
--- a/code/game/objects/items/weapons/RCD.dm
+++ b/code/game/objects/items/weapons/RCD.dm
@@ -12,7 +12,7 @@
throwforce = 10.0
throw_speed = 1
throw_range = 5
- w_class = 3.0
+ w_class = ITEMSIZE_NORMAL
origin_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 2)
matter = list(DEFAULT_WALL_MATERIAL = 50000)
var/datum/effect/effect/system/spark_spread/spark_system
@@ -161,7 +161,7 @@
icon = 'icons/obj/ammo.dmi'
icon_state = "rcd"
item_state = "rcdammo"
- w_class = 2
+ w_class = ITEMSIZE_SMALL
origin_tech = list(TECH_MATERIAL = 2)
matter = list(DEFAULT_WALL_MATERIAL = 30000,"glass" = 15000)
diff --git a/code/game/objects/items/weapons/RSF.dm b/code/game/objects/items/weapons/RSF.dm
index 6384508c04..10a847b469 100644
--- a/code/game/objects/items/weapons/RSF.dm
+++ b/code/game/objects/items/weapons/RSF.dm
@@ -14,7 +14,7 @@ RSF
anchored = 0.0
var/stored_matter = 30
var/mode = 1
- w_class = 3.0
+ w_class = ITEMSIZE_NORMAL
/obj/item/weapon/rsf/examine(mob/user)
if(..(user, 0))
diff --git a/code/game/objects/items/weapons/autopsy.dm b/code/game/objects/items/weapons/autopsy.dm
index 3cbc75bfeb..1b1b3a5433 100644
--- a/code/game/objects/items/weapons/autopsy.dm
+++ b/code/game/objects/items/weapons/autopsy.dm
@@ -8,7 +8,7 @@
icon = 'icons/obj/autopsy_scanner.dmi'
icon_state = ""
flags = CONDUCT
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1)
var/list/datum/autopsy_data_scanner/wdata = list()
var/list/datum/autopsy_data_scanner/chemtraces = list()
diff --git a/code/game/objects/items/weapons/candle.dm b/code/game/objects/items/weapons/candle.dm
index 740b5e5a12..5ea04c2dab 100644
--- a/code/game/objects/items/weapons/candle.dm
+++ b/code/game/objects/items/weapons/candle.dm
@@ -3,7 +3,7 @@
desc = "a small pillar candle. Its specially-formulated fuel-oxidizer wax mixture allows continued combustion in airless environments."
icon = 'icons/obj/candle.dmi'
icon_state = "candle1"
- w_class = 1
+ w_class = ITEMSIZE_TINY
light_color = "#E09D37"
var/wax = 2000
diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm
index c6918d33db..11404ade86 100644
--- a/code/game/objects/items/weapons/cards_ids.dm
+++ b/code/game/objects/items/weapons/cards_ids.dm
@@ -15,7 +15,7 @@
name = "card"
desc = "Does card things."
icon = 'icons/obj/card.dmi'
- w_class = 1
+ w_class = ITEMSIZE_TINY
slot_flags = SLOT_EARS
var/associated_account_number = 0
@@ -233,12 +233,12 @@
access = list(access_syndicate, access_external_airlocks)
/obj/item/weapon/card/id/captains_spare
- name = "station administrator's spare ID"
+ name = "colony director's spare ID"
desc = "The spare ID of the High Lord himself."
icon_state = "gold"
item_state = "gold_id"
- registered_name = "Station Administrator"
- assignment = "Station Administrator"
+ registered_name = "Colony Director"
+ assignment = "Colony Director"
/obj/item/weapon/card/id/captains_spare/New()
access = get_all_station_access()
..()
@@ -362,4 +362,4 @@
desc = "An identification card of some sort. It does not look like it is issued by NT."
icon_state = "permit"
primary_color = rgb(142,94,0)
- secondary_color = rgb(191,159,95)
\ No newline at end of file
+ secondary_color = rgb(191,159,95)
diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm
index 3d3cb46192..62f4925c9a 100644
--- a/code/game/objects/items/weapons/cigs_lighters.dm
+++ b/code/game/objects/items/weapons/cigs_lighters.dm
@@ -37,7 +37,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
icon_state = "match_unlit"
var/burnt = 0
var/smoketime = 5
- w_class = 1.0
+ w_class = ITEMSIZE_TINY
origin_tech = list(TECH_MATERIAL = 1)
slot_flags = SLOT_EARS
attack_verb = list("burnt", "singed")
@@ -229,7 +229,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
icon_state = "cigoff"
throw_speed = 0.5
item_state = "cigoff"
- w_class = 1
+ w_class = ITEMSIZE_TINY
slot_flags = SLOT_EARS | SLOT_MASK
attack_verb = list("burnt", "singed")
icon_on = "cigon" //Note - these are in masks.dmi not in cigarette.dmi
@@ -314,7 +314,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
desc = "A manky old cigarette butt."
icon = 'icons/obj/clothing/masks.dmi'
icon_state = "cigbutt"
- w_class = 1
+ w_class = ITEMSIZE_TINY
slot_flags = SLOT_EARS
throwforce = 1
@@ -443,7 +443,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
icon = 'icons/obj/items.dmi'
icon_state = "lighter-g"
item_state = "lighter-g"
- w_class = 1
+ w_class = ITEMSIZE_TINY
throwforce = 4
flags = CONDUCT
slot_flags = SLOT_BELT
diff --git a/code/game/objects/items/weapons/circuitboards/circuitboard.dm b/code/game/objects/items/weapons/circuitboards/circuitboard.dm
index 3711cf0690..f17ee1c292 100644
--- a/code/game/objects/items/weapons/circuitboards/circuitboard.dm
+++ b/code/game/objects/items/weapons/circuitboards/circuitboard.dm
@@ -12,7 +12,7 @@
origin_tech = list(TECH_DATA = 2)
density = 0
anchored = 0
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
flags = CONDUCT
force = 5.0
throwforce = 5.0
diff --git a/code/game/objects/items/weapons/circuitboards/machinery/power.dm b/code/game/objects/items/weapons/circuitboards/machinery/power.dm
index 6e5667ebe5..57d8822df6 100644
--- a/code/game/objects/items/weapons/circuitboards/machinery/power.dm
+++ b/code/game/objects/items/weapons/circuitboards/machinery/power.dm
@@ -22,3 +22,10 @@
build_path = /obj/machinery/power/smes/batteryrack/makeshift
board_type = new /datum/frame/frame_types/machine
req_components = list(/obj/item/weapon/cell = 3)
+
+/obj/item/weapon/circuitboard/grid_checker
+ name = T_BOARD("power grid checker")
+ build_path = /obj/machinery/power/grid_checker
+ board_type = new /datum/frame/frame_types/machine
+ origin_tech = list(TECH_POWER = 4, TECH_ENGINEERING = 3)
+ req_components = list(/obj/item/weapon/stock_parts/capacitor = 3, /obj/item/stack/cable_coil = 10)
diff --git a/code/game/objects/items/weapons/cosmetics.dm b/code/game/objects/items/weapons/cosmetics.dm
index db630d8fad..9d3a9cb0a4 100644
--- a/code/game/objects/items/weapons/cosmetics.dm
+++ b/code/game/objects/items/weapons/cosmetics.dm
@@ -4,7 +4,7 @@
desc = "A generic brand of lipstick."
icon = 'icons/obj/items.dmi'
icon_state = "lipstick"
- w_class = 1.0
+ w_class = ITEMSIZE_TINY
slot_flags = SLOT_EARS
var/colour = "red"
var/open = 0
@@ -67,7 +67,7 @@
/obj/item/weapon/haircomb //sparklysheep's comb
name = "purple comb"
desc = "A pristine purple comb made from flexible plastic."
- w_class = 1.0
+ w_class = ITEMSIZE_TINY
slot_flags = SLOT_EARS
icon = 'icons/obj/items.dmi'
icon_state = "purplecomb"
diff --git a/code/game/objects/items/weapons/dice.dm b/code/game/objects/items/weapons/dice.dm
index 86310d2b78..9099ff3bd1 100644
--- a/code/game/objects/items/weapons/dice.dm
+++ b/code/game/objects/items/weapons/dice.dm
@@ -3,7 +3,7 @@
desc = "A dice with six sides."
icon = 'icons/obj/dice.dmi'
icon_state = "d66"
- w_class = 1
+ w_class = ITEMSIZE_TINY
var/sides = 6
attack_verb = list("diced")
diff --git a/code/game/objects/items/weapons/dna_injector.dm b/code/game/objects/items/weapons/dna_injector.dm
index ba60bfc361..33b93f6210 100644
--- a/code/game/objects/items/weapons/dna_injector.dm
+++ b/code/game/objects/items/weapons/dna_injector.dm
@@ -8,7 +8,7 @@
var/s_time = 10.0
throw_speed = 1
throw_range = 5
- w_class = 1.0
+ w_class = ITEMSIZE_TINY
slot_flags = SLOT_EARS
var/uses = 1
var/nofail
@@ -160,7 +160,7 @@
/obj/item/weapon/dnainjector/xraymut
name = "\improper DNA injector (Xray)"
- desc = "Finally you can see what the Station Administrator does."
+ desc = "Finally you can see what the Colony Director does."
datatype = DNA2_BUF_SE
value = 0xFFF
//block = 8
diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm
index 46e8e7ba26..1a8cc97def 100644
--- a/code/game/objects/items/weapons/explosives.dm
+++ b/code/game/objects/items/weapons/explosives.dm
@@ -6,7 +6,7 @@
icon_state = "plastic-explosive0"
item_state = "plasticx"
flags = NOBLUDGEON
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
origin_tech = list(TECH_ILLEGAL = 2)
var/datum/wires/explosive/c4/wires = null
var/timer = 10
diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm
index 6e323d7387..3bcb68bcee 100644
--- a/code/game/objects/items/weapons/extinguisher.dm
+++ b/code/game/objects/items/weapons/extinguisher.dm
@@ -7,7 +7,7 @@
hitsound = 'sound/weapons/smash.ogg'
flags = CONDUCT
throwforce = 10
- w_class = 3
+ w_class = ITEMSIZE_NORMAL
throw_speed = 2
throw_range = 10
force = 10
@@ -28,7 +28,7 @@
item_state = "miniFE"
hitsound = null //it is much lighter, after all.
throwforce = 2
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
force = 3.0
max_water = 150
spray_particles = 3
diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm
index 37018e8576..c3f93a016f 100644
--- a/code/game/objects/items/weapons/flamethrower.dm
+++ b/code/game/objects/items/weapons/flamethrower.dm
@@ -13,7 +13,7 @@
throwforce = 10.0
throw_speed = 1
throw_range = 5
- w_class = 3.0
+ w_class = ITEMSIZE_NORMAL
origin_tech = list(TECH_COMBAT = 1, TECH_PHORON = 1)
matter = list(DEFAULT_WALL_MATERIAL = 500)
var/status = 0
diff --git a/code/game/objects/items/weapons/gift_wrappaper.dm b/code/game/objects/items/weapons/gift_wrappaper.dm
index 94775ceb36..6f8e1782eb 100644
--- a/code/game/objects/items/weapons/gift_wrappaper.dm
+++ b/code/game/objects/items/weapons/gift_wrappaper.dm
@@ -18,7 +18,7 @@
..()
pixel_x = rand(-10,10)
pixel_y = rand(-10,10)
- if(w_class > 0 && w_class < 4)
+ if(w_class > 0 && w_class < ITEMSIZE_LARGE)
icon_state = "gift[w_class]"
else
icon_state = "gift[pick(1, 2, 3)]"
@@ -128,7 +128,7 @@
..()
if (!( locate(/obj/structure/table, src.loc) ))
user << "You MUST put the paper on a table!"
- if (W.w_class < 4)
+ if (W.w_class < ITEMSIZE_LARGE)
if (user.get_type_in_hands(/obj/item/weapon/wirecutters))
var/a_used = 2 ** (src.w_class - 1)
if (src.amount < a_used)
diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm
index f87f0fa830..be7d90830d 100644
--- a/code/game/objects/items/weapons/grenades/chem_grenade.dm
+++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm
@@ -3,7 +3,7 @@
icon_state = "chemg"
item_state = "grenade"
desc = "A hand made chemical grenade."
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
force = 2.0
det_time = null
unacidable = 1
diff --git a/code/game/objects/items/weapons/grenades/flashbang.dm b/code/game/objects/items/weapons/grenades/flashbang.dm
index 0236297d22..d02ccf2185 100644
--- a/code/game/objects/items/weapons/grenades/flashbang.dm
+++ b/code/game/objects/items/weapons/grenades/flashbang.dm
@@ -92,7 +92,7 @@
M.update_icons()
/obj/item/weapon/grenade/flashbang/clusterbang//Created by Polymorph, fixed by Sieve
- desc = "Use of this weapon may constiute a war crime in your area, consult your local Station Administrator."
+ desc = "Use of this weapon may constiute a war crime in your area, consult your local Colony Director."
name = "clusterbang"
icon = 'icons/obj/grenade.dmi'
icon_state = "clusterbang"
diff --git a/code/game/objects/items/weapons/grenades/grenade.dm b/code/game/objects/items/weapons/grenades/grenade.dm
index 8a8536d434..b46d987b4c 100644
--- a/code/game/objects/items/weapons/grenades/grenade.dm
+++ b/code/game/objects/items/weapons/grenades/grenade.dm
@@ -1,7 +1,7 @@
/obj/item/weapon/grenade
name = "grenade"
desc = "A hand held grenade, with an adjustable timer."
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
icon = 'icons/obj/grenade.dmi'
icon_state = "grenade"
item_state = "grenade"
diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm
index 25ee157950..e6962669dc 100644
--- a/code/game/objects/items/weapons/handcuffs.dm
+++ b/code/game/objects/items/weapons/handcuffs.dm
@@ -7,7 +7,7 @@
flags = CONDUCT
slot_flags = SLOT_BELT
throwforce = 5
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
throw_speed = 2
throw_range = 5
origin_tech = list(TECH_MATERIAL = 1)
diff --git a/code/game/objects/items/weapons/hydroponics.dm b/code/game/objects/items/weapons/hydroponics.dm
index 8160c14cd8..749f1a08b9 100644
--- a/code/game/objects/items/weapons/hydroponics.dm
+++ b/code/game/objects/items/weapons/hydroponics.dm
@@ -11,7 +11,7 @@
var/mode = 1; //0 = pick one at a time, 1 = pick all on tile
var/capacity = 500; //the number of seeds it can carry.
slot_flags = SLOT_BELT
- w_class = 1
+ w_class = ITEMSIZE_TINY
var/list/item_quants = list()
/obj/item/weapon/seedbag/attack_self(mob/user as mob)
diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm
index 3f4164a4c4..17d3e32f92 100644
--- a/code/game/objects/items/weapons/implants/implant.dm
+++ b/code/game/objects/items/weapons/implants/implant.dm
@@ -6,7 +6,7 @@
name = "implant"
icon = 'icons/obj/device.dmi'
icon_state = "implant"
- w_class = 1
+ w_class = ITEMSIZE_TINY
var/implanted = null
var/mob/imp_in = null
var/obj/item/organ/external/part = null
diff --git a/code/game/objects/items/weapons/implants/implantcase.dm b/code/game/objects/items/weapons/implants/implantcase.dm
index 49b1b280a7..815050636a 100644
--- a/code/game/objects/items/weapons/implants/implantcase.dm
+++ b/code/game/objects/items/weapons/implants/implantcase.dm
@@ -8,7 +8,7 @@
item_state = "implantcase"
throw_speed = 1
throw_range = 5
- w_class = 1.0
+ w_class = ITEMSIZE_TINY
var/obj/item/weapon/implant/imp = null
/obj/item/weapon/implantcase/proc/update()
diff --git a/code/game/objects/items/weapons/implants/implanter.dm b/code/game/objects/items/weapons/implants/implanter.dm
index 655727a62a..f872cd0bf4 100644
--- a/code/game/objects/items/weapons/implants/implanter.dm
+++ b/code/game/objects/items/weapons/implants/implanter.dm
@@ -5,7 +5,7 @@
item_state = "syringe_0"
throw_speed = 1
throw_range = 5
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
var/obj/item/weapon/implant/imp = null
/obj/item/weapon/implanter/attack_self(var/mob/user)
@@ -31,7 +31,7 @@
return
if (user && src.imp)
M.visible_message("[user] is attemping to implant [M].")
-
+
user.setClickCooldown(DEFAULT_QUICK_COOLDOWN)
user.do_attack_animation(M)
diff --git a/code/game/objects/items/weapons/implants/implantpad.dm b/code/game/objects/items/weapons/implants/implantpad.dm
index a6feac2998..dc054536ac 100644
--- a/code/game/objects/items/weapons/implants/implantpad.dm
+++ b/code/game/objects/items/weapons/implants/implantpad.dm
@@ -8,7 +8,7 @@
item_state = "electronic"
throw_speed = 1
throw_range = 5
- w_class = 2.0
+ w_class = ITEMSIZE_SMALL
var/obj/item/weapon/implantcase/case = null
var/broadcasting = null
var/listening = 1.0
diff --git a/code/game/objects/items/weapons/improvised_components.dm b/code/game/objects/items/weapons/improvised_components.dm
index 0fd7d95e8c..c76f927ef2 100644
--- a/code/game/objects/items/weapons/improvised_components.dm
+++ b/code/game/objects/items/weapons/improvised_components.dm
@@ -46,7 +46,7 @@
flags = CONDUCT
force = 8
throwforce = 10
- w_class = 3
+ w_class = ITEMSIZE_NORMAL
attack_verb = list("hit", "bludgeoned", "whacked", "bonked")
force_divisor = 0.1
thrown_force_divisor = 0.1
diff --git a/code/game/objects/items/weapons/manuals.dm b/code/game/objects/items/weapons/manuals.dm
index 8c1e3f5df1..c69b3d61d1 100644
--- a/code/game/objects/items/weapons/manuals.dm
+++ b/code/game/objects/items/weapons/manuals.dm
@@ -110,7 +110,7 @@
SUPERMATTER HANDLING
Do not expose supermatter to oxygen.
- Do not touch supermatter without gloves without exosuit protection allow supermatter to contact any solid object apart from specially-designed supporting pallet.
+ Do not allow supermatter to contact any solid object apart from specially-designed supporting pallet.
Do not directly view supermatter without meson goggles.
While handles on pallet allow moving the supermatter via pulling, pushing should not be attempted.
@@ -118,7 +118,7 @@
- Fill reactor loop and radiator loop with two (2) standard canisters of nitrogen gas each.
- Ensure that pumps and filters are on and operating at maximum power.
- - Fire
5 15 2 UNKNOWN 8-12 pulses from emitter at supermatter crystal. Reactor blast doors must be open for this procedure.
+ - Fire 8-9 pulses from emitter at supermatter crystal. Reactor blast doors must be open for this procedure.
OPERATION AND MAINTENANCE
@@ -997,7 +997,7 @@
Remember the order:
Disk, Code, Safety, Timer, Disk, RUN!
- Intelligence Analysts believe that normal corporate procedure is for the Station Administrator to secure the nuclear authentication disk.
+ Intelligence Analysts believe that normal corporate procedure is for the Colony Director to secure the nuclear authentication disk.
Good luck!