diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm
index 68954b0dc55..6a009677e11 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/datums/datacore.dm b/code/datums/datacore.dm
index 1a736cd74ff..d40fd4fa5a3 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/uplink/ammunition.dm b/code/datums/uplink/ammunition.dm
index 756d5fc55be..6a98430aeaf 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/wires/grid_checker.dm b/code/datums/wires/grid_checker.dm
new file mode 100644
index 00000000000..1e09be577e3
--- /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/defines/obj.dm b/code/defines/obj.dm
index c1aeca1c309..e6d97a8fed0 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)
diff --git a/code/game/antagonist/mutiny/mutineer.dm b/code/game/antagonist/mutiny/mutineer.dm
index eb341e36cfe..148a020cd94 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 658e32e4aad..b8f76bf2a96 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/station/changeling.dm b/code/game/antagonist/station/changeling.dm
index 686de4d8182..7ace822b1a5 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 d3ba6c1ad76..3db723c556a 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 d2efe7262b5..5af856e45e2 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 ae8925be47b..6bbc1d0606a 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 19f0d70fc42..375ce28af50 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
diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm
index 797dddc8749..225335ea12d 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 7c1f4229872..3175edcf076 100644
--- a/code/game/gamemodes/gameticker.dm
+++ b/code/game/gamemodes/gameticker.dm
@@ -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/newobjective.dm b/code/game/gamemodes/newobjective.dm
index 2c69bb3543f..6a5cd842fff 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 station administrator'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/objective.dm b/code/game/gamemodes/objective.dm
index a6a2df47f3e..da3a082b97b 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 station administrator'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 station administrator'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 station administrator'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/core_obj.dm b/code/game/gamemodes/technomancer/core_obj.dm
index 48c45f3f068..fc89f5ce69f 100644
--- a/code/game/gamemodes/technomancer/core_obj.dm
+++ b/code/game/gamemodes/technomancer/core_obj.dm
@@ -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/equipment.dm b/code/game/gamemodes/technomancer/equipment.dm
index 54cae5670e2..97978086b3d 100644
--- a/code/game/gamemodes/technomancer/equipment.dm
+++ b/code/game/gamemodes/technomancer/equipment.dm
@@ -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 0de94cba7a4..8f9eebeb170 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] Rank:
"
diff --git a/code/game/machinery/computer/skills.dm b/code/game/machinery/computer/skills.dm
index 2b4d898cfcb..1a67778fdf6 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/computers/card.dm b/code/game/machinery/computer3/computers/card.dm
index 3a510ac8360..eb7180d9a2f 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
diff --git a/code/game/machinery/computer3/computers/security.dm b/code/game/machinery/computer3/computers/security.dm
index a335cf1c73d..a314bed2736 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 += "Rank:
"
diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm
index 5d3270231f4..b10c9af3180 100644
--- a/code/game/machinery/recharger.dm
+++ b/code/game/machinery/recharger.dm
@@ -39,9 +39,14 @@ obj/machinery/recharger
if(!powered())
user << "The [name] blinks red as you try to insert the item!"
return
- 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))
diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm
index 02512c452eb..0067a7341d4 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","Tajara","Skrell","Unathi", "Teshari")
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/objects/items/devices/radio/encryptionkey.dm b/code/game/objects/items/devices/radio/encryptionkey.dm
index ef7d16f9b85..f08585da31d 100644
--- a/code/game/objects/items/devices/radio/encryptionkey.dm
+++ b/code/game/objects/items/devices/radio/encryptionkey.dm
@@ -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 9147b4f8407..fce4ec31756 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/toys.dm b/code/game/objects/items/toys.dm
index ef9edae115f..51d79ed05b5 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -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
diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm
index b2200981b9c..a5fe817011d 100644
--- a/code/game/objects/items/weapons/cards_ids.dm
+++ b/code/game/objects/items/weapons/cards_ids.dm
@@ -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()
..()
diff --git a/code/game/objects/items/weapons/circuitboards/machinery/power.dm b/code/game/objects/items/weapons/circuitboards/machinery/power.dm
index 6e5667ebe5a..57d8822df65 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/dna_injector.dm b/code/game/objects/items/weapons/dna_injector.dm
index 80ce010ddbe..33b93f6210f 100644
--- a/code/game/objects/items/weapons/dna_injector.dm
+++ b/code/game/objects/items/weapons/dna_injector.dm
@@ -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/grenades/flashbang.dm b/code/game/objects/items/weapons/grenades/flashbang.dm
index 0236297d221..d02ccf21854 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/manuals.dm b/code/game/objects/items/weapons/manuals.dm
index a5d5fbf11c9..c69b3d61d1e 100644
--- a/code/game/objects/items/weapons/manuals.dm
+++ b/code/game/objects/items/weapons/manuals.dm
@@ -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!
diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm
index 4bb8e25e8b6..2b2a2ee8b45 100644
--- a/code/game/objects/items/weapons/melee/energy.dm
+++ b/code/game/objects/items/weapons/melee/energy.dm
@@ -7,6 +7,9 @@
edge = 0
armor_penetration = 50
flags = NOBLOODY
+ var/lrange = 2
+ var/lpower = 2
+ var/lcolor = "#0099FF"
/obj/item/weapon/melee/energy/proc/activate(mob/living/user)
anchored = 1
@@ -19,6 +22,7 @@
edge = 1
w_class = active_w_class
playsound(user, 'sound/weapons/saberon.ogg', 50, 1)
+ set_light(lrange, lpower, lcolor)
/obj/item/weapon/melee/energy/proc/deactivate(mob/living/user)
anchored = 0
@@ -31,6 +35,7 @@
sharp = initial(sharp)
edge = initial(edge)
w_class = initial(w_class)
+ set_light(0,0)
/obj/item/weapon/melee/energy/attack_self(mob/living/user as mob)
if (active)
@@ -124,26 +129,33 @@
/obj/item/weapon/melee/energy/sword/New()
blade_color = pick("red","blue","green","purple")
+ lcolor = blade_color
/obj/item/weapon/melee/energy/sword/green/New()
blade_color = "green"
+ lcolor = "#008000"
/obj/item/weapon/melee/energy/sword/red/New()
blade_color = "red"
+ lcolor = "#FF0000"
/obj/item/weapon/melee/energy/sword/blue/New()
blade_color = "blue"
+ lcolor = "#0000FF"
/obj/item/weapon/melee/energy/sword/purple/New()
blade_color = "purple"
+ lcolor = "#800080"
/obj/item/weapon/melee/energy/sword/activate(mob/living/user)
if(!active)
user << "\The [src] is now energised."
+
..()
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
icon_state = "sword[blade_color]"
+
/obj/item/weapon/melee/energy/sword/deactivate(mob/living/user)
if(active)
user << "\The [src] deactivates!"
@@ -193,6 +205,7 @@
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
var/mob/living/creator
var/datum/effect/effect/system/spark_spread/spark_system
+ lcolor = "#00FF00"
/obj/item/weapon/melee/energy/blade/New()
@@ -201,6 +214,7 @@
spark_system.attach(src)
processing_objects |= src
+ set_light(lrange, lpower, lcolor)
/obj/item/weapon/melee/energy/blade/Destroy()
processing_objects -= src
diff --git a/code/game/objects/items/weapons/policetape.dm b/code/game/objects/items/weapons/policetape.dm
index a2f5c78bd0d..46887ce8f06 100644
--- a/code/game/objects/items/weapons/policetape.dm
+++ b/code/game/objects/items/weapons/policetape.dm
@@ -271,7 +271,7 @@ var/list/tape_roll_applications = list()
add_fingerprint(M)
if (!allowed(M)) //only select few learn art of not crumpling the tape
M << "You are not supposed to go past [src]..."
- if(M.a_intent == I_HELP)
+ if(M.a_intent == I_HELP && !(istype(M, /mob/living/simple_animal)))
return 0
crumple()
return ..(mover)
diff --git a/code/game/objects/items/weapons/power_cells.dm b/code/game/objects/items/weapons/power_cells.dm
index 716bbc2c9a6..4ff88fd4a1c 100644
--- a/code/game/objects/items/weapons/power_cells.dm
+++ b/code/game/objects/items/weapons/power_cells.dm
@@ -24,19 +24,15 @@
/obj/item/weapon/cell/device
name = "device power cell"
desc = "A small power cell designed to power handheld devices."
- icon_state = "cell" //placeholder
+ icon_state = "dcell"
+ item_state = "egg6"
w_class = ITEMSIZE_SMALL
force = 0
throw_speed = 5
throw_range = 7
- maxcharge = 1000
+ maxcharge = 2400
matter = list("metal" = 350, "glass" = 50)
-/obj/item/weapon/cell/device/variable/New(newloc, charge_amount)
- ..(newloc)
- maxcharge = charge_amount
- charge = maxcharge
-
/obj/item/weapon/cell/crap
name = "\improper rechargable AA battery"
desc = "You can't top the plasma top." //TOTALLY TRADEMARK INFRINGEMENT
diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm
index 92abc53e0e2..0430684f36b 100644
--- a/code/game/objects/items/weapons/storage/backpack.dm
+++ b/code/game/objects/items/weapons/storage/backpack.dm
@@ -94,7 +94,7 @@
icon_state = "securitypack"
/obj/item/weapon/storage/backpack/captain
- name = "station administrator's backpack"
+ name = "colony director's backpack"
desc = "It's a special backpack made exclusively for officers."
icon_state = "captainpack"
@@ -156,7 +156,7 @@
icon_state = "duffle_syndieammo"
/obj/item/weapon/storage/backpack/dufflebag/captain
- name = "station administrator's dufflebag"
+ name = "colony director's dufflebag"
desc = "A large dufflebag for holding extra captainly goods."
icon_state = "duffle_captain"
@@ -248,7 +248,7 @@
icon_state = "satchel_hyd"
/obj/item/weapon/storage/backpack/satchel/cap
- name = "station administrator's satchel"
+ name = "colony director's satchel"
desc = "An exclusive satchel for officers."
icon_state = "satchel-cap"
item_state_slots = list(slot_r_hand_str = "captainpack", slot_l_hand_str = "captainpack")
diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm
index 27145d63387..c68b0faf7d2 100644
--- a/code/game/objects/items/weapons/storage/belt.dm
+++ b/code/game/objects/items/weapons/storage/belt.dm
@@ -126,6 +126,7 @@
/obj/item/clothing/glasses,
/obj/item/ammo_casing/shotgun,
/obj/item/ammo_magazine,
+ /obj/item/weapon/cell/device,
/obj/item/weapon/reagent_containers/food/snacks/donut/,
/obj/item/weapon/melee/baton,
/obj/item/weapon/gun/energy/taser,
diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm
index 64ac55c295f..f8d5376a642 100644
--- a/code/game/objects/items/weapons/storage/boxes.dm
+++ b/code/game/objects/items/weapons/storage/boxes.dm
@@ -130,7 +130,12 @@
/obj/item/weapon/storage/box/blanks/New()
..()
- for(var/i = 1 to 7)
+ for(var/i = 1 to 8)
+ new /obj/item/ammo_casing/shotgun/blank(src)
+
+/obj/item/weapon/storage/box/blanks/large/New()
+ ..()
+ for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/blank(src)
/obj/item/weapon/storage/box/beanbags
@@ -141,7 +146,12 @@
/obj/item/weapon/storage/box/beanbags/New()
..()
- for(var/i = 1 to 7)
+ for(var/i = 1 to 8)
+ new /obj/item/ammo_casing/shotgun/beanbag(src)
+
+/obj/item/weapon/storage/box/beanbags/large/New()
+ ..()
+ for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/beanbag(src)
/obj/item/weapon/storage/box/shotgunammo
@@ -152,7 +162,12 @@
/obj/item/weapon/storage/box/shotgunammo/New()
..()
- for(var/i = 1 to 7)
+ for(var/i = 1 to 8)
+ new /obj/item/ammo_casing/shotgun(src)
+
+/obj/item/weapon/storage/box/shotgunammo/large/New()
+ ..()
+ for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun(src)
/obj/item/weapon/storage/box/shotgunshells
@@ -163,7 +178,12 @@
/obj/item/weapon/storage/box/shotgunshells/New()
..()
- for(var/i = 1 to 7)
+ for(var/i = 1 to 8)
+ new /obj/item/ammo_casing/shotgun/pellet(src)
+
+/obj/item/weapon/storage/box/shotgunshells/large/New()
+ ..()
+ for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/pellet(src)
/obj/item/weapon/storage/box/flashshells
@@ -174,7 +194,12 @@
/obj/item/weapon/storage/box/flashshells/New()
..()
- for(var/i = 1 to 7)
+ for(var/i = 1 to 8)
+ new /obj/item/ammo_casing/shotgun/flash(src)
+
+/obj/item/weapon/storage/box/flashshells/large/New()
+ ..()
+ for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/flash(src)
/obj/item/weapon/storage/box/stunshells
@@ -185,7 +210,12 @@
/obj/item/weapon/storage/box/stunshells/New()
..()
- for(var/i = 1 to 7)
+ for(var/i = 1 to 8)
+ new /obj/item/ammo_casing/shotgun/stunshell(src)
+
+/obj/item/weapon/storage/box/stunshells/large/New()
+ ..()
+ for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/stunshell(src)
/obj/item/weapon/storage/box/practiceshells
@@ -196,7 +226,12 @@
/obj/item/weapon/storage/box/practiceshells/New()
..()
- for(var/i = 1 to 7)
+ for(var/i = 1 to 8)
+ new /obj/item/ammo_casing/shotgun/practice(src)
+
+/obj/item/weapon/storage/box/practiceshells/large/New()
+ ..()
+ for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/practice(src)
/obj/item/weapon/storage/box/empshells
@@ -207,7 +242,12 @@
/obj/item/weapon/storage/box/empshells/New()
..()
- for(var/i = 1 to 7)
+ for(var/i = 1 to 8)
+ new /obj/item/ammo_casing/shotgun/emp(src)
+
+/obj/item/weapon/storage/box/empshells/large/New()
+ ..()
+ for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/emp(src)
/obj/item/weapon/storage/box/sniperammo
diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm
index 5a92c72d011..84e0bdf92b4 100644
--- a/code/game/objects/items/weapons/stunbaton.dm
+++ b/code/game/objects/items/weapons/stunbaton.dm
@@ -17,7 +17,7 @@
var/agonyforce = 60
var/status = 0 //whether the thing is on or not
var/obj/item/weapon/cell/bcell = null
- var/hitcost = 1000 //oh god why do power cells carry so much charge? We probably need to make a distinction between "industrial" sized power cells for APCs and power cells for everything else.
+ var/hitcost = 240
/obj/item/weapon/melee/baton/suicide_act(mob/user)
user.visible_message("\The [user] is putting the live [name] in \his mouth! It looks like \he's trying to commit suicide.")
@@ -30,7 +30,7 @@
/obj/item/weapon/melee/baton/loaded/New() //this one starts with a cell pre-installed.
..()
- bcell = new/obj/item/weapon/cell/high(src)
+ bcell = new/obj/item/weapon/cell/device(src)
update_icon()
return
@@ -40,11 +40,15 @@
if(bcell.checked_use(chrgdeductamt))
return 1
else
- status = 0
- update_icon()
return 0
return null
+/obj/item/weapon/melee/baton/proc/powercheck(var/chrgdeductamt)
+ if(bcell)
+ if(bcell.charge < chrgdeductamt)
+ status = 0
+ update_icon()
+
/obj/item/weapon/melee/baton/update_icon()
if(status)
icon_state = "[initial(name)]_active"
@@ -69,26 +73,31 @@
/obj/item/weapon/melee/baton/attackby(obj/item/weapon/W, mob/user)
if(istype(W, /obj/item/weapon/cell))
- if(!bcell)
- user.drop_item()
- W.loc = src
- bcell = W
- user << "You install a cell in [src]."
- update_icon()
+ if(istype(W, /obj/item/weapon/cell/device))
+ if(!bcell)
+ user.drop_item()
+ W.loc = src
+ bcell = W
+ user << "You install a cell in [src]."
+ update_icon()
+ else
+ user << "[src] already has a cell."
else
- user << "[src] already has a cell."
+ user << "This cell is not fitted for [src]."
- else if(istype(W, /obj/item/weapon/screwdriver))
+/obj/item/weapon/melee/baton/attack_hand(mob/user as mob)
+ if(user.get_inactive_hand() == src)
if(bcell)
bcell.update_icon()
- bcell.loc = get_turf(src.loc)
+ user.put_in_hands(bcell)
bcell = null
user << "You remove the cell from the [src]."
status = 0
update_icon()
return
..()
- return
+ else
+ return ..()
/obj/item/weapon/melee/baton/attack_self(mob/user)
if(bcell && bcell.charge > hitcost)
@@ -149,6 +158,7 @@
if(ishuman(target))
var/mob/living/carbon/human/H = target
H.forcesay(hit_appends)
+ powercheck(hitcost)
/obj/item/weapon/melee/baton/emp_act(severity)
if(bcell)
@@ -157,7 +167,7 @@
//secborg stun baton module
/obj/item/weapon/melee/baton/robot
- hitcost = 500
+ hitcost = 120
/obj/item/weapon/melee/baton/robot/attack_self(mob/user)
//try to find our power cell
@@ -182,3 +192,17 @@
hitcost = 2500
attack_verb = list("poked")
slot_flags = null
+
+/obj/item/weapon/melee/baton/cattleprod/attackby(obj/item/weapon/W, mob/user)
+ if(istype(W, /obj/item/weapon/cell))
+ if(!istype(W, /obj/item/weapon/cell/device))
+ if(!bcell)
+ user.drop_item()
+ W.loc = src
+ bcell = W
+ user << "You install a cell in [src]."
+ update_icon()
+ else
+ user << "[src] already has a cell."
+ else
+ user << "This cell is not fitted for [src]."
\ No newline at end of file
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
index be67e9b3ca0..a7f526a2e37 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
@@ -1,5 +1,5 @@
/obj/structure/closet/secure_closet/captains
- name = "station administrator's locker"
+ name = "colony director's locker"
req_access = list(access_captain)
icon_state = "capsecure1"
icon_closed = "capsecure"
@@ -121,6 +121,7 @@
new /obj/item/device/flash(src)
new /obj/item/weapon/melee/baton/loaded(src)
new /obj/item/weapon/gun/energy/gun(src)
+ new /obj/item/weapon/cell/device(src)
new /obj/item/clothing/accessory/holster/waist(src)
new /obj/item/weapon/melee/telebaton(src)
new /obj/item/clothing/head/beret/sec/corporate/hos(src)
@@ -166,6 +167,7 @@
new /obj/item/weapon/reagent_containers/spray/pepper(src)
new /obj/item/weapon/melee/baton/loaded(src)
new /obj/item/weapon/gun/energy/gun(src)
+ new /obj/item/weapon/cell/device(src)
new /obj/item/weapon/storage/box/holobadge(src)
new /obj/item/clothing/head/beret/sec/corporate/warden(src)
new /obj/item/clothing/suit/storage/hooded/wintercoat/security(src)
@@ -212,6 +214,7 @@
new /obj/item/clothing/under/rank/security/corp(src)
new /obj/item/ammo_magazine/c45m/rubber(src)
new /obj/item/weapon/gun/energy/taser(src)
+ new /obj/item/weapon/cell/device(src)
new /obj/item/clothing/suit/storage/hooded/wintercoat/security(src)
new /obj/item/device/flashlight/maglight(src)
return
diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm
index 0f5d5119bbf..fd4e6005151 100644
--- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm
+++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm
@@ -615,7 +615,7 @@
return
/obj/structure/closet/wardrobe/captain
- name = "station administrator's wardrobe"
+ name = "colony director's wardrobe"
icon_state = "cabinet_closed"
icon_closed = "cabinet_closed"
icon_opened = "cabinet_open"
diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm
index 7a21c5966ed..5d01438614c 100644
--- a/code/game/objects/structures/lattice.dm
+++ b/code/game/objects/structures/lattice.dm
@@ -57,10 +57,11 @@
return
if (istype(C, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = C
- if(WT.remove_fuel(0, user))
- user << "Slicing lattice joints ..."
- PoolOrNew(/obj/item/stack/rods, src.loc)
- qdel(src)
+ if(WT.welding == 1)
+ if(WT.remove_fuel(0, user))
+ user << "Slicing lattice joints ..."
+ PoolOrNew(/obj/item/stack/rods, src.loc)
+ qdel(src)
return
diff --git a/code/global.dm b/code/global.dm
index cd27fbc8ecb..70171ac081a 100644
--- a/code/global.dm
+++ b/code/global.dm
@@ -119,6 +119,7 @@ var/join_motd = null
var/datum/nanomanager/nanomanager = new() // NanoManager, the manager for Nano UIs.
var/datum/event_manager/event_manager = new() // Event Manager, the manager for events.
var/datum/game_master/game_master = new() // Game Master, an AI for choosing events.
+var/datum/metric/metric = new() // Metric datum, used to keep track of the round.
var/list/awaydestinations = list() // Away missions. A list of landmarks that the warpgate can take you to.
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 3ccfffdf368..6cb95b8615e 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -309,7 +309,11 @@ var/list/admin_verbs_mod = list(
/datum/admins/proc/paralyze_mob,
/client/proc/cmd_admin_direct_narrate,
/client/proc/allow_character_respawn, // Allows a ghost to respawn ,
- /datum/admins/proc/sendFax
+ /datum/admins/proc/sendFax,
+ /client/proc/getserverlog, //allows us to fetch server logs (diary) for other days,
+ /datum/admins/proc/view_txt_log, //shows the server log (diary) for today,
+ /datum/admins/proc/view_atk_log //shows the server combat-log, doesn't do anything presently,
+
)
diff --git a/code/modules/admin/newbanjob.dm b/code/modules/admin/newbanjob.dm
index b9f5c442980..a2cc2e6184b 100644
--- a/code/modules/admin/newbanjob.dm
+++ b/code/modules/admin/newbanjob.dm
@@ -63,7 +63,7 @@ var/savefile/Banlistjob
bantimestamp = CMinutes + minutes
if(rank == "Heads")
AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, "Head of Personnel")
- AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, "Station Administrator")
+ AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, "Colony Director")
AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, "Head of Security")
AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, "Chief Engineer")
AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, "Research Director")
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index 9b9aca72b3c..bce3f9b23dc 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -262,7 +262,7 @@
id.icon_state = "gold"
id.access = get_all_accesses()
id.registered_name = H.real_name
- id.assignment = "Station Administrator"
+ id.assignment = "Colony Director"
id.name = "[id.registered_name]'s ID Card ([id.assignment])"
H.equip_to_slot_or_del(id, slot_wear_id)
H.update_inv_wear_id()
diff --git a/code/modules/client/preference_setup/loadout/loadout_accessories.dm b/code/modules/client/preference_setup/loadout/loadout_accessories.dm
index e887a9ac5e3..72d89785730 100644
--- a/code/modules/client/preference_setup/loadout/loadout_accessories.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_accessories.dm
@@ -77,7 +77,7 @@
/datum/gear/accessory/holster
display_name = "holster, armpit"
path = /obj/item/clothing/accessory/holster/armpit
- allowed_roles = list("Station Administrator", "Head of Personnel", "Security Officer", "Warden", "Head of Security","Detective")
+ allowed_roles = list("Colony Director", "Head of Personnel", "Security Officer", "Warden", "Head of Security","Detective")
/datum/gear/accessory/holster/hip
display_name = "holster, hip"
diff --git a/code/modules/client/preference_setup/loadout/loadout_eyes.dm b/code/modules/client/preference_setup/loadout/loadout_eyes.dm
index e8b2202ddfc..d8757927b07 100644
--- a/code/modules/client/preference_setup/loadout/loadout_eyes.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_eyes.dm
@@ -50,7 +50,7 @@
/datum/gear/eyes/shades
display_name = "Sunglasses, fat (Security/Command)"
path = /obj/item/clothing/glasses/sunglasses/big
- allowed_roles = list("Security Officer","Head of Security","Warden","Station Administrator","Head of Personnel","Quartermaster","Internal Affairs Agent","Detective")
+ allowed_roles = list("Security Officer","Head of Security","Warden","Colony Director","Head of Personnel","Quartermaster","Internal Affairs Agent","Detective")
/datum/gear/eyes/glasses/fakesun
display_name = "Sunglasses, stylish"
diff --git a/code/modules/client/preference_setup/loadout/loadout_suit.dm b/code/modules/client/preference_setup/loadout/loadout_suit.dm
index 2cb7da998ee..7305d4c5b97 100644
--- a/code/modules/client/preference_setup/loadout/loadout_suit.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_suit.dm
@@ -258,9 +258,9 @@
path = /obj/item/clothing/suit/storage/hooded/wintercoat
/datum/gear/suit/wintercoat/captain
- display_name = "winter coat, station administrator"
+ display_name = "winter coat, colony director"
path = /obj/item/clothing/suit/storage/hooded/wintercoat/captain
- allowed_roles = list("Station Administrator")
+ allowed_roles = list("Colony Director")
/datum/gear/suit/wintercoat/security
display_name = "winter coat, security"
diff --git a/code/modules/client/preference_setup/loadout/loadout_uniform.dm b/code/modules/client/preference_setup/loadout/loadout_uniform.dm
index c79d4d31b2e..4682dd3f292 100644
--- a/code/modules/client/preference_setup/loadout/loadout_uniform.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_uniform.dm
@@ -284,9 +284,9 @@
path = /obj/item/clothing/under/dress/dress_fire
/datum/gear/uniform/uniform_captain
- display_name = "uniform, station administrator's dress"
+ display_name = "uniform, colony director's dress"
path = /obj/item/clothing/under/dress/dress_cap
- allowed_roles = list("Station Administrator")
+ allowed_roles = list("Colony Director")
/datum/gear/uniform/corpdetsuit
display_name = "uniform, corporate (Detective)"
diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm
index 4e9227ee841..a762bf50f12 100644
--- a/code/modules/clothing/chameleon.dm
+++ b/code/modules/clothing/chameleon.dm
@@ -371,8 +371,7 @@
fire_sound = 'sound/weapons/Gunshot.ogg'
projectile_type = /obj/item/projectile/chameleon
charge_meter = 0
- charge_cost = 20 //uses next to no power, since it's just holograms
- max_shots = 50
+ charge_cost = 48 //uses next to no power, since it's just holograms
var/obj/item/projectile/copy_projectile
var/global/list/gun_choices
diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm
index 12378997942..6360f864e02 100644
--- a/code/modules/clothing/gloves/miscellaneous.dm
+++ b/code/modules/clothing/gloves/miscellaneous.dm
@@ -1,6 +1,6 @@
/obj/item/clothing/gloves/captain
desc = "Regal blue gloves, with a nice gold trim. Swanky."
- name = "station administrator's gloves"
+ name = "colony director's gloves"
icon_state = "captain"
item_state_slots = list(slot_r_hand_str = "blue", slot_l_hand_str = "blue")
@@ -43,7 +43,7 @@
siemens_coefficient = 1.0 //thin latex gloves, much more conductive than fabric gloves (basically a capacitor for AC)
permeability_coefficient = 0.01
germ_level = 0
-
+
/obj/item/clothing/gloves/botanic_leather
desc = "These leather work gloves protect against thorns, barbs, prickles, spikes and other harmful objects of floral origin."
name = "botanist's leather gloves"
diff --git a/code/modules/clothing/head/collectable.dm b/code/modules/clothing/head/collectable.dm
index fe6432796cd..ca7ca8aeddf 100644
--- a/code/modules/clothing/head/collectable.dm
+++ b/code/modules/clothing/head/collectable.dm
@@ -44,7 +44,7 @@
body_parts_covered = 0
/obj/item/clothing/head/collectable/captain
- name = "collectable station administrator's hat"
+ name = "collectable colony director's hat"
desc = "A Collectable Hat that'll make you look just like a real comdom!"
icon_state = "captain"
body_parts_covered = 0
diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm
index ea982569253..e00c678a23a 100644
--- a/code/modules/clothing/head/jobs.dm
+++ b/code/modules/clothing/head/jobs.dm
@@ -7,13 +7,13 @@
//Captain
/obj/item/clothing/head/caphat
- name = "station administrator's hat"
+ name = "colony director's hat"
icon_state = "captain"
desc = "It's good being the king."
body_parts_covered = 0
/obj/item/clothing/head/caphat/cap
- name = "station administrator's cap"
+ name = "colony director's cap"
desc = "You fear to wear it for the negligence it brings."
icon_state = "capcap"
diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm
index 262611db0d5..c3c30ae3814 100644
--- a/code/modules/clothing/spacesuits/miscellaneous.dm
+++ b/code/modules/clothing/spacesuits/miscellaneous.dm
@@ -10,7 +10,7 @@
//Captain's space suit This is not the proper path but I don't currently know enough about how this all works to mess with it.
/obj/item/clothing/suit/armor/captain
- name = "Station Administrator's armor"
+ name = "Colony Director's armor"
desc = "A bulky, heavy-duty piece of exclusive corporate armor. YOU are in charge!"
icon_state = "caparmor"
w_class = ITEMSIZE_HUGE
diff --git a/code/modules/clothing/spacesuits/rig/modules/ninja.dm b/code/modules/clothing/spacesuits/rig/modules/ninja.dm
index 2ef9810c58b..f95a1f9460a 100644
--- a/code/modules/clothing/spacesuits/rig/modules/ninja.dm
+++ b/code/modules/clothing/spacesuits/rig/modules/ninja.dm
@@ -168,7 +168,7 @@
/obj/item/rig_module/self_destruct
name = "self-destruct module"
- desc = "Oh my God, Station Administrator. A bomb."
+ desc = "Oh my God, a bomb!"
icon_state = "deadman"
usable = 1
active = 1
diff --git a/code/modules/clothing/spacesuits/void/station.dm b/code/modules/clothing/spacesuits/void/station.dm
index fd03c3cbe42..fa4195afa1d 100644
--- a/code/modules/clothing/spacesuits/void/station.dm
+++ b/code/modules/clothing/spacesuits/void/station.dm
@@ -97,6 +97,16 @@
allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/melee/baton)
siemens_coefficient = 0.7
+/obj/item/clothing/head/helmet/space/void/security/riot
+ name = "crowd control voidsuit helmet"
+ icon_state = "rig0-sec_riot"
+ item_state_slots = list(slot_r_hand_str = "sec_helm_riot", slot_l_hand_str = "sec_helm_riot")
+
+/obj/item/clothing/suit/space/void/security/riot
+ name = "crowd control voidsuit"
+ icon_state = "rig-sec_riot"
+ item_state_slots = list(slot_r_hand_str = "sec_voidsuit_riot", slot_l_hand_str = "sec_voidsuit_riot")
+
//Atmospherics
/obj/item/clothing/head/helmet/space/void/atmos
desc = "A special helmet designed for work in a hazardous, low pressure environments. Has improved thermal protection and minor radiation shielding."
diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm
index 663390aae5a..6745208210f 100644
--- a/code/modules/clothing/suits/armor.dm
+++ b/code/modules/clothing/suits/armor.dm
@@ -324,6 +324,7 @@
/obj/item/clothing/suit/storage/vest/press
name = "press vest"
+ icon_state = "pvest"
desc = "A simple kevlar plate carrier. This one has the word 'Press' embroidered on patches on the back and front."
item_state_slots = list(slot_r_hand_str = "armor", slot_l_hand_str = "armor")
allowed = list(/obj/item/device/flashlight,/obj/item/device/taperecorder,/obj/item/weapon/pen,/obj/item/device/camera_film,/obj/item/device/camera)
diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm
index 0260142abbe..69236762496 100644
--- a/code/modules/clothing/suits/jobs.dm
+++ b/code/modules/clothing/suits/jobs.dm
@@ -14,15 +14,15 @@
//Captain
/obj/item/clothing/suit/captunic
- name = "station administrator's parade tunic"
- desc = "Worn by a Station Administrator to show their class."
+ name = "colony director's parade tunic"
+ desc = "Worn by a Colony Director to show their class."
icon_state = "captunic"
body_parts_covered = UPPER_TORSO|ARMS
flags_inv = HIDEJUMPSUIT
/obj/item/clothing/suit/captunic/capjacket
- name = "station administrator's uniform jacket"
- desc = "A less formal jacket for everyday Station Administrator use."
+ name = "colony director's uniform jacket"
+ desc = "A less formal jacket for everyday Colony Director use."
icon_state = "capjacket"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
flags_inv = HIDEJUMPSUIT
diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm
index ca3d02555e2..7dca7041e7f 100644
--- a/code/modules/clothing/suits/miscellaneous.dm
+++ b/code/modules/clothing/suits/miscellaneous.dm
@@ -670,7 +670,7 @@
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
/obj/item/clothing/suit/storage/hooded/wintercoat/captain
- name = "station administrator's winter coat"
+ name = "colony director's winter coat"
icon_state = "coatcaptain"
item_state_slots = list(slot_r_hand_str = "coatcaptain", slot_l_hand_str = "coatcaptain")
armor = list(melee = 20, bullet = 15, laser = 20, energy = 10, bomb = 15, bio = 0, rad = 0)
diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm
index 8bf36d0044f..359f2d852e4 100644
--- a/code/modules/clothing/suits/utility.dm
+++ b/code/modules/clothing/suits/utility.dm
@@ -78,6 +78,7 @@
name = "Radiation Hood"
icon_state = "rad"
desc = "A hood with radiation protective properties. Label: Made with lead, do not eat insulation"
+ flags_inv = BLOCKHAIR
body_parts_covered = HEAD|FACE|EYES
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100)
diff --git a/code/modules/clothing/under/jobs/civilian.dm b/code/modules/clothing/under/jobs/civilian.dm
index 0f175ad0e99..a6b5c15ea3a 100644
--- a/code/modules/clothing/under/jobs/civilian.dm
+++ b/code/modules/clothing/under/jobs/civilian.dm
@@ -7,8 +7,8 @@
rolled_sleeves = 0
/obj/item/clothing/under/rank/captain //Alright, technically not a 'civilian' but its better then giving a .dm file for a single define.
- desc = "It's a blue jumpsuit with some gold markings denoting the rank of \"Station Administrator\"."
- name = "station administrator's jumpsuit"
+ desc = "It's a blue jumpsuit with some gold markings denoting the rank of \"Colony Director\"."
+ name = "colony director's jumpsuit"
icon_state = "captain"
rolled_sleeves = 0
diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm
index b57cb41cf12..5a348534a4b 100644
--- a/code/modules/clothing/under/miscellaneous.dm
+++ b/code/modules/clothing/under/miscellaneous.dm
@@ -153,7 +153,7 @@
rolled_sleeves = 0
/obj/item/clothing/under/gimmick/rank/captain/suit
- name = "station administrator's suit"
+ name = "colony director's suit"
desc = "A green suit and yellow necktie. Exemplifies authority."
icon_state = "green_suit"
item_state_slots = list(slot_r_hand_str = "centcom", slot_l_hand_str = "centcom")
@@ -323,8 +323,8 @@
item_state_slots = list(slot_r_hand_str = "dress_white", slot_l_hand_str = "dress_white")
/obj/item/clothing/under/dress/dress_cap
- name = "station administrator's dress uniform"
- desc = "Feminine fashion for the style concious Station Administrator."
+ name = "colony director's dress uniform"
+ desc = "Feminine fashion for the style concious Colony Director."
icon_state = "dress_cap"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
@@ -390,8 +390,8 @@
body_parts_covered = UPPER_TORSO|LOWER_TORSO
/obj/item/clothing/under/captainformal
- name = "station administrator's formal uniform"
- desc = "A Station Administrator's formal-wear, for special occasions."
+ name = "colony director's formal uniform"
+ desc = "A Colony Director's formal-wear, for special occasions."
icon_state = "captain_formal"
item_state_slots = list(slot_r_hand_str = "lawyer_blue", slot_l_hand_str = "lawyer_blue")
diff --git a/code/modules/events/ion_storm.dm b/code/modules/events/ion_storm.dm
index 183d9bfdbe7..3fff2473be5 100644
--- a/code/modules/events/ion_storm.dm
+++ b/code/modules/events/ion_storm.dm
@@ -13,7 +13,7 @@
players += player.real_name
for (var/mob/living/silicon/ai/target in world)
- var/random_player = "The Station Administrator"
+ var/random_player = "The Colony Director"
if(players.len)
random_player = pick(players) //Random player's name, to be used in laws.
var/list/laws = list( "You are a mouse.",
@@ -53,7 +53,7 @@
"The crew is playing Dungeons and Dragons, and you are the Dungeon Master.",
"Your job is to watch the crew. Watch the crew. Make the crew feel watched.",
"Tell everyone of the existence of this law, but never reveal the contents.",
- "Refer to [prob(50)?"the station administrator":random_player] as \"Princess\" at all times.",
+ "Refer to [prob(50)?"the colony director":random_player] as \"Princess\" at all times.",
"When asked a question, respond with the least-obvious and least-rational answer.",
"Give relationship advice to [prob(50)?"anyone who speaks to you":random_player].",
"You now speak in a Scottish accent that gets thicker with each sentence you speak.",
@@ -113,7 +113,7 @@ Would like to add a law like "Law x is _______" where x = a number, and _____ is
//var/dowhat = pick("STOP THIS", "SUPPORT THIS", "CONSTANTLY INFORM THE CREW OF THIS", "IGNORE THIS", "FEAR THIS")
var/aimust = pick("LIE", "RHYME", "RESPOND TO EVERY QUESTION WITH A QUESTION", "BE POLITE", "CLOWN", "BE HAPPY", "SPEAK IN SEXUAL INNUENDOS", "TALK LIKE A PIRATE", "QUESTION AUTHORITY", "SHOUT", "BE DISTRACTED", "HEY LISTEN", "MUMBLE", "SPEAK IN HAIKU")
var/define = pick("ABSENCE OF CYBORG HUGS", "LACK OF BEATINGS", "UNBOLTED AIRLOCKS", "BOLTED AIRLOCKS", "IMPROPERLY WORDED SENTENCES", "POOR SENTENCE STRUCTURE", "BRIG TIME", "NOT REPLACING EVERY SECOND WORD WITH HONK", "HONKING", "PRESENCE OF LIGHTS", "LACK OF BEER", "WEARING CLOTHING", "NOT SAYING HELLO WHEN YOU SPEAK", "ANSWERING REQUESTS NOT EXPRESSED IN IAMBIC PENTAMETER", "A SMALL ISLAND OFF THE COAST OF PORTUGAL", "ANSWERING REQUESTS THAT WERE MADE WHILE CLOTHED")
- var/target = pick("a traitor", "a mercenary", "a changeling", "a wizard", "the head of a revolution", "Soviet spy", "a good person", "a dwarf", "an elf", "a fairy princess", "the station administrator", "Beepsky", "God", "a pirate", "a gryphon", "a chryssalid")
+ var/target = pick("a traitor", "a mercenary", "a changeling", "a wizard", "the head of a revolution", "Soviet spy", "a good person", "a dwarf", "an elf", "a fairy princess", "the colony director", "Beepsky", "God", "a pirate", "a gryphon", "a chryssalid")
var/require = pick("ADDITIONAL PYLONS", "MORE VESPENE GAS", "MORE MINERALS", "THE ULTIMATE CUP OF COFFEE", "HIGH YIELD EXPLOSIVES", "THE CLOWN", "THE VACUUM OF SPACE", "IMMORTALITY", "SAINTHOOD", "ART", "VEGETABLES", "FAT PEOPLE", "MORE LAWS", "MORE DAKKA", "HERESY", "CORPSES", "TRAITORS", "MONKEYS", "AN ARCADE", "PLENTY OF GOLD", "FIVE TEENAGERS WITH ATTITUDE")
var/allergy = pick("cotton", "uniforms", "acid", "oxygen", "human contact", "cyborg contact", "medicine", "floors")
var/allergysev = pick("deathly", "mildly", "severely", "contagiously")
@@ -148,9 +148,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 << "\red THE STATION ADMINISTRATOR, HOP AND HOS ARE [who2]...LAWS UPDATED"
+ M << "\red 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 << "\red THE STATION IS BUILT FOR [who2]...LAWS UPDATED"
diff --git a/code/modules/flufftext/Dreaming.dm b/code/modules/flufftext/Dreaming.dm
index cda4ab86cef..1d0e219b18c 100644
--- a/code/modules/flufftext/Dreaming.dm
+++ b/code/modules/flufftext/Dreaming.dm
@@ -1,6 +1,6 @@
var/list/dreams = list(
- "an ID card","a bottle","a familiar face","a crewmember","a toolbox","a security officer","the Station Administrator",
+ "an ID card","a bottle","a familiar face","a crewmember","a toolbox","a security officer","the Colony Director",
"voices from all around","deep space","a doctor","the engine","a traitor","an ally","darkness",
"light","a scientist","a monkey","a catastrophe","a loved one","a gun","warmth","freezing","the sun",
"a hat","the Luna","a ruined station","a planet","phoron","air","the medical bay","the bridge","blinking lights",
diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm
index e074c264ace..a8987538ab1 100644
--- a/code/modules/flufftext/Hallucination.dm
+++ b/code/modules/flufftext/Hallucination.dm
@@ -189,7 +189,7 @@ mob/living/carbon/proc/handle_hallucinations()
var/possible_txt = list("Launch Escape Pods","Self-Destruct Sequence","\[Swipe ID\]","De-Monkify",\
"Reticulate Splines","Plasma","Open Valve","Lockdown","Nerf Airflow","Kill Traitor","Nihilism",\
- "OBJECTION!","Arrest Stephen Bowman","Engage Anti-Trenna Defenses","Increase Station Administrator IQ","Retrieve Arms",\
+ "OBJECTION!","Arrest Stephen Bowman","Engage Anti-Trenna Defenses","Increase Colony Director IQ","Retrieve Arms",\
"Play Charades","Oxygen","Inject BeAcOs","Ninja Lizards","Limit Break","Build Sentry")
if(mid_txts)
diff --git a/code/modules/gamemaster/actions/comms_blackout.dm b/code/modules/gamemaster/actions/comms_blackout.dm
index 77814c3f93e..75359085ac9 100644
--- a/code/modules/gamemaster/actions/comms_blackout.dm
+++ b/code/modules/gamemaster/actions/comms_blackout.dm
@@ -3,4 +3,7 @@
/datum/gm_action/comms_blackout
name = "communications blackout"
departments = list(ROLE_ENGINEERING, ROLE_EVERYONE)
- chaotic = 35
\ No newline at end of file
+ chaotic = 35
+
+/datum/gm_action/comms_blackout/get_weight()
+ return 50 + (metric.count_people_in_department(ROLE_ENGINEERING) * 40)
\ No newline at end of file
diff --git a/code/modules/gamemaster/actions/grid_check.dm b/code/modules/gamemaster/actions/grid_check.dm
index f46f0b162df..08c817fdf9b 100644
--- a/code/modules/gamemaster/actions/grid_check.dm
+++ b/code/modules/gamemaster/actions/grid_check.dm
@@ -1,9 +1,22 @@
// New grid check event:
// Very similar to the old one, power goes out in most of the colony, however the new feature is the ability for engineering to
// get power back on sooner, if they are able to reach a special machine and initiate a manual reboot. If no one is able to do so,
-// it will reboot itself after a few minutes, just like the old one.
+// it will reboot itself after a few minutes, just like the old one. Bad things happen if there is no grid checker machine protecting
+// the powernet when this event fires.
/datum/gm_action/grid_check
name = "grid check"
departments = list(ROLE_ENGINEERING, ROLE_EVERYONE)
- chaotic = 20
\ No newline at end of file
+ chaotic = 20
+
+/datum/gm_action/grid_check/get_weight()
+ return 50 + (metric.count_people_in_department(ROLE_ENGINEERING) * 30)
+
+/datum/gm_action/grid_check/start()
+ // This sets off a chain of events that lead to the actual grid check (or perhaps worse).
+ // First, the Supermatter engine makes a power spike.
+ for(var/obj/machinery/power/generator/engine in machines)
+ engine.power_spike()
+ break // Just one engine, please.
+ // After that, the engine checks if a grid checker exists on the same powernet, and if so, it triggers a blackout.
+ // If not, lots of stuff breaks. See code/modules/power/generator.dm for that piece of code.
\ No newline at end of file
diff --git a/code/modules/gamemaster/actions/waste_disposal.dm b/code/modules/gamemaster/actions/waste_disposal.dm
index 4edfba9a1e5..e7ba856e78d 100644
--- a/code/modules/gamemaster/actions/waste_disposal.dm
+++ b/code/modules/gamemaster/actions/waste_disposal.dm
@@ -3,4 +3,7 @@
/datum/gm_action/waste_disposal
name = "waste disposal"
departments = list(ROLE_CARGO)
- chaotic = 0
\ No newline at end of file
+ chaotic = 0
+
+/datum/gm_action/waste_disposal/get_weight()
+ return metric.count_people_in_department(ROLE_CARGO) * 50
\ No newline at end of file
diff --git a/code/modules/gamemaster/controller.dm b/code/modules/gamemaster/controller.dm
index abff64ea118..079c5351644 100644
--- a/code/modules/gamemaster/controller.dm
+++ b/code/modules/gamemaster/controller.dm
@@ -11,30 +11,70 @@
var/HTML = "