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/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/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/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/defines/obj.dm b/code/defines/obj.dm
index c1aeca1c30..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)
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/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 19f0d70fc4..375ce28af5 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 797dddc874..225335ea12 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..3175edcf07 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 2c69bb3543..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 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 a6a2df47f3..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 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 48c45f3f06..fc89f5ce69 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 54cae5670e..97978086b3 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 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] 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/computers/card.dm b/code/game/machinery/computer3/computers/card.dm
index 3a510ac836..eb7180d9a2 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 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 += "Rank:
"
diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm
index 5d3270231f..b10c9af318 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 02512c452e..0067a7341d 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 ef7d16f9b8..f08585da31 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 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/toys.dm b/code/game/objects/items/toys.dm
index ef9edae115..51d79ed05b 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 b2200981b9..a5fe817011 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 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/dna_injector.dm b/code/game/objects/items/weapons/dna_injector.dm
index 80ce010ddb..33b93f6210 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 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/manuals.dm b/code/game/objects/items/weapons/manuals.dm
index a5d5fbf11c..c69b3d61d1 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 4bb8e25e8b..2b2a2ee8b4 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 a2f5c78bd0..46887ce8f0 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 716bbc2c9a..4ff88fd4a1 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 92abc53e0e..0430684f36 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 27145d6338..c68b0faf7d 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 64ac55c295..f8d5376a64 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 5a92c72d01..84e0bdf92b 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 be67e9b3ca..a7f526a2e3 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 0f5d5119bb..fd4e600515 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 7a21c5966e..5d01438614 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 cd27fbc8ec..70171ac081 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 3ccfffdf36..6cb95b8615 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 b9f5c44298..a2cc2e6184 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 9b9aca72b3..bce3f9b23d 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 e887a9ac5e..72d8978573 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 e8b2202ddf..d8757927b0 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 2cb7da998e..7305d4c5b9 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 c79d4d31b2..4682dd3f29 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 4e9227ee84..a762bf50f1 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 1237899794..6360f864e0 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 fe6432796c..ca7ca8aedd 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 ea98256925..e00c678a23 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 262611db0d..c3c30ae381 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 2ef9810c58..f95a1f9460 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 fd03c3cbe4..fa4195afa1 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 663390aae5..6745208210 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 0260142abb..6923676249 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 ca3d02555e..7dca7041e7 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 8bf36d0044..359f2d852e 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 0f175ad0e9..a6b5c15ea3 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 b57cb41cf1..5a348534a4 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 183d9bfdbe..3fff2473be 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 cda4ab86ce..1d0e219b18 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 e074c264ac..a8987538ab 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 77814c3f93..75359085ac 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 f46f0b162d..08c817fdf9 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 4edfba9a1e..e7ba856e78 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 abff64ea11..079c535164 100644
--- a/code/modules/gamemaster/controller.dm
+++ b/code/modules/gamemaster/controller.dm
@@ -11,30 +11,70 @@
var/HTML = "