Stored Material:
")
var/any = FALSE
for(var/M in materials.materials)
@@ -149,7 +149,7 @@ GLOBAL_LIST_EMPTY(silo_access_logs)
return TRUE
else if(href_list["ejectsheet"])
var/eject_sheet = href_list["ejectsheet"]
- GET_COMPONENT(materials, /datum/component/material_container)
+ var/datum/component/material_container/materials = GetComponent(/datum/component/material_container)
var/count = materials.retrieve_sheets(text2num(href_list["eject_amt"]), eject_sheet, drop_location())
var/list/matlist = list()
matlist[eject_sheet] = MINERAL_MATERIAL_AMOUNT
diff --git a/code/modules/mining/mint.dm b/code/modules/mining/mint.dm
index 6b03be610d..8204977058 100644
--- a/code/modules/mining/mint.dm
+++ b/code/modules/mining/mint.dm
@@ -22,7 +22,7 @@
if(!T)
return
- GET_COMPONENT(materials, /datum/component/material_container)
+ var/datum/component/material_container/materials = GetComponent(/datum/component/material_container)
for(var/obj/item/stack/sheet/O in T)
materials.insert_stack(O, O.amount)
@@ -32,7 +32,7 @@
return
var/dat = "
Coin Press"
- GET_COMPONENT(materials, /datum/component/material_container)
+ var/datum/component/material_container/materials = GetComponent(/datum/component/material_container)
for(var/mat_id in materials.materials)
var/datum/material/M = materials.materials[mat_id]
if(!M.amount && chosen != mat_id)
@@ -65,7 +65,7 @@
if(processing==1)
to_chat(usr, "
The machine is processing.")
return
- GET_COMPONENT(materials, /datum/component/material_container)
+ var/datum/component/material_container/materials = GetComponent(/datum/component/material_container)
if(href_list["choose"])
if(materials.materials[href_list["choose"]])
chosen = href_list["choose"]
diff --git a/code/modules/mining/money_bag.dm b/code/modules/mining/money_bag.dm
index f567bd1daf..fd5997d3c4 100644
--- a/code/modules/mining/money_bag.dm
+++ b/code/modules/mining/money_bag.dm
@@ -11,7 +11,7 @@
/obj/item/storage/bag/money/Initialize()
. = ..()
- GET_COMPONENT(STR, /datum/component/storage)
+ var/datum/component/storage/STR = GetComponent(/datum/component/storage)
STR.max_w_class = WEIGHT_CLASS_NORMAL
STR.max_items = 40
STR.max_combined_w_class = 40
diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm
index 591fc650b4..4d253a4693 100644
--- a/code/modules/mob/dead/new_player/new_player.dm
+++ b/code/modules/mob/dead/new_player/new_player.dm
@@ -151,7 +151,7 @@
message_admins(msg)
to_chat(usr, "
The round is either not ready, or has already finished...")
return
-
+
if(!GLOB.enter_allowed)
to_chat(usr, "
There is an administrative lock on entering the game!")
return
diff --git a/code/modules/mob/emote.dm b/code/modules/mob/emote.dm
index 625a923fe1..41d3d4e158 100644
--- a/code/modules/mob/emote.dm
+++ b/code/modules/mob/emote.dm
@@ -40,7 +40,7 @@
if(iscyborg(user) && user.has_buckled_mobs())
var/mob/living/silicon/robot/R = user
- GET_COMPONENT_FROM(riding_datum, /datum/component/riding, R)
+ var/datum/component/riding/riding_datum = R.GetComponent(/datum/component/riding)
if(riding_datum)
for(var/mob/M in R.buckled_mobs)
riding_datum.force_dismount(M)
diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm
index 760fb7a29f..e77a91332e 100644
--- a/code/modules/mob/inventory.dm
+++ b/code/modules/mob/inventory.dm
@@ -468,3 +468,6 @@
bodyparts += BP
hand_bodyparts[i] = BP
..() //Don't redraw hands until we have organs for them
+
+/mob/canReachInto(atom/user, atom/target, list/next, view_only, obj/item/tool)
+ return ..() && (user == src)
diff --git a/code/modules/mob/living/brain/posibrain.dm b/code/modules/mob/living/brain/posibrain.dm
index 9e0bb0428b..8a70ccc4cb 100644
--- a/code/modules/mob/living/brain/posibrain.dm
+++ b/code/modules/mob/living/brain/posibrain.dm
@@ -92,6 +92,17 @@ GLOBAL_VAR(posibrain_notify_cooldown)
if(posi_ask == "No" || QDELETED(src))
return
transfer_personality(user)
+ latejoin_remove()
+
+/obj/item/mmi/posibrain/Destroy()
+ latejoin_remove()
+ return ..()
+
+/obj/item/mmi/posibrain/proc/latejoin_remove()
+ GLOB.poi_list -= src
+ LAZYREMOVE(GLOB.mob_spawners[name], src)
+ if(!LAZYLEN(GLOB.mob_spawners[name]))
+ GLOB.mob_spawners -= name
/obj/item/mmi/posibrain/transfer_identity(mob/living/carbon/C)
name = "[initial(name)] ([C])"
@@ -163,6 +174,8 @@ GLOBAL_VAR(posibrain_notify_cooldown)
brainmob.container = src
if(autoping)
ping_ghosts("created", TRUE)
+ GLOB.poi_list |= src
+ LAZYADD(GLOB.mob_spawners[name], src)
/obj/item/mmi/posibrain/attackby(obj/item/O, mob/user)
return
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 263edf42c2..88aa5f86d0 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -905,7 +905,7 @@
/mob/living/carbon/do_after_coefficent()
. = ..()
- GET_COMPONENT_FROM(mood, /datum/component/mood, src) //Currently, only carbons or higher use mood, move this once that changes.
+ var/datum/component/mood/mood = src.GetComponent(/datum/component/mood) //Currently, only carbons or higher use mood, move this once that changes.
if(mood)
switch(mood.sanity) //Alters do_after delay based on how sane you are
if(SANITY_INSANE to SANITY_DISTURBED)
@@ -947,7 +947,7 @@
return TRUE
if(HAS_TRAIT(src, TRAIT_DUMB))
return TRUE
- GET_COMPONENT_FROM(mood, /datum/component/mood, src)
+ var/datum/component/mood/mood = src.GetComponent(/datum/component/mood)
if(mood)
if(mood.sanity < SANITY_UNSTABLE)
return TRUE
diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm
index bc64c8303b..b0e9b808df 100644
--- a/code/modules/mob/living/carbon/carbon_defense.dm
+++ b/code/modules/mob/living/carbon/carbon_defense.dm
@@ -287,7 +287,7 @@
"
You give [H] a pat on the head to make [p_them()] feel better!")
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "headpat", /datum/mood_event/headpat)
if(HAS_TRAIT(M, TRAIT_FRIENDLY))
- GET_COMPONENT_FROM(mood, /datum/component/mood, M)
+ var/datum/component/mood/mood = M.GetComponent(/datum/component/mood)
if (mood.sanity >= SANITY_GREAT)
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "friendly_hug", /datum/mood_event/besthug, M)
else if (mood.sanity >= SANITY_DISTURBED)
@@ -322,7 +322,7 @@
"
You hug [src] to make [p_them()] feel better!")
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "hug", /datum/mood_event/hug)
if(HAS_TRAIT(M, TRAIT_FRIENDLY))
- GET_COMPONENT_FROM(mood, /datum/component/mood, M)
+ var/datum/component/mood/mood = M.GetComponent(/datum/component/mood)
if (mood.sanity >= SANITY_GREAT)
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "friendly_hug", /datum/mood_event/besthug, M)
else if (mood.sanity >= SANITY_DISTURBED)
diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm
index b509b31e5f..7d1e5320fc 100644
--- a/code/modules/mob/living/carbon/damage_procs.dm
+++ b/code/modules/mob/living/carbon/damage_procs.dm
@@ -1,8 +1,8 @@
-/mob/living/carbon/apply_damage(damage, damagetype = BRUTE, def_zone = null, blocked = FALSE)
+/mob/living/carbon/apply_damage(damage, damagetype = BRUTE, def_zone = null, blocked = FALSE, forced = FALSE)
var/hit_percent = (100-blocked)/100
- if(hit_percent <= 0)
+ if(!forced && hit_percent <= 0)
return 0
var/obj/item/bodypart/BP = null
@@ -15,34 +15,35 @@
if(!BP)
BP = bodyparts[1]
+ var/damage_amount = forced ? damage : damage * hit_percent
switch(damagetype)
if(BRUTE)
if(BP)
- if(damage > 0 ? BP.receive_damage(damage * hit_percent, 0) : BP.heal_damage(abs(damage * hit_percent), 0))
+ if(damage > 0 ? BP.receive_damage(damage_amount) : BP.heal_damage(abs(damage_amount), 0))
update_damage_overlays()
else //no bodypart, we deal damage with a more general method.
- adjustBruteLoss(damage * hit_percent)
+ adjustBruteLoss(damage_amount, forced = forced)
if(BURN)
if(BP)
- if(damage > 0 ? BP.receive_damage(0, damage * hit_percent) : BP.heal_damage(0, abs(damage * hit_percent)))
+ if(damage > 0 ? BP.receive_damage(0, damage_amount) : BP.heal_damage(0, abs(damage_amount)))
update_damage_overlays()
else
- adjustFireLoss(damage * hit_percent)
+ adjustFireLoss(damage_amount, forced = forced)
if(TOX)
- adjustToxLoss(damage * hit_percent)
+ adjustToxLoss(damage_amount, forced = forced)
if(OXY)
- adjustOxyLoss(damage * hit_percent)
+ adjustOxyLoss(damage_amount, forced = forced)
if(CLONE)
- adjustCloneLoss(damage * hit_percent)
+ adjustCloneLoss(damage_amount, forced = forced)
if(STAMINA)
if(BP)
- if(damage > 0 ? BP.receive_damage(0, 0, damage * hit_percent) : BP.heal_damage(0, 0, abs(damage * hit_percent)))
+ if(damage > 0 ? BP.receive_damage(0, 0, damage_amount) : BP.heal_damage(0, 0, abs(damage_amount)))
update_damage_overlays()
else
- adjustStaminaLoss(damage * hit_percent)
+ adjustStaminaLoss(damage_amount, forced = forced)
//citadel code
if(AROUSAL)
- adjustArousalLoss(damage * hit_percent)
+ adjustArousalLoss(damage_amount, forced = forced)
return TRUE
diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm
index c029eac12b..5634d21775 100644
--- a/code/modules/mob/living/carbon/examine.dm
+++ b/code/modules/mob/living/carbon/examine.dm
@@ -93,7 +93,7 @@
msg += "[t_He] [t_is] visibly tense[resting ? "." : ", and [t_is] standing in combative stance."]\n"
msg += common_trait_examine()
- GET_COMPONENT_FROM(mood, /datum/component/mood, src)
+ var/datum/component/mood/mood = src.GetComponent(/datum/component/mood)
if(mood)
switch(mood.shown_mood)
if(-INFINITY to MOOD_LEVEL_SAD4)
diff --git a/code/modules/mob/living/carbon/human/damage_procs.dm b/code/modules/mob/living/carbon/human/damage_procs.dm
index 7641408529..9f6a572fc8 100644
--- a/code/modules/mob/living/carbon/human/damage_procs.dm
+++ b/code/modules/mob/living/carbon/human/damage_procs.dm
@@ -1,5 +1,5 @@
-/mob/living/carbon/human/apply_damage(damage = 0,damagetype = BRUTE, def_zone = null, blocked = FALSE)
+/mob/living/carbon/human/apply_damage(damage = 0,damagetype = BRUTE, def_zone = null, blocked = FALSE, forced = FALSE)
// depending on the species, it will run the corresponding apply_damage code there
- return dna.species.apply_damage(damage, damagetype, def_zone, blocked, src)
+ return dna.species.apply_damage(damage, damagetype, def_zone, blocked, src, forced)
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index a4eee82e0c..7b0fb74f44 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -296,7 +296,7 @@
msg += "[t_He] seem[p_s()] winded.\n"
if (getToxLoss() >= 10)
msg += "[t_He] seem[p_s()] sickly.\n"
- GET_COMPONENT_FROM(mood, /datum/component/mood, src)
+ var/datum/component/mood/mood = src.GetComponent(/datum/component/mood)
if(mood.sanity <= SANITY_DISTURBED)
msg += "[t_He] seem[p_s()] distressed.\n"
SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "empath", /datum/mood_event/sad_empath, src)
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index f2ca5bc939..0e6ac72abf 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -32,7 +32,7 @@
if(CONFIG_GET(flag/disable_stambuffer))
togglesprint()
- AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT = CALLBACK(src, /mob/living/carbon/human/clean_blood)))
+ RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, /mob/living/carbon/human/clean_blood)
/mob/living/carbon/human/ComponentInitialize()
diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm
index eee425063d..c54f41017a 100644
--- a/code/modules/mob/living/carbon/human/say.dm
+++ b/code/modules/mob/living/carbon/human/say.dm
@@ -1,14 +1,14 @@
/mob/living/carbon/human/say_mod(input, message_mode)
verb_say = dna.species.say_mod
- switch(slurring)
- if(10 to 25)
- return "jumbles"
- if(25 to 50)
- return "slurs"
- if(50 to INFINITY)
- return "garbles"
- else
- . = ..()
+ . = ..()
+ if(message_mode != MODE_CUSTOM_SAY && message_mode != MODE_WHISPER_CRIT)
+ switch(slurring)
+ if(10 to 25)
+ return "jumbles"
+ if(25 to 50)
+ return "slurs"
+ if(50 to INFINITY)
+ return "garbles"
/mob/living/carbon/human/GetVoice()
if(istype(wear_mask, /obj/item/clothing/mask/chameleon))
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 34b8abc311..f9b4654793 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -1290,7 +1290,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if (H.nutrition > 0 && H.stat != DEAD && !HAS_TRAIT(H, TRAIT_NOHUNGER))
// THEY HUNGER
var/hunger_rate = HUNGER_FACTOR
- GET_COMPONENT_FROM(mood, /datum/component/mood, H)
+ var/datum/component/mood/mood = H.GetComponent(/datum/component/mood)
if(mood && mood.sanity > SANITY_DISTURBED)
hunger_rate *= max(0.5, 1 - 0.002 * mood.sanity) //0.85 to 0.75
@@ -1448,7 +1448,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
var/grav_force = min(gravity - STANDARD_GRAVITY,3)
. += 1 + grav_force
- GET_COMPONENT_FROM(mood, /datum/component/mood, H)
+ var/datum/component/mood/mood = H.GetComponent(/datum/component/mood)
if(mood && !flight) //How can depression slow you down if you can just fly away from your problems?
switch(mood.sanity)
if(SANITY_INSANE to SANITY_CRAZY)
@@ -1959,10 +1959,10 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
append_message = "loosening their grip on [target_held_item]"
log_combat(user, target, "shoved", append_message)
-/datum/species/proc/apply_damage(damage, damagetype = BRUTE, def_zone = null, blocked, mob/living/carbon/human/H)
+/datum/species/proc/apply_damage(damage, damagetype = BRUTE, def_zone = null, blocked, mob/living/carbon/human/H, forced = FALSE)
var/hit_percent = (100-(blocked+armor))/100
hit_percent = (hit_percent * (100-H.physiology.damage_resistance))/100
- if(hit_percent <= 0)
+ if(!forced && hit_percent <= 0)
return 0
var/obj/item/bodypart/BP = null
@@ -1984,37 +1984,44 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
switch(damagetype)
if(BRUTE)
H.damageoverlaytemp = 20
+ var/damage_amount = forced ? damage : damage * hit_percent * brutemod * H.physiology.brute_mod
if(BP)
- if(damage > 0 ? BP.receive_damage(damage * hit_percent * brutemod * H.physiology.brute_mod, 0) : BP.heal_damage(abs(damage * hit_percent * brutemod * H.physiology.brute_mod), 0))
+ if(damage > 0 ? BP.receive_damage(damage_amount, 0) : BP.heal_damage(abs(damage_amount), 0))
H.update_damage_overlays()
if(HAS_TRAIT(H, TRAIT_MASO))
- H.adjustArousalLoss(damage * brutemod * H.physiology.brute_mod)
+ H.adjustArousalLoss(damage_amount, 0)
if (H.getArousalLoss() >= 100 && ishuman(H) && H.has_dna())
H.mob_climax(forced_climax=TRUE)
else//no bodypart, we deal damage with a more general method.
- H.adjustBruteLoss(damage * hit_percent * brutemod * H.physiology.brute_mod)
+ H.adjustBruteLoss(damage_amount)
if(BURN)
H.damageoverlaytemp = 20
+ var/damage_amount = forced ? damage : damage * hit_percent * burnmod * H.physiology.burn_mod
if(BP)
- if(damage > 0 ? BP.receive_damage(0, damage * hit_percent * burnmod * H.physiology.burn_mod) : BP.heal_damage(0, abs(damage * hit_percent * burnmod * H.physiology.burn_mod)))
+ if(damage > 0 ? BP.receive_damage(0, damage_amount) : BP.heal_damage(0, abs(damage_amount)))
H.update_damage_overlays()
else
- H.adjustFireLoss(damage * hit_percent * burnmod * H.physiology.burn_mod)
+ H.adjustFireLoss(damage_amount)
if(TOX)
- H.adjustToxLoss(damage * hit_percent * H.physiology.tox_mod)
+ var/damage_amount = forced ? damage : damage * hit_percent * H.physiology.tox_mod
+ H.adjustToxLoss(damage_amount)
if(OXY)
- H.adjustOxyLoss(damage * hit_percent * H.physiology.oxy_mod)
+ var/damage_amount = forced ? damage : damage * hit_percent * H.physiology.oxy_mod
+ H.adjustOxyLoss(damage_amount)
if(CLONE)
- H.adjustCloneLoss(damage * hit_percent * H.physiology.clone_mod)
+ var/damage_amount = forced ? damage : damage * hit_percent * H.physiology.clone_mod
+ H.adjustCloneLoss(damage_amount)
if(STAMINA)
+ var/damage_amount = forced ? damage : damage * hit_percent * H.physiology.stamina_mod
if(BP)
- if(damage > 0 ? BP.receive_damage(0, 0, damage * hit_percent * H.physiology.stamina_mod) : BP.heal_damage(0, 0, abs(damage * hit_percent * H.physiology.stamina_mod), only_robotic = FALSE, only_organic = FALSE))
+ if(damage > 0 ? BP.receive_damage(0, 0, damage_amount) : BP.heal_damage(0, 0, abs(damage * hit_percent * H.physiology.stamina_mod), only_robotic = FALSE, only_organic = FALSE))
H.update_stamina()
else
- H.adjustStaminaLoss(damage * hit_percent * H.physiology.stamina_mod)
+ H.adjustStaminaLoss(damage_amount)
if(BRAIN)
- H.adjustOrganLoss(ORGAN_SLOT_BRAIN, damage * hit_percent * H.physiology.brain_mod)
+ var/damage_amount = forced ? damage : damage * hit_percent * H.physiology.brain_mod
+ H.adjustOrganLoss(ORGAN_SLOT_BRAIN, damage_amount)
if(AROUSAL) //Citadel edit - arousal
H.adjustArousalLoss(damage * hit_percent)
return 1
diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm
index 8f84590ff4..a7e952f430 100644
--- a/code/modules/mob/living/carbon/human/species_types/golems.dm
+++ b/code/modules/mob/living/carbon/human/species_types/golems.dm
@@ -634,9 +634,10 @@
id = "clockwork golem"
say_mod = "clicks"
limbs_id = "clockgolem"
- info_text = "
As a Clockwork Golem, you are faster than other types of golems. On death, you will break down into scrap."
+ info_text = "
As a Clockwork Golem, you are faster than other types of golems, and are capable of using guns. On death, you will break down into scrap."
species_traits = list(NOBLOOD,NO_UNDERWEAR,NOEYES,NOGENITALS,NOAROUSAL)
inherent_biotypes = list(MOB_ROBOTIC, MOB_HUMANOID)
+ inherent_traits = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_NOFIRE,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER)
armor = 20 //Reinforced, but much less so to allow for fast movement
attack_verb = "smash"
attack_sound = 'sound/magic/clockwork/anima_fragment_attack.ogg'
@@ -682,7 +683,7 @@
blacklisted = TRUE
dangerous_existence = TRUE
random_eligible = FALSE
- info_text = "
As a Clockwork Golem Servant, you are faster than other types of golems." //warcult golems leave a corpse
+ info_text = "
As a Clockwork Golem Servant, you are faster than other types of golems, and are capable of using guns." //warcult golems leave a corpse
/datum/species/golem/cloth
name = "Cloth Golem"
diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm
index fefaa025d3..a1dce4fb0f 100644
--- a/code/modules/mob/living/carbon/human/species_types/zombies.dm
+++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm
@@ -45,7 +45,7 @@
/datum/species/zombie/infectious/spec_stun(mob/living/carbon/human/H,amount)
. = min(20, amount)
-/datum/species/zombie/infectious/apply_damage(damage, damagetype = BRUTE, def_zone = null, blocked, mob/living/carbon/human/H)
+/datum/species/zombie/infectious/apply_damage(damage, damagetype = BRUTE, def_zone = null, blocked, mob/living/carbon/human/H, forced = FALSE)
. = ..()
if(.)
regen_cooldown = world.time + REGENERATION_DELAY
diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm
index fbb6074ba2..dc43ab8b07 100644
--- a/code/modules/mob/living/damage_procs.dm
+++ b/code/modules/mob/living/damage_procs.dm
@@ -8,23 +8,24 @@
Returns
standard 0 if fail
*/
-/mob/living/proc/apply_damage(damage = 0,damagetype = BRUTE, def_zone = null, blocked = FALSE)
+/mob/living/proc/apply_damage(damage = 0,damagetype = BRUTE, def_zone = null, blocked = FALSE, forced = FALSE)
var/hit_percent = (100-blocked)/100
if(!damage || (hit_percent <= 0))
return 0
+ var/damage_amount = forced ? damage : damage * hit_percent
switch(damagetype)
if(BRUTE)
- adjustBruteLoss(damage * hit_percent)
+ adjustBruteLoss(damage_amount, forced = forced)
if(BURN)
- adjustFireLoss(damage * hit_percent)
+ adjustFireLoss(damage_amount, forced = forced)
if(TOX)
- adjustToxLoss(damage * hit_percent)
+ adjustToxLoss(damage_amount, forced = forced)
if(OXY)
- adjustOxyLoss(damage * hit_percent)
+ adjustOxyLoss(damage_amount, forced = forced)
if(CLONE)
- adjustCloneLoss(damage * hit_percent)
+ adjustCloneLoss(damage_amount, forced = forced)
if(STAMINA)
- adjustStaminaLoss(damage * hit_percent)
+ adjustStaminaLoss(damage_amount, forced = forced)
return 1
/mob/living/proc/apply_damage_type(damage = 0, damagetype = BRUTE) //like apply damage except it always uses the damage procs
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index f640d50022..5aa8ce8cfa 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -502,7 +502,7 @@
fire_stacks = 0
confused = 0
update_canmove()
- GET_COMPONENT(mood, /datum/component/mood)
+ var/datum/component/mood/mood = GetComponent(/datum/component/mood)
if (mood)
QDEL_LIST_ASSOC_VAL(mood.mood_events)
mood.sanity = SANITY_GREAT
diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm
index 5664c2ebca..174fd5c394 100644
--- a/code/modules/mob/living/say.dm
+++ b/code/modules/mob/living/say.dm
@@ -391,16 +391,16 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
return 0
/mob/living/say_mod(input, message_mode)
- if(message_mode == MODE_WHISPER)
- . = verb_whisper
- else if(message_mode == MODE_WHISPER_CRIT)
+ . = ..()
+ if(message_mode == MODE_WHISPER_CRIT)
. = "[verb_whisper] in [p_their()] last breath"
- else if(stuttering)
- . = "stammers"
- else if(derpspeech)
- . = "gibbers"
- else
- . = ..()
+ else if(message_mode != MODE_CUSTOM_SAY)
+ if(message_mode == MODE_WHISPER)
+ . = verb_whisper
+ else if(stuttering)
+ . = "stammers"
+ else if(derpspeech)
+ . = "gibbers"
/mob/living/whisper(message, bubble_type, list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null)
say("#[message]", bubble_type, spans, sanitize, language, ignore_spam, forced)
diff --git a/code/modules/mob/living/silicon/ai/vox_sounds.dm b/code/modules/mob/living/silicon/ai/vox_sounds.dm
index eb6d0ce991..50a808032d 100644
--- a/code/modules/mob/living/silicon/ai/vox_sounds.dm
+++ b/code/modules/mob/living/silicon/ai/vox_sounds.dm
@@ -975,4 +975,635 @@ GLOBAL_LIST_INIT(vox_sounds, list("abduction" = 'sound/vox_fem/abduction.ogg',
"zombie" = 'sound/vox_fem/zombie.ogg',
"zone" = 'sound/vox_fem/zone.ogg',
"zulu" = 'sound/vox_fem/zulu.ogg'))
+
+//for vim
+// :%s/\(\(.*\)\.ogg\)/"\2" = 'sound\/vox\/\1',/g
+GLOBAL_LIST_INIT(vox_sounds_male, list("," = 'sound/vox/_comma.ogg',
+"." = 'sound/vox/_period.ogg',
+"a" = 'sound/vox/a.ogg',
+"accelerating" = 'sound/vox/accelerating.ogg',
+"accelerator" = 'sound/vox/accelerator.ogg',
+"accepted" = 'sound/vox/accepted.ogg',
+"access" = 'sound/vox/access.ogg',
+"acknowledge" = 'sound/vox/acknowledge.ogg',
+"acknowledged" = 'sound/vox/acknowledged.ogg',
+"acquired" = 'sound/vox/acquired.ogg',
+"acquisition" = 'sound/vox/acquisition.ogg',
+"across" = 'sound/vox/across.ogg',
+"activate" = 'sound/vox/activate.ogg',
+"activated" = 'sound/vox/activated.ogg',
+"activity" = 'sound/vox/activity.ogg',
+"adios" = 'sound/vox/adios.ogg',
+"administration" = 'sound/vox/administration.ogg',
+"advanced" = 'sound/vox/advanced.ogg',
+"after" = 'sound/vox/after.ogg',
+"agent" = 'sound/vox/agent.ogg',
+"alarm" = 'sound/vox/alarm.ogg',
+"alert" = 'sound/vox/alert.ogg',
+"alien" = 'sound/vox/alien.ogg',
+"aligned" = 'sound/vox/aligned.ogg',
+"all" = 'sound/vox/all.ogg',
+"alpha" = 'sound/vox/alpha.ogg',
+"am" = 'sound/vox/am.ogg',
+"amigo" = 'sound/vox/amigo.ogg',
+"ammunition" = 'sound/vox/ammunition.ogg',
+"an" = 'sound/vox/an.ogg',
+"and" = 'sound/vox/and.ogg',
+"announcement" = 'sound/vox/announcement.ogg',
+"anomalous" = 'sound/vox/anomalous.ogg',
+"antenna" = 'sound/vox/antenna.ogg',
+"any" = 'sound/vox/any.ogg',
+"apprehend" = 'sound/vox/apprehend.ogg',
+"approach" = 'sound/vox/approach.ogg',
+"are" = 'sound/vox/are.ogg',
+"area" = 'sound/vox/area.ogg',
+"arm" = 'sound/vox/arm.ogg',
+"armed" = 'sound/vox/armed.ogg',
+"armor" = 'sound/vox/armor.ogg',
+"armory" = 'sound/vox/armory.ogg',
+"arrest" = 'sound/vox/arrest.ogg',
+"ass" = 'sound/vox/ass.ogg',
+"at" = 'sound/vox/at.ogg',
+"atomic" = 'sound/vox/atomic.ogg',
+"attention" = 'sound/vox/attention.ogg',
+"authorize" = 'sound/vox/authorize.ogg',
+"authorized" = 'sound/vox/authorized.ogg',
+"automatic" = 'sound/vox/automatic.ogg',
+"away" = 'sound/vox/away.ogg',
+"b" = 'sound/vox/b.ogg',
+"back" = 'sound/vox/back.ogg',
+"backman" = 'sound/vox/backman.ogg',
+"bad" = 'sound/vox/bad.ogg',
+"bag" = 'sound/vox/bag.ogg',
+"bailey" = 'sound/vox/bailey.ogg',
+"barracks" = 'sound/vox/barracks.ogg',
+"base" = 'sound/vox/base.ogg',
+"bay" = 'sound/vox/bay.ogg',
+"be" = 'sound/vox/be.ogg',
+"been" = 'sound/vox/been.ogg',
+"before" = 'sound/vox/before.ogg',
+"beyond" = 'sound/vox/beyond.ogg',
+"biohazard" = 'sound/vox/biohazard.ogg',
+"biological" = 'sound/vox/biological.ogg',
+"birdwell" = 'sound/vox/birdwell.ogg',
+"bizwarn" = 'sound/vox/bizwarn.ogg',
+"black" = 'sound/vox/black.ogg',
+"blast" = 'sound/vox/blast.ogg',
+"blocked" = 'sound/vox/blocked.ogg',
+"bloop" = 'sound/vox/bloop.ogg',
+"blue" = 'sound/vox/blue.ogg',
+"bottom" = 'sound/vox/bottom.ogg',
+"bravo" = 'sound/vox/bravo.ogg',
+"breach" = 'sound/vox/breach.ogg',
+"breached" = 'sound/vox/breached.ogg',
+"break" = 'sound/vox/break.ogg',
+"bridge" = 'sound/vox/bridge.ogg',
+"bust" = 'sound/vox/bust.ogg',
+"but" = 'sound/vox/but.ogg',
+"button" = 'sound/vox/button.ogg',
+"buzwarn" = 'sound/vox/buzwarn.ogg',
+"bypass" = 'sound/vox/bypass.ogg',
+"c" = 'sound/vox/c.ogg',
+"cable" = 'sound/vox/cable.ogg',
+"call" = 'sound/vox/call.ogg',
+"called" = 'sound/vox/called.ogg',
+"canal" = 'sound/vox/canal.ogg',
+"cap" = 'sound/vox/cap.ogg',
+"captain" = 'sound/vox/captain.ogg',
+"capture" = 'sound/vox/capture.ogg',
+"captured" = 'sound/vox/captured.ogg',
+"ceiling" = 'sound/vox/ceiling.ogg',
+"celsius" = 'sound/vox/celsius.ogg',
+"center" = 'sound/vox/center.ogg',
+"centi" = 'sound/vox/centi.ogg',
+"central" = 'sound/vox/central.ogg',
+"chamber" = 'sound/vox/chamber.ogg',
+"charlie" = 'sound/vox/charlie.ogg',
+"check" = 'sound/vox/check.ogg',
+"checkpoint" = 'sound/vox/checkpoint.ogg',
+"chemical" = 'sound/vox/chemical.ogg',
+"cleanup" = 'sound/vox/cleanup.ogg',
+"clear" = 'sound/vox/clear.ogg',
+"clearance" = 'sound/vox/clearance.ogg',
+"close" = 'sound/vox/close.ogg',
+"clown" = 'sound/vox/clown.ogg',
+"code" = 'sound/vox/code.ogg',
+"coded" = 'sound/vox/coded.ogg',
+"collider" = 'sound/vox/collider.ogg',
+"command" = 'sound/vox/command.ogg',
+"communication" = 'sound/vox/communication.ogg',
+"complex" = 'sound/vox/complex.ogg',
+"computer" = 'sound/vox/computer.ogg',
+"condition" = 'sound/vox/condition.ogg',
+"containment" = 'sound/vox/containment.ogg',
+"contamination" = 'sound/vox/contamination.ogg',
+"control" = 'sound/vox/control.ogg',
+"coolant" = 'sound/vox/coolant.ogg',
+"coomer" = 'sound/vox/coomer.ogg',
+"core" = 'sound/vox/core.ogg',
+"correct" = 'sound/vox/correct.ogg',
+"corridor" = 'sound/vox/corridor.ogg',
+"crew" = 'sound/vox/crew.ogg',
+"cross" = 'sound/vox/cross.ogg',
+"cryogenic" = 'sound/vox/cryogenic.ogg',
+"d" = 'sound/vox/d.ogg',
+"dadeda" = 'sound/vox/dadeda.ogg',
+"damage" = 'sound/vox/damage.ogg',
+"damaged" = 'sound/vox/damaged.ogg',
+"danger" = 'sound/vox/danger.ogg',
+"day" = 'sound/vox/day.ogg',
+"deactivated" = 'sound/vox/deactivated.ogg',
+"decompression" = 'sound/vox/decompression.ogg',
+"decontamination" = 'sound/vox/decontamination.ogg',
+"deeoo" = 'sound/vox/deeoo.ogg',
+"defense" = 'sound/vox/defense.ogg',
+"degrees" = 'sound/vox/degrees.ogg',
+"delta" = 'sound/vox/delta.ogg',
+"denied" = 'sound/vox/denied.ogg',
+"deploy" = 'sound/vox/deploy.ogg',
+"deployed" = 'sound/vox/deployed.ogg',
+"destroy" = 'sound/vox/destroy.ogg',
+"destroyed" = 'sound/vox/destroyed.ogg',
+"detain" = 'sound/vox/detain.ogg',
+"detected" = 'sound/vox/detected.ogg',
+"detonation" = 'sound/vox/detonation.ogg',
+"device" = 'sound/vox/device.ogg',
+"did" = 'sound/vox/did.ogg',
+"die" = 'sound/vox/die.ogg',
+"dimensional" = 'sound/vox/dimensional.ogg',
+"dirt" = 'sound/vox/dirt.ogg',
+"disengaged" = 'sound/vox/disengaged.ogg',
+"dish" = 'sound/vox/dish.ogg',
+"disposal" = 'sound/vox/disposal.ogg',
+"distance" = 'sound/vox/distance.ogg',
+"distortion" = 'sound/vox/distortion.ogg',
+"do" = 'sound/vox/do.ogg',
+"doctor" = 'sound/vox/doctor.ogg',
+"doop" = 'sound/vox/doop.ogg',
+"door" = 'sound/vox/door.ogg',
+"down" = 'sound/vox/down.ogg',
+"dual" = 'sound/vox/dual.ogg',
+"duct" = 'sound/vox/duct.ogg',
+"e" = 'sound/vox/e.ogg',
+"east" = 'sound/vox/east.ogg',
+"echo" = 'sound/vox/echo.ogg',
+"ed" = 'sound/vox/ed.ogg',
+"effect" = 'sound/vox/effect.ogg',
+"egress" = 'sound/vox/egress.ogg',
+"eight" = 'sound/vox/eight.ogg',
+"eighteen" = 'sound/vox/eighteen.ogg',
+"eighty" = 'sound/vox/eighty.ogg',
+"electric" = 'sound/vox/electric.ogg',
+"electromagnetic" = 'sound/vox/electromagnetic.ogg',
+"elevator" = 'sound/vox/elevator.ogg',
+"eleven" = 'sound/vox/eleven.ogg',
+"eliminate" = 'sound/vox/eliminate.ogg',
+"emergency" = 'sound/vox/emergency.ogg',
+"enemy" = 'sound/vox/enemy.ogg',
+"energy" = 'sound/vox/energy.ogg',
+"engage" = 'sound/vox/engage.ogg',
+"engaged" = 'sound/vox/engaged.ogg',
+"engine" = 'sound/vox/engine.ogg',
+"enter" = 'sound/vox/enter.ogg',
+"entry" = 'sound/vox/entry.ogg',
+"environment" = 'sound/vox/environment.ogg',
+"error" = 'sound/vox/error.ogg',
+"escape" = 'sound/vox/escape.ogg',
+"evacuate" = 'sound/vox/evacuate.ogg',
+"exchange" = 'sound/vox/exchange.ogg',
+"exit" = 'sound/vox/exit.ogg',
+"expect" = 'sound/vox/expect.ogg',
+"experiment" = 'sound/vox/experiment.ogg',
+"experimental" = 'sound/vox/experimental.ogg',
+"explode" = 'sound/vox/explode.ogg',
+"explosion" = 'sound/vox/explosion.ogg',
+"exposure" = 'sound/vox/exposure.ogg',
+"exterminate" = 'sound/vox/exterminate.ogg',
+"extinguish" = 'sound/vox/extinguish.ogg',
+"extinguisher" = 'sound/vox/extinguisher.ogg',
+"extreme" = 'sound/vox/extreme.ogg',
+"f" = 'sound/vox/f.ogg',
+"face" = 'sound/vox/face.ogg',
+"facility" = 'sound/vox/facility.ogg',
+"fahrenheit" = 'sound/vox/fahrenheit.ogg',
+"failed" = 'sound/vox/failed.ogg',
+"failure" = 'sound/vox/failure.ogg',
+"farthest" = 'sound/vox/farthest.ogg',
+"fast" = 'sound/vox/fast.ogg',
+"feet" = 'sound/vox/feet.ogg',
+"field" = 'sound/vox/field.ogg',
+"fifteen" = 'sound/vox/fifteen.ogg',
+"fifth" = 'sound/vox/fifth.ogg',
+"fifty" = 'sound/vox/fifty.ogg',
+"final" = 'sound/vox/final.ogg',
+"fine" = 'sound/vox/fine.ogg',
+"fire" = 'sound/vox/fire.ogg',
+"first" = 'sound/vox/first.ogg',
+"five" = 'sound/vox/five.ogg',
+"flag" = 'sound/vox/flag.ogg',
+"flooding" = 'sound/vox/flooding.ogg',
+"floor" = 'sound/vox/floor.ogg',
+"fool" = 'sound/vox/fool.ogg',
+"for" = 'sound/vox/for.ogg',
+"forbidden" = 'sound/vox/forbidden.ogg',
+"force" = 'sound/vox/force.ogg',
+"forms" = 'sound/vox/forms.ogg',
+"found" = 'sound/vox/found.ogg',
+"four" = 'sound/vox/four.ogg',
+"fourteen" = 'sound/vox/fourteen.ogg',
+"fourth" = 'sound/vox/fourth.ogg',
+"fourty" = 'sound/vox/fourty.ogg',
+"foxtrot" = 'sound/vox/foxtrot.ogg',
+"freeman" = 'sound/vox/freeman.ogg',
+"freezer" = 'sound/vox/freezer.ogg',
+"from" = 'sound/vox/from.ogg',
+"front" = 'sound/vox/front.ogg',
+"fuel" = 'sound/vox/fuel.ogg',
+"g" = 'sound/vox/g.ogg',
+"gay" = 'sound/vox/gay.ogg',
+"get" = 'sound/vox/get.ogg',
+"go" = 'sound/vox/go.ogg',
+"going" = 'sound/vox/going.ogg',
+"good" = 'sound/vox/good.ogg',
+"goodbye" = 'sound/vox/goodbye.ogg',
+"gordon" = 'sound/vox/gordon.ogg',
+"got" = 'sound/vox/got.ogg',
+"government" = 'sound/vox/government.ogg',
+"granted" = 'sound/vox/granted.ogg',
+"great" = 'sound/vox/great.ogg',
+"green" = 'sound/vox/green.ogg',
+"grenade" = 'sound/vox/grenade.ogg',
+"guard" = 'sound/vox/guard.ogg',
+"gulf" = 'sound/vox/gulf.ogg',
+"gun" = 'sound/vox/gun.ogg',
+"guthrie" = 'sound/vox/guthrie.ogg',
+"handling" = 'sound/vox/handling.ogg',
+"hangar" = 'sound/vox/hangar.ogg',
+"has" = 'sound/vox/has.ogg',
+"have" = 'sound/vox/have.ogg',
+"hazard" = 'sound/vox/hazard.ogg',
+"head" = 'sound/vox/head.ogg',
+"health" = 'sound/vox/health.ogg',
+"heat" = 'sound/vox/heat.ogg',
+"helicopter" = 'sound/vox/helicopter.ogg',
+"helium" = 'sound/vox/helium.ogg',
+"hello" = 'sound/vox/hello.ogg',
+"help" = 'sound/vox/help.ogg',
+"here" = 'sound/vox/here.ogg',
+"hide" = 'sound/vox/hide.ogg',
+"high" = 'sound/vox/high.ogg',
+"highest" = 'sound/vox/highest.ogg',
+"hit" = 'sound/vox/hit.ogg',
+"holds" = 'sound/vox/holds.ogg',
+"hole" = 'sound/vox/hole.ogg',
+"hostile" = 'sound/vox/hostile.ogg',
+"hot" = 'sound/vox/hot.ogg',
+"hotel" = 'sound/vox/hotel.ogg',
+"hour" = 'sound/vox/hour.ogg',
+"hours" = 'sound/vox/hours.ogg',
+"hundred" = 'sound/vox/hundred.ogg',
+"hydro" = 'sound/vox/hydro.ogg',
+"i" = 'sound/vox/i.ogg',
+"idiot" = 'sound/vox/idiot.ogg',
+"illegal" = 'sound/vox/illegal.ogg',
+"immediate" = 'sound/vox/immediate.ogg',
+"immediately" = 'sound/vox/immediately.ogg',
+"in" = 'sound/vox/in.ogg',
+"inches" = 'sound/vox/inches.ogg',
+"india" = 'sound/vox/india.ogg',
+"ing" = 'sound/vox/ing.ogg',
+"inoperative" = 'sound/vox/inoperative.ogg',
+"inside" = 'sound/vox/inside.ogg',
+"inspection" = 'sound/vox/inspection.ogg',
+"inspector" = 'sound/vox/inspector.ogg',
+"interchange" = 'sound/vox/interchange.ogg',
+"intruder" = 'sound/vox/intruder.ogg',
+"invallid" = 'sound/vox/invallid.ogg',
+"invasion" = 'sound/vox/invasion.ogg',
+"is" = 'sound/vox/is.ogg',
+"it" = 'sound/vox/it.ogg',
+"johnson" = 'sound/vox/johnson.ogg',
+"juliet" = 'sound/vox/juliet.ogg',
+"key" = 'sound/vox/key.ogg',
+"kill" = 'sound/vox/kill.ogg',
+"kilo" = 'sound/vox/kilo.ogg',
+"kit" = 'sound/vox/kit.ogg',
+"lab" = 'sound/vox/lab.ogg',
+"lambda" = 'sound/vox/lambda.ogg',
+"laser" = 'sound/vox/laser.ogg',
+"last" = 'sound/vox/last.ogg',
+"launch" = 'sound/vox/launch.ogg',
+"leak" = 'sound/vox/leak.ogg',
+"leave" = 'sound/vox/leave.ogg',
+"left" = 'sound/vox/left.ogg',
+"legal" = 'sound/vox/legal.ogg',
+"level" = 'sound/vox/level.ogg',
+"lever" = 'sound/vox/lever.ogg',
+"lie" = 'sound/vox/lie.ogg',
+"lieutenant" = 'sound/vox/lieutenant.ogg',
+"life" = 'sound/vox/life.ogg',
+"light" = 'sound/vox/light.ogg',
+"lima" = 'sound/vox/lima.ogg',
+"liquid" = 'sound/vox/liquid.ogg',
+"loading" = 'sound/vox/loading.ogg',
+"locate" = 'sound/vox/locate.ogg',
+"located" = 'sound/vox/located.ogg',
+"location" = 'sound/vox/location.ogg',
+"lock" = 'sound/vox/lock.ogg',
+"locked" = 'sound/vox/locked.ogg',
+"locker" = 'sound/vox/locker.ogg',
+"lockout" = 'sound/vox/lockout.ogg',
+"lower" = 'sound/vox/lower.ogg',
+"lowest" = 'sound/vox/lowest.ogg',
+"magnetic" = 'sound/vox/magnetic.ogg',
+"main" = 'sound/vox/main.ogg',
+"maintenance" = 'sound/vox/maintenance.ogg',
+"malfunction" = 'sound/vox/malfunction.ogg',
+"man" = 'sound/vox/man.ogg',
+"mass" = 'sound/vox/mass.ogg',
+"materials" = 'sound/vox/materials.ogg',
+"maximum" = 'sound/vox/maximum.ogg',
+"may" = 'sound/vox/may.ogg',
+"med" = 'sound/vox/med.ogg',
+"medical" = 'sound/vox/medical.ogg',
+"men" = 'sound/vox/men.ogg',
+"mercy" = 'sound/vox/mercy.ogg',
+"mesa" = 'sound/vox/mesa.ogg',
+"message" = 'sound/vox/message.ogg',
+"meter" = 'sound/vox/meter.ogg',
+"micro" = 'sound/vox/micro.ogg',
+"middle" = 'sound/vox/middle.ogg',
+"mike" = 'sound/vox/mike.ogg',
+"miles" = 'sound/vox/miles.ogg',
+"military" = 'sound/vox/military.ogg',
+"milli" = 'sound/vox/milli.ogg',
+"million" = 'sound/vox/million.ogg',
+"minefield" = 'sound/vox/minefield.ogg',
+"minimum" = 'sound/vox/minimum.ogg',
+"minutes" = 'sound/vox/minutes.ogg',
+"mister" = 'sound/vox/mister.ogg',
+"mode" = 'sound/vox/mode.ogg',
+"motor" = 'sound/vox/motor.ogg',
+"motorpool" = 'sound/vox/motorpool.ogg',
+"move" = 'sound/vox/move.ogg',
+"must" = 'sound/vox/must.ogg',
+"nearest" = 'sound/vox/nearest.ogg',
+"nice" = 'sound/vox/nice.ogg',
+"nine" = 'sound/vox/nine.ogg',
+"nineteen" = 'sound/vox/nineteen.ogg',
+"ninety" = 'sound/vox/ninety.ogg',
+"no" = 'sound/vox/no.ogg',
+"nominal" = 'sound/vox/nominal.ogg',
+"north" = 'sound/vox/north.ogg',
+"not" = 'sound/vox/not.ogg',
+"november" = 'sound/vox/november.ogg',
+"now" = 'sound/vox/now.ogg',
+"number" = 'sound/vox/number.ogg',
+"objective" = 'sound/vox/objective.ogg',
+"observation" = 'sound/vox/observation.ogg',
+"of" = 'sound/vox/of.ogg',
+"officer" = 'sound/vox/officer.ogg',
+"ok" = 'sound/vox/ok.ogg',
+"on" = 'sound/vox/on.ogg',
+"one" = 'sound/vox/one.ogg',
+"open" = 'sound/vox/open.ogg',
+"operating" = 'sound/vox/operating.ogg',
+"operations" = 'sound/vox/operations.ogg',
+"operative" = 'sound/vox/operative.ogg',
+"option" = 'sound/vox/option.ogg',
+"order" = 'sound/vox/order.ogg',
+"organic" = 'sound/vox/organic.ogg',
+"oscar" = 'sound/vox/oscar.ogg',
+"out" = 'sound/vox/out.ogg',
+"outside" = 'sound/vox/outside.ogg',
+"over" = 'sound/vox/over.ogg',
+"overload" = 'sound/vox/overload.ogg',
+"override" = 'sound/vox/override.ogg',
+"pacify" = 'sound/vox/pacify.ogg',
+"pain" = 'sound/vox/pain.ogg',
+"pal" = 'sound/vox/pal.ogg',
+"panel" = 'sound/vox/panel.ogg',
+"percent" = 'sound/vox/percent.ogg',
+"perimeter" = 'sound/vox/perimeter.ogg',
+"permitted" = 'sound/vox/permitted.ogg',
+"personnel" = 'sound/vox/personnel.ogg',
+"pipe" = 'sound/vox/pipe.ogg',
+"plant" = 'sound/vox/plant.ogg',
+"platform" = 'sound/vox/platform.ogg',
+"please" = 'sound/vox/please.ogg',
+"point" = 'sound/vox/point.ogg',
+"portal" = 'sound/vox/portal.ogg',
+"power" = 'sound/vox/power.ogg',
+"presence" = 'sound/vox/presence.ogg',
+"press" = 'sound/vox/press.ogg',
+"primary" = 'sound/vox/primary.ogg',
+"proceed" = 'sound/vox/proceed.ogg',
+"processing" = 'sound/vox/processing.ogg',
+"progress" = 'sound/vox/progress.ogg',
+"proper" = 'sound/vox/proper.ogg',
+"propulsion" = 'sound/vox/propulsion.ogg',
+"prosecute" = 'sound/vox/prosecute.ogg',
+"protective" = 'sound/vox/protective.ogg',
+"push" = 'sound/vox/push.ogg',
+"quantum" = 'sound/vox/quantum.ogg',
+"quebec" = 'sound/vox/quebec.ogg',
+"question" = 'sound/vox/question.ogg',
+"questioning" = 'sound/vox/questioning.ogg',
+"quick" = 'sound/vox/quick.ogg',
+"quit" = 'sound/vox/quit.ogg',
+"radiation" = 'sound/vox/radiation.ogg',
+"radioactive" = 'sound/vox/radioactive.ogg',
+"rads" = 'sound/vox/rads.ogg',
+"rapid" = 'sound/vox/rapid.ogg',
+"reach" = 'sound/vox/reach.ogg',
+"reached" = 'sound/vox/reached.ogg',
+"reactor" = 'sound/vox/reactor.ogg',
+"red" = 'sound/vox/red.ogg',
+"relay" = 'sound/vox/relay.ogg',
+"released" = 'sound/vox/released.ogg',
+"remaining" = 'sound/vox/remaining.ogg',
+"renegade" = 'sound/vox/renegade.ogg',
+"repair" = 'sound/vox/repair.ogg',
+"report" = 'sound/vox/report.ogg',
+"reports" = 'sound/vox/reports.ogg',
+"required" = 'sound/vox/required.ogg',
+"research" = 'sound/vox/research.ogg',
+"reset" = 'sound/vox/reset.ogg',
+"resevoir" = 'sound/vox/resevoir.ogg',
+"resistance" = 'sound/vox/resistance.ogg',
+"returned" = 'sound/vox/returned.ogg',
+"right" = 'sound/vox/right.ogg',
+"rocket" = 'sound/vox/rocket.ogg',
+"roger" = 'sound/vox/roger.ogg',
+"romeo" = 'sound/vox/romeo.ogg',
+"room" = 'sound/vox/room.ogg',
+"round" = 'sound/vox/round.ogg',
+"run" = 'sound/vox/run.ogg',
+"safe" = 'sound/vox/safe.ogg',
+"safety" = 'sound/vox/safety.ogg',
+"sargeant" = 'sound/vox/sargeant.ogg',
+"satellite" = 'sound/vox/satellite.ogg',
+"save" = 'sound/vox/save.ogg',
+"science" = 'sound/vox/science.ogg',
+"scores" = 'sound/vox/scores.ogg',
+"scream" = 'sound/vox/scream.ogg',
+"screen" = 'sound/vox/screen.ogg',
+"search" = 'sound/vox/search.ogg',
+"second" = 'sound/vox/second.ogg',
+"secondary" = 'sound/vox/secondary.ogg',
+"seconds" = 'sound/vox/seconds.ogg',
+"sector" = 'sound/vox/sector.ogg',
+"secure" = 'sound/vox/secure.ogg',
+"secured" = 'sound/vox/secured.ogg',
+"security" = 'sound/vox/security.ogg',
+"select" = 'sound/vox/select.ogg',
+"selected" = 'sound/vox/selected.ogg',
+"service" = 'sound/vox/service.ogg',
+"seven" = 'sound/vox/seven.ogg',
+"seventeen" = 'sound/vox/seventeen.ogg',
+"seventy" = 'sound/vox/seventy.ogg',
+"severe" = 'sound/vox/severe.ogg',
+"sewage" = 'sound/vox/sewage.ogg',
+"sewer" = 'sound/vox/sewer.ogg',
+"shield" = 'sound/vox/shield.ogg',
+"shipment" = 'sound/vox/shipment.ogg',
+"shock" = 'sound/vox/shock.ogg',
+"shoot" = 'sound/vox/shoot.ogg',
+"shower" = 'sound/vox/shower.ogg',
+"shut" = 'sound/vox/shut.ogg',
+"side" = 'sound/vox/side.ogg',
+"sierra" = 'sound/vox/sierra.ogg',
+"sight" = 'sound/vox/sight.ogg',
+"silo" = 'sound/vox/silo.ogg',
+"six" = 'sound/vox/six.ogg',
+"sixteen" = 'sound/vox/sixteen.ogg',
+"sixty" = 'sound/vox/sixty.ogg',
+"slime" = 'sound/vox/slime.ogg',
+"slow" = 'sound/vox/slow.ogg',
+"soldier" = 'sound/vox/soldier.ogg',
+"some" = 'sound/vox/some.ogg',
+"someone" = 'sound/vox/someone.ogg',
+"something" = 'sound/vox/something.ogg',
+"son" = 'sound/vox/son.ogg',
+"sorry" = 'sound/vox/sorry.ogg',
+"south" = 'sound/vox/south.ogg',
+"squad" = 'sound/vox/squad.ogg',
+"square" = 'sound/vox/square.ogg',
+"stairway" = 'sound/vox/stairway.ogg',
+"status" = 'sound/vox/status.ogg',
+"sterile" = 'sound/vox/sterile.ogg',
+"sterilization" = 'sound/vox/sterilization.ogg',
+"stolen" = 'sound/vox/stolen.ogg',
+"storage" = 'sound/vox/storage.ogg',
+"sub" = 'sound/vox/sub.ogg',
+"subsurface" = 'sound/vox/subsurface.ogg',
+"sudden" = 'sound/vox/sudden.ogg',
+"suit" = 'sound/vox/suit.ogg',
+"superconducting" = 'sound/vox/superconducting.ogg',
+"supercooled" = 'sound/vox/supercooled.ogg',
+"supply" = 'sound/vox/supply.ogg',
+"surface" = 'sound/vox/surface.ogg',
+"surrender" = 'sound/vox/surrender.ogg',
+"surround" = 'sound/vox/surround.ogg',
+"surrounded" = 'sound/vox/surrounded.ogg',
+"switch" = 'sound/vox/switch.ogg',
+"system" = 'sound/vox/system.ogg',
+"systems" = 'sound/vox/systems.ogg',
+"tactical" = 'sound/vox/tactical.ogg',
+"take" = 'sound/vox/take.ogg',
+"talk" = 'sound/vox/talk.ogg',
+"tango" = 'sound/vox/tango.ogg',
+"tank" = 'sound/vox/tank.ogg',
+"target" = 'sound/vox/target.ogg',
+"team" = 'sound/vox/team.ogg',
+"temperature" = 'sound/vox/temperature.ogg',
+"temporal" = 'sound/vox/temporal.ogg',
+"ten" = 'sound/vox/ten.ogg',
+"terminal" = 'sound/vox/terminal.ogg',
+"terminated" = 'sound/vox/terminated.ogg',
+"termination" = 'sound/vox/termination.ogg',
+"test" = 'sound/vox/test.ogg',
+"that" = 'sound/vox/that.ogg',
+"the" = 'sound/vox/the.ogg',
+"then" = 'sound/vox/then.ogg',
+"there" = 'sound/vox/there.ogg',
+"third" = 'sound/vox/third.ogg',
+"thirteen" = 'sound/vox/thirteen.ogg',
+"thirty" = 'sound/vox/thirty.ogg',
+"this" = 'sound/vox/this.ogg',
+"those" = 'sound/vox/those.ogg',
+"thousand" = 'sound/vox/thousand.ogg',
+"threat" = 'sound/vox/threat.ogg',
+"three" = 'sound/vox/three.ogg',
+"through" = 'sound/vox/through.ogg',
+"time" = 'sound/vox/time.ogg',
+"to" = 'sound/vox/to.ogg',
+"top" = 'sound/vox/top.ogg',
+"topside" = 'sound/vox/topside.ogg',
+"touch" = 'sound/vox/touch.ogg',
+"towards" = 'sound/vox/towards.ogg',
+"track" = 'sound/vox/track.ogg',
+"train" = 'sound/vox/train.ogg',
+"transportation" = 'sound/vox/transportation.ogg',
+"truck" = 'sound/vox/truck.ogg',
+"tunnel" = 'sound/vox/tunnel.ogg',
+"turn" = 'sound/vox/turn.ogg',
+"turret" = 'sound/vox/turret.ogg',
+"twelve" = 'sound/vox/twelve.ogg',
+"twenty" = 'sound/vox/twenty.ogg',
+"two" = 'sound/vox/two.ogg',
+"unauthorized" = 'sound/vox/unauthorized.ogg',
+"under" = 'sound/vox/under.ogg',
+"uniform" = 'sound/vox/uniform.ogg',
+"unlocked" = 'sound/vox/unlocked.ogg',
+"until" = 'sound/vox/until.ogg',
+"up" = 'sound/vox/up.ogg',
+"upper" = 'sound/vox/upper.ogg',
+"uranium" = 'sound/vox/uranium.ogg',
+"us" = 'sound/vox/us.ogg',
+"usa" = 'sound/vox/usa.ogg',
+"use" = 'sound/vox/use.ogg',
+"used" = 'sound/vox/used.ogg',
+"user" = 'sound/vox/user.ogg',
+"vacate" = 'sound/vox/vacate.ogg',
+"valid" = 'sound/vox/valid.ogg',
+"vapor" = 'sound/vox/vapor.ogg',
+"vent" = 'sound/vox/vent.ogg',
+"ventillation" = 'sound/vox/ventillation.ogg',
+"victor" = 'sound/vox/victor.ogg',
+"violated" = 'sound/vox/violated.ogg',
+"violation" = 'sound/vox/violation.ogg',
+"voltage" = 'sound/vox/voltage.ogg',
+"vox_login" = 'sound/vox/vox_login.ogg',
+"walk" = 'sound/vox/walk.ogg',
+"wall" = 'sound/vox/wall.ogg',
+"want" = 'sound/vox/want.ogg',
+"wanted" = 'sound/vox/wanted.ogg',
+"warm" = 'sound/vox/warm.ogg',
+"warn" = 'sound/vox/warn.ogg',
+"warning" = 'sound/vox/warning.ogg',
+"waste" = 'sound/vox/waste.ogg',
+"water" = 'sound/vox/water.ogg',
+"we" = 'sound/vox/we.ogg',
+"weapon" = 'sound/vox/weapon.ogg',
+"west" = 'sound/vox/west.ogg',
+"whiskey" = 'sound/vox/whiskey.ogg',
+"white" = 'sound/vox/white.ogg',
+"wilco" = 'sound/vox/wilco.ogg',
+"will" = 'sound/vox/will.ogg',
+"with" = 'sound/vox/with.ogg',
+"without" = 'sound/vox/without.ogg',
+"woop" = 'sound/vox/woop.ogg',
+"xeno" = 'sound/vox/xeno.ogg',
+"yankee" = 'sound/vox/yankee.ogg',
+"yards" = 'sound/vox/yards.ogg',
+"year" = 'sound/vox/year.ogg',
+"yellow" = 'sound/vox/yellow.ogg',
+"yes" = 'sound/vox/yes.ogg',
+"you" = 'sound/vox/you.ogg',
+"your" = 'sound/vox/your.ogg',
+"yourself" = 'sound/vox/yourself.ogg',
+"zero" = 'sound/vox/zero.ogg',
+"zone" = 'sound/vox/zone.ogg',
+"zulu" = 'sound/vox/zulu.ogg',))
#endif
\ No newline at end of file
diff --git a/code/modules/mob/living/silicon/damage_procs.dm b/code/modules/mob/living/silicon/damage_procs.dm
index 69d150b315..8fbd7afbdd 100644
--- a/code/modules/mob/living/silicon/damage_procs.dm
+++ b/code/modules/mob/living/silicon/damage_procs.dm
@@ -1,16 +1,17 @@
-/mob/living/silicon/apply_damage(damage = 0,damagetype = BRUTE, def_zone = null, blocked = FALSE)
+/mob/living/silicon/apply_damage(damage = 0,damagetype = BRUTE, def_zone = null, blocked = FALSE, forced = FALSE)
var/hit_percent = (100-blocked)/100
- if(!damage || (hit_percent <= 0))
+ if(!damage || (!forced && hit_percent <= 0))
return 0
+ var/damage_amount = forced ? damage : damage * hit_percent
switch(damagetype)
if(BRUTE)
- adjustBruteLoss(damage * hit_percent)
+ adjustBruteLoss(damage_amount, forced = forced)
if(BURN)
- adjustFireLoss(damage * hit_percent)
+ adjustFireLoss(damage_amount, forced = forced)
if(OXY)
- if(damage < 0) //we shouldn't be taking oxygen damage through this proc, but we'll let it heal.
- adjustOxyLoss(damage * hit_percent)
+ if(damage < 0 || forced) //we shouldn't be taking oxygen damage through this proc, but we'll let it heal.
+ adjustOxyLoss(damage_amount, forced = forced)
return 1
@@ -29,7 +30,7 @@
/mob/living/silicon/setCloneLoss(amount, updating_health = TRUE, forced = FALSE)
return FALSE
-/mob/living/silicon/adjustStaminaLoss(amount, updating_stamina = 1)//immune to stamina damage.
+/mob/living/silicon/adjustStaminaLoss(amount, updating_stamina = 1, forced = FALSE)//immune to stamina damage.
return FALSE
/mob/living/silicon/setStaminaLoss(amount, updating_stamina = 1)
diff --git a/code/modules/mob/living/silicon/pai/pai_defense.dm b/code/modules/mob/living/silicon/pai/pai_defense.dm
index f36e996b81..dda8ddfebd 100644
--- a/code/modules/mob/living/silicon/pai/pai_defense.dm
+++ b/code/modules/mob/living/silicon/pai/pai_defense.dm
@@ -81,8 +81,11 @@
/mob/living/silicon/pai/adjustCloneLoss(amount, updating_health = TRUE, forced = FALSE)
return FALSE
-/mob/living/silicon/pai/adjustStaminaLoss(amount)
- take_holo_damage(amount & 0.25)
+/mob/living/silicon/pai/adjustStaminaLoss(amount, updating_health, forced = FALSE)
+ if(forced)
+ take_holo_damage(amount)
+ else
+ take_holo_damage(amount * 0.25)
/mob/living/silicon/pai/adjustOrganLoss(slot, amount, maximum = 500) //I kept this in, unlike tg
Knockdown(amount * 0.2)
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 2b2cc4c0b5..5b670aaa42 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -1233,7 +1233,7 @@
/mob/living/silicon/robot/unbuckle_mob(mob/user, force=FALSE)
if(iscarbon(user))
- GET_COMPONENT(riding_datum, /datum/component/riding)
+ var/datum/component/riding/riding_datum = GetComponent(/datum/component/riding)
if(istype(riding_datum))
riding_datum.unequip_buckle_inhands(user)
riding_datum.restore_position(user)
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index 7b95ced63f..ac759c7176 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -311,6 +311,10 @@
/obj/item/multitool/cyborg,
/obj/item/t_scanner,
/obj/item/analyzer,
+ /obj/item/storage/part_replacer/cyborg,
+ /obj/item/holosign_creator/atmos,
+ /obj/item/weapon/gripper,
+ /obj/item/lightreplacer/cyborg,
/obj/item/geiger_counter/cyborg,
/obj/item/assembly/signaler/cyborg,
/obj/item/areaeditor/blueprints/cyborg,
diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm
index 1bff7dc10c..6b26b7cb23 100644
--- a/code/modules/mob/living/simple_animal/bot/medbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/medbot.dm
@@ -51,6 +51,7 @@
var/treatment_fire = "kelotane"
var/treatment_tox_avoid = "tricordrazine"
var/treatment_tox = "charcoal"
+ var/treatment_tox_toxlover = "toxin"
var/treatment_virus_avoid = null
var/treatment_virus = "spaceacillin"
var/treat_virus = 1 //If on, the bot will attempt to treat viral infections, curing them if possible.
@@ -381,8 +382,8 @@
if((!C.reagents.has_reagent(treatment_fire_avoid)) && (C.getFireLoss() >= heal_threshold) && (!C.reagents.has_reagent(treatment_fire)))
return TRUE
-
- if((!C.reagents.has_reagent(treatment_tox_avoid)) && (C.getToxLoss() >= heal_threshold) && (!C.reagents.has_reagent(treatment_tox)))
+ var/treatment_toxavoid = get_avoidchem_toxin(C)
+ if(((treatment_toxavoid && !C.reagents.has_reagent(treatment_toxavoid))) && (C.getToxLoss() >= heal_threshold) && (!C.reagents.has_reagent(get_healchem_toxin(C))))
return TRUE
if(treat_virus && !C.reagents.has_reagent(treatment_virus_avoid) && !C.reagents.has_reagent(treatment_virus))
@@ -396,6 +397,12 @@
return FALSE
+/mob/living/simple_animal/bot/medbot/proc/get_avoidchem_toxin(mob/M)
+ return HAS_TRAIT(M, TRAIT_TOXINLOVER)? null : treatment_tox_avoid
+
+/mob/living/simple_animal/bot/medbot/proc/get_healchem_toxin(mob/M)
+ return HAS_TRAIT(M, TRAIT_TOXINLOVER)? treatment_tox_toxlover : treatment_tox
+
/mob/living/simple_animal/bot/medbot/UnarmedAttack(atom/A)
if(iscarbon(A))
var/mob/living/carbon/C = A
@@ -463,8 +470,10 @@
reagent_id = treatment_fire
if(!reagent_id && (C.getToxLoss() >= heal_threshold))
- if(!C.reagents.has_reagent(treatment_tox) && !C.reagents.has_reagent(treatment_tox_avoid))
- reagent_id = treatment_tox
+ var/toxin_heal_avoid = get_avoidchem_toxin(C)
+ var/toxin_healchem = get_healchem_toxin(C)
+ if(!C.reagents.has_reagent(toxin_healchem) && (toxin_heal_avoid && !C.reagents.has_reagent(toxin_heal_avoid)))
+ reagent_id = toxin_healchem
//If the patient is injured but doesn't have our special reagent in them then we should give it to them first
if(reagent_id && use_beaker && reagent_glass && reagent_glass.reagents.total_volume)
diff --git a/code/modules/mob/living/simple_animal/damage_procs.dm b/code/modules/mob/living/simple_animal/damage_procs.dm
index 1031c5b7ee..0cc097dc08 100644
--- a/code/modules/mob/living/simple_animal/damage_procs.dm
+++ b/code/modules/mob/living/simple_animal/damage_procs.dm
@@ -37,5 +37,5 @@
else if(damage_coeff[CLONE])
. = adjustHealth(amount * damage_coeff[CLONE] * CONFIG_GET(number/damage_multiplier), updating_health, forced)
-/mob/living/simple_animal/adjustStaminaLoss(amount)
+/mob/living/simple_animal/adjustStaminaLoss(amount, forced = FALSE)
return
diff --git a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm
index d28b98263c..521f458e2f 100644
--- a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm
+++ b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm
@@ -33,7 +33,7 @@
/mob/living/simple_animal/drone/syndrone/Initialize()
. = ..()
- GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, internal_storage)
+ var/datum/component/uplink/hidden_uplink = internal_storage.GetComponent(/datum/component/uplink)
hidden_uplink.telecrystals = 10
/mob/living/simple_animal/drone/syndrone/Login()
@@ -47,7 +47,7 @@
/mob/living/simple_animal/drone/syndrone/badass/Initialize()
. = ..()
- GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, internal_storage)
+ var/datum/component/uplink/hidden_uplink = internal_storage.GetComponent(/datum/component/uplink)
hidden_uplink.telecrystals = 30
var/obj/item/implant/weapons_auth/W = new
W.implant(src)
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index 1f81899d8a..7ece4f792c 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -536,7 +536,7 @@
//ANIMAL RIDING
/mob/living/simple_animal/user_buckle_mob(mob/living/M, mob/user)
- GET_COMPONENT(riding_datum, /datum/component/riding)
+ var/datum/component/riding/riding_datum = GetComponent(/datum/component/riding)
if(riding_datum)
if(user.incapacitated())
return
@@ -547,7 +547,7 @@
return ..()
/mob/living/simple_animal/relaymove(mob/user, direction)
- GET_COMPONENT(riding_datum, /datum/component/riding)
+ var/datum/component/riding/riding_datum = GetComponent(/datum/component/riding)
if(tame && riding_datum)
riding_datum.handle_ride(user, direction)
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index 8c287229d7..eb22ab7403 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -88,7 +88,7 @@
if(newletter==" ")
newletter="...huuuhhh..."
if(newletter==".")
- newletter=" *BURP*."
+ newletter=" BURP!"
if(rand(1,100) <= strength*0.5)
if(rand(1,5) == 1)
newletter+="'"
diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm
index 875a65d306..fece60f268 100644
--- a/code/modules/paperwork/pen.dm
+++ b/code/modules/paperwork/pen.dm
@@ -201,7 +201,7 @@
throwforce = 35
playsound(user, 'sound/weapons/saberon.ogg', 5, 1)
to_chat(user, "
[src] is now active.")
- GET_COMPONENT_FROM(butchering, /datum/component/butchering, src)
+ var/datum/component/butchering/butchering = src.GetComponent(/datum/component/butchering)
butchering.butchering_enabled = on
update_icon()
diff --git a/code/modules/photography/photos/album.dm b/code/modules/photography/photos/album.dm
index bd77d468d7..3400ed6de0 100644
--- a/code/modules/photography/photos/album.dm
+++ b/code/modules/photography/photos/album.dm
@@ -13,7 +13,7 @@
/obj/item/storage/photo_album/Initialize()
. = ..()
- GET_COMPONENT(STR, /datum/component/storage)
+ var/datum/component/storage/STR = GetComponent(/datum/component/storage)
STR.can_hold = typecacheof(list(/obj/item/photo))
STR.max_combined_w_class = 42
STR.max_items = 21
diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm
index 1759f31344..0762ad46b0 100644
--- a/code/modules/power/cell.dm
+++ b/code/modules/power/cell.dm
@@ -20,6 +20,7 @@
var/self_recharge = 0 //does it self recharge, over time, or not?
var/ratingdesc = TRUE
var/grown_battery = FALSE // If it's a grown that acts as a battery, add a wire overlay to it.
+ rad_flags = RAD_NO_CONTAMINATE // Prevent the same cheese as with the stock parts
/obj/item/stock_parts/cell/get_cell()
return src
diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm
index 8d2162a0ff..e6fa1e0ee4 100644
--- a/code/modules/power/supermatter/supermatter.dm
+++ b/code/modules/power/supermatter/supermatter.dm
@@ -29,7 +29,7 @@
#define MOLE_HEAT_PENALTY 350 //Heat damage scales around this. Too hot setups with this amount of moles do regular damage, anything above and below is scaled
#define POWER_PENALTY_THRESHOLD 5000 //Higher == Engine can generate more power before triggering the high power penalties.
#define SEVERE_POWER_PENALTY_THRESHOLD 7000 //Same as above, but causes more dangerous effects
-#define CRITICAL_POWER_PENALTY_THRESHOLD 9000 //Even more dangerous effects, threshold for tesla delamination
+#define CRITICAL_POWER_PENALTY_THRESHOLD 12000 //Even more dangerous effects, threshold for tesla delamination
#define HEAT_PENALTY_THRESHOLD 40 //Higher == Crystal safe operational temperature is higher.
#define DAMAGE_HARDCAP 0.002
#define DAMAGE_INCREASE_MULTIPLIER 0.25
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index fb3ed19f82..13fd834657 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -62,16 +62,16 @@
var/zoomed = FALSE //Zoom toggle
var/zoom_amt = 3 //Distance in TURFs to move the user's screen forward (the "zoom" effect)
var/zoom_out_amt = 0
- var/datum/action/toggle_scope_zoom/azoom
+ var/datum/action/item_action/toggle_scope_zoom/azoom
/obj/item/gun/Initialize()
. = ..()
if(pin)
pin = new pin(src)
if(gun_light)
- alight = new /datum/action/item_action/toggle_gunlight(src)
- build_zooming()
-
+ alight = new (src)
+ if(zoomable)
+ azoom = new (src)
/obj/item/gun/CheckParts(list/parts_list)
..()
@@ -372,6 +372,12 @@
else
return ..()
+/obj/item/gun/ui_action_click(mob/user, action)
+ if(istype(action, /datum/action/item_action/toggle_scope_zoom))
+ zoom(user)
+ else if(istype(action, alight))
+ toggle_gunlight()
+
/obj/item/gun/proc/toggle_gunlight()
if(!gun_light)
return
@@ -407,21 +413,10 @@
var/datum/action/A = X
A.UpdateButtonIcon()
-/obj/item/gun/pickup(mob/user)
- ..()
- if(azoom)
- azoom.Grant(user)
- if(alight)
- alight.Grant(user)
-
-/obj/item/gun/dropped(mob/user)
- ..()
- if(zoomed)
- zoom(user,FALSE)
- if(azoom)
- azoom.Remove(user)
- if(alight)
- alight.Remove(user)
+/obj/item/gun/item_action_slot_check(slot, mob/user, datum/action/A)
+ if(istype(A, /datum/action/item_action/toggle_scope_zoom) && slot != SLOT_HANDS)
+ return FALSE
+ return ..()
/obj/item/gun/proc/handle_suicide(mob/living/carbon/human/user, mob/living/carbon/human/target, params, bypass_timer)
if(!ishuman(user) || !ishuman(target))
@@ -468,41 +463,32 @@
// ZOOMING //
/////////////
-/datum/action/toggle_scope_zoom
+/datum/action/item_action/toggle_scope_zoom
name = "Toggle Scope"
- check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_RESTRAINED|AB_CHECK_STUN|AB_CHECK_LYING
icon_icon = 'icons/mob/actions/actions_items.dmi'
button_icon_state = "sniper_zoom"
- var/obj/item/gun/gun = null
-/datum/action/toggle_scope_zoom/Trigger()
- gun.zoom(owner)
-
-/datum/action/toggle_scope_zoom/IsAvailable()
+/datum/action/item_action/toggle_scope_zoom/IsAvailable()
. = ..()
- if(!gun)
- return FALSE
if(!.)
- gun.zoom(owner, FALSE)
- if(!owner.get_held_index_of_item(gun))
- return FALSE
-
-/datum/action/toggle_scope_zoom/Remove(mob/living/L)
- gun.zoom(L, FALSE)
- ..()
+ var/obj/item/gun/G = target
+ G.zoom(owner, FALSE)
+/datum/action/item_action/toggle_scope_zoom/Remove(mob/living/L)
+ var/obj/item/gun/G = target
+ G.zoom(L, FALSE)
+ return ..()
/obj/item/gun/proc/zoom(mob/living/user, forced_zoom)
- if(!user || !user.client)
+ if(!(user?.client))
return
- switch(forced_zoom)
- if(FALSE)
- zoomed = FALSE
- if(TRUE)
- zoomed = TRUE
- else
- zoomed = !zoomed
+ if(!isnull(forced_zoom))
+ if(zoomed == forced_zoom)
+ return
+ zoomed = forced_zoom
+ else
+ zoomed = !zoomed
if(zoomed)
var/_x = 0
@@ -524,16 +510,6 @@
user.client.change_view(CONFIG_GET(string/default_view))
user.client.pixel_x = 0
user.client.pixel_y = 0
- return zoomed
-
-//Proc, so that gun accessories/scopes/etc. can easily add zooming.
-/obj/item/gun/proc/build_zooming()
- if(azoom)
- return
-
- if(zoomable)
- azoom = new()
- azoom.gun = src
/obj/item/gun/handle_atom_del(atom/A)
if(A == chambered)
diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm
index 4bd65a7b20..cd86b0b06c 100644
--- a/code/modules/projectiles/guns/ballistic/automatic.dm
+++ b/code/modules/projectiles/guns/ballistic/automatic.dm
@@ -51,8 +51,11 @@
else
to_chat(user, "
You cannot seem to get \the [src] out of your hands!")
-/obj/item/gun/ballistic/automatic/ui_action_click()
- burst_select()
+/obj/item/gun/ballistic/automatic/ui_action_click(mob/user, action)
+ if(istype(action, /datum/action/item_action/toggle_firemode))
+ burst_select()
+ else
+ return ..()
/obj/item/gun/ballistic/automatic/proc/burst_select()
var/mob/living/carbon/human/user = usr
diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm
index 6060ceba99..2cccc57d9e 100644
--- a/code/modules/projectiles/guns/energy.dm
+++ b/code/modules/projectiles/guns/energy.dm
@@ -174,9 +174,6 @@
itemState += "[ratio]"
item_state = itemState
-/obj/item/gun/energy/ui_action_click()
- toggle_gunlight()
-
/obj/item/gun/energy/suicide_act(mob/living/user)
if (istype(user) && can_shoot() && can_trigger_gun(user) && user.get_bodypart(BODY_ZONE_HEAD))
user.visible_message("
[user] is putting the barrel of [src] in [user.p_their()] mouth. It looks like [user.p_theyre()] trying to commit suicide!")
diff --git a/code/modules/projectiles/guns/misc/beam_rifle.dm b/code/modules/projectiles/guns/misc/beam_rifle.dm
index e4d13ad315..92fe91c222 100644
--- a/code/modules/projectiles/guns/misc/beam_rifle.dm
+++ b/code/modules/projectiles/guns/misc/beam_rifle.dm
@@ -45,7 +45,7 @@
var/aiming_lastangle = 0
var/mob/current_user = null
var/list/obj/effect/projectile/tracer/current_tracers
-
+
var/structure_piercing = 1
var/structure_bleed_coeff = 0.7
var/wall_pierce_amount = 0
@@ -76,7 +76,7 @@
var/static/image/drained_overlay = image(icon = 'icons/obj/guns/energy.dmi', icon_state = "esniper_empty")
var/datum/action/item_action/zoom_lock_action/zoom_lock_action
- var/datum/component/mobhook
+ var/mob/listeningTo
/obj/item/gun/energy/beam_rifle/debug
delay = 0
@@ -111,7 +111,9 @@
to_chat(owner, "
You switch [src]'s zooming processor to center mode.")
if(ZOOM_LOCK_OFF)
to_chat(owner, "
You disable [src]'s zooming system.")
- reset_zooming()
+ reset_zooming()
+ else
+ return ..()
/obj/item/gun/energy/beam_rifle/proc/set_autozoom_pixel_offsets_immediate(current_angle)
if(zoom_lock == ZOOM_LOCK_CENTER_VIEW || zoom_lock == ZOOM_LOCK_OFF)
@@ -172,7 +174,7 @@
STOP_PROCESSING(SSfastprocess, src)
set_user(null)
QDEL_LIST(current_tracers)
- QDEL_NULL(mobhook)
+ listeningTo = null
return ..()
/obj/item/gun/energy/beam_rifle/emp_act(severity)
@@ -259,14 +261,17 @@
if(user == current_user)
return
stop_aiming(current_user)
- QDEL_NULL(mobhook)
+ if(listeningTo)
+ UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED)
+ listeningTo = null
if(istype(current_user))
LAZYREMOVE(current_user.mousemove_intercept_objects, src)
current_user = null
if(istype(user))
current_user = user
LAZYOR(current_user.mousemove_intercept_objects, src)
- mobhook = user.AddComponent(/datum/component/redirect, list(COMSIG_MOVABLE_MOVED = CALLBACK(src, .proc/on_mob_move)))
+ RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/on_mob_move)
+ listeningTo = user
/obj/item/gun/energy/beam_rifle/onMouseDrag(src_object, over_object, src_location, over_location, params, mob)
if(aiming)
diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm
index 711fe11d5d..f540ae850d 100644
--- a/code/modules/reagents/chemistry/machinery/chem_master.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_master.dm
@@ -175,7 +175,7 @@
data["chosenPillStyle"] = chosenPillStyle
data["isPillBottleLoaded"] = bottle ? 1 : 0
if(bottle)
- GET_COMPONENT_FROM(STRB, /datum/component/storage, bottle)
+ var/datum/component/storage/STRB = bottle.GetComponent(/datum/component/storage)
data["pillBotContent"] = bottle.contents.len
data["pillBotMaxContent"] = STRB.max_items
@@ -263,7 +263,7 @@
var/target_loc = bottle ? bottle : drop_location()
var/drop_threshold = INFINITY
if(bottle)
- GET_COMPONENT_FROM(STRB, /datum/component/storage, bottle)
+ var/datum/component/storage/STRB = bottle.GetComponent(/datum/component/storage)
if(STRB)
drop_threshold = STRB.max_items - bottle.contents.len
diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm
index f3df72cd4d..1475f94f53 100644
--- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm
@@ -423,7 +423,7 @@
. = 1
/datum/reagent/drug/happiness/addiction_act_stage1(mob/living/M)// all work and no play makes jack a dull boy
- GET_COMPONENT_FROM(mood, /datum/component/mood, M)
+ var/datum/component/mood/mood = M.GetComponent(/datum/component/mood)
mood.setSanity(min(mood.sanity, SANITY_DISTURBED))
M.Jitter(5)
if(prob(20))
@@ -431,7 +431,7 @@
..()
/datum/reagent/drug/happiness/addiction_act_stage2(mob/living/M)
- GET_COMPONENT_FROM(mood, /datum/component/mood, M)
+ var/datum/component/mood/mood = M.GetComponent(/datum/component/mood)
mood.setSanity(min(mood.sanity, SANITY_UNSTABLE))
M.Jitter(10)
if(prob(30))
@@ -439,7 +439,7 @@
..()
/datum/reagent/drug/happiness/addiction_act_stage3(mob/living/M)
- GET_COMPONENT_FROM(mood, /datum/component/mood, M)
+ var/datum/component/mood/mood = M.GetComponent(/datum/component/mood)
mood.setSanity(min(mood.sanity, SANITY_CRAZY))
M.Jitter(15)
if(prob(40))
@@ -447,7 +447,7 @@
..()
/datum/reagent/drug/happiness/addiction_act_stage4(mob/living/carbon/human/M)
- GET_COMPONENT_FROM(mood, /datum/component/mood, M)
+ var/datum/component/mood/mood = M.GetComponent(/datum/component/mood)
mood.setSanity(SANITY_INSANE)
M.Jitter(20)
if(prob(50))
diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
index 775308589f..3db5c4c4dc 100644
--- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
@@ -1443,7 +1443,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
M.dizziness = max(0, M.dizziness-6)
M.confused = max(0, M.confused-6)
M.disgust = max(0, M.disgust-6)
- GET_COMPONENT_FROM(mood, /datum/component/mood, M)
+ var/datum/component/mood/mood = M.GetComponent(/datum/component/mood)
if(mood.sanity <= SANITY_NEUTRAL) // only take effect if in negative sanity and then...
mood.setSanity(min(mood.sanity+5, SANITY_NEUTRAL)) // set minimum to prevent unwanted spiking over neutral
..()
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index 7b41368495..8f8902503c 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -2295,26 +2295,22 @@
chemical_flags = REAGENT_INVISIBLE
/datum/reagent/changeling_string/on_mob_metabolize(mob/living/carbon/C)
- if(C && C.dna && data["desired_dna"])
+ if(ishuman(C) && C.dna && data["desired_dna"])
original_dna = new C.dna.type
C.dna.copy_dna(original_dna)
var/datum/dna/new_dna = data["desired_dna"]
- new_dna.copy_dna(C.dna)
+ new_dna.transfer_identity(C, TRUE)
C.real_name = new_dna.real_name
- C.updateappearance(mutcolor_update=1)
- C.update_body()
+ C.updateappearance(mutcolor_update = TRUE)
C.domutcheck()
- C.regenerate_icons()
..()
/datum/reagent/changeling_string/on_mob_end_metabolize(mob/living/carbon/C)
if(original_dna)
- original_dna.copy_dna(C.dna)
+ original_dna.transfer_identity(C, TRUE)
C.real_name = original_dna.real_name
- C.updateappearance(mutcolor_update=1)
- C.update_body()
+ C.updateappearance(mutcolor_update = TRUE)
C.domutcheck()
- C.regenerate_icons()
..()
/datum/reagent/changeling_string/Destroy()
diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm
index a96ba006c9..14245e3232 100644
--- a/code/modules/reagents/reagent_containers/hypospray.dm
+++ b/code/modules/reagents/reagent_containers/hypospray.dm
@@ -196,3 +196,317 @@
volume = 250
list_reagents = list("holywater" = 150, "tiresolution" = 50, "dizzysolution" = 50)
amount_per_transfer_from_this = 50
+
+#define HYPO_SPRAY 0
+#define HYPO_INJECT 1
+
+#define WAIT_SPRAY 25
+#define WAIT_INJECT 25
+#define SELF_SPRAY 15
+#define SELF_INJECT 15
+
+#define DELUXE_WAIT_SPRAY 20
+#define DELUXE_WAIT_INJECT 20
+#define DELUXE_SELF_SPRAY 10
+#define DELUXE_SELF_INJECT 10
+
+#define COMBAT_WAIT_SPRAY 0
+#define COMBAT_WAIT_INJECT 0
+#define COMBAT_SELF_SPRAY 0
+#define COMBAT_SELF_INJECT 0
+
+//A vial-loaded hypospray. Cartridge-based!
+/obj/item/hypospray/mkii
+ name = "hypospray mk.II"
+ icon_state = "hypo2"
+ desc = "A new development from DeForest Medical, this hypospray takes 30-unit vials as the drug supply for easy swapping."
+ w_class = WEIGHT_CLASS_TINY
+ var/list/allowed_containers = list(/obj/item/reagent_containers/glass/bottle/vial/tiny, /obj/item/reagent_containers/glass/bottle/vial/small)
+ var/mode = HYPO_INJECT
+ var/obj/item/reagent_containers/glass/bottle/vial/vial
+ var/start_vial = /obj/item/reagent_containers/glass/bottle/vial/small
+ var/spawnwithvial = TRUE
+ var/inject_wait = WAIT_INJECT
+ var/spray_wait = WAIT_SPRAY
+ var/spray_self = SELF_SPRAY
+ var/inject_self = SELF_INJECT
+ var/quickload = FALSE
+ var/penetrates = FALSE
+
+/obj/item/hypospray/mkii/brute
+ start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/bicaridine
+
+/obj/item/hypospray/mkii/toxin
+ start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/antitoxin
+
+/obj/item/hypospray/mkii/oxygen
+ start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/dexalin
+
+/obj/item/hypospray/mkii/burn
+ start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/kelotane
+
+/obj/item/hypospray/mkii/tricord
+ start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/tricord
+
+/obj/item/hypospray/mkii/enlarge
+ spawnwithvial = FALSE
+
+/obj/item/hypospray/mkii/CMO
+ name = "hypospray mk.II deluxe"
+ allowed_containers = list(/obj/item/reagent_containers/glass/bottle/vial/tiny, /obj/item/reagent_containers/glass/bottle/vial/small, /obj/item/reagent_containers/glass/bottle/vial/large)
+ icon_state = "cmo2"
+ desc = "The Deluxe Hypospray can take larger-size vials. It also acts faster and delivers more reagents per spray."
+ resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
+ start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/CMO
+ inject_wait = DELUXE_WAIT_INJECT
+ spray_wait = DELUXE_WAIT_SPRAY
+ spray_self = DELUXE_SELF_SPRAY
+ inject_self = DELUXE_SELF_INJECT
+
+/obj/item/hypospray/mkii/CMO/combat
+ name = "combat hypospray mk.II"
+ desc = "A combat-ready deluxe hypospray that acts almost instantly. It can be tactically reloaded by using a vial on it."
+ icon_state = "combat2"
+ start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/combat
+ inject_wait = COMBAT_WAIT_INJECT
+ spray_wait = COMBAT_WAIT_SPRAY
+ spray_self = COMBAT_SELF_SPRAY
+ inject_self = COMBAT_SELF_INJECT
+ quickload = TRUE
+ penetrates = TRUE
+
+/obj/item/hypospray/mkii/Initialize()
+ . = ..()
+ if(!spawnwithvial)
+ update_icon()
+ return
+ if(start_vial)
+ vial = new start_vial
+ update_icon()
+
+/obj/item/hypospray/mkii/update_icon()
+ ..()
+ icon_state = "[initial(icon_state)][vial ? "" : "-e"]"
+ if(ismob(loc))
+ var/mob/M = loc
+ M.update_inv_hands()
+ return
+
+/obj/item/hypospray/mkii/examine(mob/user)
+ . = ..()
+ if(vial)
+ to_chat(user, "[vial] has [vial.reagents.total_volume]u remaining.")
+ else
+ to_chat(user, "It has no vial loaded in.")
+ to_chat(user, "[src] is set to [mode ? "Inject" : "Spray"] contents on application.")
+
+/obj/item/hypospray/mkii/proc/unload_hypo(obj/item/I, mob/user)
+ if((istype(I, /obj/item/reagent_containers/glass/bottle/vial)))
+ var/obj/item/reagent_containers/glass/bottle/vial/V = I
+ V.forceMove(user.loc)
+ user.put_in_hands(V)
+ to_chat(user, "
You remove [vial] from [src].")
+ vial = null
+ update_icon()
+ playsound(loc, 'sound/weapons/empty.ogg', 50, 1)
+ else
+ to_chat(user, "
This hypo isn't loaded!")
+ return
+
+/obj/item/hypospray/mkii/attackby(obj/item/I, mob/living/user)
+ if((istype(I, /obj/item/reagent_containers/glass/bottle/vial) && vial != null))
+ if(!quickload)
+ to_chat(user, "
[src] can not hold more than one vial!")
+ return FALSE
+ unload_hypo(vial, user)
+ if((istype(I, /obj/item/reagent_containers/glass/bottle/vial)))
+ var/obj/item/reagent_containers/glass/bottle/vial/V = I
+ if(!is_type_in_list(V, allowed_containers))
+ to_chat(user, "
[src] doesn't accept this type of vial.")
+ return FALSE
+ if(!user.transferItemToLoc(V,src))
+ return FALSE
+ vial = V
+ user.visible_message("
[user] has loaded a vial into [src].","
You have loaded [vial] into [src].")
+ update_icon()
+ playsound(loc, 'sound/weapons/autoguninsert.ogg', 35, 1)
+ return TRUE
+ else
+ to_chat(user, "
This doesn't fit in [src].")
+ return FALSE
+ return FALSE
+
+/obj/item/hypospray/mkii/AltClick(mob/user)
+ if(vial)
+ vial.attack_self(user)
+
+// Gunna allow this for now, still really don't approve - Pooj
+/obj/item/hypospray/mkii/emag_act(mob/user)
+ . = ..()
+ if(obj_flags & EMAGGED)
+ to_chat(user, "[src] happens to be already overcharged.")
+ return
+ inject_wait = COMBAT_WAIT_INJECT
+ spray_wait = COMBAT_WAIT_SPRAY
+ spray_self = COMBAT_SELF_INJECT
+ inject_self = COMBAT_SELF_SPRAY
+ penetrates = TRUE
+ to_chat(user, "You overcharge [src]'s control circuit.")
+ obj_flags |= EMAGGED
+ return TRUE
+
+/obj/item/hypospray/mkii/attack_hand(mob/user)
+ . = ..() //Don't bother changing this or removing it from containers will break.
+
+/obj/item/hypospray/mkii/attack(obj/item/I, mob/user, params)
+ return
+
+/obj/item/hypospray/mkii/afterattack(atom/target, mob/user, proximity)
+ if(!vial)
+ return
+
+ if(!proximity)
+ return
+
+ if(!ismob(target))
+ return
+
+ var/mob/living/L
+ if(isliving(target))
+ L = target
+ if(!penetrates && !L.can_inject(user, 1)) //This check appears another four times, since otherwise the penetrating sprays will break in do_mob.
+ return
+
+ if(!L && !target.is_injectable()) //only checks on non-living mobs, due to how can_inject() handles
+ to_chat(user, "
You cannot directly fill [target]!")
+ return
+
+ if(target.reagents.total_volume >= target.reagents.maximum_volume)
+ to_chat(user, "
[target] is full.")
+ return
+
+ if(ishuman(L))
+ var/obj/item/bodypart/affecting = L.get_bodypart(check_zone(user.zone_selected))
+ if(!affecting)
+ to_chat(user, "
The limb is missing!")
+ return
+ if(affecting.status != BODYPART_ORGANIC)
+ to_chat(user, "
Medicine won't work on a robotic limb!")
+ return
+
+ var/contained = vial.reagents.log_list()
+ log_combat(user, L, "attemped to inject", src, addition="which had [contained]")
+//Always log attemped injections for admins
+ if(vial != null)
+ switch(mode)
+ if(HYPO_INJECT)
+ if(L) //living mob
+ if(L != user)
+ L.visible_message("
[user] is trying to inject [L] with [src]!", \
+ "
[user] is trying to inject [L] with [src]!")
+ if(!do_mob(user, L, inject_wait))
+ return
+ if(!penetrates && !L.can_inject(user, 1))
+ return
+ if(!vial.reagents.total_volume)
+ return
+ if(L.reagents.total_volume >= L.reagents.maximum_volume)
+ return
+ L.visible_message("
[user] uses the [src] on [L]!", \
+ "
[user] uses the [src] on [L]!")
+ else
+ if(!do_mob(user, L, inject_self))
+ return
+ if(!penetrates && !L.can_inject(user, 1))
+ return
+ if(!vial.reagents.total_volume)
+ return
+ if(L.reagents.total_volume >= L.reagents.maximum_volume)
+ return
+ log_attack("
[user.name] ([user.ckey]) applied [src] to [L.name] ([L.ckey]), which had [contained] (INTENT: [uppertext(user.a_intent)]) (MODE: [src.mode])")
+ L.log_message("
applied [src] to themselves ([contained]).", INDIVIDUAL_ATTACK_LOG)
+
+ var/fraction = min(vial.amount_per_transfer_from_this/vial.reagents.total_volume, 1)
+ vial.reagents.reaction(L, INJECT, fraction)
+ vial.reagents.trans_to(target, vial.amount_per_transfer_from_this)
+ if(vial.amount_per_transfer_from_this >= 15)
+ playsound(loc,'sound/items/hypospray_long.ogg',50, 1, -1)
+ if(vial.amount_per_transfer_from_this < 15)
+ playsound(loc, pick('sound/items/hypospray.ogg','sound/items/hypospray2.ogg'), 50, 1, -1)
+ to_chat(user, "
You inject [vial.amount_per_transfer_from_this] units of the solution. The hypospray's cartridge now contains [vial.reagents.total_volume] units.")
+
+ if(HYPO_SPRAY)
+ if(L) //living mob
+ if(L != user)
+ L.visible_message("
[user] is trying to spray [L] with [src]!", \
+ "
[user] is trying to spray [L] with [src]!")
+ if(!do_mob(user, L, spray_wait))
+ return
+ if(!penetrates && !L.can_inject(user, 1))
+ return
+ if(!vial.reagents.total_volume)
+ return
+ if(L.reagents.total_volume >= L.reagents.maximum_volume)
+ return
+ L.visible_message("
[user] uses the [src] on [L]!", \
+ "
[user] uses the [src] on [L]!")
+ else
+ if(!do_mob(user, L, spray_self))
+ return
+ if(!penetrates && !L.can_inject(user, 1))
+ return
+ if(!vial.reagents.total_volume)
+ return
+ if(L.reagents.total_volume >= L.reagents.maximum_volume)
+ return
+ log_attack("
[user.name] ([user.ckey]) applied [src] to [L.name] ([L.ckey]), which had [contained] (INTENT: [uppertext(user.a_intent)]) (MODE: [src.mode])")
+ L.log_message("
applied [src] to themselves ([contained]).", INDIVIDUAL_ATTACK_LOG)
+ var/fraction = min(vial.amount_per_transfer_from_this/vial.reagents.total_volume, 1)
+ vial.reagents.reaction(L, PATCH, fraction)
+ vial.reagents.trans_to(target, vial.amount_per_transfer_from_this)
+ if(vial.amount_per_transfer_from_this >= 15)
+ playsound(loc,'sound/items/hypospray_long.ogg',50, 1, -1)
+ if(vial.amount_per_transfer_from_this < 15)
+ playsound(loc, pick('sound/items/hypospray.ogg','sound/items/hypospray2.ogg'), 50, 1, -1)
+ to_chat(user, "
You spray [vial.amount_per_transfer_from_this] units of the solution. The hypospray's cartridge now contains [vial.reagents.total_volume] units.")
+ else
+ to_chat(user, "
[src] doesn't work here!")
+ return
+
+/obj/item/hypospray/mkii/attack_self(mob/living/user)
+ if(user)
+ if(user.incapacitated())
+ return
+ else if(!vial)
+ to_chat(user, "This Hypo needs to be loaded first!")
+ return
+ else
+ unload_hypo(vial,user)
+
+/obj/item/hypospray/mkii/verb/modes()
+ set name = "Toggle Application Mode"
+ set category = "Object"
+ set src in usr
+ var/mob/M = usr
+ switch(mode)
+ if(HYPO_SPRAY)
+ mode = HYPO_INJECT
+ to_chat(M, "[src] is now set to inject contents on application.")
+ if(HYPO_INJECT)
+ mode = HYPO_SPRAY
+ to_chat(M, "[src] is now set to spray contents on application.")
+
+#undef HYPO_SPRAY
+#undef HYPO_INJECT
+#undef WAIT_SPRAY
+#undef WAIT_INJECT
+#undef SELF_SPRAY
+#undef SELF_INJECT
+#undef DELUXE_WAIT_SPRAY
+#undef DELUXE_WAIT_INJECT
+#undef DELUXE_SELF_SPRAY
+#undef DELUXE_SELF_INJECT
+#undef COMBAT_WAIT_SPRAY
+#undef COMBAT_WAIT_INJECT
+#undef COMBAT_SELF_SPRAY
+#undef COMBAT_SELF_INJECT
diff --git a/modular_citadel/code/modules/reagents/reagent container/hypovial.dm b/code/modules/reagents/reagent_containers/hypovial.dm
old mode 100755
new mode 100644
similarity index 96%
rename from modular_citadel/code/modules/reagents/reagent container/hypovial.dm
rename to code/modules/reagents/reagent_containers/hypovial.dm
index c1e0d6ff01..ba5ce48a4a
--- a/modular_citadel/code/modules/reagents/reagent container/hypovial.dm
+++ b/code/modules/reagents/reagent_containers/hypovial.dm
@@ -1,7 +1,8 @@
+//hypovials used with the MkII hypospray. See hypospray.dm.
+
/obj/item/reagent_containers/glass/bottle/vial
name = "broken hypovial"
desc = "A hypovial compatible with most hyposprays."
- icon = 'modular_citadel/icons/obj/vial.dmi'
icon_state = "hypovial"
spillable = FALSE
var/comes_with = list() //Easy way of doing this.
@@ -34,7 +35,7 @@
/obj/item/reagent_containers/glass/bottle/vial/update_icon()
cut_overlays()
if(reagents.total_volume)
- var/mutable_appearance/filling = mutable_appearance('modular_citadel/icons/obj/vial.dmi', "hypovial10")
+ var/mutable_appearance/filling = mutable_appearance('icons/obj/reagentfillings.dmi', "hypovial10")
var/percent = round((reagents.total_volume / volume) * 100)
switch(percent)
@@ -86,7 +87,7 @@
/obj/item/reagent_containers/glass/bottle/vial/large/update_icon()
cut_overlays()
if(reagents.total_volume)
- var/mutable_appearance/filling = mutable_appearance('modular_citadel/icons/obj/vial.dmi', "hypoviallarge10")
+ var/mutable_appearance/filling = mutable_appearance('icons/obj/reagentfillings.dmi', "hypoviallarge10")
var/percent = round((reagents.total_volume / volume) * 100)
switch(percent)
diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm
index 38880f669f..d4880aa085 100644
--- a/code/modules/reagents/reagent_containers/pill.dm
+++ b/code/modules/reagents/reagent_containers/pill.dm
@@ -186,7 +186,6 @@
/obj/item/reagent_containers/pill/antirad_plus
name = "prussian blue pill"
desc = "Used to treat heavy radition poisoning."
- icon = 'modular_citadel/icons/obj/modularpills.dmi'
icon_state = "prussian_blue"
list_reagents = list("prussian_blue" = 25, "water" = 10)
roundstart = 1
@@ -194,7 +193,6 @@
/obj/item/reagent_containers/pill/mutarad
name = "radiation treatment deluxe pill"
desc = "Used to treat heavy radition poisoning and genetic defects."
- icon = 'modular_citadel/icons/obj/modularpills.dmi'
icon_state = "anit_rad_fixgene"
list_reagents = list("prussian_blue" = 15, "potass_iodide" = 15, "mutadone" = 15, "water" = 5)
roundstart = 1
diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm
index a4a6a7d473..5edddd64c2 100644
--- a/code/modules/recycling/disposal/bin.dm
+++ b/code/modules/recycling/disposal/bin.dm
@@ -283,7 +283,7 @@
/obj/machinery/disposal/bin/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/storage/bag/trash)) //Not doing component overrides because this is a specific type.
var/obj/item/storage/bag/trash/T = I
- GET_COMPONENT_FROM(STR, /datum/component/storage, T)
+ var/datum/component/storage/STR = T.GetComponent(/datum/component/storage)
to_chat(user, "
You empty the bag.")
for(var/obj/item/O in T.contents)
STR.remove_from_storage(O,src)
diff --git a/code/modules/recycling/disposal/construction.dm b/code/modules/recycling/disposal/construction.dm
index 624d5e0e05..348e687e03 100644
--- a/code/modules/recycling/disposal/construction.dm
+++ b/code/modules/recycling/disposal/construction.dm
@@ -29,7 +29,7 @@
pipename = initial(pipe_type.name)
if(flip)
- GET_COMPONENT(rotcomp,/datum/component/simple_rotation)
+ var/datum/component/simple_rotation/rotcomp = GetComponent(/datum/component/simple_rotation)
rotcomp.BaseRot(null,ROTATION_FLIP)
update_icon()
diff --git a/code/modules/research/designs/electronics_designs.dm b/code/modules/research/designs/electronics_designs.dm
index 552976824d..818e80beea 100644
--- a/code/modules/research/designs/electronics_designs.dm
+++ b/code/modules/research/designs/electronics_designs.dm
@@ -131,3 +131,30 @@
category = list("Misc")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
+/datum/design/xenobio_upgrade
+ name = "owo"
+ desc = "someone's bussin"
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 300, MAT_GLASS = 100)
+ category = list("Electronics")
+ departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
+
+/datum/design/xenobio_upgrade/xenobiomonkeys
+ name = "Xenobiology console monkey upgrade disk"
+ desc = "This disk will add the ability to remotely recycle monkeys via the Xenobiology console."
+ id = "xenobio_monkeys"
+ build_path = /obj/item/disk/xenobio_console_upgrade/monkey
+
+/datum/design/xenobio_upgrade/xenobioslimebasic
+ name = "Xenobiology console basic slime upgrade disk"
+ desc = "This disk will add the ability to remotely manipulate slimes via the Xenobiology console."
+ id = "xenobio_slimebasic"
+ build_path = /obj/item/disk/xenobio_console_upgrade/slimebasic
+
+/datum/design/xenobio_upgrade/xenobioslimeadv
+ name = "Xenobiology console advanced slime upgrade disk"
+ desc = "This disk will add the ability to remotely feed slimes potions via the Xenobiology console, and lift the restrictions on the number of slimes that can be stored inside the Xenobiology console. This includes the contents of the basic slime upgrade disk."
+ id = "xenobio_slimeadv"
+ build_path = /obj/item/disk/xenobio_console_upgrade/slimeadv
+
+
diff --git a/code/modules/research/designs/machine_desings/machine_designs_all_misc.dm b/code/modules/research/designs/machine_desings/machine_designs_all_misc.dm
index 31723cde07..b4d67315ba 100644
--- a/code/modules/research/designs/machine_desings/machine_designs_all_misc.dm
+++ b/code/modules/research/designs/machine_desings/machine_designs_all_misc.dm
@@ -98,3 +98,11 @@
build_path = /obj/item/circuitboard/machine/vr_sleeper
departmental_flags = DEPARTMENTAL_FLAG_ALL
category = list ("Medical Machinery")
+
+/datum/design/board/autoylathe
+ name = "Machine Design (Autoylathe)"
+ desc = "The circuit board for an autoylathe."
+ id = "autoylathe"
+ build_path = /obj/item/circuitboard/machine/autoylathe
+ departmental_flags = DEPARTMENTAL_FLAG_ALL
+ category = list("Misc. Machinery")
diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm
index 5176c4fd71..d69dda37ca 100644
--- a/code/modules/research/designs/weapon_designs.dm
+++ b/code/modules/research/designs/weapon_designs.dm
@@ -67,6 +67,12 @@
//Ammo Shells/
//////////////
+/datum/design/beanbag_slug/sec
+ id = "sec_beanbag"
+ build_type = PROTOLATHE
+ category = list("Ammo")
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+
/datum/design/rubbershot/sec
id = "sec_rshot"
build_type = PROTOLATHE
diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm
index e56350a280..0bcd0c5984 100644
--- a/code/modules/research/experimentor.dm
+++ b/code/modules/research/experimentor.dm
@@ -422,7 +422,7 @@
if(exp == SCANTYPE_OBLITERATE)
visible_message("
[exp_on] activates the crushing mechanism, [exp_on] is destroyed!")
if(linked_console.linked_lathe)
- GET_COMPONENT_FROM(linked_materials, /datum/component/material_container, linked_console.linked_lathe)
+ var/datum/component/material_container/linked_materials = linked_console.linked_lathe.GetComponent(/datum/component/material_container)
for(var/material in exp_on.materials)
linked_materials.insert_amount( min((linked_materials.max_amount - linked_materials.total_amount), (exp_on.materials[material])), material)
if(prob(EFFECT_PROB_LOW) && criticalReaction)
diff --git a/code/modules/research/research_disk.dm b/code/modules/research/research_disk.dm
index 2ec2398d88..02865dc5bb 100644
--- a/code/modules/research/research_disk.dm
+++ b/code/modules/research/research_disk.dm
@@ -29,3 +29,12 @@
/obj/item/disk/tech_disk/illegal/Initialize()
. = ..()
stored_research = new /datum/techweb/syndicate
+
+/obj/item/disk/tech_disk/abductor
+ name = "Gray technology disk"
+ desc = "You feel like it's not Gray because of its color."
+ materials = list()
+
+/obj/item/disk/tech_disk/abductor/Initialize()
+ . = ..()
+ stored_research = new /datum/techweb/abductor
diff --git a/code/modules/research/stock_parts.dm b/code/modules/research/stock_parts.dm
index 3cd296f866..12fe64463d 100644
--- a/code/modules/research/stock_parts.dm
+++ b/code/modules/research/stock_parts.dm
@@ -43,7 +43,7 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi
/obj/item/storage/part_replacer/bluespace
name = "bluespace rapid part exchange device"
- desc = "A version of the RPED that allows for replacement of parts and scanning from a distance, along with higher capacity for parts."
+ desc = "A version of the RPED that allows for replacement of parts and scanning from a distance, along with higher capacity for parts. Definitely not just a BSRPED painted orange."
icon_state = "BS_RPED"
w_class = WEIGHT_CLASS_NORMAL
works_from_distance = TRUE
@@ -52,12 +52,10 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi
component_type = /datum/component/storage/concrete/bluespace/rped
/obj/item/storage/part_replacer/cyborg
- name = "rapid part exchange device"
- desc = "Special mechanical module made to store, sort, and apply standard machine parts."
icon_state = "borgrped"
- item_state = "RPED"
- lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
+
+/obj/item/storage/part_replacer/bluespace/cyborg
+ icon_state = "borg_BS_RPED"
/proc/cmp_rped_sort(obj/item/A, obj/item/B)
return B.get_part_rating() - A.get_part_rating()
diff --git a/code/modules/research/techweb/_techweb.dm b/code/modules/research/techweb/_techweb.dm
index cd5a190fd6..1e554f112f 100644
--- a/code/modules/research/techweb/_techweb.dm
+++ b/code/modules/research/techweb/_techweb.dm
@@ -49,6 +49,14 @@
var/datum/techweb_node/syndicate_basic/Node = new()
research_node(Node, TRUE)
+/datum/techweb/abductor
+ id = "ABDUCTOR"
+ organization = "Aliens"
+
+/datum/techweb/abductor/New()
+ var/datum/techweb_node/alientech/Node = new()
+ research_node(Node, TRUE)
+
/datum/techweb/science //Global science techweb for RND consoles.
id = "SCIENCE"
organization = "Nanotrasen"
@@ -364,3 +372,7 @@
/datum/techweb/specialized/autounlocking/exofab
allowed_buildtypes = MECHFAB
+
+/datum/techweb/specialized/autounlocking/autoylathe
+ design_autounlock_buildtypes = AUTOYLATHE
+ allowed_buildtypes = AUTOYLATHE
diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm
index 82037a9b48..fdf887d259 100644
--- a/code/modules/research/techweb/all_nodes.dm
+++ b/code/modules/research/techweb/all_nodes.dm
@@ -10,7 +10,7 @@
// Default research tech, prevents bricking
design_ids = list("basic_matter_bin", "basic_cell", "basic_scanning", "basic_capacitor", "basic_micro_laser", "micro_mani",
"destructive_analyzer", "circuit_imprinter", "experimentor", "rdconsole", "design_disk", "tech_disk", "rdserver", "rdservercontrol", "mechfab",
- "space_heater", "xlarge_beaker", "sec_rshot", "sec_bshot", "sec_slug", "sec_Islug", "sec_dart", "sec_38", "sec_38lethal",
+ "space_heater", "xlarge_beaker", "sec_beanbag", "sec_rshot", "sec_bshot", "sec_slug", "sec_Islug", "sec_dart", "sec_38", "sec_38lethal",
"rglass","plasteel","plastitanium","plasmaglass","plasmareinforcedglass","titaniumglass","plastitaniumglass")
/datum/techweb_node/mmi
@@ -1027,26 +1027,19 @@
id = "alien_bio"
display_name = "Alien Biological Tools"
description = "Advanced biological tools."
- prereq_ids = list("alientech", "adv_biotech")
+ prereq_ids = list("alientech", "advance_surgerytools")
design_ids = list("alien_scalpel", "alien_hemostat", "alien_retractor", "alien_saw", "alien_drill", "alien_cautery")
- boost_item_paths = list(/obj/item/gun/energy/alien, /obj/item/scalpel/alien, /obj/item/hemostat/alien, /obj/item/retractor/alien, /obj/item/circular_saw/alien,
- /obj/item/cautery/alien, /obj/item/surgicaldrill/alien, /obj/item/screwdriver/abductor, /obj/item/wrench/abductor, /obj/item/crowbar/abductor, /obj/item/multitool/abductor, /obj/item/stock_parts/cell/infinite/abductor,
- /obj/item/weldingtool/abductor, /obj/item/wirecutters/abductor, /obj/item/circuitboard/machine/abductor, /obj/item/abductor_baton, /obj/item/abductor)
- research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
- export_price = 20000
- hidden = TRUE
+ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
+ export_price = 10000
/datum/techweb_node/alien_engi
id = "alien_engi"
display_name = "Alien Engineering"
description = "Alien engineering tools"
- prereq_ids = list("alientech", "adv_engi")
+ prereq_ids = list("alientech", "exp_tools")
design_ids = list("alien_wrench", "alien_wirecutters", "alien_screwdriver", "alien_crowbar", "alien_welder", "alien_multitool")
- boost_item_paths = list(/obj/item/screwdriver/abductor, /obj/item/wrench/abductor, /obj/item/crowbar/abductor, /obj/item/multitool/abductor, /obj/item/stock_parts/cell/infinite/abductor,
- /obj/item/weldingtool/abductor, /obj/item/wirecutters/abductor, /obj/item/circuitboard/machine/abductor, /obj/item/abductor_baton, /obj/item/abductor)
- research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
- export_price = 20000
- hidden = TRUE
+ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
+ export_price = 10000
/datum/techweb_node/syndicate_basic
id = "syndicate_basic"
@@ -1106,4 +1099,4 @@
for(var/i in processing)
var/datum/techweb_node/TN = i
TW.add_point_list(TN.research_costs)
- return TW.printout_points()
\ No newline at end of file
+ return TW.printout_points()
diff --git a/code/modules/research/xenobiology/crossbreeding/_misc.dm b/code/modules/research/xenobiology/crossbreeding/_misc.dm
index b28f1676a1..0099fe143d 100644
--- a/code/modules/research/xenobiology/crossbreeding/_misc.dm
+++ b/code/modules/research/xenobiology/crossbreeding/_misc.dm
@@ -58,9 +58,7 @@
var/mob/living/carbon/human/H = M
if(H.mind && !HAS_TRAIT(H, TRAIT_AGEUSIA))
to_chat(H,"
That didn't taste very good...") //No disgust, though. It's just not good tasting.
- GET_COMPONENT_FROM(mood, /datum/component/mood, H)
- if(mood)
- mood.add_event(null,"gross_food", /datum/mood_event/gross_food)
+ SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "gross_food", /datum/mood_event/gross_food)
last_check_time = world.time
return
..()
diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm
index b9e7122d07..6ad4ec34f8 100644
--- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm
+++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm
@@ -64,10 +64,9 @@
var/interrupted = FALSE
var/mob/target
var/icon/bluespace
- var/datum/weakref/redirect_component
/datum/status_effect/slimerecall/on_apply()
- redirect_component = WEAKREF(owner.AddComponent(/datum/component/redirect, list(COMSIG_LIVING_RESIST = CALLBACK(src, .proc/resistField))))
+ RegisterSignal(owner, COMSIG_LIVING_RESIST, .proc/resistField)
to_chat(owner, "
You feel a sudden tug from an unknown force, and feel a pull to bluespace!")
to_chat(owner, "
Resist if you wish avoid the force!")
bluespace = icon('icons/effects/effects.dmi',"chronofield")
@@ -77,9 +76,9 @@
/datum/status_effect/slimerecall/proc/resistField()
interrupted = TRUE
owner.remove_status_effect(src)
+
/datum/status_effect/slimerecall/on_remove()
- qdel(redirect_component.resolve())
- redirect_component = null
+ UnregisterSignal(owner, COMSIG_LIVING_RESIST)
owner.cut_overlay(bluespace)
if(interrupted || !ismob(target))
to_chat(owner, "
The bluespace tug fades away, and you feel that the force has passed you by.")
@@ -98,10 +97,9 @@
duration = -1 //Will remove self when block breaks.
alert_type = /obj/screen/alert/status_effect/freon/stasis
var/obj/structure/ice_stasis/cube
- var/datum/weakref/redirect_component
/datum/status_effect/frozenstasis/on_apply()
- redirect_component = WEAKREF(owner.AddComponent(/datum/component/redirect, list(COMSIG_LIVING_RESIST = CALLBACK(src, .proc/breakCube))))
+ RegisterSignal(owner, COMSIG_LIVING_RESIST, .proc/breakCube)
cube = new /obj/structure/ice_stasis(get_turf(owner))
owner.forceMove(cube)
owner.status_flags |= GODMODE
@@ -118,8 +116,7 @@
if(cube)
qdel(cube)
owner.status_flags &= ~GODMODE
- qdel(redirect_component.resolve())
- redirect_component = null
+ UnregisterSignal(owner, COMSIG_LIVING_RESIST)
/datum/status_effect/slime_clone
id = "slime_cloned"
diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm
index 5aebd1bafa..641b7e7dcb 100644
--- a/code/modules/research/xenobiology/xenobio_camera.dm
+++ b/code/modules/research/xenobiology/xenobio_camera.dm
@@ -29,12 +29,11 @@
var/datum/action/innate/slime_scan/scan_action
var/datum/action/innate/feed_potion/potion_action
- var/datum/component/redirect/listener
-
var/list/stored_slimes
var/obj/item/slimepotion/slime/current_potion
- var/max_slimes = 5
+ var/max_slimes = 1
var/monkeys = 0
+ var/upgradetier = 0
icon_screen = "slime_comp"
icon_keyboard = "rd_key"
@@ -50,7 +49,7 @@
scan_action = new
potion_action = new
stored_slimes = list()
- listener = AddComponent(/datum/component/redirect, list(COMSIG_ATOM_CONTENTS_DEL = CALLBACK(src, .proc/on_contents_del)))
+ RegisterSignal(src, COMSIG_ATOM_CONTENTS_DEL, .proc/on_contents_del)
/obj/machinery/computer/camera_advanced/xenobio/Destroy()
stored_slimes = null
@@ -108,6 +107,22 @@
stored_slimes -= deleted
/obj/machinery/computer/camera_advanced/xenobio/attackby(obj/item/O, mob/user, params)
+ if(istype(O, /obj/item/disk/xenobio_console_upgrade))
+ var/obj/item/disk/xenobio_console_upgrade/diskthing = O
+ var/successfulupgrade = FALSE
+ for(var/I in diskthing.upgradetypes)
+ if(upgradetier & I)
+ continue
+ else
+ upgradetier |= I
+ successfulupgrade = TRUE
+ if(I == XENOBIO_UPGRADE_SLIMEADV)
+ max_slimes = 10
+ if(successfulupgrade)
+ to_chat(user, "
You have successfully upgraded [src] with [O].")
+ else
+ to_chat(user, "
[src] already has the contents of [O] installed!")
+ return
if(istype(O, /obj/item/reagent_containers/food/snacks/monkeycube) && (upgradetier & XENOBIO_UPGRADE_MONKEYS)) //CIT CHANGE - makes monkey-related actions require XENOBIO_UPGRADE_MONKEYS
monkeys++
to_chat(user, "
You feed [O] to [src]. It now has [monkeys] monkey cubes stored.")
@@ -266,3 +281,29 @@
break
else
to_chat(owner, "
Target is not near a camera. Cannot proceed.")
+
+/obj/item/disk/xenobio_console_upgrade
+ name = "Xenobiology console upgrade disk"
+ desc = "Allan please add detail."
+ icon_state = "datadisk5"
+ var/list/upgradetypes = list()
+
+/obj/item/disk/xenobio_console_upgrade/admin
+ name = "Xenobio all access thing"
+ desc = "'the consoles are literally useless!!!!!!!!!!!!!!!'"
+ upgradetypes = list(XENOBIO_UPGRADE_SLIMEBASIC, XENOBIO_UPGRADE_SLIMEADV, XENOBIO_UPGRADE_MONKEYS)
+
+/obj/item/disk/xenobio_console_upgrade/monkey
+ name = "Xenobiology console monkey upgrade disk"
+ desc = "This disk will add the ability to remotely recycle monkeys via the Xenobiology console."
+ upgradetypes = list(XENOBIO_UPGRADE_MONKEYS)
+
+/obj/item/disk/xenobio_console_upgrade/slimebasic
+ name = "Xenobiology console basic slime upgrade disk"
+ desc = "This disk will add the ability to remotely manipulate slimes via the Xenobiology console."
+ upgradetypes = list(XENOBIO_UPGRADE_SLIMEBASIC)
+
+/obj/item/disk/xenobio_console_upgrade/slimeadv
+ name = "Xenobiology console advanced slime upgrade disk"
+ desc = "This disk will add the ability to remotely feed slimes potions via the Xenobiology console, and lift the restrictions on the number of slimes that can be stored inside the Xenobiology console. This includes the contents of the basic slime upgrade disk."
+ upgradetypes = list(XENOBIO_UPGRADE_SLIMEBASIC, XENOBIO_UPGRADE_SLIMEADV)
diff --git a/code/modules/ruins/spaceruin_code/hilbertshotel.dm b/code/modules/ruins/spaceruin_code/hilbertshotel.dm
new file mode 100644
index 0000000000..0d4d2b6ad6
--- /dev/null
+++ b/code/modules/ruins/spaceruin_code/hilbertshotel.dm
@@ -0,0 +1,529 @@
+GLOBAL_VAR_INIT(hhStorageTurf, null)
+GLOBAL_VAR_INIT(hhmysteryRoomNumber, 1337)
+
+/obj/item/hilbertshotel
+ name = "Hilbert's Hotel"
+ desc = "A sphere of what appears to be an intricate network of bluespace. Observing it in detail seems to give you a headache as you try to comprehend the infinite amount of infinitesimally distinct points on its surface."
+ icon_state = "hilbertshotel"
+ w_class = WEIGHT_CLASS_SMALL
+ resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
+ var/datum/map_template/hilbertshotel/hotelRoomTemp
+ var/datum/map_template/hilbertshotel/empty/hotelRoomTempEmpty
+ var/datum/map_template/hilbertshotel/lore/hotelRoomTempLore
+ var/list/activeRooms = list()
+ var/list/storedRooms = list()
+ var/storageTurf
+ //Lore Stuff
+ var/ruinSpawned = FALSE
+ var/mysteryRoom
+
+/obj/item/hilbertshotel/Initialize()
+ . = ..()
+ //Load templates
+ hotelRoomTemp = new()
+ hotelRoomTempEmpty = new()
+ hotelRoomTempLore = new()
+ var/area/currentArea = get_area(src)
+ if(currentArea.type == /area/ruin/space/has_grav/hilbertresearchfacility)
+ ruinSpawned = TRUE
+
+/obj/item/hilbertshotel/Destroy()
+ ejectRooms()
+ return ..()
+
+/obj/item/hilbertshotel/attack(mob/living/M, mob/living/user)
+ if(M.mind)
+ to_chat(user, "
You invite [M] to the hotel.")
+ promptAndCheckIn(M)
+ else
+ to_chat(user, "
[M] is not intelligent enough to understand how to use this device!")
+
+/obj/item/hilbertshotel/attack_self(mob/user)
+ . = ..()
+ promptAndCheckIn(user)
+
+/obj/item/hilbertshotel/proc/promptAndCheckIn(mob/user)
+ var/chosenRoomNumber = input(user, "What number room will you be checking into?", "Room Number") as null|num
+ if(!chosenRoomNumber)
+ return
+ if(chosenRoomNumber > SHORT_REAL_LIMIT)
+ to_chat(user, "
You have to check out the first [SHORT_REAL_LIMIT] rooms before you can go to a higher numbered one!")
+ return
+ if((chosenRoomNumber < 1) || (chosenRoomNumber != round(chosenRoomNumber)))
+ to_chat(user, "
That is not a valid room number!")
+ return
+ if(ismob(loc))
+ if(user == loc) //Not always the same as user
+ forceMove(get_turf(user))
+ if(!storageTurf) //Blame subsystems for not allowing this to be in Initialize
+ if(!GLOB.hhStorageTurf)
+ var/datum/map_template/hilbertshotelstorage/storageTemp = new()
+ var/datum/turf_reservation/storageReservation = SSmapping.RequestBlockReservation(3, 3)
+ storageTemp.load(locate(storageReservation.bottom_left_coords[1], storageReservation.bottom_left_coords[2], storageReservation.bottom_left_coords[3]))
+ GLOB.hhStorageTurf = locate(storageReservation.bottom_left_coords[1]+1, storageReservation.bottom_left_coords[2]+1, storageReservation.bottom_left_coords[3])
+ else
+ storageTurf = GLOB.hhStorageTurf
+ if(tryActiveRoom(chosenRoomNumber, user))
+ return
+ if(tryStoredRoom(chosenRoomNumber, user))
+ return
+ sendToNewRoom(chosenRoomNumber, user)
+
+
+/obj/item/hilbertshotel/proc/tryActiveRoom(var/roomNumber, var/mob/user)
+ if(activeRooms["[roomNumber]"])
+ var/datum/turf_reservation/roomReservation = activeRooms["[roomNumber]"]
+ do_sparks(3, FALSE, get_turf(user))
+ user.forceMove(locate(roomReservation.bottom_left_coords[1] + hotelRoomTemp.landingZoneRelativeX, roomReservation.bottom_left_coords[2] + hotelRoomTemp.landingZoneRelativeY, roomReservation.bottom_left_coords[3]))
+ return TRUE
+ else
+ return FALSE
+
+/obj/item/hilbertshotel/proc/tryStoredRoom(var/roomNumber, var/mob/user)
+ if(storedRooms["[roomNumber]"])
+ var/datum/turf_reservation/roomReservation = SSmapping.RequestBlockReservation(hotelRoomTemp.width, hotelRoomTemp.height)
+ hotelRoomTempEmpty.load(locate(roomReservation.bottom_left_coords[1], roomReservation.bottom_left_coords[2], roomReservation.bottom_left_coords[3]))
+ var/turfNumber = 1
+ for(var/i=0, i
As the sphere breaks apart, you're suddenly ejected into the depths of space!")
+ var/max = world.maxx-TRANSITIONEDGE
+ var/min = 1+TRANSITIONEDGE
+ var/list/possible_transtitons = list()
+ for(var/AZ in SSmapping.z_list)
+ var/datum/space_level/D = AZ
+ if (D.linkage == CROSSLINKED)
+ possible_transtitons += D.z_value
+ var/_z = pick(possible_transtitons)
+ var/_x = rand(min,max)
+ var/_y = rand(min,max)
+ var/turf/T = locate(_x, _y, _z)
+ A.forceMove(T)
+ qdel(room)
+
+ if(storedRooms.len)
+ for(var/x in storedRooms)
+ var/list/atomList = storedRooms[x]
+ for(var/atom/movable/A in atomList)
+ var/max = world.maxx-TRANSITIONEDGE
+ var/min = 1+TRANSITIONEDGE
+ var/list/possible_transtitons = list()
+ for(var/AZ in SSmapping.z_list)
+ var/datum/space_level/D = AZ
+ if (D.linkage == CROSSLINKED)
+ possible_transtitons += D.z_value
+ var/_z = pick(possible_transtitons)
+ var/_x = rand(min,max)
+ var/_y = rand(min,max)
+ var/turf/T = locate(_x, _y, _z)
+ A.forceMove(T)
+
+//Template Stuff
+/datum/map_template/hilbertshotel
+ name = "Hilbert's Hotel Room"
+ mappath = '_maps/templates/hilbertshotel.dmm'
+ var/landingZoneRelativeX = 2
+ var/landingZoneRelativeY = 8
+
+/datum/map_template/hilbertshotel/empty
+ name = "Empty Hilbert's Hotel Room"
+ mappath = '_maps/templates/hilbertshotelempty.dmm'
+
+/datum/map_template/hilbertshotel/lore
+ name = "Doctor Hilbert's Deathbed"
+ mappath = '_maps/templates/hilbertshotellore.dmm'
+
+/datum/map_template/hilbertshotelstorage
+ name = "Hilbert's Hotel Storage"
+ mappath = '_maps/templates/hilbertshotelstorage.dmm'
+
+
+//Turfs and Areas
+/turf/closed/indestructible/hotelwall
+ name = "hotel wall"
+ desc = "A wall designed to protect the security of the hotel's guests."
+ icon_state = "hotelwall"
+ canSmoothWith = list(/turf/closed/indestructible/hotelwall)
+ explosion_block = INFINITY
+
+/turf/open/indestructible/hotelwood
+ desc = "Stylish dark wood with extra reinforcement. Secured firmly to the floor to prevent tampering."
+ icon_state = "wood"
+ footstep = FOOTSTEP_WOOD
+ tiled_dirt = FALSE
+
+/turf/open/indestructible/hoteltile
+ desc = "Smooth tile with extra reinforcement. Secured firmly to the floor to prevent tampering."
+ icon_state = "showroomfloor"
+ footstep = FOOTSTEP_FLOOR
+ tiled_dirt = FALSE
+
+/turf/open/space/bluespace
+ name = "\proper bluespace hyperzone"
+ icon_state = "bluespace"
+ baseturfs = /turf/open/space/bluespace
+ flags_1 = NOJAUNT_1
+ explosion_block = INFINITY
+ var/obj/item/hilbertshotel/parentSphere
+
+/turf/open/space/bluespace/Entered(atom/movable/A)
+ . = ..()
+ A.forceMove(get_turf(parentSphere))
+
+/turf/closed/indestructible/hoteldoor
+ name = "Hotel Door"
+ icon_state = "hoteldoor"
+ explosion_block = INFINITY
+ var/obj/item/hilbertshotel/parentSphere
+
+/turf/closed/indestructible/hoteldoor/proc/promptExit(mob/living/user)
+ if(!isliving(user))
+ return
+ if(!user.mind)
+ return
+ if(!parentSphere)
+ to_chat(user, "The door seems to be malfunctioning and refuses to operate!")
+ return
+ if(alert(user, "Hilbert's Hotel would like to remind you that while we will do everything we can to protect the belongings you leave behind, we make no guarantees of their safety while you're gone, especially that of the health of any living creatures. With that in mind, are you ready to leave?", "Exit", "Leave", "Stay") == "Leave")
+ if(!user.canmove || (get_dist(get_turf(src), get_turf(user)) > 1)) //no teleporting around if they're dead or moved away during the prompt.
+ return
+ user.forceMove(get_turf(parentSphere))
+ do_sparks(3, FALSE, get_turf(user))
+
+/turf/closed/indestructible/hoteldoor/attack_ghost(mob/dead/observer/user)
+ if(!isobserver(user) || !parentSphere)
+ return ..()
+ user.forceMove(get_turf(parentSphere))
+
+//If only this could be simplified...
+/turf/closed/indestructible/hoteldoor/attack_tk(mob/user)
+ return //need to be close.
+
+/turf/closed/indestructible/hoteldoor/attack_hand(mob/user)
+ promptExit(user)
+
+/turf/closed/indestructible/hoteldoor/attack_animal(mob/user)
+ promptExit(user)
+
+/turf/closed/indestructible/hoteldoor/attack_paw(mob/user)
+ promptExit(user)
+
+/turf/closed/indestructible/hoteldoor/attack_hulk(mob/living/carbon/human/user, does_attack_animation)
+ promptExit(user)
+
+/turf/closed/indestructible/hoteldoor/attack_larva(mob/user)
+ promptExit(user)
+
+/turf/closed/indestructible/hoteldoor/attack_slime(mob/user)
+ promptExit(user)
+
+/turf/closed/indestructible/hoteldoor/attack_robot(mob/user)
+ if(get_dist(get_turf(src), get_turf(user)) <= 1)
+ promptExit(user)
+
+/turf/closed/indestructible/hoteldoor/AltClick(mob/user)
+ . = ..()
+ if(get_dist(get_turf(src), get_turf(user)) <= 1)
+ to_chat(user, "You peak through the door's bluespace peephole...")
+ user.reset_perspective(parentSphere)
+ user.set_machine(src)
+ var/datum/action/peepholeCancel/PHC = new
+ user.overlay_fullscreen("remote_view", /obj/screen/fullscreen/impaired, 1)
+ PHC.Grant(user)
+
+/turf/closed/indestructible/hoteldoor/check_eye(mob/user)
+ if(get_dist(get_turf(src), get_turf(user)) >= 2)
+ user.unset_machine()
+ for(var/datum/action/peepholeCancel/PHC in user.actions)
+ PHC.Trigger()
+
+/datum/action/peepholeCancel
+ name = "Cancel View"
+ desc = "Stop looking through the bluespace peephole."
+ button_icon_state = "cancel_peephole"
+
+/datum/action/peepholeCancel/Trigger()
+ . = ..()
+ to_chat(owner, "You move away from the peephole.")
+ owner.reset_perspective()
+ owner.clear_fullscreen("remote_view", 0)
+ qdel(src)
+
+/area/hilbertshotel
+ name = "Hilbert's Hotel Room"
+ icon_state = "hilbertshotel"
+ requires_power = FALSE
+ has_gravity = TRUE
+ noteleport = TRUE
+ hidden = TRUE
+ unique = FALSE
+ dynamic_lighting = DYNAMIC_LIGHTING_FORCED
+ ambientsounds = list('sound/ambience/servicebell.ogg')
+ var/roomnumber = 0
+ var/obj/item/hilbertshotel/parentSphere
+ var/datum/turf_reservation/reservation
+ var/turf/storageTurf
+
+/area/hilbertshotel/Entered(atom/movable/AM)
+ . = ..()
+ if(istype(AM, /obj/item/hilbertshotel))
+ relocate(AM)
+ var/list/obj/item/hilbertshotel/hotels = AM.GetAllContents(/obj/item/hilbertshotel)
+ for(var/obj/item/hilbertshotel/H in hotels)
+ if(parentSphere == H)
+ relocate(H)
+
+/area/hilbertshotel/proc/relocate(obj/item/hilbertshotel/H)
+ if(prob(0.135685)) //Because screw you
+ qdel(H)
+ return
+ var/turf/targetturf = find_safe_turf()
+ if(!targetturf)
+ if(GLOB.blobstart.len > 0)
+ targetturf = get_turf(pick(GLOB.blobstart))
+ else
+ CRASH("Unable to find a blobstart landmark")
+ var/turf/T = get_turf(H)
+ var/area/A = T.loc
+ log_game("[H] entered itself. Moving it to [loc_name(targetturf)].")
+ message_admins("[H] entered itself. Moving it to [ADMIN_VERBOSEJMP(targetturf)].")
+ for(var/mob/M in A)
+ to_chat(M, "[H] almost implodes in upon itself, but quickly rebounds, shooting off into a random point in space!")
+ H.forceMove(targetturf)
+
+/area/hilbertshotel/Exited(atom/movable/AM)
+ . = ..()
+ if(ismob(AM))
+ var/mob/M = AM
+ if(M.mind)
+ var/stillPopulated = FALSE
+ var/list/currentLivingMobs = GetAllContents(/mob/living) //Got to catch anyone hiding in anything
+ for(var/mob/living/L in currentLivingMobs) //Check to see if theres any sentient mobs left.
+ if(L.mind)
+ stillPopulated = TRUE
+ break
+ if(!stillPopulated)
+ storeRoom()
+
+/area/hilbertshotel/proc/storeRoom()
+ var/roomSize = (reservation.top_right_coords[1]-reservation.bottom_left_coords[1]+1)*(reservation.top_right_coords[2]-reservation.bottom_left_coords[2]+1)
+ var/storage[roomSize]
+ var/turfNumber = 1
+ var/obj/item/abstracthotelstorage/storageObj = new(storageTurf)
+ storageObj.roomNumber = roomnumber
+ storageObj.parentSphere = parentSphere
+ storageObj.name = "Room [roomnumber] Storage"
+ for(var/i=0, iIt's to far away to scan!")
+ return
+ var/obj/item/hilbertshotel/sphere = target
+ if(sphere.activeRooms.len)
+ to_chat(user, "Currently Occupied Rooms:")
+ for(var/roomnumber in sphere.activeRooms)
+ to_chat(user, roomnumber)
+ else
+ to_chat(user, "No currenty occupied rooms.")
+ if(sphere.storedRooms.len)
+ to_chat(user, "Vacated Rooms:")
+ for(var/roomnumber in sphere.storedRooms)
+ to_chat(user, roomnumber)
+ else
+ to_chat(user, "No vacated rooms.")
+
+/obj/effect/mob_spawn/human/doctorhilbert
+ name = "Doctor Hilbert"
+ mob_name = "Doctor Hilbert"
+ mob_gender = "male"
+ assignedrole = null
+ ghost_usable = FALSE
+ oxy_damage = 500
+ mob_species = /datum/species/skeleton
+ id_job = "Head Researcher"
+ id_access = ACCESS_RESEARCH
+ id_access_list = list(ACCESS_AWAY_GENERIC3, ACCESS_RESEARCH)
+ instant = TRUE
+ id = /obj/item/card/id/silver
+ uniform = /obj/item/clothing/under/rank/research_director
+ shoes = /obj/item/clothing/shoes/sneakers/brown
+ back = /obj/item/storage/backpack/satchel/leather
+ suit = /obj/item/clothing/suit/toggle/labcoat
+
+/obj/item/paper/crumpled/docslogs
+ name = "Research Logs"
+
+/obj/item/paper/crumpled/docslogs/Initialize()
+ . = ..()
+ GLOB.hhmysteryRoomNumber = rand(1, SHORT_REAL_LIMIT)
+ info = {"Research Logs
+ I might just be onto something here!
+ The strange space-warping properties of bluespace have been known about for awhile now, but I might be on the verge of discovering a new way of harnessing it.
+ It's too soon to say for sure, but this might be the start of something quite important!
+ I'll be sure to log any major future breakthroughs. This might be a lot more than I can manage on my own, perhaps I should hire that secretary after all...
+ Breakthrough!
+ I can't believe it, but I did it! Just when I was certain it couldn't be done, I made the final necessary breakthrough.
+ Exploiting the effects of space dilation caused by specific bluespace structures combined with a precise use of geometric calculus, I've discovered a way to correlate an infinite amount of space within a finite area!
+ While the potential applications are endless, I utilized it in quite a nifty way so far by designing a system that recursively constructs subspace rooms and spatially links them to any of the infinite infinitesimally distinct points on the spheres surface.
+ I call it: Hilbert's Hotel!
+ Goodbye
+ I can't take this anymore. I know what happens next, and the fear of what is coming leaves me unable to continue working.
+ Any fool in my field has heard the stories. It's not that I didn't believe them, it's just... I guess I underestimated the importance of my own research...
+ Robert has reported a further increase in frequency of the strange, prying visitors who ask questions they have no business asking. I've requested him to keep everything on strict lockdown and have permanently dismissed all other assistants.
+ I've also instructed him to use the encryption method we discussed for any important quantitative data. The poor lad... I don't think he truly understands what he's gotten himself into...
+ It's clear what happens now. One day they'll show up uninvited, and claim my research as their own, leaving me as nothing more than a bullet ridden corpse floating in space.
+ I can't stick around to the let that happen.
+ I'm escaping into the very thing that brought all this trouble to my doorstep in the first place - my hotel.
+ I'll be in [uppertext(num2hex(GLOB.hhmysteryRoomNumber, 0))] (That will make sense to anyone who should know)
+ I'm sorry that I must go like this. Maybe one day things will be different and it will be safe to return... maybe...
+ Goodbye
+
+ Doctor Hilbert"}
+
+/obj/item/paper/crumpled/robertsworkjournal
+ name = "Work Journal"
+ info = {"First Week!
+ First week on the new job. It's a secretarial position, but hey, whatever pays the bills. Plus it seems like some interesting stuff goes on here.
+ Doc says its best that I don't openly talk about his research with others, I guess he doesn't want it getting out or something. I've caught myself slipping a few times when talking to others, it's hard not to brag about something this cool!
+ I'm not really sure why I'm choosing to journal this. Doc seems to log everything. He says it's incase he discovers anything important.
+ I guess that's why I'm doing it too, I've always wanted to be a part of something important.
+ Here's to a new job and to becoming a part of something important!
+ Weird times...
+ Things are starting to get a little strange around here. Just weeks after Doc's amazing breakthrough, weird visitors have began showing up unannounced, asking strange things about Doc's work.
+ I knew Doc wasn't a big fan of company, but even he seemed strangely unnerved when I told him about the visitors.
+ He said it's important that from here on out we keep tight security on everything, even other staff members.
+ He also said something about securing data, something about hexes. What's that mean? Some sort of curse? Doc never struck me as the magic type...
+ He often uses a lot of big sciencey words that I don't really understand, but I kinda dig it, it makes me feel like I'm witnessing something big.
+ I hope things go back to normal soon, but I guess that's the price you pay for being a part of something important.
+ Last day I guess?
+ Things are officially starting to get too strange for me.
+ The visitors have been coming a lot more often, and they all seem increasingly aggressive and nosey. I'm starting to see why they made Doc so nervous, they're certainly starting to creep me out too.
+ Awhile ago Doc started having me keep the place on strict lockdown and requested I refuse entry to anyone else, including previous staff.
+ But the weirdest part?
+ I haven't seen Doc in days. It's not unusual for him to work continuously for long periods of time in the lab, but when I took a peak in their yesterday - he was nowhere to be seen! I didn't risk prying much further, Doc had a habit of leaving the defense systems on these last few weeks.
+ I'm thinking it might be time to call it quits. Can't work much without a boss, plus things are starting to get kind of shady. I wanted to be a part of something important, but you gotta know when to play it safe.
+ As my dad always said, "The smart get famous, but the wise survive..."
+
+ Robert P."}
+
+/obj/item/paper/crumpled/bloody/docsdeathnote
+ name = "note"
+ info = {"This is it isn't it?
+ No one's coming to help, that much has become clear.
+ Sure, it's lonely, but do I have much choice? At least I brought the analyzer with me, they shouldn't be able to find me without it.
+ Who knows who's waiting for me out there. Its either die out there in their hands, or die a slower, slightly more comfortable death in here.
+ Everyday I can feel myself slipping away more and more, both physically and mentally. Who knows what happens now...
+ Heh, so it's true then, this must be the inescapable path of all great minds... so be it then.
+
+
+
+ Choose a room, and enter the sphere
+ Lay your head to rest, it soon becomes clear
+ There's always more room around every bend
+ Not all that's countable has an end..."}
diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm
index dd2d7483e3..121ee2e07f 100644
--- a/code/modules/shuttle/on_move.dm
+++ b/code/modules/shuttle/on_move.dm
@@ -290,7 +290,7 @@ All ShuttleMove procs go here
// ignores the movement of the shuttle from the staging area on CentCom to
// the station as it is loaded in.
if (oldT && !is_centcom_level(oldT.z))
- GET_COMPONENT(STR, /datum/component/storage/concrete/emergency)
+ var/datum/component/storage/concrete/emergency/STR = GetComponent(/datum/component/storage/concrete/emergency)
STR?.unlock_me()
/************************************Mob move procs************************************/
diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm
index 2249f5f10e..32c38451c5 100644
--- a/code/modules/shuttle/supply.dm
+++ b/code/modules/shuttle/supply.dm
@@ -24,7 +24,8 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list(
/obj/effect/portal,
/obj/item/shared_storage,
/obj/structure/extraction_point,
- /obj/machinery/syndicatebomb
+ /obj/machinery/syndicatebomb,
+ /obj/item/hilbertshotel
)))
/obj/docking_port/mobile/supply
diff --git a/code/modules/spells/spell_types/construct_spells.dm b/code/modules/spells/spell_types/construct_spells.dm
index bb3cc1f7e3..0c0b20f0fc 100644
--- a/code/modules/spells/spell_types/construct_spells.dm
+++ b/code/modules/spells/spell_types/construct_spells.dm
@@ -146,7 +146,7 @@
clothes_req = 0
invocation = "none"
invocation_type = "none"
- proj_type = /obj/effect/proc_holder/spell/targeted/inflict_handler/magic_missile/lesser
+ proj_type = "/obj/effect/proc_holder/spell/targeted/inflict_handler/magic_missile/lesser"
proj_lifespan = 10
max_targets = 6
action_icon_state = "magicm"
diff --git a/code/modules/spells/spell_types/shapeshift.dm b/code/modules/spells/spell_types/shapeshift.dm
index 1576c55326..46eb14013f 100644
--- a/code/modules/spells/spell_types/shapeshift.dm
+++ b/code/modules/spells/spell_types/shapeshift.dm
@@ -13,7 +13,7 @@
var/revert_on_death = TRUE
var/die_with_shapeshifted_form = TRUE
- var/convert_damage = FALSE //If you want to convert the caster's health to the shift, and vice versa.
+ var/convert_damage = TRUE //If you want to convert the caster's health to the shift, and vice versa.
var/convert_damage_type = BRUTE //Since simplemobs don't have advanced damagetypes, what to convert damage back into.
var/shapeshift_type
var/list/possible_shapes = list(/mob/living/simple_animal/mouse,\
@@ -101,8 +101,10 @@
stored.forceMove(src)
stored.notransform = TRUE
if(source.convert_damage)
- var/damapply = (stored.maxHealth - (stored.health + stored.maxHealth)/2) //Carbons go from -100 to 100 naturally, while simplemobs only go from 0 to 100. Can't do a direct conversion.
- shape.apply_damage(damapply, source.convert_damage_type)
+ var/damage_percent = (stored.maxHealth - stored.health)/stored.maxHealth;
+ var/damapply = damage_percent * shape.maxHealth;
+
+ shape.apply_damage(damapply, source.convert_damage_type, forced = TRUE);
slink = soullink(/datum/soullink/shapeshift, stored , shape)
slink.source = src
@@ -152,8 +154,10 @@
stored.death()
else if(source.convert_damage)
stored.revive(full_heal = TRUE)
- var/damapply = (shape.maxHealth - 2*shape.health) //Since we halved incoming damage, double outgoing.
- stored.apply_damage(damapply, source.convert_damage_type)
+ var/damage_percent = (shape.maxHealth - shape.health)/shape.maxHealth;
+ var/damapply = stored.maxHealth * damage_percent
+
+ stored.apply_damage(damapply, source.convert_damage_type, forced = TRUE)
qdel(shape)
qdel(src)
diff --git a/code/modules/spells/spell_types/summonitem.dm b/code/modules/spells/spell_types/summonitem.dm
index 6d46c53a9d..7d9823e29b 100644
--- a/code/modules/spells/spell_types/summonitem.dm
+++ b/code/modules/spells/spell_types/summonitem.dm
@@ -61,6 +61,10 @@
organ.Remove(organ.owner)
else
while(!isturf(item_to_retrieve.loc) && infinite_recursion < 10) //if it's in something you get the whole thing.
+ if(isitem(item_to_retrieve.loc))
+ var/obj/item/I = item_to_retrieve.loc
+ if(I.item_flags & ABSTRACT) //Being able to summon abstract things because your item happened to get placed there is a no-no
+ break
if(ismob(item_to_retrieve.loc)) //If its on someone, properly drop it
var/mob/M = item_to_retrieve.loc
diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm
index 009cfce0a5..a555010567 100644
--- a/code/modules/surgery/organs/vocal_cords.dm
+++ b/code/modules/surgery/organs/vocal_cords.dm
@@ -917,7 +917,7 @@
speaktrigger += "[(H.client?.prefs.lewdchem?"You are my whole world and all of my being belongs to you, ":"I cannot think of anything else but aiding your cause, ")] "//Redflags!!
//mood
- GET_COMPONENT_FROM(mood, /datum/component/mood, H)
+ var/datum/component/mood/mood = H.GetComponent(/datum/component/mood)
switch(mood.sanity)
if(SANITY_GREAT to INFINITY)
speaktrigger += "I'm beyond elated!! " //did you mean byond elated? hohoho
diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm
index 8da5d7c113..642052026b 100644
--- a/code/modules/unit_tests/_unit_tests.dm
+++ b/code/modules/unit_tests/_unit_tests.dm
@@ -2,6 +2,7 @@
//Keep this sorted alphabetically
#ifdef UNIT_TESTS
+#include "component_tests.dm"
#include "reagent_id_typos.dm"
#include "reagent_recipe_collisions.dm"
#include "spawn_humans.dm"
diff --git a/code/modules/unit_tests/component_tests.dm b/code/modules/unit_tests/component_tests.dm
new file mode 100644
index 0000000000..409d7f4322
--- /dev/null
+++ b/code/modules/unit_tests/component_tests.dm
@@ -0,0 +1,12 @@
+/datum/unit_test/component_duping/Run()
+ var/list/bad_dms = list()
+ var/list/bad_dts = list()
+ for(var/t in typesof(/datum/component))
+ var/datum/component/comp = t
+ if(!isnum(initial(comp.dupe_mode)))
+ bad_dms += t
+ var/dupe_type = initial(comp.dupe_type)
+ if(dupe_type && !ispath(dupe_type))
+ bad_dts += t
+ if(length(bad_dms) || length(bad_dts))
+ Fail("Components with invalid dupe modes: ([bad_dms.Join(",")]) ||| Components with invalid dupe types: ([bad_dts.Join(",")])")
\ No newline at end of file
diff --git a/code/modules/uplink/uplink_devices.dm b/code/modules/uplink/uplink_devices.dm
index b008682745..5c47a2d342 100644
--- a/code/modules/uplink/uplink_devices.dm
+++ b/code/modules/uplink/uplink_devices.dm
@@ -25,18 +25,18 @@
/obj/item/uplink/nuclear/Initialize()
. = ..()
- GET_COMPONENT(hidden_uplink, /datum/component/uplink)
+ var/datum/component/uplink/hidden_uplink = GetComponent(/datum/component/uplink)
hidden_uplink.set_gamemode(/datum/game_mode/nuclear)
/obj/item/uplink/nuclear_restricted/Initialize()
. = ..()
- GET_COMPONENT(hidden_uplink, /datum/component/uplink)
+ var/datum/component/uplink/hidden_uplink = GetComponent(/datum/component/uplink)
hidden_uplink.allow_restricted = FALSE
hidden_uplink.set_gamemode(/datum/game_mode/nuclear)
/obj/item/uplink/clownop/Initialize()
. = ..()
- GET_COMPONENT(hidden_uplink, /datum/component/uplink)
+ var/datum/component/uplink/hidden_uplink = GetComponent(/datum/component/uplink)
hidden_uplink.set_gamemode(/datum/game_mode/nuclear/clown_ops)
/obj/item/uplink/old
@@ -45,7 +45,7 @@
/obj/item/uplink/old/Initialize(mapload, owner, tc_amount = 10)
. = ..()
- GET_COMPONENT(hidden_uplink, /datum/component/uplink)
+ var/datum/component/uplink/hidden_uplink = GetComponent(/datum/component/uplink)
hidden_uplink.name = "dusty radio"
// Multitool uplink
diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm
index 61af0eaf78..ba531cac93 100644
--- a/code/modules/uplink/uplink_items.dm
+++ b/code/modules/uplink/uplink_items.dm
@@ -1711,12 +1711,20 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes
cost = 14 //High cost because of the potential for extreme damage in the hands of a skilled gas masked scientist.
restricted_roles = list("Research Director", "Scientist")
+/datum/uplink_item/role_restricted/alientech
+ name = "Alien Research Disk"
+ desc = "A technology disk holding a terabyte of highly confidential abductor technology. \
+ Simply insert into research console of choice and import the files from the disk. You might research some useful gear from this."
+ item = /obj/item/disk/tech_disk/abductor
+ cost = 12
+ restricted_roles = list("Research Director", "Scientist", "Roboticist")
+
/datum/uplink_item/role_restricted/brainwash_disk
name = "Brainwashing Surgery Program"
desc = "A disk containing the procedure to perform a brainwashing surgery, allowing you to implant an objective onto a target. \
Insert into an Operating Console to enable the procedure."
item = /obj/item/disk/surgery/brainwashing
- restricted_roles = list("Medical Doctor")
+ restricted_roles = list("Medical Doctor", "Roboticist")
cost = 3
/datum/uplink_item/role_restricted/clown_bomb
@@ -1912,6 +1920,13 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes
Radio headset does not include encryption key. No gun included."
item = /obj/item/storage/box/syndie_kit/centcom_costume
+/datum/uplink_item/badass/claymore
+ name = "Claymore"
+ cost = 8
+ player_minimum = 25
+ desc = "A claymore. We don't know why you'd do this."
+ item = /obj/item/claymore
+
/datum/uplink_item/badass/costumes/clown
name = "Clown Costume"
desc = "Nothing is more terrifying than clowns with fully automatic weaponry."
diff --git a/config/game_options.txt b/config/game_options.txt
index 02d620eb31..ca58e58a5b 100644
--- a/config/game_options.txt
+++ b/config/game_options.txt
@@ -255,6 +255,141 @@ EVENTS_MIN_TIME_MUL 1
EVENTS_MIN_PLAYERS_MUL 1
+
+### DYNAMIC MODE ###
+
+## How many roundstart players required for high population override to take effect.
+DYNAMIC_HIGH_POP_LIMIT 55
+
+## Pop range per requirement.
+## If the value is five the range is:
+## 0-4, 5-9, 10-14, 15-19, 20-24, 25-29, 30-34, 35-39, 40-54, 45+
+## If it is six the range is:
+## 0-5, 6-11, 12-17, 18-23, 24-29, 30-35, 36-41, 42-47, 48-53, 54+
+## If it is seven the range is:
+## 0-6, 7-13, 14-20, 21-27, 28-34, 35-41, 42-48, 49-55, 56-62, 63+
+## Options outside this range can be used, of course.
+DYNAMIC_POP_PER_REQUIREMENT 6
+
+## 1 -> 9, probability for this rule to be picked against other rules.
+## Note that requirements must also be met, and some requirements are impossible to meet.
+DYNAMIC_WEIGHT TRAITOR 5
+DYNAMIC_WEIGHT TRAITORBRO 4
+DYNAMIC_WEIGHT CHANGELING 3
+DYNAMIC_WEIGHT WIZARD 1
+DYNAMIC_WEIGHT CULT 3
+DYNAMIC_WEIGHT NUCLEAR 3
+DYNAMIC_WEIGHT REVOLUTION 2
+# All below are impossible-by-default
+DYNAMIC_WEIGHT EXTENDED 3
+DYNAMIC_WEIGHT CLOCKWORK_CULT 3
+DYNAMIC_WEIGHT CLOWNOPS 3
+DYNAMIC_WEIGHT DEVIL 3
+DYNAMIC_WEIGHT MONKEY 3
+DYNAMIC_WEIGHT METEOR 3
+
+## Midround antags
+DYNAMIC_WEIGHT MIDROUND_TRAITOR 7
+DYNAMIC_WEIGHT MALF_AI 3
+DYNAMIC_WEIGHT MIDROUND_WIZARD 1
+DYNAMIC_WEIGHT MIDROUND_NUCLEAR 5
+DYNAMIC_WEIGHT BLOB 4
+DYNAMIC_WEIGHT XENOS 3
+DYNAMIC_WEIGHT NIGHTMARE 3
+
+## Latejoin antags
+DYNAMIC_WEIGHT LATEJOIN_TRAITOR 7
+DYNAMIC_WEIGHT LATEJOIN_REVOLUTION 2
+
+## Threat cost. This is decreased from the mode's threat when the rule is executed.
+DYNAMIC_COST TRAITOR 10
+DYNAMIC_COST TRAITORBRO 10
+DYNAMIC_COST CHANGELING 30
+DYNAMIC_COST WIZARD 30
+DYNAMIC_COST CULT 30
+DYNAMIC_COST NUCLEAR 40
+DYNAMIC_COST REVOLUTION 35
+# All below are impossible-by-default
+DYNAMIC_COST EXTENDED 0
+DYNAMIC_COST CLOCKWORK_CULT 0
+DYNAMIC_COST CLOWNOPS 40
+DYNAMIC_COST DEVIL 0
+DYNAMIC_COST MONKEY 0
+DYNAMIC_COST METEOR 0
+
+## Midround antags
+DYNAMIC_COST MIDROUND_TRAITOR 10
+DYNAMIC_COST MALF_AI 35
+DYNAMIC_COST MIDROUND_WIZARD 20
+DYNAMIC_COST MIDROUND_NUCLEAR 35
+DYNAMIC_COST BLOB 10
+DYNAMIC_COST XENOS 10
+DYNAMIC_COST NIGHTMARE 10
+
+## Latejoin antags
+DYNAMIC_COST LATEJOIN_TRAITOR 5
+DYNAMIC_COST LATEJOIN_REVOLUTION 20
+
+## Rule will not be generated with threat levels below requirement at a pop value. Pop values are determined by dynamic's pop-per-requirement.
+## By default it's 0-5, 6-11, 12-17, 18-23, 24-29, 30-35, 36-41, 42-47, 48-53, 54+.
+## This means that 40 30 30 20 20 20 15 15 15 10 will not generate below 40 at 0-5, 30 at 6-11 etc.
+DYNAMIC_REQUIREMENTS TRAITOR 10 10 10 10 10 10 10 10 10 10
+DYNAMIC_REQUIREMENTS TRAITORBRO 40 30 30 20 20 15 15 15 10 10
+DYNAMIC_REQUIREMENTS CHANGELING 80 70 60 50 40 20 20 10 10 10
+DYNAMIC_REQUIREMENTS WIZARD 90 90 70 40 30 20 10 10 10 10
+DYNAMIC_REQUIREMENTS CULT 100 90 80 60 40 30 10 10 10 10
+DYNAMIC_REQUIREMENTS NUCLEAR 90 90 90 80 60 40 30 20 10 10
+DYNAMIC_REQUIREMENTS REVOLUTION 101 101 70 40 30 20 10 10 10 10
+# All below are impossible-by-default
+DYNAMIC_REQUIREMENTS EXTENDED 101 101 101 101 101 101 101 101 101 101
+DYNAMIC_REQUIREMENTS CLOCKWORK_CULT 101 101 101 101 101 101 101 101 101 101
+DYNAMIC_REQUIREMENTS CLOWNOPS 101 101 101 101 101 101 101 101 101 101
+DYNAMIC_REQUIREMENTS DEVIL 101 101 101 101 101 101 101 101 101 101
+DYNAMIC_REQUIREMENTS MONKEY 101 101 101 101 101 101 101 101 101 101
+DYNAMIC_REQUIREMENTS METEOR 101 101 101 101 101 101 101 101 101 101
+
+## Midround antags
+DYNAMIC_REQUIREMENTS MIDROUND_TRAITOR 50 40 30 20 10 10 10 10 10 10
+DYNAMIC_REQUIREMENTS MALF_AI 101 101 80 70 60 60 50 50 40 40
+DYNAMIC_REQUIREMENTS MIDROUND_WIZARD 90 90 70 40 30 20 10 10 10 10
+DYNAMIC_REQUIREMENTS MIDROUND_NUCLEAR 90 90 90 80 60 40 30 20 10 10
+DYNAMIC_REQUIREMENTS BLOB 101 101 101 80 60 50 30 20 10 10
+DYNAMIC_REQUIREMENTS XENOS 101 101 101 70 50 40 20 15 10 10
+DYNAMIC_REQUIREMENTS NIGHTMARE 101 101 101 70 50 40 20 15 10 10
+
+## Latejoin antags
+DYNAMIC_REQUIREMENTS LATEJOIN_TRAITOR 40 30 20 10 10 10 10 10 10 10
+DYNAMIC_REQUIREMENTS LATEJOIN_REVOLUTION 101 101 70 40 30 20 20 20 20 20
+
+## An alternative, static requirement used instead when pop is over mode's high_pop_limit.
+DYNAMIC_HIGH_POPULATION_REQUIREMENT TRAITOR 10
+DYNAMIC_HIGH_POPULATION_REQUIREMENT TRAITORBRO 15
+DYNAMIC_HIGH_POPULATION_REQUIREMENT CHANGELING 10
+DYNAMIC_HIGH_POPULATION_REQUIREMENT WIZARD 10
+DYNAMIC_HIGH_POPULATION_REQUIREMENT CULT 10
+DYNAMIC_HIGH_POPULATION_REQUIREMENT NUCLEAR 10
+DYNAMIC_HIGH_POPULATION_REQUIREMENT REVOLUTION 10
+# All below are impossible-by-default
+DYNAMIC_HIGH_POPULATION_REQUIREMENT EXTENDED 101
+DYNAMIC_HIGH_POPULATION_REQUIREMENT CLOCKWORK_CULT 101
+DYNAMIC_HIGH_POPULATION_REQUIREMENT CLOWNOPS 101
+DYNAMIC_HIGH_POPULATION_REQUIREMENT DEVIL 101
+DYNAMIC_HIGH_POPULATION_REQUIREMENT MONKEY 101
+DYNAMIC_HIGH_POPULATION_REQUIREMENT METEOR 101
+
+## Midround antags
+DYNAMIC_HIGH_POPULATION_REQUIREMENT MIDROUND_TRAITOR 10
+DYNAMIC_HIGH_POPULATION_REQUIREMENT MALF_AI 35
+DYNAMIC_HIGH_POPULATION_REQUIREMENT MIDROUND_WIZARD 50
+DYNAMIC_HIGH_POPULATION_REQUIREMENT MIDROUND_NUCLEAR 10
+DYNAMIC_HIGH_POPULATION_REQUIREMENT BLOB 50
+DYNAMIC_HIGH_POPULATION_REQUIREMENT XENOS 50
+DYNAMIC_HIGH_POPULATION_REQUIREMENT NIGHTMARE 50
+
+## Latejoin antags
+DYNAMIC_HIGH_POPULATION_REQUIREMENT LATEJOIN_TRAITOR 10
+DYNAMIC_HIGH_POPULATION_REQUIREMENT LATEJOIN_REVOLUTION 50
+
## AI ###
## Allow the AI job to be picked.
diff --git a/config/spaceRuinBlacklist.txt b/config/spaceRuinBlacklist.txt
index deafa47969..4ea7611937 100644
--- a/config/spaceRuinBlacklist.txt
+++ b/config/spaceRuinBlacklist.txt
@@ -27,6 +27,7 @@
#_maps/RandomRuins/SpaceRuins/emptyshell.dmm
#_maps/RandomRuins/SpaceRuins/gasthelizards.dmm
#_maps/RandomRuins/SpaceRuins/gondolaasteroid.dmm
+#_maps/RandomRuins/SpaceRuins/hilbertshoteltestingsite.dmm
#_maps/RandomRuins/SpaceRuins/intactemptyship.dmm
#_maps/RandomRuins/SpaceRuins/listeningstation.dmm
#_maps/RandomRuins/SpaceRuins/mechtransport.dmm
diff --git a/html/changelogs/AutoChangeLog-pr-8654.yml b/html/changelogs/AutoChangeLog-pr-8654.yml
new file mode 100644
index 0000000000..336e55134d
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-8654.yml
@@ -0,0 +1,5 @@
+author: "Ghommie (Original PR by Dreamweaver)"
+delete-after: True
+changes:
+ - rscadd: "Nanotrasen has received word of a high-tech research facility that may contain advancements in bluespace-based research. Any crew members who become aware of its whereabouts are to report it to CentCom immediately and are restricted from sharing said info."
+ - refactor: "The turf reservation system now dynamically creates new z levels if the current reserved levels are full."
diff --git a/html/changelogs/AutoChangeLog-pr-9480.yml b/html/changelogs/AutoChangeLog-pr-9480.yml
new file mode 100644
index 0000000000..048ebdbce1
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9480.yml
@@ -0,0 +1,4 @@
+author: "Poojawa"
+delete-after: True
+changes:
+ - bugfix: "Clarified access descriptions of some jobs"
diff --git a/html/changelogs/AutoChangeLog-pr-9513.yml b/html/changelogs/AutoChangeLog-pr-9513.yml
new file mode 100644
index 0000000000..ae4a8c246c
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9513.yml
@@ -0,0 +1,4 @@
+author: "kevinz000"
+delete-after: True
+changes:
+ - balance: "Medibots no longer kill slimes when trying to heal their toxins."
diff --git a/html/changelogs/AutoChangeLog-pr-9535.yml b/html/changelogs/AutoChangeLog-pr-9535.yml
new file mode 100644
index 0000000000..fbebfe5a54
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9535.yml
@@ -0,0 +1,4 @@
+author: "Ghommie"
+delete-after: True
+changes:
+ - bugfix: "Gorlex Marauders are pleased to announce non-slip grooves were given to their .50 sniper rifles, and thus shouldn't accidentally flop on the floor like pocket spaghettis whenever taken out of a bag anymore."
diff --git a/html/changelogs/AutoChangeLog-pr-9539.yml b/html/changelogs/AutoChangeLog-pr-9539.yml
new file mode 100644
index 0000000000..c6e687d444
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9539.yml
@@ -0,0 +1,4 @@
+author: "kevinz000"
+delete-after: True
+changes:
+ - rscadd: "The Syndicate started selling claymores to their agents."
diff --git a/html/changelogs/AutoChangeLog-pr-9542.yml b/html/changelogs/AutoChangeLog-pr-9542.yml
new file mode 100644
index 0000000000..2ba9d14986
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9542.yml
@@ -0,0 +1,5 @@
+author: "Trilbyspaceclone"
+delete-after: True
+changes:
+ - tweak: "Costs of crates and paperwork"
+ - rscadd: "Adds 2 more crates hacked only"
diff --git a/html/changelogs/AutoChangeLog-pr-9548.yml b/html/changelogs/AutoChangeLog-pr-9548.yml
new file mode 100644
index 0000000000..f387875a4c
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9548.yml
@@ -0,0 +1,4 @@
+author: "Ghommie"
+delete-after: True
+changes:
+ - bugfix: "Fixed custom say emotes conflict with drunk memes."
diff --git a/html/changelogs/AutoChangeLog-pr-9549.yml b/html/changelogs/AutoChangeLog-pr-9549.yml
new file mode 100644
index 0000000000..6958e8c390
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9549.yml
@@ -0,0 +1,4 @@
+author: "Ghommie"
+delete-after: True
+changes:
+ - bugfix: "Fixes identity transfer (envy knife, changeling transformation, making a vr avatar) not copying digitigrade legs."
diff --git a/html/changelogs/AutoChangeLog-pr-9550.yml b/html/changelogs/AutoChangeLog-pr-9550.yml
new file mode 100644
index 0000000000..8a50be40f6
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9550.yml
@@ -0,0 +1,4 @@
+author: "Ghommie"
+delete-after: True
+changes:
+ - bugfix: "Fixes temporary transformation sting triggering heart attacks on heartless humans."
diff --git a/html/changelogs/AutoChangeLog-pr-9564.yml b/html/changelogs/AutoChangeLog-pr-9564.yml
new file mode 100644
index 0000000000..deb7601e82
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9564.yml
@@ -0,0 +1,6 @@
+author: "tinfoil hat wearer"
+delete-after: True
+changes:
+ - rscadd: "Added a new alien technology disk to scientist and roboticist uplinks that allows them to research the heavily-guarded secrets of the Grays."
+ - tweak: "Alientech is now the only Hidden alien research. To compensate for this, alien_bio and alien_engi have had their research costs doubled and now require advanced surgery tools and experimental tools respectively to research. Their export price is also halved."
+ - balance: "roboticists now have brainwashing disks AND alien technology added to their role-restricted uplink section. alien technology gives them brainwashing at a much later date, so brainwashing is the much cheaper option for instant power. makes logical sense because doctors get it as well because they do surgery, and roboticists can now either choose to brainwash people for less price but less power or emag borgs for higher prices, limited uses, but higher power."
diff --git a/html/changelogs/AutoChangeLog-pr-9568.yml b/html/changelogs/AutoChangeLog-pr-9568.yml
new file mode 100644
index 0000000000..c5e65f7adc
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9568.yml
@@ -0,0 +1,4 @@
+author: "r4d6"
+delete-after: True
+changes:
+ - bugfix: "Batteries are now Rad-Proof like the other stock parts"
diff --git a/html/changelogs/AutoChangeLog-pr-9572.yml b/html/changelogs/AutoChangeLog-pr-9572.yml
new file mode 100644
index 0000000000..767a78c3bc
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9572.yml
@@ -0,0 +1,4 @@
+author: "kevinz000"
+delete-after: True
+changes:
+ - bugfix: "Fixes storage bugs regarding reaching into things you shouldn't be able to reach into."
diff --git a/html/changelogs/AutoChangeLog-pr-9579.yml b/html/changelogs/AutoChangeLog-pr-9579.yml
new file mode 100644
index 0000000000..df1a2c90bf
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9579.yml
@@ -0,0 +1,8 @@
+author: "4dplanner, MMiracles"
+delete-after: True
+changes:
+ - tweak: "Wizard shapeshift now converts damage taken while transformed"
+ - bugfix: "transform spell transfers damage correctly instead of healing most of the time"
+ - bugfix: "0% simplemob health maps to 0 carbon health, 100% simplemob to 100% carbon"
+ - bugfix: "transforming to a form with brute resistance no longer heals you"
+ - bugfix: "transforming back to a species with brute resistance no longer heals you"
diff --git a/html/changelogs/AutoChangeLog-pr-9582.yml b/html/changelogs/AutoChangeLog-pr-9582.yml
new file mode 100644
index 0000000000..7fde7388cd
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9582.yml
@@ -0,0 +1,5 @@
+author: "Putnam3145"
+delete-after: True
+changes:
+ - rscadd: "Added configs for a bunch of Dynamic rule parameters."
+ - config: "Added defaults for all the configs (WIP)."
diff --git a/html/changelogs/AutoChangeLog-pr-9585.yml b/html/changelogs/AutoChangeLog-pr-9585.yml
new file mode 100644
index 0000000000..c74c0dec46
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9585.yml
@@ -0,0 +1,4 @@
+author: "Ghommie"
+delete-after: True
+changes:
+ - bugfix: "Fixed artificier lesser magic missile."
diff --git a/html/changelogs/AutoChangeLog-pr-9587.yml b/html/changelogs/AutoChangeLog-pr-9587.yml
new file mode 100644
index 0000000000..0eba144de5
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9587.yml
@@ -0,0 +1,4 @@
+author: "Ghommie"
+delete-after: True
+changes:
+ - bugfix: "Phantom thief masks will now fancy your combat mode yet again."
diff --git a/html/changelogs/AutoChangeLog-pr-9589.yml b/html/changelogs/AutoChangeLog-pr-9589.yml
new file mode 100644
index 0000000000..5fbc819844
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9589.yml
@@ -0,0 +1,4 @@
+author: "Ghommie (original PRs by ninjanomnom and nemvar)"
+delete-after: True
+changes:
+ - bugfix: "Trays now scatter their contents when used for attacks, like they are supposed to."
diff --git a/html/changelogs/AutoChangeLog-pr-9593.yml b/html/changelogs/AutoChangeLog-pr-9593.yml
new file mode 100644
index 0000000000..a61fcea1e4
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9593.yml
@@ -0,0 +1,4 @@
+author: "Ghommie"
+delete-after: True
+changes:
+ - bugfix: "Fixed gulag teleporter stripping the user of stuff it really shouldn't (like storage implant bags)."
diff --git a/html/changelogs/AutoChangeLog-pr-9594.yml b/html/changelogs/AutoChangeLog-pr-9594.yml
new file mode 100644
index 0000000000..83774989ee
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9594.yml
@@ -0,0 +1,4 @@
+author: "Hatterhat"
+delete-after: True
+changes:
+ - tweak: "literally every pistol subtype fits in shoes now. go wild."
diff --git a/html/changelogs/AutoChangeLog-pr-9599.yml b/html/changelogs/AutoChangeLog-pr-9599.yml
new file mode 100644
index 0000000000..83063c12fc
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9599.yml
@@ -0,0 +1,4 @@
+author: "Onule & Nemvar (ported by Ghommie)"
+delete-after: True
+changes:
+ - imageadd: "New Revenant icons"
diff --git a/html/changelogs/AutoChangeLog-pr-9600.yml b/html/changelogs/AutoChangeLog-pr-9600.yml
new file mode 100644
index 0000000000..e7c7c1da92
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9600.yml
@@ -0,0 +1,4 @@
+author: "Trilbyspaceclone"
+delete-after: True
+changes:
+ - rscadd: "Added two seed packets of cotten to ash walkers base"
diff --git a/html/changelogs/AutoChangeLog-pr-9603.yml b/html/changelogs/AutoChangeLog-pr-9603.yml
new file mode 100644
index 0000000000..32b9afb97e
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9603.yml
@@ -0,0 +1,4 @@
+author: "Ghommie"
+delete-after: True
+changes:
+ - bugfix: "fixing cydonian armor a bit."
diff --git a/html/changelogs/AutoChangeLog-pr-9613.yml b/html/changelogs/AutoChangeLog-pr-9613.yml
new file mode 100644
index 0000000000..2056d9479c
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9613.yml
@@ -0,0 +1,4 @@
+author: "Linzolle"
+delete-after: True
+changes:
+ - rscadd: "Target head and throw a hat at someone to toss it onto their head, knocking whatever they're wearing off if they are wearing a hat. Some headgear can't be knocked off this way."
diff --git a/html/changelogs/AutoChangeLog-pr-9617.yml b/html/changelogs/AutoChangeLog-pr-9617.yml
new file mode 100644
index 0000000000..9c8e3fbdf2
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9617.yml
@@ -0,0 +1,4 @@
+author: "JTGSZ"
+delete-after: True
+changes:
+ - bugfix: "barricade girder walls use PlaceOnTop instead of new"
diff --git a/html/changelogs/AutoChangeLog-pr-9620.yml b/html/changelogs/AutoChangeLog-pr-9620.yml
new file mode 100644
index 0000000000..c6f5a460da
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9620.yml
@@ -0,0 +1,5 @@
+author: "YakumoChen"
+delete-after: True
+changes:
+ - rscadd: "Adds beanbag slugs to the sec protolathe at round start"
+ - bugfix: "Brings shotgun ammo availability back in like between seclathe and autolathe."
diff --git a/html/changelogs/AutoChangeLog-pr-9622.yml b/html/changelogs/AutoChangeLog-pr-9622.yml
new file mode 100644
index 0000000000..4a0fb38248
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9622.yml
@@ -0,0 +1,4 @@
+author: "Ghommie"
+delete-after: True
+changes:
+ - imageadd: "Improved the Cyber Sylph' good yet cumbersome bar sign a little."
diff --git a/html/changelogs/AutoChangeLog-pr-9623.yml b/html/changelogs/AutoChangeLog-pr-9623.yml
new file mode 100644
index 0000000000..4ad167ca48
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9623.yml
@@ -0,0 +1,5 @@
+author: "Sirich96 and Dennok (ported by Ghommie)"
+delete-after: True
+changes:
+ - rscadd: "Added new Teleporter Station sprites"
+ - rscadd: "Added teleport station calibration animation."
diff --git a/html/changelogs/AutoChangeLog-pr-9630.yml b/html/changelogs/AutoChangeLog-pr-9630.yml
new file mode 100644
index 0000000000..b9e583297c
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9630.yml
@@ -0,0 +1,4 @@
+author: "Ghommie"
+delete-after: True
+changes:
+ - bugfix: "Cyborgs can now use camera consoles on the edge of their widescreen. These consoles are also TK friendly now."
diff --git a/html/changelogs/AutoChangeLog-pr-9635.yml b/html/changelogs/AutoChangeLog-pr-9635.yml
new file mode 100644
index 0000000000..946a1ffe13
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9635.yml
@@ -0,0 +1,17 @@
+author: "Thalpy"
+delete-after: True
+changes:
+ - bugfix: "1. Kev asked that there were no antag datums used, so that's been changed.
+2. Tricks can no longer turn someone into a dullahan, instead you have to spend candies to get that. I felt it was too mean to turn people into that, I didn't realise you couldn't revert it.
+3. Barth will no longer as for impossible items.
+4. Barth will no longer as for the same item multiple times.
+5. Barth will now accept broader things, rather than asking for something, when meaning something specific.
+6. Jacq will now no longer poof off the z level.
+7. Jacq will (hopefully) stop spooking the AI by teleporting into there
+8. Jacq will now try to teleport to a location with someone nearby.
+9. Barth will tell you where Jacq is currently when you speak to him.
+10. You can trade 2 candies for a Jacq Tracq (tm)
+11. Jacq should stop getting mad and cover the station in gas when killed.
+12. Fixed Jacq not singing (the link died).
+13. Slightly changed wording so that people will hopefully get to know her.
+14. Jacq no longer disappears when you're getting to know her."
diff --git a/icons/mob/AI.dmi b/icons/mob/AI.dmi
index 7de8152118..bdf54e36e5 100644
Binary files a/icons/mob/AI.dmi and b/icons/mob/AI.dmi differ
diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi
index 4e23c102ce..e6e0abe111 100644
Binary files a/icons/mob/actions.dmi and b/icons/mob/actions.dmi differ
diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi
index 842562b007..3d8f26a82e 100644
Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ
diff --git a/icons/mob/inhands/64x64_righthand.dmi b/icons/mob/inhands/64x64_righthand.dmi
index bbeddf9152..3750e28906 100644
Binary files a/icons/mob/inhands/64x64_righthand.dmi and b/icons/mob/inhands/64x64_righthand.dmi differ
diff --git a/icons/mob/inhands/weapons/swords_lefthand.dmi b/icons/mob/inhands/weapons/swords_lefthand.dmi
index d306e22892..2169b87580 100644
Binary files a/icons/mob/inhands/weapons/swords_lefthand.dmi and b/icons/mob/inhands/weapons/swords_lefthand.dmi differ
diff --git a/icons/mob/inhands/weapons/swords_righthand.dmi b/icons/mob/inhands/weapons/swords_righthand.dmi
index 3e0c3424d3..f054d8f744 100644
Binary files a/icons/mob/inhands/weapons/swords_righthand.dmi and b/icons/mob/inhands/weapons/swords_righthand.dmi differ
diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi
index 9beedfb417..4de67f41f8 100644
Binary files a/icons/mob/mob.dmi and b/icons/mob/mob.dmi differ
diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi
index 38ac61f318..b0fb5984c3 100644
Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ
diff --git a/icons/obj/1x2.dmi b/icons/obj/1x2.dmi
new file mode 100644
index 0000000000..ec3bcac2fa
Binary files /dev/null and b/icons/obj/1x2.dmi differ
diff --git a/icons/obj/barsigns.dmi b/icons/obj/barsigns.dmi
index 2c4d401088..1fffa2e540 100644
Binary files a/icons/obj/barsigns.dmi and b/icons/obj/barsigns.dmi differ
diff --git a/icons/obj/card.dmi b/icons/obj/card.dmi
index 507801844c..a3b0d19df4 100644
Binary files a/icons/obj/card.dmi and b/icons/obj/card.dmi differ
diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi
index 5b9e13ed52..89acf0645e 100644
Binary files a/icons/obj/chemical.dmi and b/icons/obj/chemical.dmi differ
diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi
index c8a007041b..6fb50da207 100644
Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ
diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi
index fb406fb65e..852638bc3d 100644
Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ
diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi
index 032b0c27ad..db0e5a301a 100644
Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ
diff --git a/icons/obj/items_and_weapons.dmi b/icons/obj/items_and_weapons.dmi
index 6336669501..e41135b446 100644
Binary files a/icons/obj/items_and_weapons.dmi and b/icons/obj/items_and_weapons.dmi differ
diff --git a/icons/obj/machines/teleporter.dmi b/icons/obj/machines/teleporter.dmi
index 1d3c97199b..08c014af8f 100644
Binary files a/icons/obj/machines/teleporter.dmi and b/icons/obj/machines/teleporter.dmi differ
diff --git a/icons/obj/reagentfillings.dmi b/icons/obj/reagentfillings.dmi
index 1b8dacf36d..eb3ca4b2f7 100644
Binary files a/icons/obj/reagentfillings.dmi and b/icons/obj/reagentfillings.dmi differ
diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi
index fae8134791..68bf9bd2bd 100644
Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ
diff --git a/icons/obj/syringe.dmi b/icons/obj/syringe.dmi
index 59bc7a8e7c..b474dc68ba 100644
Binary files a/icons/obj/syringe.dmi and b/icons/obj/syringe.dmi differ
diff --git a/icons/turf/areas.dmi b/icons/turf/areas.dmi
index 01cb909d27..992b37cc3d 100644
Binary files a/icons/turf/areas.dmi and b/icons/turf/areas.dmi differ
diff --git a/icons/turf/space.dmi b/icons/turf/space.dmi
index d32279e704..33e3fab9a4 100644
Binary files a/icons/turf/space.dmi and b/icons/turf/space.dmi differ
diff --git a/icons/turf/walls.dmi b/icons/turf/walls.dmi
index 3290e3f92c..dd6c7f3a7c 100644
Binary files a/icons/turf/walls.dmi and b/icons/turf/walls.dmi differ
diff --git a/modular_citadel/code/datums/components/phantomthief.dm b/modular_citadel/code/datums/components/phantomthief.dm
deleted file mode 100644
index d34e16f6e9..0000000000
--- a/modular_citadel/code/datums/components/phantomthief.dm
+++ /dev/null
@@ -1,49 +0,0 @@
-//This component applies a customizable drop_shadow filter to its wearer when they toggle combat mode on or off. This can stack.
-
-/datum/component/phantomthief
- dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS
-
- var/filter_x
- var/filter_y
- var/filter_size
- var/filter_border
- var/filter_color
-
- var/datum/component/redirect/combattoggle_redir
-
-/datum/component/phantomthief/Initialize(_x = -2, _y = 0, _size = 0, _border = 0, _color = "#E62111")
- filter_x = _x
- filter_y = _y
- filter_size = _size
- filter_border = _border
- filter_color = _color
-
- RegisterSignal(parent, COMSIG_COMBAT_TOGGLED, .proc/handlefilterstuff)
- RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/OnEquipped)
- RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/OnDropped)
-
-/datum/component/phantomthief/proc/handlefilterstuff(mob/user, combatmodestate)
- if(istype(user))
- var/thefilter = filter(type = "drop_shadow", x = filter_x, y = filter_y, size = filter_size, border = filter_border, color = filter_color)
- if(!combatmodestate)
- user.filters -= thefilter
- else
- user.filters += thefilter
-
-/datum/component/phantomthief/proc/stripdesiredfilter(mob/user)
- if(istype(user))
- var/thefilter = filter(type = "drop_shadow", x = filter_x, y = filter_y, size = filter_size, border = filter_border, color = filter_color)
- user.filters -= thefilter
-
-/datum/component/phantomthief/proc/OnEquipped(mob/user, slot)
- if(!istype(user))
- return
- if(!combattoggle_redir)
- combattoggle_redir = user.AddComponent(/datum/component/redirect, list(COMSIG_COMBAT_TOGGLED = CALLBACK(src, .proc/handlefilterstuff)))
-
-/datum/component/phantomthief/proc/OnDropped(mob/user)
- if(!istype(user))
- return
- if(combattoggle_redir)
- QDEL_NULL(combattoggle_redir)
- stripdesiredfilter(user)
diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm
index 1b1886173b..c5b9ca10ea 100644
--- a/modular_citadel/code/datums/status_effects/chems.dm
+++ b/modular_citadel/code/datums/status_effects/chems.dm
@@ -198,7 +198,6 @@
var/enthrallGender //Use master or mistress
var/mental_capacity //Higher it is, lower the cooldown on commands, capacity reduces with resistance.
- var/datum/weakref/redirect_component //resistance
var/distancelist = list(2,1.5,1,0.8,0.6,0.5,0.4,0.3,0.2) //Distance multipliers
@@ -228,7 +227,7 @@
master = get_mob_by_key(enthrallID)
//if(M.ckey == enthrallID)
// owner.remove_status_effect(src)//At the moment, a user can enthrall themselves, toggle this back in if that should be removed.
- redirect_component = WEAKREF(owner.AddComponent(/datum/component/redirect, list(COMSIG_LIVING_RESIST = CALLBACK(src, .proc/owner_resist)))) //Do resistance calc if resist is pressed#
+ RegisterSignal(owner, COMSIG_LIVING_RESIST, .proc/owner_resist) //Do resistance calc if resist is pressed#
RegisterSignal(owner, COMSIG_MOVABLE_HEAR, .proc/owner_hear)
mental_capacity = 500 - M.getOrganLoss(ORGAN_SLOT_BRAIN)//It's their brain!
var/mob/living/carbon/human/H = owner
@@ -566,8 +565,7 @@
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing2")
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing3")
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing4")
- qdel(redirect_component.resolve())
- redirect_component = null
+ UnregisterSignal(M, COMSIG_LIVING_RESIST)
UnregisterSignal(owner, COMSIG_MOVABLE_HEAR)
REMOVE_TRAIT(owner, TRAIT_PACIFISM, "MKUltra")
to_chat(owner, "You're now free of [master]'s influence, and fully independent!'")
diff --git a/modular_citadel/code/game/machinery/toylathe.dm b/modular_citadel/code/game/machinery/toylathe.dm
index 78b5fdea88..571cdfc82a 100644
--- a/modular_citadel/code/game/machinery/toylathe.dm
+++ b/modular_citadel/code/game/machinery/toylathe.dm
@@ -80,7 +80,7 @@
popup.open()
/obj/machinery/autoylathe/on_deconstruction()
- GET_COMPONENT(materials, /datum/component/material_container)
+ var/datum/component/material_container/materials = GetComponent(/datum/component/material_container)
materials.retrieve_all()
/obj/machinery/autoylathe/attackby(obj/item/O, mob/user, params)
@@ -166,7 +166,7 @@
var/plastic_cost = being_built.materials[MAT_PLASTIC]
var/power = max(2000, (metal_cost+glass_cost+plastic_cost)*multiplier/5)
- GET_COMPONENT(materials, /datum/component/material_container)
+ var/datum/component/material_container/materials = GetComponent(/datum/component/material_container)
if((materials.amount(MAT_METAL) >= metal_cost*multiplier*coeff) && (materials.amount(MAT_GLASS) >= glass_cost*multiplier*coeff) && (materials.amount(MAT_PLASTIC) >= plastic_cost*multiplier*coeff))
busy = TRUE
use_power(power)
@@ -190,7 +190,7 @@
return
/obj/machinery/autoylathe/proc/make_item(power, metal_cost, glass_cost, plastic_cost, multiplier, coeff, is_stack)
- GET_COMPONENT(materials, /datum/component/material_container)
+ var/datum/component/material_container/materials = GetComponent(/datum/component/material_container)
var/atom/A = drop_location()
use_power(power)
var/list/materials_used = list(MAT_METAL=metal_cost*coeff*multiplier, MAT_GLASS=glass_cost*coeff*multiplier, MAT_PLASTIC=plastic_cost*coeff*multiplier)
@@ -215,7 +215,7 @@
var/T = 0
for(var/obj/item/stock_parts/matter_bin/MB in component_parts)
T += MB.rating*75000
- GET_COMPONENT(materials, /datum/component/material_container)
+ var/datum/component/material_container/materials = GetComponent(/datum/component/material_container)
materials.max_amount = T
T=1.2
for(var/obj/item/stock_parts/manipulator/M in component_parts)
@@ -264,7 +264,7 @@
dat += "[D.name]"
if(ispath(D.build_path, /obj/item/stack))
- GET_COMPONENT(materials, /datum/component/material_container)
+ var/datum/component/material_container/materials = GetComponent(/datum/component/material_container)
var/max_multiplier = min(D.maxstack, D.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/D.materials[MAT_METAL]):INFINITY,D.materials[MAT_GLASS] ?round(materials.amount(MAT_GLASS)/D.materials[MAT_GLASS]):INFINITY,D.materials[MAT_PLASTIC] ?round(materials.amount(MAT_PLASTIC)/D.materials[MAT_PLASTIC]):INFINITY)
if (max_multiplier>10 && !disabled)
dat += " x10"
@@ -296,7 +296,7 @@
dat += "[D.name]"
if(ispath(D.build_path, /obj/item/stack))
- GET_COMPONENT(materials, /datum/component/material_container)
+ var/datum/component/material_container/materials = GetComponent(/datum/component/material_container)
var/max_multiplier = min(D.maxstack, D.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/D.materials[MAT_METAL]):INFINITY,D.materials[MAT_GLASS] ?round(materials.amount(MAT_GLASS)/D.materials[MAT_GLASS]):INFINITY,D.materials[MAT_PLASTIC] ?round(materials.amount(MAT_PLASTIC)/D.materials[MAT_PLASTIC]):INFINITY)
if (max_multiplier>10 && !disabled)
dat += " x10"
@@ -311,7 +311,7 @@
return dat
/obj/machinery/autoylathe/proc/materials_printout()
- GET_COMPONENT(materials, /datum/component/material_container)
+ var/datum/component/material_container/materials = GetComponent(/datum/component/material_container)
var/dat = "Total amount: [materials.total_amount] / [materials.max_amount] cm3
"
for(var/mat_id in materials.materials)
var/datum/material/M = materials.materials[mat_id]
@@ -324,7 +324,7 @@
var/coeff = (ispath(D.build_path, /obj/item/stack) ? 1 : prod_coeff)
- GET_COMPONENT(materials, /datum/component/material_container)
+ var/datum/component/material_container/materials = GetComponent(/datum/component/material_container)
if(D.materials[MAT_METAL] && (materials.amount(MAT_METAL) < (D.materials[MAT_METAL] * coeff * amount)))
return FALSE
if(D.materials[MAT_GLASS] && (materials.amount(MAT_GLASS) < (D.materials[MAT_GLASS] * coeff * amount)))
diff --git a/modular_citadel/code/game/objects/ids.dm b/modular_citadel/code/game/objects/ids.dm
deleted file mode 100644
index 8ef724581e..0000000000
--- a/modular_citadel/code/game/objects/ids.dm
+++ /dev/null
@@ -1,83 +0,0 @@
-
-//Polychromatic Knight Badge
-
-/obj/item/card/id/knight
- var/id_color = "#00FF00" //defaults to green
- name = "knight badge"
- icon = 'modular_citadel/icons/obj/id.dmi'
- icon_state = "knight"
- desc = "A badge denoting the owner as a knight! It has a strip for swiping like an ID"
-
-/obj/item/card/id/knight/update_label(newname, newjob)
- . = ..()
- if(newname || newjob)
- name = "[(!newname) ? "identification card" : "[newname]'s Knight Badge"][(!newjob) ? "" : " ([newjob])"]"
- return
-
- name = "[(!registered_name) ? "identification card" : "[registered_name]'s Knight Badge"][(!assignment) ? "" : " ([assignment])"]"
-
-/obj/item/card/id/knight/update_icon()
- var/mutable_appearance/id_overlay = mutable_appearance('modular_citadel/icons/obj/id.dmi', "knight_overlay")
-
- if(id_color)
- id_overlay.color = id_color
- cut_overlays()
-
- add_overlay(id_overlay)
-
-/obj/item/card/id/knight/AltClick(mob/living/user)
- if(!in_range(src, user)) //Basic checks to prevent abuse
- return
- if(user.incapacitated() || !istype(user))
- to_chat(user, "You can't do that right now!")
- return
- if(alert("Are you sure you want to recolor your id?", "Confirm Repaint", "Yes", "No") == "Yes")
- var/energy_color_input = input(usr,"","Choose Energy Color",id_color) as color|null
- if(energy_color_input)
- id_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1)
- update_icon()
-
-/obj/item/card/id/knight/Initialize()
- . = ..()
- update_icon()
-
-/obj/item/card/id/knight/examine(mob/user)
- ..()
- to_chat(user, "Alt-click to recolor it.")
-
-//=================================================
-
-/obj/item/emagrecharge
- name = "electromagnet charging device"
- desc = "A small cell with two prongs lazily jabbed into it. It looks like it's made for charging the small batteries found in electromagnetic devices, sadly this can't be recharged like a normal cell."
- icon = 'icons/obj/module.dmi'
- icon_state = "cell_mini"
- item_flags = NOBLUDGEON
- var/uses = 5 //Dictates how many charges the device adds to compatible items
-
-/obj/item/emagrecharge/examine(mob/user)
- . = ..()
- if(uses)
- to_chat(user, "It can add up to [uses] charges to compatible devices")
- else
- to_chat(user, "It has a small, red, blinking light coming from inside of it. It's spent.")
-
-/obj/item/card/emag
- var/uses = 15
-
-/obj/item/card/emag/examine(mob/user)
- . = ..()
- to_chat(user, "It has [uses ? uses : "no"] charges left.")
-
-/obj/item/card/emag/attackby(obj/item/W, mob/user, params)
- if(istype(W, /obj/item/emagrecharge))
- var/obj/item/emagrecharge/ER = W
- if(ER.uses)
- uses += ER.uses
- to_chat(user, "You have added [ER.uses] charges to [src]. It now has [uses] charges.")
- playsound(src, "sparks", 100, 1)
- ER.uses = 0
- else
- to_chat(user, "[ER] has no charges left.")
- return
- . = ..()
diff --git a/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm b/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm
deleted file mode 100644
index 1d8511ccfa..0000000000
--- a/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm
+++ /dev/null
@@ -1,392 +0,0 @@
-/*/////////////////////////////////////////////////////////////////////////
-///////////// The TRUE Energy Sword ///////////////////////////
-*//////////////////////////////////////////////////////////////////////////
-
-/obj/item/melee/transforming/energy/sword/cx
- name = "non-eutactic blade"
- desc = "The Non-Eutactic Blade utilizes a hardlight blade that is dynamically 'forged' on demand to create a deadly sharp edge that is unbreakable."
- icon_state = "cxsword_hilt"
- icon = 'modular_citadel/icons/eutactic/item/noneutactic.dmi'
- item_state = "cxsword"
- lefthand_file = 'modular_citadel/icons/eutactic/mob/noneutactic_left.dmi'
- righthand_file = 'modular_citadel/icons/eutactic/mob/noneutactic_right.dmi'
- force = 3
- force_on = 21
- throwforce = 5
- throwforce_on = 20
- hitsound = "swing_hit" //it starts deactivated
- hitsound_on = 'sound/weapons/nebhit.ogg'
- attack_verb_off = list("tapped", "poked")
- throw_speed = 3
- throw_range = 5
- sharpness = IS_SHARP
- embedding = list("embedded_pain_multiplier" = 6, "embed_chance" = 20, "embedded_fall_chance" = 60)
- armour_penetration = 10
- block_chance = 35
- light_color = "#37FFF7"
- actions_types = list()
-
-/obj/item/melee/transforming/energy/sword/cx/pre_altattackby(atom/A, mob/living/user, params) //checks if it can do right click memes
- altafterattack(A, user, TRUE, params)
- return TRUE
-
-/obj/item/melee/transforming/energy/sword/cx/altafterattack(atom/target, mob/living/carbon/user, proximity_flag, click_parameters) //does right click memes
- if(istype(user))
- user.visible_message("[user] points the tip of [src] at [target].", "You point the tip of [src] at [target].")
- return TRUE
-
-/obj/item/melee/transforming/energy/sword/cx/transform_weapon(mob/living/user, supress_message_text)
- active = !active //I'd use a ..() here but it'd inherit from the regular esword's proc instead, so SPAGHETTI CODE
- if(active) //also I'd need to rip out the iconstate changing bits
- force = force_on
- throwforce = throwforce_on
- hitsound = hitsound_on
- throw_speed = 4
- if(attack_verb_on.len)
- attack_verb = attack_verb_on
- w_class = w_class_on
- START_PROCESSING(SSobj, src)
- set_light(brightness_on)
- update_icon()
- else
- force = initial(force)
- throwforce = initial(throwforce)
- hitsound = initial(hitsound)
- throw_speed = initial(throw_speed)
- if(attack_verb_off.len)
- attack_verb = attack_verb_off
- w_class = initial(w_class)
- STOP_PROCESSING(SSobj, src)
- set_light(0)
- update_icon()
- transform_messages(user, supress_message_text)
- add_fingerprint(user)
- return TRUE
-
-/obj/item/melee/transforming/energy/sword/cx/transform_messages(mob/living/user, supress_message_text)
- playsound(user, active ? 'sound/weapons/nebon.ogg' : 'sound/weapons/neboff.ogg', 65, 1)
- if(!supress_message_text)
- to_chat(user, "[src] [active ? "is now active":"can now be concealed"].")
-
-/obj/item/melee/transforming/energy/sword/cx/update_icon()
- var/mutable_appearance/blade_overlay = mutable_appearance('modular_citadel/icons/eutactic/item/noneutactic.dmi', "cxsword_blade")
- var/mutable_appearance/gem_overlay = mutable_appearance('modular_citadel/icons/eutactic/item/noneutactic.dmi', "cxsword_gem")
-
- if(light_color)
- blade_overlay.color = light_color
- gem_overlay.color = light_color
-
- cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other
-
- add_overlay(gem_overlay)
-
- if(active)
- add_overlay(blade_overlay)
- if(ismob(loc))
- var/mob/M = loc
- M.update_inv_hands()
-
-/obj/item/melee/transforming/energy/sword/cx/AltClick(mob/living/user)
- if(!in_range(src, user)) //Basic checks to prevent abuse
- return
- if(user.incapacitated() || !istype(user))
- to_chat(user, "You can't do that right now!")
- return
-
- if(alert("Are you sure you want to recolor your blade?", "Confirm Repaint", "Yes", "No") == "Yes")
- var/energy_color_input = input(usr,"","Choose Energy Color",light_color) as color|null
- if(energy_color_input)
- light_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1)
- update_icon()
- update_light()
-
-/obj/item/melee/transforming/energy/sword/cx/examine(mob/user)
- ..()
- to_chat(user, "Alt-click to recolor it.")
-
-/obj/item/melee/transforming/energy/sword/cx/worn_overlays(isinhands, icon_file)
- . = ..()
- if(active)
- if(isinhands)
- var/mutable_appearance/blade_inhand = mutable_appearance(icon_file, "cxsword_blade")
- blade_inhand.color = light_color
- . += blade_inhand
-//Broken version. Not a toy, but not as strong.
-/obj/item/melee/transforming/energy/sword/cx/broken
- name = "misaligned non-eutactic blade"
- desc = "The Non-Eutactic Blade utilizes a hardlight blade that is dynamically 'forged' on demand to create a deadly sharp edge that is unbreakable. This one seems to have a damaged handle and misaligned components, causing the blade to be unstable at best"
- force_on = 15 //As strong a survival knife/bone dagger
-
-/obj/item/melee/transforming/energy/sword/cx/attackby(obj/item/W, mob/living/user, params)
- if(istype(W, /obj/item/melee/transforming/energy/sword/cx))
- if(HAS_TRAIT(W, TRAIT_NODROP) || HAS_TRAIT(src, TRAIT_NODROP))
- to_chat(user, "\the [HAS_TRAIT(src, TRAIT_NODROP) ? src : W] is stuck to your hand, you can't attach it to \the [HAS_TRAIT(src, TRAIT_NODROP) ? W : src]!")
- return
- else
- to_chat(user, "You combine the two light swords, making a single supermassive blade! You're cool.")
- new /obj/item/twohanded/dualsaber/hypereutactic(user.drop_location())
- qdel(W)
- qdel(src)
- else
- return ..()
-
-//OBLIGATORY TOY MEMES /////////////////////////////////////
-
-/obj/item/toy/sword/cx
- name = "\improper DX Non-Euplastic LightSword"
- desc = "A deluxe toy replica of an energy sword. Realistic visuals and sounds! Ages 8 and up."
- icon = 'modular_citadel/icons/eutactic/item/noneutactic.dmi'
- icon_state = "cxsword_hilt"
- item_state = "cxsword"
- lefthand_file = 'modular_citadel/icons/eutactic/mob/noneutactic_left.dmi'
- righthand_file = 'modular_citadel/icons/eutactic/mob/noneutactic_right.dmi'
- active = FALSE
- w_class = WEIGHT_CLASS_SMALL
- attack_verb = list("poked", "jabbed", "hit")
- light_color = "#37FFF7"
- var/light_brightness = 3
- actions_types = list()
-
-/obj/item/toy/sword/cx/pre_altattackby(atom/A, mob/living/user, params) //checks if it can do right click memes
- altafterattack(A, user, TRUE, params)
- return TRUE
-
-/obj/item/toy/sword/cx/altafterattack(atom/target, mob/living/carbon/user, proximity_flag, click_parameters) //does right click memes
- if(istype(user))
- user.visible_message("[user] points the tip of [src] at [target].", "You point the tip of [src] at [target].")
- return TRUE
-
-/obj/item/toy/sword/cx/attack_self(mob/user)
- active = !( active )
-
- if (active)
- to_chat(user, "You activate the holographic blade with a press of a button.")
- playsound(user, 'sound/weapons/nebon.ogg', 50, 1)
- w_class = WEIGHT_CLASS_BULKY
- attack_verb = list("slashed", "stabbed", "ravaged")
- set_light(light_brightness)
- update_icon()
-
- else
- to_chat(user, "You deactivate the holographic blade with a press of a button.")
- playsound(user, 'sound/weapons/neboff.ogg', 50, 1)
- w_class = WEIGHT_CLASS_SMALL
- attack_verb = list("poked", "jabbed", "hit")
- set_light(0)
- update_icon()
-
- add_fingerprint(user)
-
-/obj/item/toy/sword/cx/update_icon()
- var/mutable_appearance/blade_overlay = mutable_appearance('modular_citadel/icons/eutactic/item/noneutactic.dmi', "cxsword_blade")
- var/mutable_appearance/gem_overlay = mutable_appearance('modular_citadel/icons/eutactic/item/noneutactic.dmi', "cxsword_gem")
-
- if(light_color)
- blade_overlay.color = light_color
- gem_overlay.color = light_color
-
- cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other
-
- add_overlay(gem_overlay)
-
- if(active)
- add_overlay(blade_overlay)
- if(ismob(loc))
- var/mob/M = loc
- M.update_inv_hands()
-
-/obj/item/toy/sword/cx/AltClick(mob/living/user)
- if(!in_range(src, user)) //Basic checks to prevent abuse
- return
- if(user.incapacitated() || !istype(user))
- to_chat(user, "You can't do that right now!")
- return
-
- if(alert("Are you sure you want to recolor your blade?", "Confirm Repaint", "Yes", "No") == "Yes")
- var/energy_color_input = input(usr,"","Choose Energy Color",light_color) as color|null
- if(energy_color_input)
- light_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1)
- update_icon()
- update_light()
-
-/obj/item/toy/sword/cx/worn_overlays(isinhands, icon_file)
- . = ..()
- if(active)
- if(isinhands)
- var/mutable_appearance/blade_inhand = mutable_appearance(icon_file, "cxsword_blade")
- blade_inhand.color = light_color
- . += blade_inhand
-
-/obj/item/toy/sword/cx/attackby(obj/item/W, mob/living/user, params)
- if(istype(W, /obj/item/toy/sword/cx))
- if(HAS_TRAIT(W, TRAIT_NODROP) || HAS_TRAIT(src, TRAIT_NODROP))
- to_chat(user, "\the [HAS_TRAIT(src, TRAIT_NODROP) ? src : W] is stuck to your hand, you can't attach it to \the [HAS_TRAIT(src, TRAIT_NODROP) ? W : src]!")
- return
- else
- to_chat(user, "You combine the two plastic swords, making a single supermassive toy! You're fake-cool.")
- new /obj/item/twohanded/dualsaber/hypereutactic/toy(user.loc)
- qdel(W)
- qdel(src)
- else
- return ..()
-
-/obj/item/toy/sword/cx/examine(mob/user)
- ..()
- to_chat(user, "Alt-click to recolor it.")
-
-/////////////////////////////////////////////////////
-// HYPEREUTACTIC Blades /////////////////////////
-/////////////////////////////////////////////////////
-
-/obj/item/twohanded/dualsaber/hypereutactic
- icon = 'modular_citadel/icons/eutactic/item/hypereutactic.dmi'
- icon_state = "hypereutactic"
- lefthand_file = 'modular_citadel/icons/eutactic/mob/hypereutactic_left.dmi'
- righthand_file = 'modular_citadel/icons/eutactic/mob/hypereutactic_right.dmi'
- item_state = "hypereutactic"
- inhand_x_dimension = 64
- inhand_y_dimension = 64
- name = "hypereutactic blade"
- desc = "A supermassive weapon envisioned to cleave the very fabric of space and time itself in twain, the hypereutactic blade dynamically flash-forges a hypereutactic crystaline nanostructure capable of passing through most known forms of matter like a hot knife through butter."
- force = 7
- force_unwielded = 7
- force_wielded = 40
- wieldsound = 'sound/weapons/nebon.ogg'
- unwieldsound = 'sound/weapons/neboff.ogg'
- hitsound_on = 'sound/weapons/nebhit.ogg'
- slowdown_wielded = 1
- armour_penetration = 60
- light_color = "#37FFF7"
- rainbow_colors = list("#FF0000", "#FFFF00", "#00FF00", "#00FFFF", "#0000FF","#FF00FF", "#3399ff", "#ff9900", "#fb008b", "#9800ff", "#00ffa3", "#ccff00")
- attack_verb = list("attacked", "slashed", "stabbed", "sliced", "destroyed", "ripped", "devastated", "shredded")
- spinnable = FALSE
- total_mass_on = 4
-
-/obj/item/twohanded/dualsaber/hypereutactic/chaplain
- name = "\improper divine lightblade"
- desc = "A giant blade of bright and holy light, said to cut down the wicked with ease."
- force = 5
- force_unwielded = 5
- force_wielded = 20
- block_chance = 50
- armour_penetration = 0
- var/chaplain_spawnable = TRUE
- obj_flags = UNIQUE_RENAME
-
-/obj/item/twohanded/dualsaber/hypereutactic/chaplain/Initialize()
- . = ..()
- AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, null, null, FALSE)
-
-/obj/item/twohanded/dualsaber/hypereutactic/chaplain/IsReflect()
- return FALSE
-
-/obj/item/twohanded/dualsaber/hypereutactic/pre_altattackby(atom/A, mob/living/user, params) //checks if it can do right click memes
- altafterattack(A, user, TRUE, params)
- return TRUE
-
-/obj/item/twohanded/dualsaber/hypereutactic/altafterattack(atom/target, mob/living/user, proximity_flag, click_parameters) //does right click memes
- if(istype(user))
- user.visible_message("[user] points the tip of [src] at [target].", "You point the tip of [src] at [target].")
- return TRUE
-
-/obj/item/twohanded/dualsaber/hypereutactic/update_icon()
- var/mutable_appearance/blade_overlay = mutable_appearance('modular_citadel/icons/eutactic/item/hypereutactic.dmi', "hypereutactic_blade")
- var/mutable_appearance/gem_overlay = mutable_appearance('modular_citadel/icons/eutactic/item/hypereutactic.dmi', "hypereutactic_gem")
-
- if(light_color)
- blade_overlay.color = light_color
- gem_overlay.color = light_color
-
- cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other
-
- add_overlay(gem_overlay)
-
- if(wielded)
- add_overlay(blade_overlay)
- if(ismob(loc))
- var/mob/M = loc
- M.update_inv_hands()
-
- clean_blood()
-
-/obj/item/twohanded/dualsaber/hypereutactic/AltClick(mob/living/user)
- if(!user.canUseTopic(src, BE_CLOSE, FALSE) || hacked)
- return
- if(user.incapacitated() || !istype(user))
- to_chat(user, "You can't do that right now!")
- return
- if(alert("Are you sure you want to recolor your blade?", "Confirm Repaint", "Yes", "No") == "Yes")
- var/energy_color_input = input(usr,"","Choose Energy Color",light_color) as color|null
- if(!energy_color_input || !user.canUseTopic(src, BE_CLOSE, FALSE) || hacked)
- return
- light_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1)
- update_icon()
- update_light()
-
-/obj/item/twohanded/dualsaber/hypereutactic/worn_overlays(isinhands, icon_file)
- . = ..()
- if(isinhands)
- var/mutable_appearance/gem_inhand = mutable_appearance(icon_file, "hypereutactic_gem")
- gem_inhand.color = light_color
- . += gem_inhand
- if(wielded)
- var/mutable_appearance/blade_inhand = mutable_appearance(icon_file, "hypereutactic_blade")
- blade_inhand.color = light_color
- . += blade_inhand
-
-/obj/item/twohanded/dualsaber/hypereutactic/examine(mob/user)
- ..()
- if(!hacked)
- to_chat(user, "Alt-click to recolor it.")
-
-/obj/item/twohanded/dualsaber/hypereutactic/rainbow_process()
- . = ..()
- update_icon()
- update_light()
-
-////////////////// TOY VERSION /////////////////////////////
-
-/obj/item/twohanded/dualsaber/hypereutactic/toy
- name = "\improper DX Hyper-Euplastic LightSword"
- desc = "A supermassive toy envisioned to cleave the very fabric of space and time itself in twain. Realistic visuals and sounds! Ages 8 and up."
- force = 0
- throwforce = 0
- throw_speed = 3
- throw_range = 5
- force_unwielded = 0
- force_wielded = 0
- attack_verb = list("attacked", "struck", "hit")
- total_mass_on = TOTAL_MASS_TOY_SWORD
- slowdown_wielded = 0
-
-/obj/item/twohanded/dualsaber/hypereutactic/toy/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- return FALSE
-
-/obj/item/twohanded/dualsaber/hypereutactic/toy/IsReflect()//Stops it from reflecting energy projectiles
- return FALSE
-
-//////// Tatortot NEB /////////////// (same stats as regular esword)
-/obj/item/melee/transforming/energy/sword/cx/traitor
- name = "\improper Dragon's Tooth Sword"
- desc = "The Dragon's Tooth sword is a blackmarket modification of a Non-Eutactic Blade, \
- which utilizes a hardlight blade that is dynamically 'forged' on demand to create a deadly sharp edge that is unbreakable. \
- It appears to have a wooden grip and a shaved down guard."
- icon_state = "cxsword_hilt_traitor"
- force_on = 30
- armour_penetration = 50
- embedding = list("embedded_pain_multiplier" = 10, "embed_chance" = 75, "embedded_fall_chance" = 0, "embedded_impact_pain_multiplier" = 10)
- block_chance = 50
- hitsound_on = 'sound/weapons/blade1.ogg'
- light_color = "#37F0FF"
-
-/obj/item/melee/transforming/energy/sword/cx/traitor/transform_messages(mob/living/user, supress_message_text)
- playsound(user, active ? 'sound/weapons/saberon.ogg' : 'sound/weapons/saberoff.ogg', 35, 1)
- if(!supress_message_text)
- to_chat(user, "[src] [active ? "is now active":"can now be concealed"].")
-
-//RAINBOW MEMES
-
-/obj/item/twohanded/dualsaber/hypereutactic/toy/rainbow
- name = "\improper Hyper-Euclidean Reciprocating Trigonometric Zweihander"
- desc = "A custom-built toy with fancy rainbow lights built-in."
- hacked = TRUE
diff --git a/modular_citadel/code/game/objects/items/storage/firstaid.dm b/modular_citadel/code/game/objects/items/storage/firstaid.dm
index 125330a9b9..95c88ecc86 100755
--- a/modular_citadel/code/game/objects/items/storage/firstaid.dm
+++ b/modular_citadel/code/game/objects/items/storage/firstaid.dm
@@ -49,7 +49,7 @@
/obj/item/storage/hypospraykit/ComponentInitialize()
. = ..()
- GET_COMPONENT(STR, /datum/component/storage)
+ var/datum/component/storage/STR = GetComponent(/datum/component/storage)
STR.max_items = 12
STR.can_hold = typecacheof(list(
/obj/item/hypospray/mkii,
@@ -151,7 +151,7 @@
/obj/item/storage/hypospraykit/cmo/ComponentInitialize()
. = ..()
- GET_COMPONENT(STR, /datum/component/storage)
+ var/datum/component/storage/STR = GetComponent(/datum/component/storage)
STR.max_items = 6
STR.can_hold = typecacheof(list(
/obj/item/hypospray/mkii,
diff --git a/modular_citadel/code/modules/awaymissions/citadel_ghostrole_spawners.dm b/modular_citadel/code/modules/awaymissions/citadel_ghostrole_spawners.dm
deleted file mode 100644
index ccbf9a42fe..0000000000
--- a/modular_citadel/code/modules/awaymissions/citadel_ghostrole_spawners.dm
+++ /dev/null
@@ -1,73 +0,0 @@
-/obj/effect/mob_spawn/human/lavaknight
- name = "odd cryogenics pod"
- desc = "A humming cryo pod. You can barely recognise a faint glow underneath the built up ice. The machine is attempting to wake up its occupant."
- mob_name = "a displaced knight from another dimension"
- icon = 'icons/obj/machines/sleeper.dmi'
- icon_state = "sleeper"
- roundstart = FALSE
- job_description = "Cydonian Knight"
- death = FALSE
- random = TRUE
- outfit = /datum/outfit/lavaknight
- mob_species = /datum/species/human
- flavour_text = "You are a knight who conveniently has some form of retrograde amnesia. \
- You cannot remember where you came from. However, a few things remain burnt into your mind, most prominently a vow to never harm another sapient being under any circumstances unless it is hellbent on ending your life. \
- Remember: hostile creatures and such are fair game for attacking, but under no circumstances are you to attack anything capable of thought and/or speech unless it has made it its life's calling to chase you to the ends of the earth."
- assignedrole = "Cydonian Knight"
-
-/obj/effect/mob_spawn/human/lavaknight/special(mob/living/new_spawn)
- if(ishuman(new_spawn))
- var/mob/living/carbon/human/H = new_spawn
- H.dna.features["mam_ears"] = "Cat, Big" //cat people
- H.dna.features["mcolor"] = H.hair_color
- H.update_body()
-
-/obj/effect/mob_spawn/human/lavaknight/Destroy()
- new/obj/structure/showcase/machinery/oldpod/used(drop_location())
- return ..()
-
-/datum/outfit/lavaknight
- name = "Cydonian Knight"
- uniform = /obj/item/clothing/under/assistantformal
- mask = /obj/item/clothing/mask/breath
- shoes = /obj/item/clothing/shoes/sneakers/black
- r_pocket = /obj/item/melee/transforming/energy/sword/cx
- suit = /obj/item/clothing/suit/space/hardsuit/lavaknight
- suit_store = /obj/item/tank/internals/oxygen
- id = /obj/item/card/id/knight
-
-/datum/outfit/lavaknight/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
- if(visualsOnly)
- return
-
- var/obj/item/card/id/knight/W = H.wear_id
- W.assignment = "Knight"
- W.registered_name = H.real_name
- W.id_color = "#0000FF" //Regular knights get simple blue. Doesn't matter much because it's variable anyway
- W.update_label(H.real_name)
- W.update_icon()
-
-/datum/outfit/lavaknight/captain
- name ="Cydonian Knight Captain"
- l_pocket = /obj/item/twohanded/dualsaber/hypereutactic
-
-/datum/outfit/lavaknight/captain/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
- if(visualsOnly)
- return
-
- var/obj/item/card/id/knight/W = H.wear_id
- W.assignment = "Knight Captain"
- W.registered_name = H.real_name
- W.id_color = "#FFD700" //Captains get gold, duh. Doesn't matter because it's variable anyway
- W.update_label(H.real_name)
- W.update_icon()
-
-
-/obj/effect/mob_spawn/human/lavaknight/captain
- name = "odd gilded cryogenics pod"
- desc = "A humming cryo pod that appears to be gilded. You can barely recognise a faint glow underneath the built up ice. The machine is attempting to wake up its occupant."
- flavour_text = "You are a knight who conveniently has some form of retrograde amnesia. \
- You cannot remember where you came from. However, a few things remain burnt into your mind, most prominently a vow to never harm another sapient being under any circumstances unless it is hellbent on ending your life. \
- Remember: hostile creatures and such are fair game for attacking, but under no circumstances are you to attack anything capable of thought and/or speech unless it has made it its life's calling to chase you to the ends of the earth. \
- You feel a natural instict to lead, and as such, you should strive to lead your comrades to safety, and hopefully home. You also feel a burning determination to uphold your vow, as well as your fellow comrade's."
- outfit = /datum/outfit/lavaknight/captain
diff --git a/modular_citadel/code/modules/clothing/glasses/phantomthief.dm b/modular_citadel/code/modules/clothing/glasses/phantomthief.dm
index 1b13ba5dc8..5e488b9837 100644
--- a/modular_citadel/code/modules/clothing/glasses/phantomthief.dm
+++ b/modular_citadel/code/modules/clothing/glasses/phantomthief.dm
@@ -6,30 +6,28 @@
icon_state = "s-ninja"
item_state = "s-ninja"
-/obj/item/clothing/glasses/phantomthief/Initialize()
+/obj/item/clothing/glasses/phantomthief/ComponentInitialize()
. = ..()
- AddComponent(/datum/component/phantomthief)
+ AddComponent(/datum/component/wearertargeting/phantomthief)
/obj/item/clothing/glasses/phantomthief/syndicate
name = "suspicious plastic mask"
desc = "A cheap, bulky, Syndicate-branded plastic face mask. You have to break in to break out."
var/nextadrenalinepop
- var/datum/component/redirect/combattoggle_redir
-/obj/item/clothing/glasses/phantomthief/syndicate/examine(user)
+/obj/item/clothing/glasses/phantomthief/syndicate/examine(mob/user)
. = ..()
- if(combattoggle_redir)
+ if(user.get_item_by_slot(SLOT_GLASSES) == src)
if(world.time >= nextadrenalinepop)
to_chat(user, "The built-in adrenaline injector is ready for use.")
else
to_chat(user, "[DisplayTimeText(nextadrenalinepop - world.time)] left before the adrenaline injector can be used again.")
/obj/item/clothing/glasses/phantomthief/syndicate/proc/injectadrenaline(mob/user, combatmodestate)
- if(istype(user))
- if(combatmodestate && world.time >= nextadrenalinepop)
- nextadrenalinepop = world.time + 5 MINUTES
- user.reagents.add_reagent("syndicateadrenals", 5)
- user.playsound_local(user, 'modular_citadel/sound/misc/adrenalinject.ogg', 100, 0, pressure_affected = FALSE)
+ if(istype(user) && combatmodestate && world.time >= nextadrenalinepop)
+ nextadrenalinepop = world.time + 5 MINUTES
+ user.reagents.add_reagent("syndicateadrenals", 5)
+ user.playsound_local(user, 'modular_citadel/sound/misc/adrenalinject.ogg', 100, 0, pressure_affected = FALSE)
/obj/item/clothing/glasses/phantomthief/syndicate/equipped(mob/user, slot)
. = ..()
@@ -37,12 +35,10 @@
return
if(slot != SLOT_GLASSES)
return
- if(!combattoggle_redir)
- combattoggle_redir = user.AddComponent(/datum/component/redirect, list(COMSIG_COMBAT_TOGGLED = CALLBACK(src, .proc/injectadrenaline)))
+ RegisterSignal(user, COMSIG_COMBAT_TOGGLED, .proc/injectadrenaline)
/obj/item/clothing/glasses/phantomthief/syndicate/dropped(mob/user)
. = ..()
if(!istype(user))
return
- if(combattoggle_redir)
- QDEL_NULL(combattoggle_redir)
+ UnregisterSignal(user, COMSIG_COMBAT_TOGGLED)
diff --git a/modular_citadel/code/modules/clothing/spacesuits/cydonian_armor.dm b/modular_citadel/code/modules/clothing/spacesuits/cydonian_armor.dm
deleted file mode 100644
index 423bc536ac..0000000000
--- a/modular_citadel/code/modules/clothing/spacesuits/cydonian_armor.dm
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- CYDONIAN ARMOR THAT IS RGB AND STUFF WOOOOOOOOOO
-*/
-
-/obj/item/clothing/head/helmet/space/hardsuit/lavaknight
- name = "cydonian helmet"
- desc = "A helmet designed with both form and function in mind, it protects the user against physical trauma and hazardous conditions while also having polychromic light strips."
- icon = 'modular_citadel/icons/lavaknight/item/head.dmi'
- icon_state = "knight_cydonia"
- item_state = "knight_yellow"
- item_color = null
- alternate_worn_icon = 'modular_citadel/icons/lavaknight/mob/head.dmi'
- max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
- resistance_flags = FIRE_PROOF | LAVA_PROOF
- heat_protection = HEAD
- armor = list(melee = 50, bullet = 10, laser = 10, energy = 10, bomb = 50, bio = 100, rad = 50, fire = 100, acid = 100)
- brightness_on = 7
- allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator)
- var/energy_color = "#35FFF0"
- var/obj/item/clothing/suit/space/hardsuit/lavaknight/linkedsuit = null
- mutantrace_variation = NO_MUTANTRACE_VARIATION
-
-/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/New()
- ..()
- if(istype(loc, /obj/item/clothing/suit/space/hardsuit/lavaknight))
- linkedsuit = loc
-
-/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/attack_self(mob/user)
- on = !on
-
- if(on)
- set_light(brightness_on)
- else
- set_light(0)
- for(var/X in actions)
- var/datum/action/A = X
- A.UpdateButtonIcon()
-
-/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/update_icon()
- var/mutable_appearance/helm_overlay = mutable_appearance('modular_citadel/icons/lavaknight/item/head.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
-
- if(energy_color)
- helm_overlay.color = energy_color
-
- helm_overlay.plane = LIGHTING_PLANE + 1 //Magic number is used here because we have no ABOVE_LIGHTING_PLANE plane defined. Lighting plane is 15, HUD is 18
-
- cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other
-
- add_overlay(helm_overlay)
-
- emissivelights()
-
-/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/equipped(mob/user, slot)
- ..()
- if(slot == SLOT_HEAD)
- emissivelights()
-
-/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/dropped(mob/user)
- ..()
- emissivelightsoff()
-
-/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/proc/emissivelights(mob/user = usr)
- var/mutable_appearance/energy_overlay = mutable_appearance('modular_citadel/icons/lavaknight/mob/head.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
- energy_overlay.color = energy_color
- energy_overlay.plane = LIGHTING_PLANE + 1
- user.cut_overlay(energy_overlay) //honk
- user.add_overlay(energy_overlay) //honk
-
-/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/proc/emissivelightsoff(mob/user = usr)
- user.cut_overlay()
- linkedsuit.emissivelights() //HONK HONK HONK MAXIMUM SPAGHETTI
- user.regenerate_icons() //honk
-
-/obj/item/clothing/suit/space/hardsuit/lavaknight
- icon = 'modular_citadel/icons/lavaknight/item/suit.dmi'
- icon_state = "knight_cydonia"
- name = "cydonian armor"
- desc = "A suit designed with both form and function in mind, it protects the user against physical trauma and hazardous conditions while also having polychromic light strips."
- item_state = "swat_suit"
- alternate_worn_icon = 'modular_citadel/icons/lavaknight/mob/suit.dmi'
- max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
- resistance_flags = FIRE_PROOF | LAVA_PROOF
- armor = list(melee = 50, bullet = 10, laser = 10, energy = 10, bomb = 50, bio = 100, rad = 50, fire = 100, acid = 100)
- allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/storage/bag/ore, /obj/item/pickaxe)
- helmettype = /obj/item/clothing/head/helmet/space/hardsuit/lavaknight
- heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
- actions_types = list(/datum/action/item_action/toggle_helmet)
- var/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/linkedhelm
- tauric = TRUE //Citadel Add for tauric hardsuits
-
- var/energy_color = "#35FFF0"
-
-/obj/item/clothing/suit/space/hardsuit/lavaknight/New()
- ..()
- if(helmet)
- linkedhelm = helmet
- light_color = energy_color
- set_light(1)
-
-/obj/item/clothing/suit/space/hardsuit/lavaknight/Initialize()
- ..()
- update_icon()
-
-/obj/item/clothing/suit/space/hardsuit/lavaknight/update_icon()
- var/mutable_appearance/suit_overlay
-
- if(taurmode == SNEK_TAURIC)
- suit_overlay = mutable_appearance('modular_citadel/icons/mob/taur_naga.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
- else if(taurmode == PAW_TAURIC)
- suit_overlay = mutable_appearance('modular_citadel/icons/mob/taur_canine.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
- else
- suit_overlay = mutable_appearance('modular_citadel/icons/lavaknight/item/suit.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
-
- if(energy_color)
- suit_overlay.color = energy_color
-
- suit_overlay.plane = LIGHTING_PLANE + 1 //Magic number is used here because we have no ABOVE_LIGHTING_PLANE plane defined. Lighting plane is 15.
-
- cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other
-
- add_overlay(suit_overlay)
-
-/obj/item/clothing/suit/space/hardsuit/lavaknight/equipped(mob/user, slot)
- ..()
- if(slot == SLOT_WEAR_SUIT)
- emissivelights()
-
-/obj/item/clothing/suit/space/hardsuit/lavaknight/dropped(mob/user)
- ..()
- emissivelightsoff()
-
-/obj/item/clothing/suit/space/hardsuit/lavaknight/proc/emissivelights(mob/user = usr)
- var/mutable_appearance/energy_overlay
- if(taurmode == SNEK_TAURIC)
- energy_overlay = mutable_appearance('modular_citadel/icons/mob/taur_naga.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
- else if(taurmode == PAW_TAURIC)
- energy_overlay = mutable_appearance('modular_citadel/icons/mob/taur_canine.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
- else
- energy_overlay = mutable_appearance('modular_citadel/icons/lavaknight/mob/suit.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
-
- energy_overlay.color = energy_color
- energy_overlay.plane = LIGHTING_PLANE + 1
- user.cut_overlay(energy_overlay) //honk
- user.add_overlay(energy_overlay) //honk
-
-/obj/item/clothing/suit/space/hardsuit/lavaknight/proc/emissivelightsoff(mob/user = usr)
- user.cut_overlays()
- user.regenerate_icons() //honk
-
-/obj/item/clothing/suit/space/hardsuit/lavaknight/AltClick(mob/living/user)
- if(user.incapacitated() || !istype(user))
- to_chat(user, "You can't do that right now!")
- return
- if(!in_range(src, user))
- return
- if(user.incapacitated() || !istype(user) || !in_range(src, user))
- return
-
- if(alert("Are you sure you want to recolor your armor stripes?", "Confirm Repaint", "Yes", "No") == "Yes")
- var/energy_color_input = input(usr,"","Choose Energy Color",energy_color) as color|null
- if(energy_color_input)
- energy_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1)
- user.update_inv_wear_suit()
- if(linkedhelm)
- linkedhelm.energy_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1)
- user.update_inv_head()
- linkedhelm.update_icon()
- update_icon()
- user.update_inv_wear_suit()
- light_color = energy_color
- emissivelights()
- update_light()
-
-/obj/item/clothing/suit/space/hardsuit/lavaknight/examine(mob/user)
- ..()
- to_chat(user, "Alt-click to recolor it.")
\ No newline at end of file
diff --git a/modular_citadel/code/modules/events/blob.dm b/modular_citadel/code/modules/events/blob.dm
deleted file mode 100644
index e8e7106f5e..0000000000
--- a/modular_citadel/code/modules/events/blob.dm
+++ /dev/null
@@ -1,2 +0,0 @@
-/datum/round_event_control/blob
- earliest_start = 60 MINUTES
diff --git a/modular_citadel/code/modules/events/wizard/magicarp.dm b/modular_citadel/code/modules/events/wizard/magicarp.dm
deleted file mode 100644
index 10d269c698..0000000000
--- a/modular_citadel/code/modules/events/wizard/magicarp.dm
+++ /dev/null
@@ -1,2 +0,0 @@
-/mob/living/simple_animal/hostile/carp/ranged
- gold_core_spawnable = NO_SPAWN
diff --git a/modular_citadel/code/modules/jobs/dresscode_values.dm b/modular_citadel/code/modules/jobs/dresscode_values.dm
deleted file mode 100644
index 24cd5c5ac9..0000000000
--- a/modular_citadel/code/modules/jobs/dresscode_values.dm
+++ /dev/null
@@ -1,8 +0,0 @@
-//This file controls whether or not a job complies with dresscodes.
-//If a job complies with dresscodes, loadout items will not be equipped instead of the job's outfit, instead placing the items into the player's backpack.
-
-/datum/job
- var/dresscodecompliant = TRUE
-
-/datum/job/assistant
- dresscodecompliant = FALSE
\ No newline at end of file
diff --git a/modular_citadel/code/modules/jobs/job_types/captain.dm b/modular_citadel/code/modules/jobs/job_types/captain.dm
deleted file mode 100644
index 7135e86507..0000000000
--- a/modular_citadel/code/modules/jobs/job_types/captain.dm
+++ /dev/null
@@ -1,21 +0,0 @@
-/datum/job/captain
- minimal_player_age = 20
- exp_type = EXP_TYPE_COMMAND
-
-/datum/job/hop
- minimal_player_age = 20
- exp_type_department = EXP_TYPE_SERVICE
-
- access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS,
- ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS,
- ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE,
- ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_HYDROPONICS, ACCESS_LAWYER,
- ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_VAULT, ACCESS_MINING_STATION,
- ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM)
- minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS,
- ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS,
- ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE,
- ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_HYDROPONICS, ACCESS_LAWYER,
- ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_VAULT, ACCESS_MINING_STATION,
- ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM)
-
diff --git a/modular_citadel/code/modules/jobs/job_types/cargo_service.dm b/modular_citadel/code/modules/jobs/job_types/cargo_service.dm
deleted file mode 100644
index 965b554f3c..0000000000
--- a/modular_citadel/code/modules/jobs/job_types/cargo_service.dm
+++ /dev/null
@@ -1,31 +0,0 @@
-/datum/job/bartender
- access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM)
- minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM)
-
-/datum/job/qm
- department_head = list("Captain")
- supervisors = "the captain"
- req_admin_notify = 1
- minimal_player_age = 10
- exp_requirements = 180
- exp_type_department = EXP_TYPE_SUPPLY
-
- access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_KEYCARD_AUTH, ACCESS_RC_ANNOUNCE, ACCESS_SEC_DOORS, ACCESS_HEADS)
- minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_KEYCARD_AUTH, ACCESS_RC_ANNOUNCE, ACCESS_SEC_DOORS, ACCESS_HEADS)
-
-/datum/outfit/job/quartermaster
- id = /obj/item/card/id/silver
- ears = /obj/item/radio/headset/heads/qm
- backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced = 1)
-
-/datum/job/cargo_tech
- department_head = list("Quartermaster")
- supervisors = "the quartermaster"
-
- access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
-
-/datum/job/mining
- department_head = list("Quartermaster")
- supervisors = "the quartermaster"
-
- access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
\ No newline at end of file
diff --git a/modular_citadel/code/modules/jobs/job_types/engineering.dm b/modular_citadel/code/modules/jobs/job_types/engineering.dm
deleted file mode 100644
index 4d6aa4119d..0000000000
--- a/modular_citadel/code/modules/jobs/job_types/engineering.dm
+++ /dev/null
@@ -1,14 +0,0 @@
-/datum/job/chief_engineer
- minimal_player_age = 10
-
-/datum/job/engineer
- access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
- ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_ATMOSPHERICS, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM)
- minimal_access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
- ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM)
-
-/datum/job/atmos
- access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
- ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_ATMOSPHERICS, ACCESS_MINERAL_STOREROOM)
- minimal_access = list(ACCESS_ATMOSPHERICS, ACCESS_MAINT_TUNNELS, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ENGINE,
- ACCESS_ENGINE_EQUIP, ACCESS_EMERGENCY_STORAGE, ACCESS_CONSTRUCTION, ACCESS_MINERAL_STOREROOM)
diff --git a/modular_citadel/code/modules/jobs/job_types/medical.dm b/modular_citadel/code/modules/jobs/job_types/medical.dm
deleted file mode 100644
index 15841ad9d5..0000000000
--- a/modular_citadel/code/modules/jobs/job_types/medical.dm
+++ /dev/null
@@ -1,8 +0,0 @@
-/datum/job/cmo
- minimal_player_age = 10
-
-/datum/outfit/job/doctor
- backpack_contents = list(/obj/item/storage/hypospraykit/regular)
-
-/datum/outfit/job/chemist
- backpack_contents = list(/obj/item/storage/hypospraykit/regular)
diff --git a/modular_citadel/code/modules/jobs/job_types/science.dm b/modular_citadel/code/modules/jobs/job_types/science.dm
deleted file mode 100644
index 94272d24a6..0000000000
--- a/modular_citadel/code/modules/jobs/job_types/science.dm
+++ /dev/null
@@ -1,2 +0,0 @@
-/datum/job/rd
- minimal_player_age = 10
diff --git a/modular_citadel/code/modules/jobs/job_types/security.dm b/modular_citadel/code/modules/jobs/job_types/security.dm
deleted file mode 100644
index de00f2d948..0000000000
--- a/modular_citadel/code/modules/jobs/job_types/security.dm
+++ /dev/null
@@ -1,5 +0,0 @@
-/datum/job/hos
- minimal_player_age = 10
-
-/datum/outfit/job/warden
- suit_store = /obj/item/gun/energy/pumpaction/defender
diff --git a/modular_citadel/code/modules/mob/living/living.dm b/modular_citadel/code/modules/mob/living/living.dm
index ed33041d58..16bf776171 100644
--- a/modular_citadel/code/modules/mob/living/living.dm
+++ b/modular_citadel/code/modules/mob/living/living.dm
@@ -13,7 +13,7 @@
var/sprint_buffer_max = 42
var/sprint_buffer_regen_ds = 0.3 //Tiles per world.time decisecond
var/sprint_buffer_regen_last = 0 //last world.time this was regen'd for math.
- var/sprint_stamina_cost = 0.55 //stamina loss per tile while insufficient sprint buffer.
+ var/sprint_stamina_cost = 0.70 //stamina loss per tile while insufficient sprint buffer.
//---End
/mob/living/movement_delay(ignorewalk = 0)
diff --git a/modular_citadel/code/modules/mob/living/silicon/ai/vox_sounds.dm b/modular_citadel/code/modules/mob/living/silicon/ai/vox_sounds.dm
deleted file mode 100644
index b1e112aac5..0000000000
--- a/modular_citadel/code/modules/mob/living/silicon/ai/vox_sounds.dm
+++ /dev/null
@@ -1,633 +0,0 @@
-// List is required to compile the resources into the game when it loads.
-// Dynamically loading it has bad results with sounds overtaking each other, even with the wait variable.
-#ifdef AI_VOX
-
-GLOBAL_LIST_INIT(vox_sounds_male, list("," = 'modular_citadel/sound/vox/_comma.ogg',
-"." = 'modular_citadel/sound/vox/_period.ogg',
-"a" = 'modular_citadel/sound/vox/a.ogg',
-"accelerating" = 'modular_citadel/sound/vox/accelerating.ogg',
-"accelerator" = 'modular_citadel/sound/vox/accelerator.ogg',
-"accepted" = 'modular_citadel/sound/vox/accepted.ogg',
-"access" = 'modular_citadel/sound/vox/access.ogg',
-"acknowledge" = 'modular_citadel/sound/vox/acknowledge.ogg',
-"acknowledged" = 'modular_citadel/sound/vox/acknowledged.ogg',
-"acquired" = 'modular_citadel/sound/vox/acquired.ogg',
-"acquisition" = 'modular_citadel/sound/vox/acquisition.ogg',
-"across" = 'modular_citadel/sound/vox/across.ogg',
-"activate" = 'modular_citadel/sound/vox/activate.ogg',
-"activated" = 'modular_citadel/sound/vox/activated.ogg',
-"activity" = 'modular_citadel/sound/vox/activity.ogg',
-"adios" = 'modular_citadel/sound/vox/adios.ogg',
-"administration" = 'modular_citadel/sound/vox/administration.ogg',
-"advanced" = 'modular_citadel/sound/vox/advanced.ogg',
-"after" = 'modular_citadel/sound/vox/after.ogg',
-"agent" = 'modular_citadel/sound/vox/agent.ogg',
-"alarm" = 'modular_citadel/sound/vox/alarm.ogg',
-"alert" = 'modular_citadel/sound/vox/alert.ogg',
-"alien" = 'modular_citadel/sound/vox/alien.ogg',
-"aligned" = 'modular_citadel/sound/vox/aligned.ogg',
-"all" = 'modular_citadel/sound/vox/all.ogg',
-"alpha" = 'modular_citadel/sound/vox/alpha.ogg',
-"am" = 'modular_citadel/sound/vox/am.ogg',
-"amigo" = 'modular_citadel/sound/vox/amigo.ogg',
-"ammunition" = 'modular_citadel/sound/vox/ammunition.ogg',
-"an" = 'modular_citadel/sound/vox/an.ogg',
-"and" = 'modular_citadel/sound/vox/and.ogg',
-"announcement" = 'modular_citadel/sound/vox/announcement.ogg',
-"anomalous" = 'modular_citadel/sound/vox/anomalous.ogg',
-"antenna" = 'modular_citadel/sound/vox/antenna.ogg',
-"any" = 'modular_citadel/sound/vox/any.ogg',
-"apprehend" = 'modular_citadel/sound/vox/apprehend.ogg',
-"approach" = 'modular_citadel/sound/vox/approach.ogg',
-"are" = 'modular_citadel/sound/vox/are.ogg',
-"area" = 'modular_citadel/sound/vox/area.ogg',
-"arm" = 'modular_citadel/sound/vox/arm.ogg',
-"armed" = 'modular_citadel/sound/vox/armed.ogg',
-"armor" = 'modular_citadel/sound/vox/armor.ogg',
-"armory" = 'modular_citadel/sound/vox/armory.ogg',
-"arrest" = 'modular_citadel/sound/vox/arrest.ogg',
-"ass" = 'modular_citadel/sound/vox/ass.ogg',
-"at" = 'modular_citadel/sound/vox/at.ogg',
-"atomic" = 'modular_citadel/sound/vox/atomic.ogg',
-"attention" = 'modular_citadel/sound/vox/attention.ogg',
-"authorize" = 'modular_citadel/sound/vox/authorize.ogg',
-"authorized" = 'modular_citadel/sound/vox/authorized.ogg',
-"automatic" = 'modular_citadel/sound/vox/automatic.ogg',
-"away" = 'modular_citadel/sound/vox/away.ogg',
-"b" = 'modular_citadel/sound/vox/b.ogg',
-"back" = 'modular_citadel/sound/vox/back.ogg',
-"backman" = 'modular_citadel/sound/vox/backman.ogg',
-"bad" = 'modular_citadel/sound/vox/bad.ogg',
-"bag" = 'modular_citadel/sound/vox/bag.ogg',
-"bailey" = 'modular_citadel/sound/vox/bailey.ogg',
-"barracks" = 'modular_citadel/sound/vox/barracks.ogg',
-"base" = 'modular_citadel/sound/vox/base.ogg',
-"bay" = 'modular_citadel/sound/vox/bay.ogg',
-"be" = 'modular_citadel/sound/vox/be.ogg',
-"been" = 'modular_citadel/sound/vox/been.ogg',
-"before" = 'modular_citadel/sound/vox/before.ogg',
-"beyond" = 'modular_citadel/sound/vox/beyond.ogg',
-"biohazard" = 'modular_citadel/sound/vox/biohazard.ogg',
-"biological" = 'modular_citadel/sound/vox/biological.ogg',
-"birdwell" = 'modular_citadel/sound/vox/birdwell.ogg',
-"bizwarn" = 'modular_citadel/sound/vox/bizwarn.ogg',
-"black" = 'modular_citadel/sound/vox/black.ogg',
-"blast" = 'modular_citadel/sound/vox/blast.ogg',
-"blocked" = 'modular_citadel/sound/vox/blocked.ogg',
-"bloop" = 'modular_citadel/sound/vox/bloop.ogg',
-"blue" = 'modular_citadel/sound/vox/blue.ogg',
-"bottom" = 'modular_citadel/sound/vox/bottom.ogg',
-"bravo" = 'modular_citadel/sound/vox/bravo.ogg',
-"breach" = 'modular_citadel/sound/vox/breach.ogg',
-"breached" = 'modular_citadel/sound/vox/breached.ogg',
-"break" = 'modular_citadel/sound/vox/break.ogg',
-"bridge" = 'modular_citadel/sound/vox/bridge.ogg',
-"bust" = 'modular_citadel/sound/vox/bust.ogg',
-"but" = 'modular_citadel/sound/vox/but.ogg',
-"button" = 'modular_citadel/sound/vox/button.ogg',
-"buzwarn" = 'modular_citadel/sound/vox/buzwarn.ogg',
-"bypass" = 'modular_citadel/sound/vox/bypass.ogg',
-"c" = 'modular_citadel/sound/vox/c.ogg',
-"cable" = 'modular_citadel/sound/vox/cable.ogg',
-"call" = 'modular_citadel/sound/vox/call.ogg',
-"called" = 'modular_citadel/sound/vox/called.ogg',
-"canal" = 'modular_citadel/sound/vox/canal.ogg',
-"cap" = 'modular_citadel/sound/vox/cap.ogg',
-"captain" = 'modular_citadel/sound/vox/captain.ogg',
-"capture" = 'modular_citadel/sound/vox/capture.ogg',
-"captured" = 'modular_citadel/sound/vox/captured.ogg',
-"ceiling" = 'modular_citadel/sound/vox/ceiling.ogg',
-"celsius" = 'modular_citadel/sound/vox/celsius.ogg',
-"center" = 'modular_citadel/sound/vox/center.ogg',
-"centi" = 'modular_citadel/sound/vox/centi.ogg',
-"central" = 'modular_citadel/sound/vox/central.ogg',
-"chamber" = 'modular_citadel/sound/vox/chamber.ogg',
-"charlie" = 'modular_citadel/sound/vox/charlie.ogg',
-"check" = 'modular_citadel/sound/vox/check.ogg',
-"checkpoint" = 'modular_citadel/sound/vox/checkpoint.ogg',
-"chemical" = 'modular_citadel/sound/vox/chemical.ogg',
-"cleanup" = 'modular_citadel/sound/vox/cleanup.ogg',
-"clear" = 'modular_citadel/sound/vox/clear.ogg',
-"clearance" = 'modular_citadel/sound/vox/clearance.ogg',
-"close" = 'modular_citadel/sound/vox/close.ogg',
-"clown" = 'modular_citadel/sound/vox/clown.ogg',
-"code" = 'modular_citadel/sound/vox/code.ogg',
-"coded" = 'modular_citadel/sound/vox/coded.ogg',
-"collider" = 'modular_citadel/sound/vox/collider.ogg',
-"command" = 'modular_citadel/sound/vox/command.ogg',
-"communication" = 'modular_citadel/sound/vox/communication.ogg',
-"complex" = 'modular_citadel/sound/vox/complex.ogg',
-"computer" = 'modular_citadel/sound/vox/computer.ogg',
-"condition" = 'modular_citadel/sound/vox/condition.ogg',
-"containment" = 'modular_citadel/sound/vox/containment.ogg',
-"contamination" = 'modular_citadel/sound/vox/contamination.ogg',
-"control" = 'modular_citadel/sound/vox/control.ogg',
-"coolant" = 'modular_citadel/sound/vox/coolant.ogg',
-"coomer" = 'modular_citadel/sound/vox/coomer.ogg',
-"core" = 'modular_citadel/sound/vox/core.ogg',
-"correct" = 'modular_citadel/sound/vox/correct.ogg',
-"corridor" = 'modular_citadel/sound/vox/corridor.ogg',
-"crew" = 'modular_citadel/sound/vox/crew.ogg',
-"cross" = 'modular_citadel/sound/vox/cross.ogg',
-"cryogenic" = 'modular_citadel/sound/vox/cryogenic.ogg',
-"d" = 'modular_citadel/sound/vox/d.ogg',
-"dadeda" = 'modular_citadel/sound/vox/dadeda.ogg',
-"damage" = 'modular_citadel/sound/vox/damage.ogg',
-"damaged" = 'modular_citadel/sound/vox/damaged.ogg',
-"danger" = 'modular_citadel/sound/vox/danger.ogg',
-"day" = 'modular_citadel/sound/vox/day.ogg',
-"deactivated" = 'modular_citadel/sound/vox/deactivated.ogg',
-"decompression" = 'modular_citadel/sound/vox/decompression.ogg',
-"decontamination" = 'modular_citadel/sound/vox/decontamination.ogg',
-"deeoo" = 'modular_citadel/sound/vox/deeoo.ogg',
-"defense" = 'modular_citadel/sound/vox/defense.ogg',
-"degrees" = 'modular_citadel/sound/vox/degrees.ogg',
-"delta" = 'modular_citadel/sound/vox/delta.ogg',
-"denied" = 'modular_citadel/sound/vox/denied.ogg',
-"deploy" = 'modular_citadel/sound/vox/deploy.ogg',
-"deployed" = 'modular_citadel/sound/vox/deployed.ogg',
-"destroy" = 'modular_citadel/sound/vox/destroy.ogg',
-"destroyed" = 'modular_citadel/sound/vox/destroyed.ogg',
-"detain" = 'modular_citadel/sound/vox/detain.ogg',
-"detected" = 'modular_citadel/sound/vox/detected.ogg',
-"detonation" = 'modular_citadel/sound/vox/detonation.ogg',
-"device" = 'modular_citadel/sound/vox/device.ogg',
-"did" = 'modular_citadel/sound/vox/did.ogg',
-"die" = 'modular_citadel/sound/vox/die.ogg',
-"dimensional" = 'modular_citadel/sound/vox/dimensional.ogg',
-"dirt" = 'modular_citadel/sound/vox/dirt.ogg',
-"disengaged" = 'modular_citadel/sound/vox/disengaged.ogg',
-"dish" = 'modular_citadel/sound/vox/dish.ogg',
-"disposal" = 'modular_citadel/sound/vox/disposal.ogg',
-"distance" = 'modular_citadel/sound/vox/distance.ogg',
-"distortion" = 'modular_citadel/sound/vox/distortion.ogg',
-"do" = 'modular_citadel/sound/vox/do.ogg',
-"doctor" = 'modular_citadel/sound/vox/doctor.ogg',
-"doop" = 'modular_citadel/sound/vox/doop.ogg',
-"door" = 'modular_citadel/sound/vox/door.ogg',
-"down" = 'modular_citadel/sound/vox/down.ogg',
-"dual" = 'modular_citadel/sound/vox/dual.ogg',
-"duct" = 'modular_citadel/sound/vox/duct.ogg',
-"e" = 'modular_citadel/sound/vox/e.ogg',
-"east" = 'modular_citadel/sound/vox/east.ogg',
-"echo" = 'modular_citadel/sound/vox/echo.ogg',
-"ed" = 'modular_citadel/sound/vox/ed.ogg',
-"effect" = 'modular_citadel/sound/vox/effect.ogg',
-"egress" = 'modular_citadel/sound/vox/egress.ogg',
-"eight" = 'modular_citadel/sound/vox/eight.ogg',
-"eighteen" = 'modular_citadel/sound/vox/eighteen.ogg',
-"eighty" = 'modular_citadel/sound/vox/eighty.ogg',
-"electric" = 'modular_citadel/sound/vox/electric.ogg',
-"electromagnetic" = 'modular_citadel/sound/vox/electromagnetic.ogg',
-"elevator" = 'modular_citadel/sound/vox/elevator.ogg',
-"eleven" = 'modular_citadel/sound/vox/eleven.ogg',
-"eliminate" = 'modular_citadel/sound/vox/eliminate.ogg',
-"emergency" = 'modular_citadel/sound/vox/emergency.ogg',
-"enemy" = 'modular_citadel/sound/vox/enemy.ogg',
-"energy" = 'modular_citadel/sound/vox/energy.ogg',
-"engage" = 'modular_citadel/sound/vox/engage.ogg',
-"engaged" = 'modular_citadel/sound/vox/engaged.ogg',
-"engine" = 'modular_citadel/sound/vox/engine.ogg',
-"enter" = 'modular_citadel/sound/vox/enter.ogg',
-"entry" = 'modular_citadel/sound/vox/entry.ogg',
-"environment" = 'modular_citadel/sound/vox/environment.ogg',
-"error" = 'modular_citadel/sound/vox/error.ogg',
-"escape" = 'modular_citadel/sound/vox/escape.ogg',
-"evacuate" = 'modular_citadel/sound/vox/evacuate.ogg',
-"exchange" = 'modular_citadel/sound/vox/exchange.ogg',
-"exit" = 'modular_citadel/sound/vox/exit.ogg',
-"expect" = 'modular_citadel/sound/vox/expect.ogg',
-"experiment" = 'modular_citadel/sound/vox/experiment.ogg',
-"experimental" = 'modular_citadel/sound/vox/experimental.ogg',
-"explode" = 'modular_citadel/sound/vox/explode.ogg',
-"explosion" = 'modular_citadel/sound/vox/explosion.ogg',
-"exposure" = 'modular_citadel/sound/vox/exposure.ogg',
-"exterminate" = 'modular_citadel/sound/vox/exterminate.ogg',
-"extinguish" = 'modular_citadel/sound/vox/extinguish.ogg',
-"extinguisher" = 'modular_citadel/sound/vox/extinguisher.ogg',
-"extreme" = 'modular_citadel/sound/vox/extreme.ogg',
-"f" = 'modular_citadel/sound/vox/f.ogg',
-"face" = 'modular_citadel/sound/vox/face.ogg',
-"facility" = 'modular_citadel/sound/vox/facility.ogg',
-"fahrenheit" = 'modular_citadel/sound/vox/fahrenheit.ogg',
-"failed" = 'modular_citadel/sound/vox/failed.ogg',
-"failure" = 'modular_citadel/sound/vox/failure.ogg',
-"farthest" = 'modular_citadel/sound/vox/farthest.ogg',
-"fast" = 'modular_citadel/sound/vox/fast.ogg',
-"feet" = 'modular_citadel/sound/vox/feet.ogg',
-"field" = 'modular_citadel/sound/vox/field.ogg',
-"fifteen" = 'modular_citadel/sound/vox/fifteen.ogg',
-"fifth" = 'modular_citadel/sound/vox/fifth.ogg',
-"fifty" = 'modular_citadel/sound/vox/fifty.ogg',
-"final" = 'modular_citadel/sound/vox/final.ogg',
-"fine" = 'modular_citadel/sound/vox/fine.ogg',
-"fire" = 'modular_citadel/sound/vox/fire.ogg',
-"first" = 'modular_citadel/sound/vox/first.ogg',
-"five" = 'modular_citadel/sound/vox/five.ogg',
-"flag" = 'modular_citadel/sound/vox/flag.ogg',
-"flooding" = 'modular_citadel/sound/vox/flooding.ogg',
-"floor" = 'modular_citadel/sound/vox/floor.ogg',
-"fool" = 'modular_citadel/sound/vox/fool.ogg',
-"for" = 'modular_citadel/sound/vox/for.ogg',
-"forbidden" = 'modular_citadel/sound/vox/forbidden.ogg',
-"force" = 'modular_citadel/sound/vox/force.ogg',
-"forms" = 'modular_citadel/sound/vox/forms.ogg',
-"found" = 'modular_citadel/sound/vox/found.ogg',
-"four" = 'modular_citadel/sound/vox/four.ogg',
-"fourteen" = 'modular_citadel/sound/vox/fourteen.ogg',
-"fourth" = 'modular_citadel/sound/vox/fourth.ogg',
-"fourty" = 'modular_citadel/sound/vox/fourty.ogg',
-"foxtrot" = 'modular_citadel/sound/vox/foxtrot.ogg',
-"freeman" = 'modular_citadel/sound/vox/freeman.ogg',
-"freezer" = 'modular_citadel/sound/vox/freezer.ogg',
-"from" = 'modular_citadel/sound/vox/from.ogg',
-"front" = 'modular_citadel/sound/vox/front.ogg',
-"fuel" = 'modular_citadel/sound/vox/fuel.ogg',
-"g" = 'modular_citadel/sound/vox/g.ogg',
-"gay" = 'modular_citadel/sound/vox/gay.ogg',
-"get" = 'modular_citadel/sound/vox/get.ogg',
-"go" = 'modular_citadel/sound/vox/go.ogg',
-"going" = 'modular_citadel/sound/vox/going.ogg',
-"good" = 'modular_citadel/sound/vox/good.ogg',
-"goodbye" = 'modular_citadel/sound/vox/goodbye.ogg',
-"gordon" = 'modular_citadel/sound/vox/gordon.ogg',
-"got" = 'modular_citadel/sound/vox/got.ogg',
-"government" = 'modular_citadel/sound/vox/government.ogg',
-"granted" = 'modular_citadel/sound/vox/granted.ogg',
-"great" = 'modular_citadel/sound/vox/great.ogg',
-"green" = 'modular_citadel/sound/vox/green.ogg',
-"grenade" = 'modular_citadel/sound/vox/grenade.ogg',
-"guard" = 'modular_citadel/sound/vox/guard.ogg',
-"gulf" = 'modular_citadel/sound/vox/gulf.ogg',
-"gun" = 'modular_citadel/sound/vox/gun.ogg',
-"guthrie" = 'modular_citadel/sound/vox/guthrie.ogg',
-"handling" = 'modular_citadel/sound/vox/handling.ogg',
-"hangar" = 'modular_citadel/sound/vox/hangar.ogg',
-"has" = 'modular_citadel/sound/vox/has.ogg',
-"have" = 'modular_citadel/sound/vox/have.ogg',
-"hazard" = 'modular_citadel/sound/vox/hazard.ogg',
-"head" = 'modular_citadel/sound/vox/head.ogg',
-"health" = 'modular_citadel/sound/vox/health.ogg',
-"heat" = 'modular_citadel/sound/vox/heat.ogg',
-"helicopter" = 'modular_citadel/sound/vox/helicopter.ogg',
-"helium" = 'modular_citadel/sound/vox/helium.ogg',
-"hello" = 'modular_citadel/sound/vox/hello.ogg',
-"help" = 'modular_citadel/sound/vox/help.ogg',
-"here" = 'modular_citadel/sound/vox/here.ogg',
-"hide" = 'modular_citadel/sound/vox/hide.ogg',
-"high" = 'modular_citadel/sound/vox/high.ogg',
-"highest" = 'modular_citadel/sound/vox/highest.ogg',
-"hit" = 'modular_citadel/sound/vox/hit.ogg',
-"holds" = 'modular_citadel/sound/vox/holds.ogg',
-"hole" = 'modular_citadel/sound/vox/hole.ogg',
-"hostile" = 'modular_citadel/sound/vox/hostile.ogg',
-"hot" = 'modular_citadel/sound/vox/hot.ogg',
-"hotel" = 'modular_citadel/sound/vox/hotel.ogg',
-"hour" = 'modular_citadel/sound/vox/hour.ogg',
-"hours" = 'modular_citadel/sound/vox/hours.ogg',
-"hundred" = 'modular_citadel/sound/vox/hundred.ogg',
-"hydro" = 'modular_citadel/sound/vox/hydro.ogg',
-"i" = 'modular_citadel/sound/vox/i.ogg',
-"idiot" = 'modular_citadel/sound/vox/idiot.ogg',
-"illegal" = 'modular_citadel/sound/vox/illegal.ogg',
-"immediate" = 'modular_citadel/sound/vox/immediate.ogg',
-"immediately" = 'modular_citadel/sound/vox/immediately.ogg',
-"in" = 'modular_citadel/sound/vox/in.ogg',
-"inches" = 'modular_citadel/sound/vox/inches.ogg',
-"india" = 'modular_citadel/sound/vox/india.ogg',
-"ing" = 'modular_citadel/sound/vox/ing.ogg',
-"inoperative" = 'modular_citadel/sound/vox/inoperative.ogg',
-"inside" = 'modular_citadel/sound/vox/inside.ogg',
-"inspection" = 'modular_citadel/sound/vox/inspection.ogg',
-"inspector" = 'modular_citadel/sound/vox/inspector.ogg',
-"interchange" = 'modular_citadel/sound/vox/interchange.ogg',
-"intruder" = 'modular_citadel/sound/vox/intruder.ogg',
-"invallid" = 'modular_citadel/sound/vox/invallid.ogg',
-"invasion" = 'modular_citadel/sound/vox/invasion.ogg',
-"is" = 'modular_citadel/sound/vox/is.ogg',
-"it" = 'modular_citadel/sound/vox/it.ogg',
-"johnson" = 'modular_citadel/sound/vox/johnson.ogg',
-"juliet" = 'modular_citadel/sound/vox/juliet.ogg',
-"key" = 'modular_citadel/sound/vox/key.ogg',
-"kill" = 'modular_citadel/sound/vox/kill.ogg',
-"kilo" = 'modular_citadel/sound/vox/kilo.ogg',
-"kit" = 'modular_citadel/sound/vox/kit.ogg',
-"lab" = 'modular_citadel/sound/vox/lab.ogg',
-"lambda" = 'modular_citadel/sound/vox/lambda.ogg',
-"laser" = 'modular_citadel/sound/vox/laser.ogg',
-"last" = 'modular_citadel/sound/vox/last.ogg',
-"launch" = 'modular_citadel/sound/vox/launch.ogg',
-"leak" = 'modular_citadel/sound/vox/leak.ogg',
-"leave" = 'modular_citadel/sound/vox/leave.ogg',
-"left" = 'modular_citadel/sound/vox/left.ogg',
-"legal" = 'modular_citadel/sound/vox/legal.ogg',
-"level" = 'modular_citadel/sound/vox/level.ogg',
-"lever" = 'modular_citadel/sound/vox/lever.ogg',
-"lie" = 'modular_citadel/sound/vox/lie.ogg',
-"lieutenant" = 'modular_citadel/sound/vox/lieutenant.ogg',
-"life" = 'modular_citadel/sound/vox/life.ogg',
-"light" = 'modular_citadel/sound/vox/light.ogg',
-"lima" = 'modular_citadel/sound/vox/lima.ogg',
-"liquid" = 'modular_citadel/sound/vox/liquid.ogg',
-"loading" = 'modular_citadel/sound/vox/loading.ogg',
-"locate" = 'modular_citadel/sound/vox/locate.ogg',
-"located" = 'modular_citadel/sound/vox/located.ogg',
-"location" = 'modular_citadel/sound/vox/location.ogg',
-"lock" = 'modular_citadel/sound/vox/lock.ogg',
-"locked" = 'modular_citadel/sound/vox/locked.ogg',
-"locker" = 'modular_citadel/sound/vox/locker.ogg',
-"lockout" = 'modular_citadel/sound/vox/lockout.ogg',
-"lower" = 'modular_citadel/sound/vox/lower.ogg',
-"lowest" = 'modular_citadel/sound/vox/lowest.ogg',
-"magnetic" = 'modular_citadel/sound/vox/magnetic.ogg',
-"main" = 'modular_citadel/sound/vox/main.ogg',
-"maintenance" = 'modular_citadel/sound/vox/maintenance.ogg',
-"malfunction" = 'modular_citadel/sound/vox/malfunction.ogg',
-"man" = 'modular_citadel/sound/vox/man.ogg',
-"mass" = 'modular_citadel/sound/vox/mass.ogg',
-"materials" = 'modular_citadel/sound/vox/materials.ogg',
-"maximum" = 'modular_citadel/sound/vox/maximum.ogg',
-"may" = 'modular_citadel/sound/vox/may.ogg',
-"med" = 'modular_citadel/sound/vox/med.ogg',
-"medical" = 'modular_citadel/sound/vox/medical.ogg',
-"men" = 'modular_citadel/sound/vox/men.ogg',
-"mercy" = 'modular_citadel/sound/vox/mercy.ogg',
-"mesa" = 'modular_citadel/sound/vox/mesa.ogg',
-"message" = 'modular_citadel/sound/vox/message.ogg',
-"meter" = 'modular_citadel/sound/vox/meter.ogg',
-"micro" = 'modular_citadel/sound/vox/micro.ogg',
-"middle" = 'modular_citadel/sound/vox/middle.ogg',
-"mike" = 'modular_citadel/sound/vox/mike.ogg',
-"miles" = 'modular_citadel/sound/vox/miles.ogg',
-"military" = 'modular_citadel/sound/vox/military.ogg',
-"milli" = 'modular_citadel/sound/vox/milli.ogg',
-"million" = 'modular_citadel/sound/vox/million.ogg',
-"minefield" = 'modular_citadel/sound/vox/minefield.ogg',
-"minimum" = 'modular_citadel/sound/vox/minimum.ogg',
-"minutes" = 'modular_citadel/sound/vox/minutes.ogg',
-"mister" = 'modular_citadel/sound/vox/mister.ogg',
-"mode" = 'modular_citadel/sound/vox/mode.ogg',
-"motor" = 'modular_citadel/sound/vox/motor.ogg',
-"motorpool" = 'modular_citadel/sound/vox/motorpool.ogg',
-"move" = 'modular_citadel/sound/vox/move.ogg',
-"must" = 'modular_citadel/sound/vox/must.ogg',
-"nearest" = 'modular_citadel/sound/vox/nearest.ogg',
-"nice" = 'modular_citadel/sound/vox/nice.ogg',
-"nine" = 'modular_citadel/sound/vox/nine.ogg',
-"nineteen" = 'modular_citadel/sound/vox/nineteen.ogg',
-"ninety" = 'modular_citadel/sound/vox/ninety.ogg',
-"no" = 'modular_citadel/sound/vox/no.ogg',
-"nominal" = 'modular_citadel/sound/vox/nominal.ogg',
-"north" = 'modular_citadel/sound/vox/north.ogg',
-"not" = 'modular_citadel/sound/vox/not.ogg',
-"november" = 'modular_citadel/sound/vox/november.ogg',
-"now" = 'modular_citadel/sound/vox/now.ogg',
-"number" = 'modular_citadel/sound/vox/number.ogg',
-"objective" = 'modular_citadel/sound/vox/objective.ogg',
-"observation" = 'modular_citadel/sound/vox/observation.ogg',
-"of" = 'modular_citadel/sound/vox/of.ogg',
-"officer" = 'modular_citadel/sound/vox/officer.ogg',
-"ok" = 'modular_citadel/sound/vox/ok.ogg',
-"on" = 'modular_citadel/sound/vox/on.ogg',
-"one" = 'modular_citadel/sound/vox/one.ogg',
-"open" = 'modular_citadel/sound/vox/open.ogg',
-"operating" = 'modular_citadel/sound/vox/operating.ogg',
-"operations" = 'modular_citadel/sound/vox/operations.ogg',
-"operative" = 'modular_citadel/sound/vox/operative.ogg',
-"option" = 'modular_citadel/sound/vox/option.ogg',
-"order" = 'modular_citadel/sound/vox/order.ogg',
-"organic" = 'modular_citadel/sound/vox/organic.ogg',
-"oscar" = 'modular_citadel/sound/vox/oscar.ogg',
-"out" = 'modular_citadel/sound/vox/out.ogg',
-"outside" = 'modular_citadel/sound/vox/outside.ogg',
-"over" = 'modular_citadel/sound/vox/over.ogg',
-"overload" = 'modular_citadel/sound/vox/overload.ogg',
-"override" = 'modular_citadel/sound/vox/override.ogg',
-"pacify" = 'modular_citadel/sound/vox/pacify.ogg',
-"pain" = 'modular_citadel/sound/vox/pain.ogg',
-"pal" = 'modular_citadel/sound/vox/pal.ogg',
-"panel" = 'modular_citadel/sound/vox/panel.ogg',
-"percent" = 'modular_citadel/sound/vox/percent.ogg',
-"perimeter" = 'modular_citadel/sound/vox/perimeter.ogg',
-"permitted" = 'modular_citadel/sound/vox/permitted.ogg',
-"personnel" = 'modular_citadel/sound/vox/personnel.ogg',
-"pipe" = 'modular_citadel/sound/vox/pipe.ogg',
-"plant" = 'modular_citadel/sound/vox/plant.ogg',
-"platform" = 'modular_citadel/sound/vox/platform.ogg',
-"please" = 'modular_citadel/sound/vox/please.ogg',
-"point" = 'modular_citadel/sound/vox/point.ogg',
-"portal" = 'modular_citadel/sound/vox/portal.ogg',
-"power" = 'modular_citadel/sound/vox/power.ogg',
-"presence" = 'modular_citadel/sound/vox/presence.ogg',
-"press" = 'modular_citadel/sound/vox/press.ogg',
-"primary" = 'modular_citadel/sound/vox/primary.ogg',
-"proceed" = 'modular_citadel/sound/vox/proceed.ogg',
-"processing" = 'modular_citadel/sound/vox/processing.ogg',
-"progress" = 'modular_citadel/sound/vox/progress.ogg',
-"proper" = 'modular_citadel/sound/vox/proper.ogg',
-"propulsion" = 'modular_citadel/sound/vox/propulsion.ogg',
-"prosecute" = 'modular_citadel/sound/vox/prosecute.ogg',
-"protective" = 'modular_citadel/sound/vox/protective.ogg',
-"push" = 'modular_citadel/sound/vox/push.ogg',
-"quantum" = 'modular_citadel/sound/vox/quantum.ogg',
-"quebec" = 'modular_citadel/sound/vox/quebec.ogg',
-"question" = 'modular_citadel/sound/vox/question.ogg',
-"questioning" = 'modular_citadel/sound/vox/questioning.ogg',
-"quick" = 'modular_citadel/sound/vox/quick.ogg',
-"quit" = 'modular_citadel/sound/vox/quit.ogg',
-"radiation" = 'modular_citadel/sound/vox/radiation.ogg',
-"radioactive" = 'modular_citadel/sound/vox/radioactive.ogg',
-"rads" = 'modular_citadel/sound/vox/rads.ogg',
-"rapid" = 'modular_citadel/sound/vox/rapid.ogg',
-"reach" = 'modular_citadel/sound/vox/reach.ogg',
-"reached" = 'modular_citadel/sound/vox/reached.ogg',
-"reactor" = 'modular_citadel/sound/vox/reactor.ogg',
-"red" = 'modular_citadel/sound/vox/red.ogg',
-"relay" = 'modular_citadel/sound/vox/relay.ogg',
-"released" = 'modular_citadel/sound/vox/released.ogg',
-"remaining" = 'modular_citadel/sound/vox/remaining.ogg',
-"renegade" = 'modular_citadel/sound/vox/renegade.ogg',
-"repair" = 'modular_citadel/sound/vox/repair.ogg',
-"report" = 'modular_citadel/sound/vox/report.ogg',
-"reports" = 'modular_citadel/sound/vox/reports.ogg',
-"required" = 'modular_citadel/sound/vox/required.ogg',
-"research" = 'modular_citadel/sound/vox/research.ogg',
-"reset" = 'modular_citadel/sound/vox/reset.ogg',
-"resevoir" = 'modular_citadel/sound/vox/resevoir.ogg',
-"resistance" = 'modular_citadel/sound/vox/resistance.ogg',
-"returned" = 'modular_citadel/sound/vox/returned.ogg',
-"right" = 'modular_citadel/sound/vox/right.ogg',
-"rocket" = 'modular_citadel/sound/vox/rocket.ogg',
-"roger" = 'modular_citadel/sound/vox/roger.ogg',
-"romeo" = 'modular_citadel/sound/vox/romeo.ogg',
-"room" = 'modular_citadel/sound/vox/room.ogg',
-"round" = 'modular_citadel/sound/vox/round.ogg',
-"run" = 'modular_citadel/sound/vox/run.ogg',
-"safe" = 'modular_citadel/sound/vox/safe.ogg',
-"safety" = 'modular_citadel/sound/vox/safety.ogg',
-"sargeant" = 'modular_citadel/sound/vox/sargeant.ogg',
-"satellite" = 'modular_citadel/sound/vox/satellite.ogg',
-"save" = 'modular_citadel/sound/vox/save.ogg',
-"science" = 'modular_citadel/sound/vox/science.ogg',
-"scores" = 'modular_citadel/sound/vox/scores.ogg',
-"scream" = 'modular_citadel/sound/vox/scream.ogg',
-"screen" = 'modular_citadel/sound/vox/screen.ogg',
-"search" = 'modular_citadel/sound/vox/search.ogg',
-"second" = 'modular_citadel/sound/vox/second.ogg',
-"secondary" = 'modular_citadel/sound/vox/secondary.ogg',
-"seconds" = 'modular_citadel/sound/vox/seconds.ogg',
-"sector" = 'modular_citadel/sound/vox/sector.ogg',
-"secure" = 'modular_citadel/sound/vox/secure.ogg',
-"secured" = 'modular_citadel/sound/vox/secured.ogg',
-"security" = 'modular_citadel/sound/vox/security.ogg',
-"select" = 'modular_citadel/sound/vox/select.ogg',
-"selected" = 'modular_citadel/sound/vox/selected.ogg',
-"service" = 'modular_citadel/sound/vox/service.ogg',
-"seven" = 'modular_citadel/sound/vox/seven.ogg',
-"seventeen" = 'modular_citadel/sound/vox/seventeen.ogg',
-"seventy" = 'modular_citadel/sound/vox/seventy.ogg',
-"severe" = 'modular_citadel/sound/vox/severe.ogg',
-"sewage" = 'modular_citadel/sound/vox/sewage.ogg',
-"sewer" = 'modular_citadel/sound/vox/sewer.ogg',
-"shield" = 'modular_citadel/sound/vox/shield.ogg',
-"shipment" = 'modular_citadel/sound/vox/shipment.ogg',
-"shock" = 'modular_citadel/sound/vox/shock.ogg',
-"shoot" = 'modular_citadel/sound/vox/shoot.ogg',
-"shower" = 'modular_citadel/sound/vox/shower.ogg',
-"shut" = 'modular_citadel/sound/vox/shut.ogg',
-"side" = 'modular_citadel/sound/vox/side.ogg',
-"sierra" = 'modular_citadel/sound/vox/sierra.ogg',
-"sight" = 'modular_citadel/sound/vox/sight.ogg',
-"silo" = 'modular_citadel/sound/vox/silo.ogg',
-"six" = 'modular_citadel/sound/vox/six.ogg',
-"sixteen" = 'modular_citadel/sound/vox/sixteen.ogg',
-"sixty" = 'modular_citadel/sound/vox/sixty.ogg',
-"slime" = 'modular_citadel/sound/vox/slime.ogg',
-"slow" = 'modular_citadel/sound/vox/slow.ogg',
-"soldier" = 'modular_citadel/sound/vox/soldier.ogg',
-"some" = 'modular_citadel/sound/vox/some.ogg',
-"someone" = 'modular_citadel/sound/vox/someone.ogg',
-"something" = 'modular_citadel/sound/vox/something.ogg',
-"son" = 'modular_citadel/sound/vox/son.ogg',
-"sorry" = 'modular_citadel/sound/vox/sorry.ogg',
-"south" = 'modular_citadel/sound/vox/south.ogg',
-"squad" = 'modular_citadel/sound/vox/squad.ogg',
-"square" = 'modular_citadel/sound/vox/square.ogg',
-"stairway" = 'modular_citadel/sound/vox/stairway.ogg',
-"status" = 'modular_citadel/sound/vox/status.ogg',
-"sterile" = 'modular_citadel/sound/vox/sterile.ogg',
-"sterilization" = 'modular_citadel/sound/vox/sterilization.ogg',
-"stolen" = 'modular_citadel/sound/vox/stolen.ogg',
-"storage" = 'modular_citadel/sound/vox/storage.ogg',
-"sub" = 'modular_citadel/sound/vox/sub.ogg',
-"subsurface" = 'modular_citadel/sound/vox/subsurface.ogg',
-"sudden" = 'modular_citadel/sound/vox/sudden.ogg',
-"suit" = 'modular_citadel/sound/vox/suit.ogg',
-"superconducting" = 'modular_citadel/sound/vox/superconducting.ogg',
-"supercooled" = 'modular_citadel/sound/vox/supercooled.ogg',
-"supply" = 'modular_citadel/sound/vox/supply.ogg',
-"surface" = 'modular_citadel/sound/vox/surface.ogg',
-"surrender" = 'modular_citadel/sound/vox/surrender.ogg',
-"surround" = 'modular_citadel/sound/vox/surround.ogg',
-"surrounded" = 'modular_citadel/sound/vox/surrounded.ogg',
-"switch" = 'modular_citadel/sound/vox/switch.ogg',
-"system" = 'modular_citadel/sound/vox/system.ogg',
-"systems" = 'modular_citadel/sound/vox/systems.ogg',
-"tactical" = 'modular_citadel/sound/vox/tactical.ogg',
-"take" = 'modular_citadel/sound/vox/take.ogg',
-"talk" = 'modular_citadel/sound/vox/talk.ogg',
-"tango" = 'modular_citadel/sound/vox/tango.ogg',
-"tank" = 'modular_citadel/sound/vox/tank.ogg',
-"target" = 'modular_citadel/sound/vox/target.ogg',
-"team" = 'modular_citadel/sound/vox/team.ogg',
-"temperature" = 'modular_citadel/sound/vox/temperature.ogg',
-"temporal" = 'modular_citadel/sound/vox/temporal.ogg',
-"ten" = 'modular_citadel/sound/vox/ten.ogg',
-"terminal" = 'modular_citadel/sound/vox/terminal.ogg',
-"terminated" = 'modular_citadel/sound/vox/terminated.ogg',
-"termination" = 'modular_citadel/sound/vox/termination.ogg',
-"test" = 'modular_citadel/sound/vox/test.ogg',
-"that" = 'modular_citadel/sound/vox/that.ogg',
-"the" = 'modular_citadel/sound/vox/the.ogg',
-"then" = 'modular_citadel/sound/vox/then.ogg',
-"there" = 'modular_citadel/sound/vox/there.ogg',
-"third" = 'modular_citadel/sound/vox/third.ogg',
-"thirteen" = 'modular_citadel/sound/vox/thirteen.ogg',
-"thirty" = 'modular_citadel/sound/vox/thirty.ogg',
-"this" = 'modular_citadel/sound/vox/this.ogg',
-"those" = 'modular_citadel/sound/vox/those.ogg',
-"thousand" = 'modular_citadel/sound/vox/thousand.ogg',
-"threat" = 'modular_citadel/sound/vox/threat.ogg',
-"three" = 'modular_citadel/sound/vox/three.ogg',
-"through" = 'modular_citadel/sound/vox/through.ogg',
-"time" = 'modular_citadel/sound/vox/time.ogg',
-"to" = 'modular_citadel/sound/vox/to.ogg',
-"top" = 'modular_citadel/sound/vox/top.ogg',
-"topside" = 'modular_citadel/sound/vox/topside.ogg',
-"touch" = 'modular_citadel/sound/vox/touch.ogg',
-"towards" = 'modular_citadel/sound/vox/towards.ogg',
-"track" = 'modular_citadel/sound/vox/track.ogg',
-"train" = 'modular_citadel/sound/vox/train.ogg',
-"transportation" = 'modular_citadel/sound/vox/transportation.ogg',
-"truck" = 'modular_citadel/sound/vox/truck.ogg',
-"tunnel" = 'modular_citadel/sound/vox/tunnel.ogg',
-"turn" = 'modular_citadel/sound/vox/turn.ogg',
-"turret" = 'modular_citadel/sound/vox/turret.ogg',
-"twelve" = 'modular_citadel/sound/vox/twelve.ogg',
-"twenty" = 'modular_citadel/sound/vox/twenty.ogg',
-"two" = 'modular_citadel/sound/vox/two.ogg',
-"unauthorized" = 'modular_citadel/sound/vox/unauthorized.ogg',
-"under" = 'modular_citadel/sound/vox/under.ogg',
-"uniform" = 'modular_citadel/sound/vox/uniform.ogg',
-"unlocked" = 'modular_citadel/sound/vox/unlocked.ogg',
-"until" = 'modular_citadel/sound/vox/until.ogg',
-"up" = 'modular_citadel/sound/vox/up.ogg',
-"upper" = 'modular_citadel/sound/vox/upper.ogg',
-"uranium" = 'modular_citadel/sound/vox/uranium.ogg',
-"us" = 'modular_citadel/sound/vox/us.ogg',
-"usa" = 'modular_citadel/sound/vox/usa.ogg',
-"use" = 'modular_citadel/sound/vox/use.ogg',
-"used" = 'modular_citadel/sound/vox/used.ogg',
-"user" = 'modular_citadel/sound/vox/user.ogg',
-"vacate" = 'modular_citadel/sound/vox/vacate.ogg',
-"valid" = 'modular_citadel/sound/vox/valid.ogg',
-"vapor" = 'modular_citadel/sound/vox/vapor.ogg',
-"vent" = 'modular_citadel/sound/vox/vent.ogg',
-"ventillation" = 'modular_citadel/sound/vox/ventillation.ogg',
-"victor" = 'modular_citadel/sound/vox/victor.ogg',
-"violated" = 'modular_citadel/sound/vox/violated.ogg',
-"violation" = 'modular_citadel/sound/vox/violation.ogg',
-"voltage" = 'modular_citadel/sound/vox/voltage.ogg',
-"vox_login" = 'modular_citadel/sound/vox/vox_login.ogg',
-"walk" = 'modular_citadel/sound/vox/walk.ogg',
-"wall" = 'modular_citadel/sound/vox/wall.ogg',
-"want" = 'modular_citadel/sound/vox/want.ogg',
-"wanted" = 'modular_citadel/sound/vox/wanted.ogg',
-"warm" = 'modular_citadel/sound/vox/warm.ogg',
-"warn" = 'modular_citadel/sound/vox/warn.ogg',
-"warning" = 'modular_citadel/sound/vox/warning.ogg',
-"waste" = 'modular_citadel/sound/vox/waste.ogg',
-"water" = 'modular_citadel/sound/vox/water.ogg',
-"we" = 'modular_citadel/sound/vox/we.ogg',
-"weapon" = 'modular_citadel/sound/vox/weapon.ogg',
-"west" = 'modular_citadel/sound/vox/west.ogg',
-"whiskey" = 'modular_citadel/sound/vox/whiskey.ogg',
-"white" = 'modular_citadel/sound/vox/white.ogg',
-"wilco" = 'modular_citadel/sound/vox/wilco.ogg',
-"will" = 'modular_citadel/sound/vox/will.ogg',
-"with" = 'modular_citadel/sound/vox/with.ogg',
-"without" = 'modular_citadel/sound/vox/without.ogg',
-"woop" = 'modular_citadel/sound/vox/woop.ogg',
-"xeno" = 'modular_citadel/sound/vox/xeno.ogg',
-"yankee" = 'modular_citadel/sound/vox/yankee.ogg',
-"yards" = 'modular_citadel/sound/vox/yards.ogg',
-"year" = 'modular_citadel/sound/vox/year.ogg',
-"yellow" = 'modular_citadel/sound/vox/yellow.ogg',
-"yes" = 'modular_citadel/sound/vox/yes.ogg',
-"you" = 'modular_citadel/sound/vox/you.ogg',
-"your" = 'modular_citadel/sound/vox/your.ogg',
-"yourself" = 'modular_citadel/sound/vox/yourself.ogg',
-"zero" = 'modular_citadel/sound/vox/zero.ogg',
-"zone" = 'modular_citadel/sound/vox/zone.ogg',
-"zulu" = 'modular_citadel/sound/vox/zulu.ogg',))
-#endif
\ No newline at end of file
diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm
index de3f43f8ee..a458e909f3 100644
--- a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm
+++ b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm
@@ -143,7 +143,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
/obj/item/storage/bag/borgdelivery/ComponentInitialize()
. = ..()
- GET_COMPONENT(STR, /datum/component/storage)
+ var/datum/component/storage/STR = GetComponent(/datum/component/storage)
STR.max_w_class = WEIGHT_CLASS_BULKY
STR.max_combined_w_class = 5
STR.max_items = 1
diff --git a/modular_citadel/code/modules/mob/mob.dm b/modular_citadel/code/modules/mob/mob.dm
index bf6987ab81..aa0e6b5828 100644
--- a/modular_citadel/code/modules/mob/mob.dm
+++ b/modular_citadel/code/modules/mob/mob.dm
@@ -3,9 +3,11 @@
/mob/say_mod(input, message_mode)
var/customsayverb = findtext(input, "*")
- if(customsayverb)
+ if(customsayverb && message_mode != MODE_WHISPER_CRIT)
+ message_mode = MODE_CUSTOM_SAY
return lowertext(copytext(input, 1, customsayverb))
- . = ..()
+ else
+ return ..()
/atom/movable/proc/attach_spans(input, list/spans)
var/customsayverb = findtext(input, "*")
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
index 4acfda0573..edb4bedfed 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
@@ -182,7 +182,7 @@
/datum/reagent/fermi/nanite_b_gone/on_mob_life(mob/living/carbon/C)
//var/component/nanites/N = M.GetComponent(/datum/component/nanites)
- GET_COMPONENT_FROM(N, /datum/component/nanites, C)
+ var/datum/component/nanites/N = C.GetComponent(/datum/component/nanites)
if(isnull(N))
return ..()
N.nanite_volume = -purity//0.5 seems to be the default to me, so it'll neuter them.
@@ -190,7 +190,7 @@
/datum/reagent/fermi/nanite_b_gone/overdose_process(mob/living/carbon/C)
//var/component/nanites/N = M.GetComponent(/datum/component/nanites)
- GET_COMPONENT_FROM(N, /datum/component/nanites, C)
+ var/datum/component/nanites/N = C.GetComponent(/datum/component/nanites)
if(prob(5))
to_chat(C, "The residual voltage from the nanites causes you to seize up!")
C.electrocute_act(10, (get_turf(C)), 1, FALSE, FALSE, FALSE, TRUE)
diff --git a/modular_citadel/code/modules/reagents/objects/items.dm b/modular_citadel/code/modules/reagents/objects/items.dm
index 02f2db7c1e..6221bdde18 100644
--- a/modular_citadel/code/modules/reagents/objects/items.dm
+++ b/modular_citadel/code/modules/reagents/objects/items.dm
@@ -1,12 +1,12 @@
/obj/item/fermichem/pHbooklet
- name = "pH indicator booklet"
- desc = "A booklet containing paper soaked in universal indicator."
- icon_state = "pHbooklet"
- icon = 'modular_citadel/icons/obj/FermiChem.dmi'
- item_flags = NOBLUDGEON
- var/numberOfPages = 50
- resistance_flags = FLAMMABLE
- w_class = WEIGHT_CLASS_TINY
+ name = "pH indicator booklet"
+ desc = "A booklet containing paper soaked in universal indicator."
+ icon_state = "pHbooklet"
+ icon = 'icons/obj/chemical.dmi'
+ item_flags = NOBLUDGEON
+ var/numberOfPages = 50
+ resistance_flags = FLAMMABLE
+ w_class = WEIGHT_CLASS_TINY
//A little janky with pockets
/obj/item/fermichem/pHbooklet/attack_hand(mob/user)
@@ -29,7 +29,7 @@
to_chat(user, "[src] is empty!")
add_fingerprint(user)
return
- . = ..()
+ . = ..()
if(. & COMPONENT_NO_INTERACT)
return
var/I = user.get_active_held_item()
@@ -37,86 +37,86 @@
user.put_in_active_hand(src)
/obj/item/fermichem/pHbooklet/MouseDrop()
- var/mob/living/user = usr
- if(numberOfPages >= 1)
- var/obj/item/fermichem/pHpaper/P = new /obj/item/fermichem/pHpaper
- P.add_fingerprint(user)
- P.forceMove(user)
- user.put_in_active_hand(P)
- to_chat(user, "You take [P] out of \the [src].")
- numberOfPages--
- playsound(user.loc, 'sound/items/poster_ripped.ogg', 50, 1)
- add_fingerprint(user)
- if(numberOfPages == 0)
- icon_state = "pHbookletEmpty"
- return
- else
- to_chat(user, "[src] is empty!")
- add_fingerprint(user)
- return
- ..()
+ var/mob/living/user = usr
+ if(numberOfPages >= 1)
+ var/obj/item/fermichem/pHpaper/P = new /obj/item/fermichem/pHpaper
+ P.add_fingerprint(user)
+ P.forceMove(user)
+ user.put_in_active_hand(P)
+ to_chat(user, "You take [P] out of \the [src].")
+ numberOfPages--
+ playsound(user.loc, 'sound/items/poster_ripped.ogg', 50, 1)
+ add_fingerprint(user)
+ if(numberOfPages == 0)
+ icon_state = "pHbookletEmpty"
+ return
+ else
+ to_chat(user, "[src] is empty!")
+ add_fingerprint(user)
+ return
+ ..()
/obj/item/fermichem/pHpaper
- name = "pH indicator strip"
- desc = "A piece of paper that will change colour depending on the pH of a solution."
- icon_state = "pHpaper"
- icon = 'modular_citadel/icons/obj/FermiChem.dmi'
- item_flags = NOBLUDGEON
- color = "#f5c352"
- var/used = FALSE
- resistance_flags = FLAMMABLE
- w_class = WEIGHT_CLASS_TINY
+ name = "pH indicator strip"
+ desc = "A piece of paper that will change colour depending on the pH of a solution."
+ icon_state = "pHpaper"
+ icon = 'icons/obj/chemical.dmi'
+ item_flags = NOBLUDGEON
+ color = "#f5c352"
+ var/used = FALSE
+ resistance_flags = FLAMMABLE
+ w_class = WEIGHT_CLASS_TINY
/obj/item/fermichem/pHpaper/afterattack(obj/item/reagent_containers/cont, mob/user, proximity)
- if(!istype(cont))
- return
- if(used == TRUE)
- to_chat(user, "[user] has already been used!")
- return
- if(!LAZYLEN(cont.reagents.reagent_list))
- return
- switch(round(cont.reagents.pH, 1))
- if(14 to INFINITY)
- color = "#462c83"
- if(13 to 14)
- color = "#63459b"
- if(12 to 13)
- color = "#5a51a2"
- if(11 to 12)
- color = "#3853a4"
- if(10 to 11)
- color = "#3f93cf"
- if(9 to 10)
- color = "#0bb9b7"
- if(8 to 9)
- color = "#23b36e"
- if(7 to 8)
- color = "#3aa651"
- if(6 to 7)
- color = "#4cb849"
- if(5 to 6)
- color = "#b5d335"
- if(4 to 5)
- color = "#f7ec1e"
- if(3 to 4)
- color = "#fbc314"
- if(2 to 3)
- color = "#f26724"
- if(1 to 2)
- color = "#ef1d26"
- if(-INFINITY to 1)
- color = "#c6040c"
- desc += " The paper looks to be around a pH of [round(cont.reagents.pH, 1)]"
- used = TRUE
+ if(!istype(cont))
+ return
+ if(used == TRUE)
+ to_chat(user, "[user] has already been used!")
+ return
+ if(!LAZYLEN(cont.reagents.reagent_list))
+ return
+ switch(round(cont.reagents.pH, 1))
+ if(14 to INFINITY)
+ color = "#462c83"
+ if(13 to 14)
+ color = "#63459b"
+ if(12 to 13)
+ color = "#5a51a2"
+ if(11 to 12)
+ color = "#3853a4"
+ if(10 to 11)
+ color = "#3f93cf"
+ if(9 to 10)
+ color = "#0bb9b7"
+ if(8 to 9)
+ color = "#23b36e"
+ if(7 to 8)
+ color = "#3aa651"
+ if(6 to 7)
+ color = "#4cb849"
+ if(5 to 6)
+ color = "#b5d335"
+ if(4 to 5)
+ color = "#f7ec1e"
+ if(3 to 4)
+ color = "#fbc314"
+ if(2 to 3)
+ color = "#f26724"
+ if(1 to 2)
+ color = "#ef1d26"
+ if(-INFINITY to 1)
+ color = "#c6040c"
+ desc += " The paper looks to be around a pH of [round(cont.reagents.pH, 1)]"
+ used = TRUE
/obj/item/fermichem/pHmeter
- name = "Chemistry Analyser"
- desc = "A a electrode attached to a small circuit box that will tell you the pH of a solution. The screen currently displays nothing."
- icon_state = "pHmeter"
- icon = 'modular_citadel/icons/obj/FermiChem.dmi'
- resistance_flags = FLAMMABLE
- w_class = WEIGHT_CLASS_TINY
- var/scanmode = 1
+ name = "Chemistry Analyser"
+ desc = "A a electrode attached to a small circuit box that will tell you the pH of a solution. The screen currently displays nothing."
+ icon_state = "pHmeter"
+ icon = 'icons/obj/chemical.dmi'
+ resistance_flags = FLAMMABLE
+ w_class = WEIGHT_CLASS_TINY
+ var/scanmode = 1
/obj/item/fermichem/pHmeter/attack_self(mob/user)
if(!scanmode)
@@ -127,21 +127,21 @@
scanmode = 0
/obj/item/fermichem/pHmeter/afterattack(atom/A, mob/user, proximity)
- . = ..()
- if(!istype(A, /obj/item/reagent_containers))
- return
- var/obj/item/reagent_containers/cont = A
- if(LAZYLEN(cont.reagents.reagent_list) == null)
- return
- var/out_message
- to_chat(user, "The chemistry meter beeps and displays:")
- out_message += "Total volume: [round(cont.volume, 0.01)] Total pH: [round(cont.reagents.pH, 0.1)]\n"
- if(cont.reagents.fermiIsReacting)
- out_message += "A reaction appears to be occuring currently.\n"
- out_message += "Chemicals found in the beaker:\n"
- for(var/datum/reagent/R in cont.reagents.reagent_list)
- out_message += "[R.volume]u of [R.name], Purity: [R.purity], [(scanmode?"[(R.overdose_threshold?"Overdose: [R.overdose_threshold]u, ":"")][(R.addiction_threshold?"Addiction: [R.addiction_threshold]u, ":"")]Base pH: [R.pH].":".")]\n"
- if(scanmode)
- out_message += "Analysis: [R.description]\n"
- to_chat(user, "[out_message]")
- desc = "An electrode attached to a small circuit box that will analyse a beaker. It can be toggled to give a reduced or extended report. The screen currently displays [round(cont.reagents.pH, 0.1)]."
+ . = ..()
+ if(!istype(A, /obj/item/reagent_containers))
+ return
+ var/obj/item/reagent_containers/cont = A
+ if(LAZYLEN(cont.reagents.reagent_list) == null)
+ return
+ var/out_message
+ to_chat(user, "The chemistry meter beeps and displays:")
+ out_message += "Total volume: [round(cont.volume, 0.01)] Total pH: [round(cont.reagents.pH, 0.1)]\n"
+ if(cont.reagents.fermiIsReacting)
+ out_message += "A reaction appears to be occuring currently.\n"
+ out_message += "Chemicals found in the beaker:\n"
+ for(var/datum/reagent/R in cont.reagents.reagent_list)
+ out_message += "[R.volume]u of [R.name], Purity: [R.purity], [(scanmode?"[(R.overdose_threshold?"Overdose: [R.overdose_threshold]u, ":"")][(R.addiction_threshold?"Addiction: [R.addiction_threshold]u, ":"")]Base pH: [R.pH].":".")]\n"
+ if(scanmode)
+ out_message += "Analysis: [R.description]\n"
+ to_chat(user, "[out_message]")
+ desc = "An electrode attached to a small circuit box that will analyse a beaker. It can be toggled to give a reduced or extended report. The screen currently displays [round(cont.reagents.pH, 0.1)]."
diff --git a/modular_citadel/code/modules/reagents/reagent container/cit_kegs.dm b/modular_citadel/code/modules/reagents/reagent container/cit_kegs.dm
deleted file mode 100644
index d40dba8a3f..0000000000
--- a/modular_citadel/code/modules/reagents/reagent container/cit_kegs.dm
+++ /dev/null
@@ -1,41 +0,0 @@
-/obj/structure/reagent_dispensers/keg
- name = "keg"
- desc = "A keg."
- icon = 'modular_citadel/icons/obj/objects.dmi'
- icon_state = "keg"
- reagent_id = "water"
-
-/obj/structure/reagent_dispensers/keg/mead
- name = "keg of mead"
- desc = "A keg of mead."
- icon_state = "orangekeg"
- reagent_id = "mead"
-
-/obj/structure/reagent_dispensers/keg/aphro
- name = "keg of aphrodisiac"
- desc = "A keg of aphrodisiac."
- icon_state = "pinkkeg"
- reagent_id = "aphro"
-
-/obj/structure/reagent_dispensers/keg/aphro/strong
- name = "keg of strong aphrodisiac"
- desc = "A keg of strong and addictive aphrodisiac."
- reagent_id = "aphro+"
-
-/obj/structure/reagent_dispensers/keg/milk
- name = "keg of milk"
- desc = "It's not quite what you were hoping for."
- icon_state = "whitekeg"
- reagent_id = "milk"
-
-/obj/structure/reagent_dispensers/keg/semen
- name = "keg of semen"
- desc = "Dear lord, where did this even come from?"
- icon_state = "whitekeg"
- reagent_id = "semen"
-
-/obj/structure/reagent_dispensers/keg/gargle
- name = "keg of pan galactic gargleblaster"
- desc = "A keg of... wow that's a long name."
- icon_state = "bluekeg"
- reagent_id = "gargleblaster"
\ No newline at end of file
diff --git a/modular_citadel/code/modules/reagents/reagent container/hypospraymkii.dm b/modular_citadel/code/modules/reagents/reagent container/hypospraymkii.dm
deleted file mode 100755
index 4aa634a488..0000000000
--- a/modular_citadel/code/modules/reagents/reagent container/hypospraymkii.dm
+++ /dev/null
@@ -1,299 +0,0 @@
-#define HYPO_SPRAY 0
-#define HYPO_INJECT 1
-
-#define WAIT_SPRAY 25
-#define WAIT_INJECT 25
-#define SELF_SPRAY 15
-#define SELF_INJECT 15
-
-#define DELUXE_WAIT_SPRAY 20
-#define DELUXE_WAIT_INJECT 20
-#define DELUXE_SELF_SPRAY 10
-#define DELUXE_SELF_INJECT 10
-
-#define COMBAT_WAIT_SPRAY 0
-#define COMBAT_WAIT_INJECT 0
-#define COMBAT_SELF_SPRAY 0
-#define COMBAT_SELF_INJECT 0
-
-//A vial-loaded hypospray. Cartridge-based!
-/obj/item/hypospray/mkii
- name = "hypospray mk.II"
- icon = 'modular_citadel/icons/obj/hypospraymkii.dmi'
- icon_state = "hypo2"
- desc = "A new development from DeForest Medical, this hypospray takes 30-unit vials as the drug supply for easy swapping."
- w_class = WEIGHT_CLASS_TINY
- var/list/allowed_containers = list(/obj/item/reagent_containers/glass/bottle/vial/tiny, /obj/item/reagent_containers/glass/bottle/vial/small)
- var/mode = HYPO_INJECT
- var/obj/item/reagent_containers/glass/bottle/vial/vial
- var/start_vial = /obj/item/reagent_containers/glass/bottle/vial/small
- var/spawnwithvial = TRUE
- var/inject_wait = WAIT_INJECT
- var/spray_wait = WAIT_SPRAY
- var/spray_self = SELF_SPRAY
- var/inject_self = SELF_INJECT
- var/quickload = FALSE
- var/penetrates = FALSE
-
-/obj/item/hypospray/mkii/brute
- start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/bicaridine
-
-/obj/item/hypospray/mkii/toxin
- start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/antitoxin
-
-/obj/item/hypospray/mkii/oxygen
- start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/dexalin
-
-/obj/item/hypospray/mkii/burn
- start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/kelotane
-
-/obj/item/hypospray/mkii/tricord
- start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/tricord
-
-/obj/item/hypospray/mkii/enlarge
- spawnwithvial = FALSE
-
-/obj/item/hypospray/mkii/CMO
- name = "hypospray mk.II deluxe"
- allowed_containers = list(/obj/item/reagent_containers/glass/bottle/vial/tiny, /obj/item/reagent_containers/glass/bottle/vial/small, /obj/item/reagent_containers/glass/bottle/vial/large)
- icon_state = "cmo2"
- desc = "The Deluxe Hypospray can take larger-size vials. It also acts faster and delivers more reagents per spray."
- resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
- start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/CMO
- inject_wait = DELUXE_WAIT_INJECT
- spray_wait = DELUXE_WAIT_SPRAY
- spray_self = DELUXE_SELF_SPRAY
- inject_self = DELUXE_SELF_INJECT
-
-/obj/item/hypospray/mkii/CMO/combat
- name = "combat hypospray mk.II"
- desc = "A combat-ready deluxe hypospray that acts almost instantly. It can be tactically reloaded by using a vial on it."
- icon_state = "combat2"
- start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/combat
- inject_wait = COMBAT_WAIT_INJECT
- spray_wait = COMBAT_WAIT_SPRAY
- spray_self = COMBAT_SELF_SPRAY
- inject_self = COMBAT_SELF_INJECT
- quickload = TRUE
- penetrates = TRUE
-
-/obj/item/hypospray/mkii/Initialize()
- . = ..()
- if(!spawnwithvial)
- update_icon()
- return
- if(start_vial)
- vial = new start_vial
- update_icon()
-
-/obj/item/hypospray/mkii/update_icon()
- ..()
- icon_state = "[initial(icon_state)][vial ? "" : "-e"]"
- if(ismob(loc))
- var/mob/M = loc
- M.update_inv_hands()
- return
-
-/obj/item/hypospray/mkii/examine(mob/user)
- . = ..()
- if(vial)
- to_chat(user, "[vial] has [vial.reagents.total_volume]u remaining.")
- else
- to_chat(user, "It has no vial loaded in.")
- to_chat(user, "[src] is set to [mode ? "Inject" : "Spray"] contents on application.")
-
-/obj/item/hypospray/mkii/proc/unload_hypo(obj/item/I, mob/user)
- if((istype(I, /obj/item/reagent_containers/glass/bottle/vial)))
- var/obj/item/reagent_containers/glass/bottle/vial/V = I
- V.forceMove(user.loc)
- user.put_in_hands(V)
- to_chat(user, "You remove [vial] from [src].")
- vial = null
- update_icon()
- playsound(loc, 'sound/weapons/empty.ogg', 50, 1)
- else
- to_chat(user, "This hypo isn't loaded!")
- return
-
-/obj/item/hypospray/mkii/attackby(obj/item/I, mob/living/user)
- if((istype(I, /obj/item/reagent_containers/glass/bottle/vial) && vial != null))
- if(!quickload)
- to_chat(user, "[src] can not hold more than one vial!")
- return FALSE
- unload_hypo(vial, user)
- if((istype(I, /obj/item/reagent_containers/glass/bottle/vial)))
- var/obj/item/reagent_containers/glass/bottle/vial/V = I
- if(!is_type_in_list(V, allowed_containers))
- to_chat(user, "[src] doesn't accept this type of vial.")
- return FALSE
- if(!user.transferItemToLoc(V,src))
- return FALSE
- vial = V
- user.visible_message("[user] has loaded a vial into [src].","You have loaded [vial] into [src].")
- update_icon()
- playsound(loc, 'sound/weapons/autoguninsert.ogg', 35, 1)
- return TRUE
- else
- to_chat(user, "This doesn't fit in [src].")
- return FALSE
- return FALSE
-
-/obj/item/hypospray/mkii/AltClick(mob/user)
- if(vial)
- vial.attack_self(user)
-
-// Gunna allow this for now, still really don't approve - Pooj
-/obj/item/hypospray/mkii/emag_act(mob/user)
- . = ..()
- if(obj_flags & EMAGGED)
- to_chat(user, "[src] happens to be already overcharged.")
- return
- inject_wait = COMBAT_WAIT_INJECT
- spray_wait = COMBAT_WAIT_SPRAY
- spray_self = COMBAT_SELF_INJECT
- inject_self = COMBAT_SELF_SPRAY
- penetrates = TRUE
- to_chat(user, "You overcharge [src]'s control circuit.")
- obj_flags |= EMAGGED
- return TRUE
-
-/obj/item/hypospray/mkii/attack_hand(mob/user)
- . = ..() //Don't bother changing this or removing it from containers will break.
-
-/obj/item/hypospray/mkii/attack(obj/item/I, mob/user, params)
- return
-
-/obj/item/hypospray/mkii/afterattack(atom/target, mob/user, proximity)
- if(!vial)
- return
-
- if(!proximity)
- return
-
- if(!ismob(target))
- return
-
- var/mob/living/L
- if(isliving(target))
- L = target
- if(!penetrates && !L.can_inject(user, 1)) //This check appears another four times, since otherwise the penetrating sprays will break in do_mob.
- return
-
- if(!L && !target.is_injectable()) //only checks on non-living mobs, due to how can_inject() handles
- to_chat(user, "You cannot directly fill [target]!")
- return
-
- if(target.reagents.total_volume >= target.reagents.maximum_volume)
- to_chat(user, "[target] is full.")
- return
-
- if(ishuman(L))
- var/obj/item/bodypart/affecting = L.get_bodypart(check_zone(user.zone_selected))
- if(!affecting)
- to_chat(user, "The limb is missing!")
- return
- if(affecting.status != BODYPART_ORGANIC)
- to_chat(user, "Medicine won't work on a robotic limb!")
- return
-
- var/contained = vial.reagents.log_list()
- log_combat(user, L, "attemped to inject", src, addition="which had [contained]")
-//Always log attemped injections for admins
- if(vial != null)
- switch(mode)
- if(HYPO_INJECT)
- if(L) //living mob
- if(L != user)
- L.visible_message("[user] is trying to inject [L] with [src]!", \
- "[user] is trying to inject [L] with [src]!")
- if(!do_mob(user, L, inject_wait))
- return
- if(!penetrates && !L.can_inject(user, 1))
- return
- if(!vial.reagents.total_volume)
- return
- if(L.reagents.total_volume >= L.reagents.maximum_volume)
- return
- L.visible_message("[user] uses the [src] on [L]!", \
- "[user] uses the [src] on [L]!")
- else
- if(!do_mob(user, L, inject_self))
- return
- if(!penetrates && !L.can_inject(user, 1))
- return
- if(!vial.reagents.total_volume)
- return
- if(L.reagents.total_volume >= L.reagents.maximum_volume)
- return
- log_attack("[user.name] ([user.ckey]) applied [src] to [L.name] ([L.ckey]), which had [contained] (INTENT: [uppertext(user.a_intent)]) (MODE: [src.mode])")
- L.log_message("applied [src] to themselves ([contained]).", INDIVIDUAL_ATTACK_LOG)
-
- var/fraction = min(vial.amount_per_transfer_from_this/vial.reagents.total_volume, 1)
- vial.reagents.reaction(L, INJECT, fraction)
- vial.reagents.trans_to(target, vial.amount_per_transfer_from_this)
- if(vial.amount_per_transfer_from_this >= 15)
- playsound(loc,'sound/items/hypospray_long.ogg',50, 1, -1)
- if(vial.amount_per_transfer_from_this < 15)
- playsound(loc, pick('sound/items/hypospray.ogg','sound/items/hypospray2.ogg'), 50, 1, -1)
- to_chat(user, "You inject [vial.amount_per_transfer_from_this] units of the solution. The hypospray's cartridge now contains [vial.reagents.total_volume] units.")
-
- if(HYPO_SPRAY)
- if(L) //living mob
- if(L != user)
- L.visible_message("[user] is trying to spray [L] with [src]!", \
- "[user] is trying to spray [L] with [src]!")
- if(!do_mob(user, L, spray_wait))
- return
- if(!penetrates && !L.can_inject(user, 1))
- return
- if(!vial.reagents.total_volume)
- return
- if(L.reagents.total_volume >= L.reagents.maximum_volume)
- return
- L.visible_message("[user] uses the [src] on [L]!", \
- "[user] uses the [src] on [L]!")
- else
- if(!do_mob(user, L, spray_self))
- return
- if(!penetrates && !L.can_inject(user, 1))
- return
- if(!vial.reagents.total_volume)
- return
- if(L.reagents.total_volume >= L.reagents.maximum_volume)
- return
- log_attack("[user.name] ([user.ckey]) applied [src] to [L.name] ([L.ckey]), which had [contained] (INTENT: [uppertext(user.a_intent)]) (MODE: [src.mode])")
- L.log_message("applied [src] to themselves ([contained]).", INDIVIDUAL_ATTACK_LOG)
- var/fraction = min(vial.amount_per_transfer_from_this/vial.reagents.total_volume, 1)
- vial.reagents.reaction(L, PATCH, fraction)
- vial.reagents.trans_to(target, vial.amount_per_transfer_from_this)
- if(vial.amount_per_transfer_from_this >= 15)
- playsound(loc,'sound/items/hypospray_long.ogg',50, 1, -1)
- if(vial.amount_per_transfer_from_this < 15)
- playsound(loc, pick('sound/items/hypospray.ogg','sound/items/hypospray2.ogg'), 50, 1, -1)
- to_chat(user, "You spray [vial.amount_per_transfer_from_this] units of the solution. The hypospray's cartridge now contains [vial.reagents.total_volume] units.")
- else
- to_chat(user, "[src] doesn't work here!")
- return
-
-/obj/item/hypospray/mkii/attack_self(mob/living/user)
- if(user)
- if(user.incapacitated())
- return
- else if(!vial)
- to_chat(user, "This Hypo needs to be loaded first!")
- return
- else
- unload_hypo(vial,user)
-
-/obj/item/hypospray/mkii/verb/modes()
- set name = "Toggle Application Mode"
- set category = "Object"
- set src in usr
- var/mob/M = usr
- switch(mode)
- if(HYPO_SPRAY)
- mode = HYPO_INJECT
- to_chat(M, "[src] is now set to inject contents on application.")
- if(HYPO_INJECT)
- mode = HYPO_SPRAY
- to_chat(M, "[src] is now set to spray contents on application.")
diff --git a/modular_citadel/code/modules/research/designs/machine_designs.dm b/modular_citadel/code/modules/research/designs/machine_designs.dm
deleted file mode 100644
index 6a1331dddc..0000000000
--- a/modular_citadel/code/modules/research/designs/machine_designs.dm
+++ /dev/null
@@ -1,6 +0,0 @@
-/datum/design/board/autoylathe
- name = "Machine Design (Autoylathe)"
- desc = "The circuit board for an autoylathe."
- id = "autoylathe"
- build_path = /obj/item/circuitboard/machine/autoylathe
- category = list("Misc. Machinery")
diff --git a/modular_citadel/code/modules/research/designs/weapon_designs.dm b/modular_citadel/code/modules/research/designs/weapon_designs.dm
deleted file mode 100644
index b27cedbcc2..0000000000
--- a/modular_citadel/code/modules/research/designs/weapon_designs.dm
+++ /dev/null
@@ -1,7 +0,0 @@
-/datum/design/mag_oldsmg/rubber_mag
- name = "WT-550 Semi-Auto SMG rubberbullets Magazine (4.6x30mm rubber)"
- desc = "A 20 round rubber shots magazine for the out of date security WT-550 Semi-Auto SMG"
- id = "mag_oldsmg_rubber"
- materials = list(MAT_METAL = 6000)
- build_path = /obj/item/ammo_box/magazine/wt550m9/wtrubber
- departmental_flags = DEPARTMENTAL_FLAG_SECURITY
diff --git a/modular_citadel/code/modules/research/designs/weapon_designs/weapon_designs.dm b/modular_citadel/code/modules/research/designs/weapon_designs/weapon_designs.dm
deleted file mode 100644
index 6246b9e24e..0000000000
--- a/modular_citadel/code/modules/research/designs/weapon_designs/weapon_designs.dm
+++ /dev/null
@@ -1,7 +0,0 @@
-/datum/design/mag_oldsmg/tx_mag
- name = "WT-550 Semi-Auto SMG Uranium Magazine (4.6x30mm TX)"
- desc = "A 20 round uranium tipped magazine for the out of date security WT-550 Semi-Auto SMG."
- id = "mag_oldsmg_tx"
- materials = list(MAT_METAL = 6000, MAT_SILVER = 600, MAT_URANIUM = 2000)
- build_path = /obj/item/ammo_box/magazine/wt550m9/wttx
- departmental_flags = DEPARTMENTAL_FLAG_SECURITY
diff --git a/modular_citadel/code/modules/research/designs/xenobio_designs.dm b/modular_citadel/code/modules/research/designs/xenobio_designs.dm
deleted file mode 100644
index 45ed8e83a0..0000000000
--- a/modular_citadel/code/modules/research/designs/xenobio_designs.dm
+++ /dev/null
@@ -1,25 +0,0 @@
-/datum/design/xenobio_upgrade
- name = "owo"
- desc = "someone's bussin"
- build_type = PROTOLATHE
- materials = list(MAT_METAL = 300, MAT_GLASS = 100)
- category = list("Electronics")
- departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
-
-/datum/design/xenobio_upgrade/xenobiomonkeys
- name = "Xenobiology console monkey upgrade disk"
- desc = "This disk will add the ability to remotely recycle monkeys via the Xenobiology console."
- id = "xenobio_monkeys"
- build_path = /obj/item/disk/xenobio_console_upgrade/monkey
-
-/datum/design/xenobio_upgrade/xenobioslimebasic
- name = "Xenobiology console basic slime upgrade disk"
- desc = "This disk will add the ability to remotely manipulate slimes via the Xenobiology console."
- id = "xenobio_slimebasic"
- build_path = /obj/item/disk/xenobio_console_upgrade/slimebasic
-
-/datum/design/xenobio_upgrade/xenobioslimeadv
- name = "Xenobiology console advanced slime upgrade disk"
- desc = "This disk will add the ability to remotely feed slimes potions via the Xenobiology console, and lift the restrictions on the number of slimes that can be stored inside the Xenobiology console. This includes the contents of the basic slime upgrade disk."
- id = "xenobio_slimeadv"
- build_path = /obj/item/disk/xenobio_console_upgrade/slimeadv
diff --git a/modular_citadel/code/modules/research/techweb/_techweb.dm b/modular_citadel/code/modules/research/techweb/_techweb.dm
deleted file mode 100644
index 1c96229594..0000000000
--- a/modular_citadel/code/modules/research/techweb/_techweb.dm
+++ /dev/null
@@ -1,3 +0,0 @@
-/datum/techweb/specialized/autounlocking/autoylathe
- design_autounlock_buildtypes = AUTOYLATHE
- allowed_buildtypes = AUTOYLATHE
diff --git a/modular_citadel/code/modules/research/xenobiology/xenobio_camera.dm b/modular_citadel/code/modules/research/xenobiology/xenobio_camera.dm
deleted file mode 100644
index b700626a1d..0000000000
--- a/modular_citadel/code/modules/research/xenobiology/xenobio_camera.dm
+++ /dev/null
@@ -1,48 +0,0 @@
-/obj/machinery/computer/camera_advanced/xenobio
- max_slimes = 1
- var/upgradetier = 0
-
-/obj/machinery/computer/camera_advanced/xenobio/attackby(obj/item/O, mob/user, params)
- if(istype(O, /obj/item/disk/xenobio_console_upgrade))
- var/obj/item/disk/xenobio_console_upgrade/diskthing = O
- var/successfulupgrade = FALSE
- for(var/I in diskthing.upgradetypes)
- if(upgradetier & I)
- continue
- else
- upgradetier |= I
- successfulupgrade = TRUE
- if(I == XENOBIO_UPGRADE_SLIMEADV)
- max_slimes = 10
- if(successfulupgrade)
- to_chat(user, "You have successfully upgraded [src] with [O].")
- else
- to_chat(user, "[src] already has the contents of [O] installed!")
- return
- . = ..()
-
-/obj/item/disk/xenobio_console_upgrade
- name = "Xenobiology console upgrade disk"
- desc = "Allan please add detail."
- icon_state = "datadisk5"
- var/list/upgradetypes = list()
-
-/obj/item/disk/xenobio_console_upgrade/admin
- name = "Xenobio all access thing"
- desc = "'the consoles are literally useless!!!!!!!!!!!!!!!'"
- upgradetypes = list(XENOBIO_UPGRADE_SLIMEBASIC, XENOBIO_UPGRADE_SLIMEADV, XENOBIO_UPGRADE_MONKEYS)
-
-/obj/item/disk/xenobio_console_upgrade/monkey
- name = "Xenobiology console monkey upgrade disk"
- desc = "This disk will add the ability to remotely recycle monkeys via the Xenobiology console."
- upgradetypes = list(XENOBIO_UPGRADE_MONKEYS)
-
-/obj/item/disk/xenobio_console_upgrade/slimebasic
- name = "Xenobiology console basic slime upgrade disk"
- desc = "This disk will add the ability to remotely manipulate slimes via the Xenobiology console."
- upgradetypes = list(XENOBIO_UPGRADE_SLIMEBASIC)
-
-/obj/item/disk/xenobio_console_upgrade/slimeadv
- name = "Xenobiology console advanced slime upgrade disk"
- desc = "This disk will add the ability to remotely feed slimes potions via the Xenobiology console, and lift the restrictions on the number of slimes that can be stored inside the Xenobiology console. This includes the contents of the basic slime upgrade disk."
- upgradetypes = list(XENOBIO_UPGRADE_SLIMEBASIC, XENOBIO_UPGRADE_SLIMEADV)
diff --git a/modular_citadel/code/modules/vehicles/secway.dm b/modular_citadel/code/modules/vehicles/secway.dm
index 85c1de15e2..9320da6dc8 100644
--- a/modular_citadel/code/modules/vehicles/secway.dm
+++ b/modular_citadel/code/modules/vehicles/secway.dm
@@ -24,7 +24,7 @@
if(H.sprinting && charge)
charge--
new_speed = chargespeed
- GET_COMPONENT(D, /datum/component/riding)
+ var/datum/component/riding/D = GetComponent(/datum/component/riding)
D.vehicle_move_delay = new_speed
for(var/i in progressbars_by_rider)
var/datum/progressbar/B = progressbars_by_rider[i]
diff --git a/modular_citadel/icons/eutactic/item/hypereutactic.dmi b/modular_citadel/icons/eutactic/item/hypereutactic.dmi
deleted file mode 100644
index 90a665f676..0000000000
Binary files a/modular_citadel/icons/eutactic/item/hypereutactic.dmi and /dev/null differ
diff --git a/modular_citadel/icons/eutactic/item/noneutactic.dmi b/modular_citadel/icons/eutactic/item/noneutactic.dmi
deleted file mode 100644
index 9d8b9fd1dd..0000000000
Binary files a/modular_citadel/icons/eutactic/item/noneutactic.dmi and /dev/null differ
diff --git a/modular_citadel/icons/eutactic/mob/hypereutactic_left.dmi b/modular_citadel/icons/eutactic/mob/hypereutactic_left.dmi
deleted file mode 100644
index ca94055113..0000000000
Binary files a/modular_citadel/icons/eutactic/mob/hypereutactic_left.dmi and /dev/null differ
diff --git a/modular_citadel/icons/eutactic/mob/hypereutactic_right.dmi b/modular_citadel/icons/eutactic/mob/hypereutactic_right.dmi
deleted file mode 100644
index a9b90da740..0000000000
Binary files a/modular_citadel/icons/eutactic/mob/hypereutactic_right.dmi and /dev/null differ
diff --git a/modular_citadel/icons/eutactic/mob/noneutactic_left.dmi b/modular_citadel/icons/eutactic/mob/noneutactic_left.dmi
deleted file mode 100644
index a426597146..0000000000
Binary files a/modular_citadel/icons/eutactic/mob/noneutactic_left.dmi and /dev/null differ
diff --git a/modular_citadel/icons/eutactic/mob/noneutactic_right.dmi b/modular_citadel/icons/eutactic/mob/noneutactic_right.dmi
deleted file mode 100644
index aab77c5fd4..0000000000
Binary files a/modular_citadel/icons/eutactic/mob/noneutactic_right.dmi and /dev/null differ
diff --git a/modular_citadel/icons/lavaknight/item/head.dmi b/modular_citadel/icons/lavaknight/item/head.dmi
deleted file mode 100644
index 950d4894e9..0000000000
Binary files a/modular_citadel/icons/lavaknight/item/head.dmi and /dev/null differ
diff --git a/modular_citadel/icons/lavaknight/item/suit.dmi b/modular_citadel/icons/lavaknight/item/suit.dmi
deleted file mode 100644
index 49cd14b666..0000000000
Binary files a/modular_citadel/icons/lavaknight/item/suit.dmi and /dev/null differ
diff --git a/modular_citadel/icons/lavaknight/mob/head.dmi b/modular_citadel/icons/lavaknight/mob/head.dmi
deleted file mode 100644
index 5084c9c66f..0000000000
Binary files a/modular_citadel/icons/lavaknight/mob/head.dmi and /dev/null differ
diff --git a/modular_citadel/icons/lavaknight/mob/suit.dmi b/modular_citadel/icons/lavaknight/mob/suit.dmi
deleted file mode 100644
index ed51ceaaa4..0000000000
Binary files a/modular_citadel/icons/lavaknight/mob/suit.dmi and /dev/null differ
diff --git a/modular_citadel/icons/obj/FermiChem.dmi b/modular_citadel/icons/obj/FermiChem.dmi
deleted file mode 100644
index de7a86d574..0000000000
Binary files a/modular_citadel/icons/obj/FermiChem.dmi and /dev/null differ
diff --git a/modular_citadel/icons/obj/hypospraymkii.dmi b/modular_citadel/icons/obj/hypospraymkii.dmi
deleted file mode 100755
index 3f32219d84..0000000000
Binary files a/modular_citadel/icons/obj/hypospraymkii.dmi and /dev/null differ
diff --git a/modular_citadel/icons/obj/id.dmi b/modular_citadel/icons/obj/id.dmi
deleted file mode 100644
index 653542e93d..0000000000
Binary files a/modular_citadel/icons/obj/id.dmi and /dev/null differ
diff --git a/modular_citadel/icons/obj/modularpills.dmi b/modular_citadel/icons/obj/modularpills.dmi
deleted file mode 100644
index 78095d82c0..0000000000
Binary files a/modular_citadel/icons/obj/modularpills.dmi and /dev/null differ
diff --git a/modular_citadel/icons/obj/vial.dmi b/modular_citadel/icons/obj/vial.dmi
deleted file mode 100755
index 8d1fefe470..0000000000
Binary files a/modular_citadel/icons/obj/vial.dmi and /dev/null differ
diff --git a/sound/ambience/servicebell.ogg b/sound/ambience/servicebell.ogg
new file mode 100644
index 0000000000..f55c7d5a75
Binary files /dev/null and b/sound/ambience/servicebell.ogg differ
diff --git a/modular_citadel/sound/vox/_comma.ogg b/sound/vox/_comma.ogg
similarity index 100%
rename from modular_citadel/sound/vox/_comma.ogg
rename to sound/vox/_comma.ogg
diff --git a/modular_citadel/sound/vox/_period.ogg b/sound/vox/_period.ogg
similarity index 100%
rename from modular_citadel/sound/vox/_period.ogg
rename to sound/vox/_period.ogg
diff --git a/modular_citadel/sound/vox/a.ogg b/sound/vox/a.ogg
similarity index 100%
rename from modular_citadel/sound/vox/a.ogg
rename to sound/vox/a.ogg
diff --git a/modular_citadel/sound/vox/accelerating.ogg b/sound/vox/accelerating.ogg
similarity index 100%
rename from modular_citadel/sound/vox/accelerating.ogg
rename to sound/vox/accelerating.ogg
diff --git a/modular_citadel/sound/vox/accelerator.ogg b/sound/vox/accelerator.ogg
similarity index 100%
rename from modular_citadel/sound/vox/accelerator.ogg
rename to sound/vox/accelerator.ogg
diff --git a/modular_citadel/sound/vox/accepted.ogg b/sound/vox/accepted.ogg
similarity index 100%
rename from modular_citadel/sound/vox/accepted.ogg
rename to sound/vox/accepted.ogg
diff --git a/modular_citadel/sound/vox/access.ogg b/sound/vox/access.ogg
similarity index 100%
rename from modular_citadel/sound/vox/access.ogg
rename to sound/vox/access.ogg
diff --git a/modular_citadel/sound/vox/acknowledge.ogg b/sound/vox/acknowledge.ogg
similarity index 100%
rename from modular_citadel/sound/vox/acknowledge.ogg
rename to sound/vox/acknowledge.ogg
diff --git a/modular_citadel/sound/vox/acknowledged.ogg b/sound/vox/acknowledged.ogg
similarity index 100%
rename from modular_citadel/sound/vox/acknowledged.ogg
rename to sound/vox/acknowledged.ogg
diff --git a/modular_citadel/sound/vox/acquired.ogg b/sound/vox/acquired.ogg
similarity index 100%
rename from modular_citadel/sound/vox/acquired.ogg
rename to sound/vox/acquired.ogg
diff --git a/modular_citadel/sound/vox/acquisition.ogg b/sound/vox/acquisition.ogg
similarity index 100%
rename from modular_citadel/sound/vox/acquisition.ogg
rename to sound/vox/acquisition.ogg
diff --git a/modular_citadel/sound/vox/across.ogg b/sound/vox/across.ogg
similarity index 100%
rename from modular_citadel/sound/vox/across.ogg
rename to sound/vox/across.ogg
diff --git a/modular_citadel/sound/vox/activate.ogg b/sound/vox/activate.ogg
similarity index 100%
rename from modular_citadel/sound/vox/activate.ogg
rename to sound/vox/activate.ogg
diff --git a/modular_citadel/sound/vox/activated.ogg b/sound/vox/activated.ogg
similarity index 100%
rename from modular_citadel/sound/vox/activated.ogg
rename to sound/vox/activated.ogg
diff --git a/modular_citadel/sound/vox/activity.ogg b/sound/vox/activity.ogg
similarity index 100%
rename from modular_citadel/sound/vox/activity.ogg
rename to sound/vox/activity.ogg
diff --git a/modular_citadel/sound/vox/adios.ogg b/sound/vox/adios.ogg
similarity index 100%
rename from modular_citadel/sound/vox/adios.ogg
rename to sound/vox/adios.ogg
diff --git a/modular_citadel/sound/vox/administration.ogg b/sound/vox/administration.ogg
similarity index 100%
rename from modular_citadel/sound/vox/administration.ogg
rename to sound/vox/administration.ogg
diff --git a/modular_citadel/sound/vox/advanced.ogg b/sound/vox/advanced.ogg
similarity index 100%
rename from modular_citadel/sound/vox/advanced.ogg
rename to sound/vox/advanced.ogg
diff --git a/modular_citadel/sound/vox/after.ogg b/sound/vox/after.ogg
similarity index 100%
rename from modular_citadel/sound/vox/after.ogg
rename to sound/vox/after.ogg
diff --git a/modular_citadel/sound/vox/agent.ogg b/sound/vox/agent.ogg
similarity index 100%
rename from modular_citadel/sound/vox/agent.ogg
rename to sound/vox/agent.ogg
diff --git a/modular_citadel/sound/vox/alarm.ogg b/sound/vox/alarm.ogg
similarity index 100%
rename from modular_citadel/sound/vox/alarm.ogg
rename to sound/vox/alarm.ogg
diff --git a/modular_citadel/sound/vox/alert.ogg b/sound/vox/alert.ogg
similarity index 100%
rename from modular_citadel/sound/vox/alert.ogg
rename to sound/vox/alert.ogg
diff --git a/modular_citadel/sound/vox/alien.ogg b/sound/vox/alien.ogg
similarity index 100%
rename from modular_citadel/sound/vox/alien.ogg
rename to sound/vox/alien.ogg
diff --git a/modular_citadel/sound/vox/aligned.ogg b/sound/vox/aligned.ogg
similarity index 100%
rename from modular_citadel/sound/vox/aligned.ogg
rename to sound/vox/aligned.ogg
diff --git a/modular_citadel/sound/vox/all.ogg b/sound/vox/all.ogg
similarity index 100%
rename from modular_citadel/sound/vox/all.ogg
rename to sound/vox/all.ogg
diff --git a/modular_citadel/sound/vox/alpha.ogg b/sound/vox/alpha.ogg
similarity index 100%
rename from modular_citadel/sound/vox/alpha.ogg
rename to sound/vox/alpha.ogg
diff --git a/modular_citadel/sound/vox/am.ogg b/sound/vox/am.ogg
similarity index 100%
rename from modular_citadel/sound/vox/am.ogg
rename to sound/vox/am.ogg
diff --git a/modular_citadel/sound/vox/amigo.ogg b/sound/vox/amigo.ogg
similarity index 100%
rename from modular_citadel/sound/vox/amigo.ogg
rename to sound/vox/amigo.ogg
diff --git a/modular_citadel/sound/vox/ammunition.ogg b/sound/vox/ammunition.ogg
similarity index 100%
rename from modular_citadel/sound/vox/ammunition.ogg
rename to sound/vox/ammunition.ogg
diff --git a/modular_citadel/sound/vox/an.ogg b/sound/vox/an.ogg
similarity index 100%
rename from modular_citadel/sound/vox/an.ogg
rename to sound/vox/an.ogg
diff --git a/modular_citadel/sound/vox/and.ogg b/sound/vox/and.ogg
similarity index 100%
rename from modular_citadel/sound/vox/and.ogg
rename to sound/vox/and.ogg
diff --git a/modular_citadel/sound/vox/announcement.ogg b/sound/vox/announcement.ogg
similarity index 100%
rename from modular_citadel/sound/vox/announcement.ogg
rename to sound/vox/announcement.ogg
diff --git a/modular_citadel/sound/vox/anomalous.ogg b/sound/vox/anomalous.ogg
similarity index 100%
rename from modular_citadel/sound/vox/anomalous.ogg
rename to sound/vox/anomalous.ogg
diff --git a/modular_citadel/sound/vox/antenna.ogg b/sound/vox/antenna.ogg
similarity index 100%
rename from modular_citadel/sound/vox/antenna.ogg
rename to sound/vox/antenna.ogg
diff --git a/modular_citadel/sound/vox/any.ogg b/sound/vox/any.ogg
similarity index 100%
rename from modular_citadel/sound/vox/any.ogg
rename to sound/vox/any.ogg
diff --git a/modular_citadel/sound/vox/apprehend.ogg b/sound/vox/apprehend.ogg
similarity index 100%
rename from modular_citadel/sound/vox/apprehend.ogg
rename to sound/vox/apprehend.ogg
diff --git a/modular_citadel/sound/vox/approach.ogg b/sound/vox/approach.ogg
similarity index 100%
rename from modular_citadel/sound/vox/approach.ogg
rename to sound/vox/approach.ogg
diff --git a/modular_citadel/sound/vox/are.ogg b/sound/vox/are.ogg
similarity index 100%
rename from modular_citadel/sound/vox/are.ogg
rename to sound/vox/are.ogg
diff --git a/modular_citadel/sound/vox/area.ogg b/sound/vox/area.ogg
similarity index 100%
rename from modular_citadel/sound/vox/area.ogg
rename to sound/vox/area.ogg
diff --git a/modular_citadel/sound/vox/arm.ogg b/sound/vox/arm.ogg
similarity index 100%
rename from modular_citadel/sound/vox/arm.ogg
rename to sound/vox/arm.ogg
diff --git a/modular_citadel/sound/vox/armed.ogg b/sound/vox/armed.ogg
similarity index 100%
rename from modular_citadel/sound/vox/armed.ogg
rename to sound/vox/armed.ogg
diff --git a/modular_citadel/sound/vox/armor.ogg b/sound/vox/armor.ogg
similarity index 100%
rename from modular_citadel/sound/vox/armor.ogg
rename to sound/vox/armor.ogg
diff --git a/modular_citadel/sound/vox/armory.ogg b/sound/vox/armory.ogg
similarity index 100%
rename from modular_citadel/sound/vox/armory.ogg
rename to sound/vox/armory.ogg
diff --git a/modular_citadel/sound/vox/arrest.ogg b/sound/vox/arrest.ogg
similarity index 100%
rename from modular_citadel/sound/vox/arrest.ogg
rename to sound/vox/arrest.ogg
diff --git a/modular_citadel/sound/vox/ass.ogg b/sound/vox/ass.ogg
similarity index 100%
rename from modular_citadel/sound/vox/ass.ogg
rename to sound/vox/ass.ogg
diff --git a/modular_citadel/sound/vox/at.ogg b/sound/vox/at.ogg
similarity index 100%
rename from modular_citadel/sound/vox/at.ogg
rename to sound/vox/at.ogg
diff --git a/modular_citadel/sound/vox/atomic.ogg b/sound/vox/atomic.ogg
similarity index 100%
rename from modular_citadel/sound/vox/atomic.ogg
rename to sound/vox/atomic.ogg
diff --git a/modular_citadel/sound/vox/attention.ogg b/sound/vox/attention.ogg
similarity index 100%
rename from modular_citadel/sound/vox/attention.ogg
rename to sound/vox/attention.ogg
diff --git a/modular_citadel/sound/vox/authorize.ogg b/sound/vox/authorize.ogg
similarity index 100%
rename from modular_citadel/sound/vox/authorize.ogg
rename to sound/vox/authorize.ogg
diff --git a/modular_citadel/sound/vox/authorized.ogg b/sound/vox/authorized.ogg
similarity index 100%
rename from modular_citadel/sound/vox/authorized.ogg
rename to sound/vox/authorized.ogg
diff --git a/modular_citadel/sound/vox/automatic.ogg b/sound/vox/automatic.ogg
similarity index 100%
rename from modular_citadel/sound/vox/automatic.ogg
rename to sound/vox/automatic.ogg
diff --git a/modular_citadel/sound/vox/away.ogg b/sound/vox/away.ogg
similarity index 100%
rename from modular_citadel/sound/vox/away.ogg
rename to sound/vox/away.ogg
diff --git a/modular_citadel/sound/vox/b.ogg b/sound/vox/b.ogg
similarity index 100%
rename from modular_citadel/sound/vox/b.ogg
rename to sound/vox/b.ogg
diff --git a/modular_citadel/sound/vox/back.ogg b/sound/vox/back.ogg
similarity index 100%
rename from modular_citadel/sound/vox/back.ogg
rename to sound/vox/back.ogg
diff --git a/modular_citadel/sound/vox/backman.ogg b/sound/vox/backman.ogg
similarity index 100%
rename from modular_citadel/sound/vox/backman.ogg
rename to sound/vox/backman.ogg
diff --git a/modular_citadel/sound/vox/bad.ogg b/sound/vox/bad.ogg
similarity index 100%
rename from modular_citadel/sound/vox/bad.ogg
rename to sound/vox/bad.ogg
diff --git a/modular_citadel/sound/vox/bag.ogg b/sound/vox/bag.ogg
similarity index 100%
rename from modular_citadel/sound/vox/bag.ogg
rename to sound/vox/bag.ogg
diff --git a/modular_citadel/sound/vox/bailey.ogg b/sound/vox/bailey.ogg
similarity index 100%
rename from modular_citadel/sound/vox/bailey.ogg
rename to sound/vox/bailey.ogg
diff --git a/modular_citadel/sound/vox/barracks.ogg b/sound/vox/barracks.ogg
similarity index 100%
rename from modular_citadel/sound/vox/barracks.ogg
rename to sound/vox/barracks.ogg
diff --git a/modular_citadel/sound/vox/base.ogg b/sound/vox/base.ogg
similarity index 100%
rename from modular_citadel/sound/vox/base.ogg
rename to sound/vox/base.ogg
diff --git a/modular_citadel/sound/vox/bay.ogg b/sound/vox/bay.ogg
similarity index 100%
rename from modular_citadel/sound/vox/bay.ogg
rename to sound/vox/bay.ogg
diff --git a/modular_citadel/sound/vox/be.ogg b/sound/vox/be.ogg
similarity index 100%
rename from modular_citadel/sound/vox/be.ogg
rename to sound/vox/be.ogg
diff --git a/modular_citadel/sound/vox/been.ogg b/sound/vox/been.ogg
similarity index 100%
rename from modular_citadel/sound/vox/been.ogg
rename to sound/vox/been.ogg
diff --git a/modular_citadel/sound/vox/before.ogg b/sound/vox/before.ogg
similarity index 100%
rename from modular_citadel/sound/vox/before.ogg
rename to sound/vox/before.ogg
diff --git a/modular_citadel/sound/vox/beyond.ogg b/sound/vox/beyond.ogg
similarity index 100%
rename from modular_citadel/sound/vox/beyond.ogg
rename to sound/vox/beyond.ogg
diff --git a/modular_citadel/sound/vox/biohazard.ogg b/sound/vox/biohazard.ogg
similarity index 100%
rename from modular_citadel/sound/vox/biohazard.ogg
rename to sound/vox/biohazard.ogg
diff --git a/modular_citadel/sound/vox/biological.ogg b/sound/vox/biological.ogg
similarity index 100%
rename from modular_citadel/sound/vox/biological.ogg
rename to sound/vox/biological.ogg
diff --git a/modular_citadel/sound/vox/birdwell.ogg b/sound/vox/birdwell.ogg
similarity index 100%
rename from modular_citadel/sound/vox/birdwell.ogg
rename to sound/vox/birdwell.ogg
diff --git a/modular_citadel/sound/vox/bizwarn.ogg b/sound/vox/bizwarn.ogg
similarity index 100%
rename from modular_citadel/sound/vox/bizwarn.ogg
rename to sound/vox/bizwarn.ogg
diff --git a/modular_citadel/sound/vox/black.ogg b/sound/vox/black.ogg
similarity index 100%
rename from modular_citadel/sound/vox/black.ogg
rename to sound/vox/black.ogg
diff --git a/modular_citadel/sound/vox/blast.ogg b/sound/vox/blast.ogg
similarity index 100%
rename from modular_citadel/sound/vox/blast.ogg
rename to sound/vox/blast.ogg
diff --git a/modular_citadel/sound/vox/blocked.ogg b/sound/vox/blocked.ogg
similarity index 100%
rename from modular_citadel/sound/vox/blocked.ogg
rename to sound/vox/blocked.ogg
diff --git a/modular_citadel/sound/vox/bloop.ogg b/sound/vox/bloop.ogg
similarity index 100%
rename from modular_citadel/sound/vox/bloop.ogg
rename to sound/vox/bloop.ogg
diff --git a/modular_citadel/sound/vox/blue.ogg b/sound/vox/blue.ogg
similarity index 100%
rename from modular_citadel/sound/vox/blue.ogg
rename to sound/vox/blue.ogg
diff --git a/modular_citadel/sound/vox/bottom.ogg b/sound/vox/bottom.ogg
similarity index 100%
rename from modular_citadel/sound/vox/bottom.ogg
rename to sound/vox/bottom.ogg
diff --git a/modular_citadel/sound/vox/bravo.ogg b/sound/vox/bravo.ogg
similarity index 100%
rename from modular_citadel/sound/vox/bravo.ogg
rename to sound/vox/bravo.ogg
diff --git a/modular_citadel/sound/vox/breach.ogg b/sound/vox/breach.ogg
similarity index 100%
rename from modular_citadel/sound/vox/breach.ogg
rename to sound/vox/breach.ogg
diff --git a/modular_citadel/sound/vox/breached.ogg b/sound/vox/breached.ogg
similarity index 100%
rename from modular_citadel/sound/vox/breached.ogg
rename to sound/vox/breached.ogg
diff --git a/modular_citadel/sound/vox/break.ogg b/sound/vox/break.ogg
similarity index 100%
rename from modular_citadel/sound/vox/break.ogg
rename to sound/vox/break.ogg
diff --git a/modular_citadel/sound/vox/bridge.ogg b/sound/vox/bridge.ogg
similarity index 100%
rename from modular_citadel/sound/vox/bridge.ogg
rename to sound/vox/bridge.ogg
diff --git a/modular_citadel/sound/vox/bust.ogg b/sound/vox/bust.ogg
similarity index 100%
rename from modular_citadel/sound/vox/bust.ogg
rename to sound/vox/bust.ogg
diff --git a/modular_citadel/sound/vox/but.ogg b/sound/vox/but.ogg
similarity index 100%
rename from modular_citadel/sound/vox/but.ogg
rename to sound/vox/but.ogg
diff --git a/modular_citadel/sound/vox/button.ogg b/sound/vox/button.ogg
similarity index 100%
rename from modular_citadel/sound/vox/button.ogg
rename to sound/vox/button.ogg
diff --git a/modular_citadel/sound/vox/buzwarn.ogg b/sound/vox/buzwarn.ogg
similarity index 100%
rename from modular_citadel/sound/vox/buzwarn.ogg
rename to sound/vox/buzwarn.ogg
diff --git a/modular_citadel/sound/vox/bypass.ogg b/sound/vox/bypass.ogg
similarity index 100%
rename from modular_citadel/sound/vox/bypass.ogg
rename to sound/vox/bypass.ogg
diff --git a/modular_citadel/sound/vox/c.ogg b/sound/vox/c.ogg
similarity index 100%
rename from modular_citadel/sound/vox/c.ogg
rename to sound/vox/c.ogg
diff --git a/modular_citadel/sound/vox/cable.ogg b/sound/vox/cable.ogg
similarity index 100%
rename from modular_citadel/sound/vox/cable.ogg
rename to sound/vox/cable.ogg
diff --git a/modular_citadel/sound/vox/call.ogg b/sound/vox/call.ogg
similarity index 100%
rename from modular_citadel/sound/vox/call.ogg
rename to sound/vox/call.ogg
diff --git a/modular_citadel/sound/vox/called.ogg b/sound/vox/called.ogg
similarity index 100%
rename from modular_citadel/sound/vox/called.ogg
rename to sound/vox/called.ogg
diff --git a/modular_citadel/sound/vox/canal.ogg b/sound/vox/canal.ogg
similarity index 100%
rename from modular_citadel/sound/vox/canal.ogg
rename to sound/vox/canal.ogg
diff --git a/modular_citadel/sound/vox/cap.ogg b/sound/vox/cap.ogg
similarity index 100%
rename from modular_citadel/sound/vox/cap.ogg
rename to sound/vox/cap.ogg
diff --git a/modular_citadel/sound/vox/captain.ogg b/sound/vox/captain.ogg
similarity index 100%
rename from modular_citadel/sound/vox/captain.ogg
rename to sound/vox/captain.ogg
diff --git a/modular_citadel/sound/vox/capture.ogg b/sound/vox/capture.ogg
similarity index 100%
rename from modular_citadel/sound/vox/capture.ogg
rename to sound/vox/capture.ogg
diff --git a/modular_citadel/sound/vox/captured.ogg b/sound/vox/captured.ogg
similarity index 100%
rename from modular_citadel/sound/vox/captured.ogg
rename to sound/vox/captured.ogg
diff --git a/modular_citadel/sound/vox/ceiling.ogg b/sound/vox/ceiling.ogg
similarity index 100%
rename from modular_citadel/sound/vox/ceiling.ogg
rename to sound/vox/ceiling.ogg
diff --git a/modular_citadel/sound/vox/celsius.ogg b/sound/vox/celsius.ogg
similarity index 100%
rename from modular_citadel/sound/vox/celsius.ogg
rename to sound/vox/celsius.ogg
diff --git a/modular_citadel/sound/vox/center.ogg b/sound/vox/center.ogg
similarity index 100%
rename from modular_citadel/sound/vox/center.ogg
rename to sound/vox/center.ogg
diff --git a/modular_citadel/sound/vox/centi.ogg b/sound/vox/centi.ogg
similarity index 100%
rename from modular_citadel/sound/vox/centi.ogg
rename to sound/vox/centi.ogg
diff --git a/modular_citadel/sound/vox/central.ogg b/sound/vox/central.ogg
similarity index 100%
rename from modular_citadel/sound/vox/central.ogg
rename to sound/vox/central.ogg
diff --git a/modular_citadel/sound/vox/chamber.ogg b/sound/vox/chamber.ogg
similarity index 100%
rename from modular_citadel/sound/vox/chamber.ogg
rename to sound/vox/chamber.ogg
diff --git a/modular_citadel/sound/vox/charlie.ogg b/sound/vox/charlie.ogg
similarity index 100%
rename from modular_citadel/sound/vox/charlie.ogg
rename to sound/vox/charlie.ogg
diff --git a/modular_citadel/sound/vox/check.ogg b/sound/vox/check.ogg
similarity index 100%
rename from modular_citadel/sound/vox/check.ogg
rename to sound/vox/check.ogg
diff --git a/modular_citadel/sound/vox/checkpoint.ogg b/sound/vox/checkpoint.ogg
similarity index 100%
rename from modular_citadel/sound/vox/checkpoint.ogg
rename to sound/vox/checkpoint.ogg
diff --git a/modular_citadel/sound/vox/chemical.ogg b/sound/vox/chemical.ogg
similarity index 100%
rename from modular_citadel/sound/vox/chemical.ogg
rename to sound/vox/chemical.ogg
diff --git a/modular_citadel/sound/vox/cleanup.ogg b/sound/vox/cleanup.ogg
similarity index 100%
rename from modular_citadel/sound/vox/cleanup.ogg
rename to sound/vox/cleanup.ogg
diff --git a/modular_citadel/sound/vox/clear.ogg b/sound/vox/clear.ogg
similarity index 100%
rename from modular_citadel/sound/vox/clear.ogg
rename to sound/vox/clear.ogg
diff --git a/modular_citadel/sound/vox/clearance.ogg b/sound/vox/clearance.ogg
similarity index 100%
rename from modular_citadel/sound/vox/clearance.ogg
rename to sound/vox/clearance.ogg
diff --git a/modular_citadel/sound/vox/close.ogg b/sound/vox/close.ogg
similarity index 100%
rename from modular_citadel/sound/vox/close.ogg
rename to sound/vox/close.ogg
diff --git a/modular_citadel/sound/vox/clown.ogg b/sound/vox/clown.ogg
similarity index 100%
rename from modular_citadel/sound/vox/clown.ogg
rename to sound/vox/clown.ogg
diff --git a/modular_citadel/sound/vox/code.ogg b/sound/vox/code.ogg
similarity index 100%
rename from modular_citadel/sound/vox/code.ogg
rename to sound/vox/code.ogg
diff --git a/modular_citadel/sound/vox/coded.ogg b/sound/vox/coded.ogg
similarity index 100%
rename from modular_citadel/sound/vox/coded.ogg
rename to sound/vox/coded.ogg
diff --git a/modular_citadel/sound/vox/collider.ogg b/sound/vox/collider.ogg
similarity index 100%
rename from modular_citadel/sound/vox/collider.ogg
rename to sound/vox/collider.ogg
diff --git a/modular_citadel/sound/vox/comma.ogg b/sound/vox/comma.ogg
similarity index 100%
rename from modular_citadel/sound/vox/comma.ogg
rename to sound/vox/comma.ogg
diff --git a/modular_citadel/sound/vox/command.ogg b/sound/vox/command.ogg
similarity index 100%
rename from modular_citadel/sound/vox/command.ogg
rename to sound/vox/command.ogg
diff --git a/modular_citadel/sound/vox/communication.ogg b/sound/vox/communication.ogg
similarity index 100%
rename from modular_citadel/sound/vox/communication.ogg
rename to sound/vox/communication.ogg
diff --git a/modular_citadel/sound/vox/complex.ogg b/sound/vox/complex.ogg
similarity index 100%
rename from modular_citadel/sound/vox/complex.ogg
rename to sound/vox/complex.ogg
diff --git a/modular_citadel/sound/vox/computer.ogg b/sound/vox/computer.ogg
similarity index 100%
rename from modular_citadel/sound/vox/computer.ogg
rename to sound/vox/computer.ogg
diff --git a/modular_citadel/sound/vox/condition.ogg b/sound/vox/condition.ogg
similarity index 100%
rename from modular_citadel/sound/vox/condition.ogg
rename to sound/vox/condition.ogg
diff --git a/modular_citadel/sound/vox/containment.ogg b/sound/vox/containment.ogg
similarity index 100%
rename from modular_citadel/sound/vox/containment.ogg
rename to sound/vox/containment.ogg
diff --git a/modular_citadel/sound/vox/contamination.ogg b/sound/vox/contamination.ogg
similarity index 100%
rename from modular_citadel/sound/vox/contamination.ogg
rename to sound/vox/contamination.ogg
diff --git a/modular_citadel/sound/vox/control.ogg b/sound/vox/control.ogg
similarity index 100%
rename from modular_citadel/sound/vox/control.ogg
rename to sound/vox/control.ogg
diff --git a/modular_citadel/sound/vox/coolant.ogg b/sound/vox/coolant.ogg
similarity index 100%
rename from modular_citadel/sound/vox/coolant.ogg
rename to sound/vox/coolant.ogg
diff --git a/modular_citadel/sound/vox/coomer.ogg b/sound/vox/coomer.ogg
similarity index 100%
rename from modular_citadel/sound/vox/coomer.ogg
rename to sound/vox/coomer.ogg
diff --git a/modular_citadel/sound/vox/core.ogg b/sound/vox/core.ogg
similarity index 100%
rename from modular_citadel/sound/vox/core.ogg
rename to sound/vox/core.ogg
diff --git a/modular_citadel/sound/vox/correct.ogg b/sound/vox/correct.ogg
similarity index 100%
rename from modular_citadel/sound/vox/correct.ogg
rename to sound/vox/correct.ogg
diff --git a/modular_citadel/sound/vox/corridor.ogg b/sound/vox/corridor.ogg
similarity index 100%
rename from modular_citadel/sound/vox/corridor.ogg
rename to sound/vox/corridor.ogg
diff --git a/modular_citadel/sound/vox/crew.ogg b/sound/vox/crew.ogg
similarity index 100%
rename from modular_citadel/sound/vox/crew.ogg
rename to sound/vox/crew.ogg
diff --git a/modular_citadel/sound/vox/cross.ogg b/sound/vox/cross.ogg
similarity index 100%
rename from modular_citadel/sound/vox/cross.ogg
rename to sound/vox/cross.ogg
diff --git a/modular_citadel/sound/vox/cryogenic.ogg b/sound/vox/cryogenic.ogg
similarity index 100%
rename from modular_citadel/sound/vox/cryogenic.ogg
rename to sound/vox/cryogenic.ogg
diff --git a/modular_citadel/sound/vox/d.ogg b/sound/vox/d.ogg
similarity index 100%
rename from modular_citadel/sound/vox/d.ogg
rename to sound/vox/d.ogg
diff --git a/modular_citadel/sound/vox/dadeda.ogg b/sound/vox/dadeda.ogg
similarity index 100%
rename from modular_citadel/sound/vox/dadeda.ogg
rename to sound/vox/dadeda.ogg
diff --git a/modular_citadel/sound/vox/damage.ogg b/sound/vox/damage.ogg
similarity index 100%
rename from modular_citadel/sound/vox/damage.ogg
rename to sound/vox/damage.ogg
diff --git a/modular_citadel/sound/vox/damaged.ogg b/sound/vox/damaged.ogg
similarity index 100%
rename from modular_citadel/sound/vox/damaged.ogg
rename to sound/vox/damaged.ogg
diff --git a/modular_citadel/sound/vox/danger.ogg b/sound/vox/danger.ogg
similarity index 100%
rename from modular_citadel/sound/vox/danger.ogg
rename to sound/vox/danger.ogg
diff --git a/modular_citadel/sound/vox/day.ogg b/sound/vox/day.ogg
similarity index 100%
rename from modular_citadel/sound/vox/day.ogg
rename to sound/vox/day.ogg
diff --git a/modular_citadel/sound/vox/deactivated.ogg b/sound/vox/deactivated.ogg
similarity index 100%
rename from modular_citadel/sound/vox/deactivated.ogg
rename to sound/vox/deactivated.ogg
diff --git a/modular_citadel/sound/vox/decompression.ogg b/sound/vox/decompression.ogg
similarity index 100%
rename from modular_citadel/sound/vox/decompression.ogg
rename to sound/vox/decompression.ogg
diff --git a/modular_citadel/sound/vox/decontamination.ogg b/sound/vox/decontamination.ogg
similarity index 100%
rename from modular_citadel/sound/vox/decontamination.ogg
rename to sound/vox/decontamination.ogg
diff --git a/modular_citadel/sound/vox/deeoo.ogg b/sound/vox/deeoo.ogg
similarity index 100%
rename from modular_citadel/sound/vox/deeoo.ogg
rename to sound/vox/deeoo.ogg
diff --git a/modular_citadel/sound/vox/defense.ogg b/sound/vox/defense.ogg
similarity index 100%
rename from modular_citadel/sound/vox/defense.ogg
rename to sound/vox/defense.ogg
diff --git a/modular_citadel/sound/vox/degrees.ogg b/sound/vox/degrees.ogg
similarity index 100%
rename from modular_citadel/sound/vox/degrees.ogg
rename to sound/vox/degrees.ogg
diff --git a/modular_citadel/sound/vox/delta.ogg b/sound/vox/delta.ogg
similarity index 100%
rename from modular_citadel/sound/vox/delta.ogg
rename to sound/vox/delta.ogg
diff --git a/modular_citadel/sound/vox/denied.ogg b/sound/vox/denied.ogg
similarity index 100%
rename from modular_citadel/sound/vox/denied.ogg
rename to sound/vox/denied.ogg
diff --git a/modular_citadel/sound/vox/deploy.ogg b/sound/vox/deploy.ogg
similarity index 100%
rename from modular_citadel/sound/vox/deploy.ogg
rename to sound/vox/deploy.ogg
diff --git a/modular_citadel/sound/vox/deployed.ogg b/sound/vox/deployed.ogg
similarity index 100%
rename from modular_citadel/sound/vox/deployed.ogg
rename to sound/vox/deployed.ogg
diff --git a/modular_citadel/sound/vox/destroy.ogg b/sound/vox/destroy.ogg
similarity index 100%
rename from modular_citadel/sound/vox/destroy.ogg
rename to sound/vox/destroy.ogg
diff --git a/modular_citadel/sound/vox/destroyed.ogg b/sound/vox/destroyed.ogg
similarity index 100%
rename from modular_citadel/sound/vox/destroyed.ogg
rename to sound/vox/destroyed.ogg
diff --git a/modular_citadel/sound/vox/detain.ogg b/sound/vox/detain.ogg
similarity index 100%
rename from modular_citadel/sound/vox/detain.ogg
rename to sound/vox/detain.ogg
diff --git a/modular_citadel/sound/vox/detected.ogg b/sound/vox/detected.ogg
similarity index 100%
rename from modular_citadel/sound/vox/detected.ogg
rename to sound/vox/detected.ogg
diff --git a/modular_citadel/sound/vox/detonation.ogg b/sound/vox/detonation.ogg
similarity index 100%
rename from modular_citadel/sound/vox/detonation.ogg
rename to sound/vox/detonation.ogg
diff --git a/modular_citadel/sound/vox/device.ogg b/sound/vox/device.ogg
similarity index 100%
rename from modular_citadel/sound/vox/device.ogg
rename to sound/vox/device.ogg
diff --git a/modular_citadel/sound/vox/did.ogg b/sound/vox/did.ogg
similarity index 100%
rename from modular_citadel/sound/vox/did.ogg
rename to sound/vox/did.ogg
diff --git a/modular_citadel/sound/vox/die.ogg b/sound/vox/die.ogg
similarity index 100%
rename from modular_citadel/sound/vox/die.ogg
rename to sound/vox/die.ogg
diff --git a/modular_citadel/sound/vox/dimensional.ogg b/sound/vox/dimensional.ogg
similarity index 100%
rename from modular_citadel/sound/vox/dimensional.ogg
rename to sound/vox/dimensional.ogg
diff --git a/modular_citadel/sound/vox/dirt.ogg b/sound/vox/dirt.ogg
similarity index 100%
rename from modular_citadel/sound/vox/dirt.ogg
rename to sound/vox/dirt.ogg
diff --git a/modular_citadel/sound/vox/disengaged.ogg b/sound/vox/disengaged.ogg
similarity index 100%
rename from modular_citadel/sound/vox/disengaged.ogg
rename to sound/vox/disengaged.ogg
diff --git a/modular_citadel/sound/vox/dish.ogg b/sound/vox/dish.ogg
similarity index 100%
rename from modular_citadel/sound/vox/dish.ogg
rename to sound/vox/dish.ogg
diff --git a/modular_citadel/sound/vox/disposal.ogg b/sound/vox/disposal.ogg
similarity index 100%
rename from modular_citadel/sound/vox/disposal.ogg
rename to sound/vox/disposal.ogg
diff --git a/modular_citadel/sound/vox/distance.ogg b/sound/vox/distance.ogg
similarity index 100%
rename from modular_citadel/sound/vox/distance.ogg
rename to sound/vox/distance.ogg
diff --git a/modular_citadel/sound/vox/distortion.ogg b/sound/vox/distortion.ogg
similarity index 100%
rename from modular_citadel/sound/vox/distortion.ogg
rename to sound/vox/distortion.ogg
diff --git a/modular_citadel/sound/vox/do.ogg b/sound/vox/do.ogg
similarity index 100%
rename from modular_citadel/sound/vox/do.ogg
rename to sound/vox/do.ogg
diff --git a/modular_citadel/sound/vox/doctor.ogg b/sound/vox/doctor.ogg
similarity index 100%
rename from modular_citadel/sound/vox/doctor.ogg
rename to sound/vox/doctor.ogg
diff --git a/modular_citadel/sound/vox/doop.ogg b/sound/vox/doop.ogg
similarity index 100%
rename from modular_citadel/sound/vox/doop.ogg
rename to sound/vox/doop.ogg
diff --git a/modular_citadel/sound/vox/door.ogg b/sound/vox/door.ogg
similarity index 100%
rename from modular_citadel/sound/vox/door.ogg
rename to sound/vox/door.ogg
diff --git a/modular_citadel/sound/vox/down.ogg b/sound/vox/down.ogg
similarity index 100%
rename from modular_citadel/sound/vox/down.ogg
rename to sound/vox/down.ogg
diff --git a/modular_citadel/sound/vox/dual.ogg b/sound/vox/dual.ogg
similarity index 100%
rename from modular_citadel/sound/vox/dual.ogg
rename to sound/vox/dual.ogg
diff --git a/modular_citadel/sound/vox/duct.ogg b/sound/vox/duct.ogg
similarity index 100%
rename from modular_citadel/sound/vox/duct.ogg
rename to sound/vox/duct.ogg
diff --git a/modular_citadel/sound/vox/e.ogg b/sound/vox/e.ogg
similarity index 100%
rename from modular_citadel/sound/vox/e.ogg
rename to sound/vox/e.ogg
diff --git a/modular_citadel/sound/vox/east.ogg b/sound/vox/east.ogg
similarity index 100%
rename from modular_citadel/sound/vox/east.ogg
rename to sound/vox/east.ogg
diff --git a/modular_citadel/sound/vox/echo.ogg b/sound/vox/echo.ogg
similarity index 100%
rename from modular_citadel/sound/vox/echo.ogg
rename to sound/vox/echo.ogg
diff --git a/modular_citadel/sound/vox/ed.ogg b/sound/vox/ed.ogg
similarity index 100%
rename from modular_citadel/sound/vox/ed.ogg
rename to sound/vox/ed.ogg
diff --git a/modular_citadel/sound/vox/effect.ogg b/sound/vox/effect.ogg
similarity index 100%
rename from modular_citadel/sound/vox/effect.ogg
rename to sound/vox/effect.ogg
diff --git a/modular_citadel/sound/vox/egress.ogg b/sound/vox/egress.ogg
similarity index 100%
rename from modular_citadel/sound/vox/egress.ogg
rename to sound/vox/egress.ogg
diff --git a/modular_citadel/sound/vox/eight.ogg b/sound/vox/eight.ogg
similarity index 100%
rename from modular_citadel/sound/vox/eight.ogg
rename to sound/vox/eight.ogg
diff --git a/modular_citadel/sound/vox/eighteen.ogg b/sound/vox/eighteen.ogg
similarity index 100%
rename from modular_citadel/sound/vox/eighteen.ogg
rename to sound/vox/eighteen.ogg
diff --git a/modular_citadel/sound/vox/eighty.ogg b/sound/vox/eighty.ogg
similarity index 100%
rename from modular_citadel/sound/vox/eighty.ogg
rename to sound/vox/eighty.ogg
diff --git a/modular_citadel/sound/vox/electric.ogg b/sound/vox/electric.ogg
similarity index 100%
rename from modular_citadel/sound/vox/electric.ogg
rename to sound/vox/electric.ogg
diff --git a/modular_citadel/sound/vox/electromagnetic.ogg b/sound/vox/electromagnetic.ogg
similarity index 100%
rename from modular_citadel/sound/vox/electromagnetic.ogg
rename to sound/vox/electromagnetic.ogg
diff --git a/modular_citadel/sound/vox/elevator.ogg b/sound/vox/elevator.ogg
similarity index 100%
rename from modular_citadel/sound/vox/elevator.ogg
rename to sound/vox/elevator.ogg
diff --git a/modular_citadel/sound/vox/eleven.ogg b/sound/vox/eleven.ogg
similarity index 100%
rename from modular_citadel/sound/vox/eleven.ogg
rename to sound/vox/eleven.ogg
diff --git a/modular_citadel/sound/vox/eliminate.ogg b/sound/vox/eliminate.ogg
similarity index 100%
rename from modular_citadel/sound/vox/eliminate.ogg
rename to sound/vox/eliminate.ogg
diff --git a/modular_citadel/sound/vox/emergency.ogg b/sound/vox/emergency.ogg
similarity index 100%
rename from modular_citadel/sound/vox/emergency.ogg
rename to sound/vox/emergency.ogg
diff --git a/modular_citadel/sound/vox/enemy.ogg b/sound/vox/enemy.ogg
similarity index 100%
rename from modular_citadel/sound/vox/enemy.ogg
rename to sound/vox/enemy.ogg
diff --git a/modular_citadel/sound/vox/energy.ogg b/sound/vox/energy.ogg
similarity index 100%
rename from modular_citadel/sound/vox/energy.ogg
rename to sound/vox/energy.ogg
diff --git a/modular_citadel/sound/vox/engage.ogg b/sound/vox/engage.ogg
similarity index 100%
rename from modular_citadel/sound/vox/engage.ogg
rename to sound/vox/engage.ogg
diff --git a/modular_citadel/sound/vox/engaged.ogg b/sound/vox/engaged.ogg
similarity index 100%
rename from modular_citadel/sound/vox/engaged.ogg
rename to sound/vox/engaged.ogg
diff --git a/modular_citadel/sound/vox/engine.ogg b/sound/vox/engine.ogg
similarity index 100%
rename from modular_citadel/sound/vox/engine.ogg
rename to sound/vox/engine.ogg
diff --git a/modular_citadel/sound/vox/enter.ogg b/sound/vox/enter.ogg
similarity index 100%
rename from modular_citadel/sound/vox/enter.ogg
rename to sound/vox/enter.ogg
diff --git a/modular_citadel/sound/vox/entry.ogg b/sound/vox/entry.ogg
similarity index 100%
rename from modular_citadel/sound/vox/entry.ogg
rename to sound/vox/entry.ogg
diff --git a/modular_citadel/sound/vox/environment.ogg b/sound/vox/environment.ogg
similarity index 100%
rename from modular_citadel/sound/vox/environment.ogg
rename to sound/vox/environment.ogg
diff --git a/modular_citadel/sound/vox/error.ogg b/sound/vox/error.ogg
similarity index 100%
rename from modular_citadel/sound/vox/error.ogg
rename to sound/vox/error.ogg
diff --git a/modular_citadel/sound/vox/escape.ogg b/sound/vox/escape.ogg
similarity index 100%
rename from modular_citadel/sound/vox/escape.ogg
rename to sound/vox/escape.ogg
diff --git a/modular_citadel/sound/vox/evacuate.ogg b/sound/vox/evacuate.ogg
similarity index 100%
rename from modular_citadel/sound/vox/evacuate.ogg
rename to sound/vox/evacuate.ogg
diff --git a/modular_citadel/sound/vox/exchange.ogg b/sound/vox/exchange.ogg
similarity index 100%
rename from modular_citadel/sound/vox/exchange.ogg
rename to sound/vox/exchange.ogg
diff --git a/modular_citadel/sound/vox/exit.ogg b/sound/vox/exit.ogg
similarity index 100%
rename from modular_citadel/sound/vox/exit.ogg
rename to sound/vox/exit.ogg
diff --git a/modular_citadel/sound/vox/expect.ogg b/sound/vox/expect.ogg
similarity index 100%
rename from modular_citadel/sound/vox/expect.ogg
rename to sound/vox/expect.ogg
diff --git a/modular_citadel/sound/vox/experiment.ogg b/sound/vox/experiment.ogg
similarity index 100%
rename from modular_citadel/sound/vox/experiment.ogg
rename to sound/vox/experiment.ogg
diff --git a/modular_citadel/sound/vox/experimental.ogg b/sound/vox/experimental.ogg
similarity index 100%
rename from modular_citadel/sound/vox/experimental.ogg
rename to sound/vox/experimental.ogg
diff --git a/modular_citadel/sound/vox/explode.ogg b/sound/vox/explode.ogg
similarity index 100%
rename from modular_citadel/sound/vox/explode.ogg
rename to sound/vox/explode.ogg
diff --git a/modular_citadel/sound/vox/explosion.ogg b/sound/vox/explosion.ogg
similarity index 100%
rename from modular_citadel/sound/vox/explosion.ogg
rename to sound/vox/explosion.ogg
diff --git a/modular_citadel/sound/vox/exposure.ogg b/sound/vox/exposure.ogg
similarity index 100%
rename from modular_citadel/sound/vox/exposure.ogg
rename to sound/vox/exposure.ogg
diff --git a/modular_citadel/sound/vox/exterminate.ogg b/sound/vox/exterminate.ogg
similarity index 100%
rename from modular_citadel/sound/vox/exterminate.ogg
rename to sound/vox/exterminate.ogg
diff --git a/modular_citadel/sound/vox/extinguish.ogg b/sound/vox/extinguish.ogg
similarity index 100%
rename from modular_citadel/sound/vox/extinguish.ogg
rename to sound/vox/extinguish.ogg
diff --git a/modular_citadel/sound/vox/extinguisher.ogg b/sound/vox/extinguisher.ogg
similarity index 100%
rename from modular_citadel/sound/vox/extinguisher.ogg
rename to sound/vox/extinguisher.ogg
diff --git a/modular_citadel/sound/vox/extreme.ogg b/sound/vox/extreme.ogg
similarity index 100%
rename from modular_citadel/sound/vox/extreme.ogg
rename to sound/vox/extreme.ogg
diff --git a/modular_citadel/sound/vox/f.ogg b/sound/vox/f.ogg
similarity index 100%
rename from modular_citadel/sound/vox/f.ogg
rename to sound/vox/f.ogg
diff --git a/modular_citadel/sound/vox/face.ogg b/sound/vox/face.ogg
similarity index 100%
rename from modular_citadel/sound/vox/face.ogg
rename to sound/vox/face.ogg
diff --git a/modular_citadel/sound/vox/facility.ogg b/sound/vox/facility.ogg
similarity index 100%
rename from modular_citadel/sound/vox/facility.ogg
rename to sound/vox/facility.ogg
diff --git a/modular_citadel/sound/vox/fahrenheit.ogg b/sound/vox/fahrenheit.ogg
similarity index 100%
rename from modular_citadel/sound/vox/fahrenheit.ogg
rename to sound/vox/fahrenheit.ogg
diff --git a/modular_citadel/sound/vox/failed.ogg b/sound/vox/failed.ogg
similarity index 100%
rename from modular_citadel/sound/vox/failed.ogg
rename to sound/vox/failed.ogg
diff --git a/modular_citadel/sound/vox/failure.ogg b/sound/vox/failure.ogg
similarity index 100%
rename from modular_citadel/sound/vox/failure.ogg
rename to sound/vox/failure.ogg
diff --git a/modular_citadel/sound/vox/farthest.ogg b/sound/vox/farthest.ogg
similarity index 100%
rename from modular_citadel/sound/vox/farthest.ogg
rename to sound/vox/farthest.ogg
diff --git a/modular_citadel/sound/vox/fast.ogg b/sound/vox/fast.ogg
similarity index 100%
rename from modular_citadel/sound/vox/fast.ogg
rename to sound/vox/fast.ogg
diff --git a/modular_citadel/sound/vox/feet.ogg b/sound/vox/feet.ogg
similarity index 100%
rename from modular_citadel/sound/vox/feet.ogg
rename to sound/vox/feet.ogg
diff --git a/modular_citadel/sound/vox/field.ogg b/sound/vox/field.ogg
similarity index 100%
rename from modular_citadel/sound/vox/field.ogg
rename to sound/vox/field.ogg
diff --git a/modular_citadel/sound/vox/fifteen.ogg b/sound/vox/fifteen.ogg
similarity index 100%
rename from modular_citadel/sound/vox/fifteen.ogg
rename to sound/vox/fifteen.ogg
diff --git a/modular_citadel/sound/vox/fifth.ogg b/sound/vox/fifth.ogg
similarity index 100%
rename from modular_citadel/sound/vox/fifth.ogg
rename to sound/vox/fifth.ogg
diff --git a/modular_citadel/sound/vox/fifty.ogg b/sound/vox/fifty.ogg
similarity index 100%
rename from modular_citadel/sound/vox/fifty.ogg
rename to sound/vox/fifty.ogg
diff --git a/modular_citadel/sound/vox/final.ogg b/sound/vox/final.ogg
similarity index 100%
rename from modular_citadel/sound/vox/final.ogg
rename to sound/vox/final.ogg
diff --git a/modular_citadel/sound/vox/fine.ogg b/sound/vox/fine.ogg
similarity index 100%
rename from modular_citadel/sound/vox/fine.ogg
rename to sound/vox/fine.ogg
diff --git a/modular_citadel/sound/vox/fire.ogg b/sound/vox/fire.ogg
similarity index 100%
rename from modular_citadel/sound/vox/fire.ogg
rename to sound/vox/fire.ogg
diff --git a/modular_citadel/sound/vox/first.ogg b/sound/vox/first.ogg
similarity index 100%
rename from modular_citadel/sound/vox/first.ogg
rename to sound/vox/first.ogg
diff --git a/modular_citadel/sound/vox/five.ogg b/sound/vox/five.ogg
similarity index 100%
rename from modular_citadel/sound/vox/five.ogg
rename to sound/vox/five.ogg
diff --git a/modular_citadel/sound/vox/flag.ogg b/sound/vox/flag.ogg
similarity index 100%
rename from modular_citadel/sound/vox/flag.ogg
rename to sound/vox/flag.ogg
diff --git a/modular_citadel/sound/vox/flooding.ogg b/sound/vox/flooding.ogg
similarity index 100%
rename from modular_citadel/sound/vox/flooding.ogg
rename to sound/vox/flooding.ogg
diff --git a/modular_citadel/sound/vox/floor.ogg b/sound/vox/floor.ogg
similarity index 100%
rename from modular_citadel/sound/vox/floor.ogg
rename to sound/vox/floor.ogg
diff --git a/modular_citadel/sound/vox/fool.ogg b/sound/vox/fool.ogg
similarity index 100%
rename from modular_citadel/sound/vox/fool.ogg
rename to sound/vox/fool.ogg
diff --git a/modular_citadel/sound/vox/for.ogg b/sound/vox/for.ogg
similarity index 100%
rename from modular_citadel/sound/vox/for.ogg
rename to sound/vox/for.ogg
diff --git a/modular_citadel/sound/vox/forbidden.ogg b/sound/vox/forbidden.ogg
similarity index 100%
rename from modular_citadel/sound/vox/forbidden.ogg
rename to sound/vox/forbidden.ogg
diff --git a/modular_citadel/sound/vox/force.ogg b/sound/vox/force.ogg
similarity index 100%
rename from modular_citadel/sound/vox/force.ogg
rename to sound/vox/force.ogg
diff --git a/modular_citadel/sound/vox/forms.ogg b/sound/vox/forms.ogg
similarity index 100%
rename from modular_citadel/sound/vox/forms.ogg
rename to sound/vox/forms.ogg
diff --git a/modular_citadel/sound/vox/found.ogg b/sound/vox/found.ogg
similarity index 100%
rename from modular_citadel/sound/vox/found.ogg
rename to sound/vox/found.ogg
diff --git a/modular_citadel/sound/vox/four.ogg b/sound/vox/four.ogg
similarity index 100%
rename from modular_citadel/sound/vox/four.ogg
rename to sound/vox/four.ogg
diff --git a/modular_citadel/sound/vox/fourteen.ogg b/sound/vox/fourteen.ogg
similarity index 100%
rename from modular_citadel/sound/vox/fourteen.ogg
rename to sound/vox/fourteen.ogg
diff --git a/modular_citadel/sound/vox/fourth.ogg b/sound/vox/fourth.ogg
similarity index 100%
rename from modular_citadel/sound/vox/fourth.ogg
rename to sound/vox/fourth.ogg
diff --git a/modular_citadel/sound/vox/fourty.ogg b/sound/vox/fourty.ogg
similarity index 100%
rename from modular_citadel/sound/vox/fourty.ogg
rename to sound/vox/fourty.ogg
diff --git a/modular_citadel/sound/vox/foxtrot.ogg b/sound/vox/foxtrot.ogg
similarity index 100%
rename from modular_citadel/sound/vox/foxtrot.ogg
rename to sound/vox/foxtrot.ogg
diff --git a/modular_citadel/sound/vox/freeman.ogg b/sound/vox/freeman.ogg
similarity index 100%
rename from modular_citadel/sound/vox/freeman.ogg
rename to sound/vox/freeman.ogg
diff --git a/modular_citadel/sound/vox/freezer.ogg b/sound/vox/freezer.ogg
similarity index 100%
rename from modular_citadel/sound/vox/freezer.ogg
rename to sound/vox/freezer.ogg
diff --git a/modular_citadel/sound/vox/from.ogg b/sound/vox/from.ogg
similarity index 100%
rename from modular_citadel/sound/vox/from.ogg
rename to sound/vox/from.ogg
diff --git a/modular_citadel/sound/vox/front.ogg b/sound/vox/front.ogg
similarity index 100%
rename from modular_citadel/sound/vox/front.ogg
rename to sound/vox/front.ogg
diff --git a/modular_citadel/sound/vox/fuel.ogg b/sound/vox/fuel.ogg
similarity index 100%
rename from modular_citadel/sound/vox/fuel.ogg
rename to sound/vox/fuel.ogg
diff --git a/modular_citadel/sound/vox/g.ogg b/sound/vox/g.ogg
similarity index 100%
rename from modular_citadel/sound/vox/g.ogg
rename to sound/vox/g.ogg
diff --git a/modular_citadel/sound/vox/gay.ogg b/sound/vox/gay.ogg
similarity index 100%
rename from modular_citadel/sound/vox/gay.ogg
rename to sound/vox/gay.ogg
diff --git a/modular_citadel/sound/vox/get.ogg b/sound/vox/get.ogg
similarity index 100%
rename from modular_citadel/sound/vox/get.ogg
rename to sound/vox/get.ogg
diff --git a/modular_citadel/sound/vox/go.ogg b/sound/vox/go.ogg
similarity index 100%
rename from modular_citadel/sound/vox/go.ogg
rename to sound/vox/go.ogg
diff --git a/modular_citadel/sound/vox/going.ogg b/sound/vox/going.ogg
similarity index 100%
rename from modular_citadel/sound/vox/going.ogg
rename to sound/vox/going.ogg
diff --git a/modular_citadel/sound/vox/good.ogg b/sound/vox/good.ogg
similarity index 100%
rename from modular_citadel/sound/vox/good.ogg
rename to sound/vox/good.ogg
diff --git a/modular_citadel/sound/vox/goodbye.ogg b/sound/vox/goodbye.ogg
similarity index 100%
rename from modular_citadel/sound/vox/goodbye.ogg
rename to sound/vox/goodbye.ogg
diff --git a/modular_citadel/sound/vox/gordon.ogg b/sound/vox/gordon.ogg
similarity index 100%
rename from modular_citadel/sound/vox/gordon.ogg
rename to sound/vox/gordon.ogg
diff --git a/modular_citadel/sound/vox/got.ogg b/sound/vox/got.ogg
similarity index 100%
rename from modular_citadel/sound/vox/got.ogg
rename to sound/vox/got.ogg
diff --git a/modular_citadel/sound/vox/government.ogg b/sound/vox/government.ogg
similarity index 100%
rename from modular_citadel/sound/vox/government.ogg
rename to sound/vox/government.ogg
diff --git a/modular_citadel/sound/vox/granted.ogg b/sound/vox/granted.ogg
similarity index 100%
rename from modular_citadel/sound/vox/granted.ogg
rename to sound/vox/granted.ogg
diff --git a/modular_citadel/sound/vox/great.ogg b/sound/vox/great.ogg
similarity index 100%
rename from modular_citadel/sound/vox/great.ogg
rename to sound/vox/great.ogg
diff --git a/modular_citadel/sound/vox/green.ogg b/sound/vox/green.ogg
similarity index 100%
rename from modular_citadel/sound/vox/green.ogg
rename to sound/vox/green.ogg
diff --git a/modular_citadel/sound/vox/grenade.ogg b/sound/vox/grenade.ogg
similarity index 100%
rename from modular_citadel/sound/vox/grenade.ogg
rename to sound/vox/grenade.ogg
diff --git a/modular_citadel/sound/vox/guard.ogg b/sound/vox/guard.ogg
similarity index 100%
rename from modular_citadel/sound/vox/guard.ogg
rename to sound/vox/guard.ogg
diff --git a/modular_citadel/sound/vox/gulf.ogg b/sound/vox/gulf.ogg
similarity index 100%
rename from modular_citadel/sound/vox/gulf.ogg
rename to sound/vox/gulf.ogg
diff --git a/modular_citadel/sound/vox/gun.ogg b/sound/vox/gun.ogg
similarity index 100%
rename from modular_citadel/sound/vox/gun.ogg
rename to sound/vox/gun.ogg
diff --git a/modular_citadel/sound/vox/guthrie.ogg b/sound/vox/guthrie.ogg
similarity index 100%
rename from modular_citadel/sound/vox/guthrie.ogg
rename to sound/vox/guthrie.ogg
diff --git a/modular_citadel/sound/vox/handling.ogg b/sound/vox/handling.ogg
similarity index 100%
rename from modular_citadel/sound/vox/handling.ogg
rename to sound/vox/handling.ogg
diff --git a/modular_citadel/sound/vox/hangar.ogg b/sound/vox/hangar.ogg
similarity index 100%
rename from modular_citadel/sound/vox/hangar.ogg
rename to sound/vox/hangar.ogg
diff --git a/modular_citadel/sound/vox/has.ogg b/sound/vox/has.ogg
similarity index 100%
rename from modular_citadel/sound/vox/has.ogg
rename to sound/vox/has.ogg
diff --git a/modular_citadel/sound/vox/have.ogg b/sound/vox/have.ogg
similarity index 100%
rename from modular_citadel/sound/vox/have.ogg
rename to sound/vox/have.ogg
diff --git a/modular_citadel/sound/vox/hazard.ogg b/sound/vox/hazard.ogg
similarity index 100%
rename from modular_citadel/sound/vox/hazard.ogg
rename to sound/vox/hazard.ogg
diff --git a/modular_citadel/sound/vox/head.ogg b/sound/vox/head.ogg
similarity index 100%
rename from modular_citadel/sound/vox/head.ogg
rename to sound/vox/head.ogg
diff --git a/modular_citadel/sound/vox/health.ogg b/sound/vox/health.ogg
similarity index 100%
rename from modular_citadel/sound/vox/health.ogg
rename to sound/vox/health.ogg
diff --git a/modular_citadel/sound/vox/heat.ogg b/sound/vox/heat.ogg
similarity index 100%
rename from modular_citadel/sound/vox/heat.ogg
rename to sound/vox/heat.ogg
diff --git a/modular_citadel/sound/vox/helicopter.ogg b/sound/vox/helicopter.ogg
similarity index 100%
rename from modular_citadel/sound/vox/helicopter.ogg
rename to sound/vox/helicopter.ogg
diff --git a/modular_citadel/sound/vox/helium.ogg b/sound/vox/helium.ogg
similarity index 100%
rename from modular_citadel/sound/vox/helium.ogg
rename to sound/vox/helium.ogg
diff --git a/modular_citadel/sound/vox/hello.ogg b/sound/vox/hello.ogg
similarity index 100%
rename from modular_citadel/sound/vox/hello.ogg
rename to sound/vox/hello.ogg
diff --git a/modular_citadel/sound/vox/help.ogg b/sound/vox/help.ogg
similarity index 100%
rename from modular_citadel/sound/vox/help.ogg
rename to sound/vox/help.ogg
diff --git a/modular_citadel/sound/vox/here.ogg b/sound/vox/here.ogg
similarity index 100%
rename from modular_citadel/sound/vox/here.ogg
rename to sound/vox/here.ogg
diff --git a/modular_citadel/sound/vox/hide.ogg b/sound/vox/hide.ogg
similarity index 100%
rename from modular_citadel/sound/vox/hide.ogg
rename to sound/vox/hide.ogg
diff --git a/modular_citadel/sound/vox/high.ogg b/sound/vox/high.ogg
similarity index 100%
rename from modular_citadel/sound/vox/high.ogg
rename to sound/vox/high.ogg
diff --git a/modular_citadel/sound/vox/highest.ogg b/sound/vox/highest.ogg
similarity index 100%
rename from modular_citadel/sound/vox/highest.ogg
rename to sound/vox/highest.ogg
diff --git a/modular_citadel/sound/vox/hit.ogg b/sound/vox/hit.ogg
similarity index 100%
rename from modular_citadel/sound/vox/hit.ogg
rename to sound/vox/hit.ogg
diff --git a/modular_citadel/sound/vox/holds.ogg b/sound/vox/holds.ogg
similarity index 100%
rename from modular_citadel/sound/vox/holds.ogg
rename to sound/vox/holds.ogg
diff --git a/modular_citadel/sound/vox/hole.ogg b/sound/vox/hole.ogg
similarity index 100%
rename from modular_citadel/sound/vox/hole.ogg
rename to sound/vox/hole.ogg
diff --git a/modular_citadel/sound/vox/hostile.ogg b/sound/vox/hostile.ogg
similarity index 100%
rename from modular_citadel/sound/vox/hostile.ogg
rename to sound/vox/hostile.ogg
diff --git a/modular_citadel/sound/vox/hot.ogg b/sound/vox/hot.ogg
similarity index 100%
rename from modular_citadel/sound/vox/hot.ogg
rename to sound/vox/hot.ogg
diff --git a/modular_citadel/sound/vox/hotel.ogg b/sound/vox/hotel.ogg
similarity index 100%
rename from modular_citadel/sound/vox/hotel.ogg
rename to sound/vox/hotel.ogg
diff --git a/modular_citadel/sound/vox/hour.ogg b/sound/vox/hour.ogg
similarity index 100%
rename from modular_citadel/sound/vox/hour.ogg
rename to sound/vox/hour.ogg
diff --git a/modular_citadel/sound/vox/hours.ogg b/sound/vox/hours.ogg
similarity index 100%
rename from modular_citadel/sound/vox/hours.ogg
rename to sound/vox/hours.ogg
diff --git a/modular_citadel/sound/vox/hundred.ogg b/sound/vox/hundred.ogg
similarity index 100%
rename from modular_citadel/sound/vox/hundred.ogg
rename to sound/vox/hundred.ogg
diff --git a/modular_citadel/sound/vox/hydro.ogg b/sound/vox/hydro.ogg
similarity index 100%
rename from modular_citadel/sound/vox/hydro.ogg
rename to sound/vox/hydro.ogg
diff --git a/modular_citadel/sound/vox/i.ogg b/sound/vox/i.ogg
similarity index 100%
rename from modular_citadel/sound/vox/i.ogg
rename to sound/vox/i.ogg
diff --git a/modular_citadel/sound/vox/idiot.ogg b/sound/vox/idiot.ogg
similarity index 100%
rename from modular_citadel/sound/vox/idiot.ogg
rename to sound/vox/idiot.ogg
diff --git a/modular_citadel/sound/vox/illegal.ogg b/sound/vox/illegal.ogg
similarity index 100%
rename from modular_citadel/sound/vox/illegal.ogg
rename to sound/vox/illegal.ogg
diff --git a/modular_citadel/sound/vox/immediate.ogg b/sound/vox/immediate.ogg
similarity index 100%
rename from modular_citadel/sound/vox/immediate.ogg
rename to sound/vox/immediate.ogg
diff --git a/modular_citadel/sound/vox/immediately.ogg b/sound/vox/immediately.ogg
similarity index 100%
rename from modular_citadel/sound/vox/immediately.ogg
rename to sound/vox/immediately.ogg
diff --git a/modular_citadel/sound/vox/in.ogg b/sound/vox/in.ogg
similarity index 100%
rename from modular_citadel/sound/vox/in.ogg
rename to sound/vox/in.ogg
diff --git a/modular_citadel/sound/vox/inches.ogg b/sound/vox/inches.ogg
similarity index 100%
rename from modular_citadel/sound/vox/inches.ogg
rename to sound/vox/inches.ogg
diff --git a/modular_citadel/sound/vox/india.ogg b/sound/vox/india.ogg
similarity index 100%
rename from modular_citadel/sound/vox/india.ogg
rename to sound/vox/india.ogg
diff --git a/modular_citadel/sound/vox/ing.ogg b/sound/vox/ing.ogg
similarity index 100%
rename from modular_citadel/sound/vox/ing.ogg
rename to sound/vox/ing.ogg
diff --git a/modular_citadel/sound/vox/inoperative.ogg b/sound/vox/inoperative.ogg
similarity index 100%
rename from modular_citadel/sound/vox/inoperative.ogg
rename to sound/vox/inoperative.ogg
diff --git a/modular_citadel/sound/vox/inside.ogg b/sound/vox/inside.ogg
similarity index 100%
rename from modular_citadel/sound/vox/inside.ogg
rename to sound/vox/inside.ogg
diff --git a/modular_citadel/sound/vox/inspection.ogg b/sound/vox/inspection.ogg
similarity index 100%
rename from modular_citadel/sound/vox/inspection.ogg
rename to sound/vox/inspection.ogg
diff --git a/modular_citadel/sound/vox/inspector.ogg b/sound/vox/inspector.ogg
similarity index 100%
rename from modular_citadel/sound/vox/inspector.ogg
rename to sound/vox/inspector.ogg
diff --git a/modular_citadel/sound/vox/interchange.ogg b/sound/vox/interchange.ogg
similarity index 100%
rename from modular_citadel/sound/vox/interchange.ogg
rename to sound/vox/interchange.ogg
diff --git a/modular_citadel/sound/vox/intruder.ogg b/sound/vox/intruder.ogg
similarity index 100%
rename from modular_citadel/sound/vox/intruder.ogg
rename to sound/vox/intruder.ogg
diff --git a/modular_citadel/sound/vox/invallid.ogg b/sound/vox/invallid.ogg
similarity index 100%
rename from modular_citadel/sound/vox/invallid.ogg
rename to sound/vox/invallid.ogg
diff --git a/modular_citadel/sound/vox/invasion.ogg b/sound/vox/invasion.ogg
similarity index 100%
rename from modular_citadel/sound/vox/invasion.ogg
rename to sound/vox/invasion.ogg
diff --git a/modular_citadel/sound/vox/is.ogg b/sound/vox/is.ogg
similarity index 100%
rename from modular_citadel/sound/vox/is.ogg
rename to sound/vox/is.ogg
diff --git a/modular_citadel/sound/vox/it.ogg b/sound/vox/it.ogg
similarity index 100%
rename from modular_citadel/sound/vox/it.ogg
rename to sound/vox/it.ogg
diff --git a/modular_citadel/sound/vox/johnson.ogg b/sound/vox/johnson.ogg
similarity index 100%
rename from modular_citadel/sound/vox/johnson.ogg
rename to sound/vox/johnson.ogg
diff --git a/modular_citadel/sound/vox/juliet.ogg b/sound/vox/juliet.ogg
similarity index 100%
rename from modular_citadel/sound/vox/juliet.ogg
rename to sound/vox/juliet.ogg
diff --git a/modular_citadel/sound/vox/key.ogg b/sound/vox/key.ogg
similarity index 100%
rename from modular_citadel/sound/vox/key.ogg
rename to sound/vox/key.ogg
diff --git a/modular_citadel/sound/vox/kill.ogg b/sound/vox/kill.ogg
similarity index 100%
rename from modular_citadel/sound/vox/kill.ogg
rename to sound/vox/kill.ogg
diff --git a/modular_citadel/sound/vox/kilo.ogg b/sound/vox/kilo.ogg
similarity index 100%
rename from modular_citadel/sound/vox/kilo.ogg
rename to sound/vox/kilo.ogg
diff --git a/modular_citadel/sound/vox/kit.ogg b/sound/vox/kit.ogg
similarity index 100%
rename from modular_citadel/sound/vox/kit.ogg
rename to sound/vox/kit.ogg
diff --git a/modular_citadel/sound/vox/lab.ogg b/sound/vox/lab.ogg
similarity index 100%
rename from modular_citadel/sound/vox/lab.ogg
rename to sound/vox/lab.ogg
diff --git a/modular_citadel/sound/vox/lambda.ogg b/sound/vox/lambda.ogg
similarity index 100%
rename from modular_citadel/sound/vox/lambda.ogg
rename to sound/vox/lambda.ogg
diff --git a/modular_citadel/sound/vox/laser.ogg b/sound/vox/laser.ogg
similarity index 100%
rename from modular_citadel/sound/vox/laser.ogg
rename to sound/vox/laser.ogg
diff --git a/modular_citadel/sound/vox/last.ogg b/sound/vox/last.ogg
similarity index 100%
rename from modular_citadel/sound/vox/last.ogg
rename to sound/vox/last.ogg
diff --git a/modular_citadel/sound/vox/launch.ogg b/sound/vox/launch.ogg
similarity index 100%
rename from modular_citadel/sound/vox/launch.ogg
rename to sound/vox/launch.ogg
diff --git a/modular_citadel/sound/vox/leak.ogg b/sound/vox/leak.ogg
similarity index 100%
rename from modular_citadel/sound/vox/leak.ogg
rename to sound/vox/leak.ogg
diff --git a/modular_citadel/sound/vox/leave.ogg b/sound/vox/leave.ogg
similarity index 100%
rename from modular_citadel/sound/vox/leave.ogg
rename to sound/vox/leave.ogg
diff --git a/modular_citadel/sound/vox/left.ogg b/sound/vox/left.ogg
similarity index 100%
rename from modular_citadel/sound/vox/left.ogg
rename to sound/vox/left.ogg
diff --git a/modular_citadel/sound/vox/legal.ogg b/sound/vox/legal.ogg
similarity index 100%
rename from modular_citadel/sound/vox/legal.ogg
rename to sound/vox/legal.ogg
diff --git a/modular_citadel/sound/vox/level.ogg b/sound/vox/level.ogg
similarity index 100%
rename from modular_citadel/sound/vox/level.ogg
rename to sound/vox/level.ogg
diff --git a/modular_citadel/sound/vox/lever.ogg b/sound/vox/lever.ogg
similarity index 100%
rename from modular_citadel/sound/vox/lever.ogg
rename to sound/vox/lever.ogg
diff --git a/modular_citadel/sound/vox/lie.ogg b/sound/vox/lie.ogg
similarity index 100%
rename from modular_citadel/sound/vox/lie.ogg
rename to sound/vox/lie.ogg
diff --git a/modular_citadel/sound/vox/lieutenant.ogg b/sound/vox/lieutenant.ogg
similarity index 100%
rename from modular_citadel/sound/vox/lieutenant.ogg
rename to sound/vox/lieutenant.ogg
diff --git a/modular_citadel/sound/vox/life.ogg b/sound/vox/life.ogg
similarity index 100%
rename from modular_citadel/sound/vox/life.ogg
rename to sound/vox/life.ogg
diff --git a/modular_citadel/sound/vox/light.ogg b/sound/vox/light.ogg
similarity index 100%
rename from modular_citadel/sound/vox/light.ogg
rename to sound/vox/light.ogg
diff --git a/modular_citadel/sound/vox/lima.ogg b/sound/vox/lima.ogg
similarity index 100%
rename from modular_citadel/sound/vox/lima.ogg
rename to sound/vox/lima.ogg
diff --git a/modular_citadel/sound/vox/liquid.ogg b/sound/vox/liquid.ogg
similarity index 100%
rename from modular_citadel/sound/vox/liquid.ogg
rename to sound/vox/liquid.ogg
diff --git a/modular_citadel/sound/vox/loading.ogg b/sound/vox/loading.ogg
similarity index 100%
rename from modular_citadel/sound/vox/loading.ogg
rename to sound/vox/loading.ogg
diff --git a/modular_citadel/sound/vox/locate.ogg b/sound/vox/locate.ogg
similarity index 100%
rename from modular_citadel/sound/vox/locate.ogg
rename to sound/vox/locate.ogg
diff --git a/modular_citadel/sound/vox/located.ogg b/sound/vox/located.ogg
similarity index 100%
rename from modular_citadel/sound/vox/located.ogg
rename to sound/vox/located.ogg
diff --git a/modular_citadel/sound/vox/location.ogg b/sound/vox/location.ogg
similarity index 100%
rename from modular_citadel/sound/vox/location.ogg
rename to sound/vox/location.ogg
diff --git a/modular_citadel/sound/vox/lock.ogg b/sound/vox/lock.ogg
similarity index 100%
rename from modular_citadel/sound/vox/lock.ogg
rename to sound/vox/lock.ogg
diff --git a/modular_citadel/sound/vox/locked.ogg b/sound/vox/locked.ogg
similarity index 100%
rename from modular_citadel/sound/vox/locked.ogg
rename to sound/vox/locked.ogg
diff --git a/modular_citadel/sound/vox/locker.ogg b/sound/vox/locker.ogg
similarity index 100%
rename from modular_citadel/sound/vox/locker.ogg
rename to sound/vox/locker.ogg
diff --git a/modular_citadel/sound/vox/lockout.ogg b/sound/vox/lockout.ogg
similarity index 100%
rename from modular_citadel/sound/vox/lockout.ogg
rename to sound/vox/lockout.ogg
diff --git a/modular_citadel/sound/vox/lower.ogg b/sound/vox/lower.ogg
similarity index 100%
rename from modular_citadel/sound/vox/lower.ogg
rename to sound/vox/lower.ogg
diff --git a/modular_citadel/sound/vox/lowest.ogg b/sound/vox/lowest.ogg
similarity index 100%
rename from modular_citadel/sound/vox/lowest.ogg
rename to sound/vox/lowest.ogg
diff --git a/modular_citadel/sound/vox/magnetic.ogg b/sound/vox/magnetic.ogg
similarity index 100%
rename from modular_citadel/sound/vox/magnetic.ogg
rename to sound/vox/magnetic.ogg
diff --git a/modular_citadel/sound/vox/main.ogg b/sound/vox/main.ogg
similarity index 100%
rename from modular_citadel/sound/vox/main.ogg
rename to sound/vox/main.ogg
diff --git a/modular_citadel/sound/vox/maintenance.ogg b/sound/vox/maintenance.ogg
similarity index 100%
rename from modular_citadel/sound/vox/maintenance.ogg
rename to sound/vox/maintenance.ogg
diff --git a/modular_citadel/sound/vox/malfunction.ogg b/sound/vox/malfunction.ogg
similarity index 100%
rename from modular_citadel/sound/vox/malfunction.ogg
rename to sound/vox/malfunction.ogg
diff --git a/modular_citadel/sound/vox/man.ogg b/sound/vox/man.ogg
similarity index 100%
rename from modular_citadel/sound/vox/man.ogg
rename to sound/vox/man.ogg
diff --git a/modular_citadel/sound/vox/mass.ogg b/sound/vox/mass.ogg
similarity index 100%
rename from modular_citadel/sound/vox/mass.ogg
rename to sound/vox/mass.ogg
diff --git a/modular_citadel/sound/vox/materials.ogg b/sound/vox/materials.ogg
similarity index 100%
rename from modular_citadel/sound/vox/materials.ogg
rename to sound/vox/materials.ogg
diff --git a/modular_citadel/sound/vox/maximum.ogg b/sound/vox/maximum.ogg
similarity index 100%
rename from modular_citadel/sound/vox/maximum.ogg
rename to sound/vox/maximum.ogg
diff --git a/modular_citadel/sound/vox/may.ogg b/sound/vox/may.ogg
similarity index 100%
rename from modular_citadel/sound/vox/may.ogg
rename to sound/vox/may.ogg
diff --git a/modular_citadel/sound/vox/med.ogg b/sound/vox/med.ogg
similarity index 100%
rename from modular_citadel/sound/vox/med.ogg
rename to sound/vox/med.ogg
diff --git a/modular_citadel/sound/vox/medical.ogg b/sound/vox/medical.ogg
similarity index 100%
rename from modular_citadel/sound/vox/medical.ogg
rename to sound/vox/medical.ogg
diff --git a/modular_citadel/sound/vox/men.ogg b/sound/vox/men.ogg
similarity index 100%
rename from modular_citadel/sound/vox/men.ogg
rename to sound/vox/men.ogg
diff --git a/modular_citadel/sound/vox/mercy.ogg b/sound/vox/mercy.ogg
similarity index 100%
rename from modular_citadel/sound/vox/mercy.ogg
rename to sound/vox/mercy.ogg
diff --git a/modular_citadel/sound/vox/mesa.ogg b/sound/vox/mesa.ogg
similarity index 100%
rename from modular_citadel/sound/vox/mesa.ogg
rename to sound/vox/mesa.ogg
diff --git a/modular_citadel/sound/vox/message.ogg b/sound/vox/message.ogg
similarity index 100%
rename from modular_citadel/sound/vox/message.ogg
rename to sound/vox/message.ogg
diff --git a/modular_citadel/sound/vox/meter.ogg b/sound/vox/meter.ogg
similarity index 100%
rename from modular_citadel/sound/vox/meter.ogg
rename to sound/vox/meter.ogg
diff --git a/modular_citadel/sound/vox/micro.ogg b/sound/vox/micro.ogg
similarity index 100%
rename from modular_citadel/sound/vox/micro.ogg
rename to sound/vox/micro.ogg
diff --git a/modular_citadel/sound/vox/middle.ogg b/sound/vox/middle.ogg
similarity index 100%
rename from modular_citadel/sound/vox/middle.ogg
rename to sound/vox/middle.ogg
diff --git a/modular_citadel/sound/vox/mike.ogg b/sound/vox/mike.ogg
similarity index 100%
rename from modular_citadel/sound/vox/mike.ogg
rename to sound/vox/mike.ogg
diff --git a/modular_citadel/sound/vox/miles.ogg b/sound/vox/miles.ogg
similarity index 100%
rename from modular_citadel/sound/vox/miles.ogg
rename to sound/vox/miles.ogg
diff --git a/modular_citadel/sound/vox/military.ogg b/sound/vox/military.ogg
similarity index 100%
rename from modular_citadel/sound/vox/military.ogg
rename to sound/vox/military.ogg
diff --git a/modular_citadel/sound/vox/milli.ogg b/sound/vox/milli.ogg
similarity index 100%
rename from modular_citadel/sound/vox/milli.ogg
rename to sound/vox/milli.ogg
diff --git a/modular_citadel/sound/vox/million.ogg b/sound/vox/million.ogg
similarity index 100%
rename from modular_citadel/sound/vox/million.ogg
rename to sound/vox/million.ogg
diff --git a/modular_citadel/sound/vox/minefield.ogg b/sound/vox/minefield.ogg
similarity index 100%
rename from modular_citadel/sound/vox/minefield.ogg
rename to sound/vox/minefield.ogg
diff --git a/modular_citadel/sound/vox/minimum.ogg b/sound/vox/minimum.ogg
similarity index 100%
rename from modular_citadel/sound/vox/minimum.ogg
rename to sound/vox/minimum.ogg
diff --git a/modular_citadel/sound/vox/minutes.ogg b/sound/vox/minutes.ogg
similarity index 100%
rename from modular_citadel/sound/vox/minutes.ogg
rename to sound/vox/minutes.ogg
diff --git a/modular_citadel/sound/vox/mister.ogg b/sound/vox/mister.ogg
similarity index 100%
rename from modular_citadel/sound/vox/mister.ogg
rename to sound/vox/mister.ogg
diff --git a/modular_citadel/sound/vox/mode.ogg b/sound/vox/mode.ogg
similarity index 100%
rename from modular_citadel/sound/vox/mode.ogg
rename to sound/vox/mode.ogg
diff --git a/modular_citadel/sound/vox/motor.ogg b/sound/vox/motor.ogg
similarity index 100%
rename from modular_citadel/sound/vox/motor.ogg
rename to sound/vox/motor.ogg
diff --git a/modular_citadel/sound/vox/motorpool.ogg b/sound/vox/motorpool.ogg
similarity index 100%
rename from modular_citadel/sound/vox/motorpool.ogg
rename to sound/vox/motorpool.ogg
diff --git a/modular_citadel/sound/vox/move.ogg b/sound/vox/move.ogg
similarity index 100%
rename from modular_citadel/sound/vox/move.ogg
rename to sound/vox/move.ogg
diff --git a/modular_citadel/sound/vox/must.ogg b/sound/vox/must.ogg
similarity index 100%
rename from modular_citadel/sound/vox/must.ogg
rename to sound/vox/must.ogg
diff --git a/modular_citadel/sound/vox/nearest.ogg b/sound/vox/nearest.ogg
similarity index 100%
rename from modular_citadel/sound/vox/nearest.ogg
rename to sound/vox/nearest.ogg
diff --git a/modular_citadel/sound/vox/nice.ogg b/sound/vox/nice.ogg
similarity index 100%
rename from modular_citadel/sound/vox/nice.ogg
rename to sound/vox/nice.ogg
diff --git a/modular_citadel/sound/vox/nine.ogg b/sound/vox/nine.ogg
similarity index 100%
rename from modular_citadel/sound/vox/nine.ogg
rename to sound/vox/nine.ogg
diff --git a/modular_citadel/sound/vox/nineteen.ogg b/sound/vox/nineteen.ogg
similarity index 100%
rename from modular_citadel/sound/vox/nineteen.ogg
rename to sound/vox/nineteen.ogg
diff --git a/modular_citadel/sound/vox/ninety.ogg b/sound/vox/ninety.ogg
similarity index 100%
rename from modular_citadel/sound/vox/ninety.ogg
rename to sound/vox/ninety.ogg
diff --git a/modular_citadel/sound/vox/no.ogg b/sound/vox/no.ogg
similarity index 100%
rename from modular_citadel/sound/vox/no.ogg
rename to sound/vox/no.ogg
diff --git a/modular_citadel/sound/vox/nominal.ogg b/sound/vox/nominal.ogg
similarity index 100%
rename from modular_citadel/sound/vox/nominal.ogg
rename to sound/vox/nominal.ogg
diff --git a/modular_citadel/sound/vox/north.ogg b/sound/vox/north.ogg
similarity index 100%
rename from modular_citadel/sound/vox/north.ogg
rename to sound/vox/north.ogg
diff --git a/modular_citadel/sound/vox/not.ogg b/sound/vox/not.ogg
similarity index 100%
rename from modular_citadel/sound/vox/not.ogg
rename to sound/vox/not.ogg
diff --git a/modular_citadel/sound/vox/november.ogg b/sound/vox/november.ogg
similarity index 100%
rename from modular_citadel/sound/vox/november.ogg
rename to sound/vox/november.ogg
diff --git a/modular_citadel/sound/vox/now.ogg b/sound/vox/now.ogg
similarity index 100%
rename from modular_citadel/sound/vox/now.ogg
rename to sound/vox/now.ogg
diff --git a/modular_citadel/sound/vox/number.ogg b/sound/vox/number.ogg
similarity index 100%
rename from modular_citadel/sound/vox/number.ogg
rename to sound/vox/number.ogg
diff --git a/modular_citadel/sound/vox/objective.ogg b/sound/vox/objective.ogg
similarity index 100%
rename from modular_citadel/sound/vox/objective.ogg
rename to sound/vox/objective.ogg
diff --git a/modular_citadel/sound/vox/observation.ogg b/sound/vox/observation.ogg
similarity index 100%
rename from modular_citadel/sound/vox/observation.ogg
rename to sound/vox/observation.ogg
diff --git a/modular_citadel/sound/vox/of.ogg b/sound/vox/of.ogg
similarity index 100%
rename from modular_citadel/sound/vox/of.ogg
rename to sound/vox/of.ogg
diff --git a/modular_citadel/sound/vox/officer.ogg b/sound/vox/officer.ogg
similarity index 100%
rename from modular_citadel/sound/vox/officer.ogg
rename to sound/vox/officer.ogg
diff --git a/modular_citadel/sound/vox/ok.ogg b/sound/vox/ok.ogg
similarity index 100%
rename from modular_citadel/sound/vox/ok.ogg
rename to sound/vox/ok.ogg
diff --git a/modular_citadel/sound/vox/on.ogg b/sound/vox/on.ogg
similarity index 100%
rename from modular_citadel/sound/vox/on.ogg
rename to sound/vox/on.ogg
diff --git a/modular_citadel/sound/vox/one.ogg b/sound/vox/one.ogg
similarity index 100%
rename from modular_citadel/sound/vox/one.ogg
rename to sound/vox/one.ogg
diff --git a/modular_citadel/sound/vox/open.ogg b/sound/vox/open.ogg
similarity index 100%
rename from modular_citadel/sound/vox/open.ogg
rename to sound/vox/open.ogg
diff --git a/modular_citadel/sound/vox/operating.ogg b/sound/vox/operating.ogg
similarity index 100%
rename from modular_citadel/sound/vox/operating.ogg
rename to sound/vox/operating.ogg
diff --git a/modular_citadel/sound/vox/operations.ogg b/sound/vox/operations.ogg
similarity index 100%
rename from modular_citadel/sound/vox/operations.ogg
rename to sound/vox/operations.ogg
diff --git a/modular_citadel/sound/vox/operative.ogg b/sound/vox/operative.ogg
similarity index 100%
rename from modular_citadel/sound/vox/operative.ogg
rename to sound/vox/operative.ogg
diff --git a/modular_citadel/sound/vox/option.ogg b/sound/vox/option.ogg
similarity index 100%
rename from modular_citadel/sound/vox/option.ogg
rename to sound/vox/option.ogg
diff --git a/modular_citadel/sound/vox/order.ogg b/sound/vox/order.ogg
similarity index 100%
rename from modular_citadel/sound/vox/order.ogg
rename to sound/vox/order.ogg
diff --git a/modular_citadel/sound/vox/organic.ogg b/sound/vox/organic.ogg
similarity index 100%
rename from modular_citadel/sound/vox/organic.ogg
rename to sound/vox/organic.ogg
diff --git a/modular_citadel/sound/vox/oscar.ogg b/sound/vox/oscar.ogg
similarity index 100%
rename from modular_citadel/sound/vox/oscar.ogg
rename to sound/vox/oscar.ogg
diff --git a/modular_citadel/sound/vox/out.ogg b/sound/vox/out.ogg
similarity index 100%
rename from modular_citadel/sound/vox/out.ogg
rename to sound/vox/out.ogg
diff --git a/modular_citadel/sound/vox/outside.ogg b/sound/vox/outside.ogg
similarity index 100%
rename from modular_citadel/sound/vox/outside.ogg
rename to sound/vox/outside.ogg
diff --git a/modular_citadel/sound/vox/over.ogg b/sound/vox/over.ogg
similarity index 100%
rename from modular_citadel/sound/vox/over.ogg
rename to sound/vox/over.ogg
diff --git a/modular_citadel/sound/vox/overload.ogg b/sound/vox/overload.ogg
similarity index 100%
rename from modular_citadel/sound/vox/overload.ogg
rename to sound/vox/overload.ogg
diff --git a/modular_citadel/sound/vox/override.ogg b/sound/vox/override.ogg
similarity index 100%
rename from modular_citadel/sound/vox/override.ogg
rename to sound/vox/override.ogg
diff --git a/modular_citadel/sound/vox/pacify.ogg b/sound/vox/pacify.ogg
similarity index 100%
rename from modular_citadel/sound/vox/pacify.ogg
rename to sound/vox/pacify.ogg
diff --git a/modular_citadel/sound/vox/pain.ogg b/sound/vox/pain.ogg
similarity index 100%
rename from modular_citadel/sound/vox/pain.ogg
rename to sound/vox/pain.ogg
diff --git a/modular_citadel/sound/vox/pal.ogg b/sound/vox/pal.ogg
similarity index 100%
rename from modular_citadel/sound/vox/pal.ogg
rename to sound/vox/pal.ogg
diff --git a/modular_citadel/sound/vox/panel.ogg b/sound/vox/panel.ogg
similarity index 100%
rename from modular_citadel/sound/vox/panel.ogg
rename to sound/vox/panel.ogg
diff --git a/modular_citadel/sound/vox/percent.ogg b/sound/vox/percent.ogg
similarity index 100%
rename from modular_citadel/sound/vox/percent.ogg
rename to sound/vox/percent.ogg
diff --git a/modular_citadel/sound/vox/perimeter.ogg b/sound/vox/perimeter.ogg
similarity index 100%
rename from modular_citadel/sound/vox/perimeter.ogg
rename to sound/vox/perimeter.ogg
diff --git a/modular_citadel/sound/vox/period.ogg b/sound/vox/period.ogg
similarity index 100%
rename from modular_citadel/sound/vox/period.ogg
rename to sound/vox/period.ogg
diff --git a/modular_citadel/sound/vox/permitted.ogg b/sound/vox/permitted.ogg
similarity index 100%
rename from modular_citadel/sound/vox/permitted.ogg
rename to sound/vox/permitted.ogg
diff --git a/modular_citadel/sound/vox/personnel.ogg b/sound/vox/personnel.ogg
similarity index 100%
rename from modular_citadel/sound/vox/personnel.ogg
rename to sound/vox/personnel.ogg
diff --git a/modular_citadel/sound/vox/pipe.ogg b/sound/vox/pipe.ogg
similarity index 100%
rename from modular_citadel/sound/vox/pipe.ogg
rename to sound/vox/pipe.ogg
diff --git a/modular_citadel/sound/vox/plant.ogg b/sound/vox/plant.ogg
similarity index 100%
rename from modular_citadel/sound/vox/plant.ogg
rename to sound/vox/plant.ogg
diff --git a/modular_citadel/sound/vox/platform.ogg b/sound/vox/platform.ogg
similarity index 100%
rename from modular_citadel/sound/vox/platform.ogg
rename to sound/vox/platform.ogg
diff --git a/modular_citadel/sound/vox/please.ogg b/sound/vox/please.ogg
similarity index 100%
rename from modular_citadel/sound/vox/please.ogg
rename to sound/vox/please.ogg
diff --git a/modular_citadel/sound/vox/point.ogg b/sound/vox/point.ogg
similarity index 100%
rename from modular_citadel/sound/vox/point.ogg
rename to sound/vox/point.ogg
diff --git a/modular_citadel/sound/vox/portal.ogg b/sound/vox/portal.ogg
similarity index 100%
rename from modular_citadel/sound/vox/portal.ogg
rename to sound/vox/portal.ogg
diff --git a/modular_citadel/sound/vox/power.ogg b/sound/vox/power.ogg
similarity index 100%
rename from modular_citadel/sound/vox/power.ogg
rename to sound/vox/power.ogg
diff --git a/modular_citadel/sound/vox/presence.ogg b/sound/vox/presence.ogg
similarity index 100%
rename from modular_citadel/sound/vox/presence.ogg
rename to sound/vox/presence.ogg
diff --git a/modular_citadel/sound/vox/press.ogg b/sound/vox/press.ogg
similarity index 100%
rename from modular_citadel/sound/vox/press.ogg
rename to sound/vox/press.ogg
diff --git a/modular_citadel/sound/vox/primary.ogg b/sound/vox/primary.ogg
similarity index 100%
rename from modular_citadel/sound/vox/primary.ogg
rename to sound/vox/primary.ogg
diff --git a/modular_citadel/sound/vox/proceed.ogg b/sound/vox/proceed.ogg
similarity index 100%
rename from modular_citadel/sound/vox/proceed.ogg
rename to sound/vox/proceed.ogg
diff --git a/modular_citadel/sound/vox/processing.ogg b/sound/vox/processing.ogg
similarity index 100%
rename from modular_citadel/sound/vox/processing.ogg
rename to sound/vox/processing.ogg
diff --git a/modular_citadel/sound/vox/progress.ogg b/sound/vox/progress.ogg
similarity index 100%
rename from modular_citadel/sound/vox/progress.ogg
rename to sound/vox/progress.ogg
diff --git a/modular_citadel/sound/vox/proper.ogg b/sound/vox/proper.ogg
similarity index 100%
rename from modular_citadel/sound/vox/proper.ogg
rename to sound/vox/proper.ogg
diff --git a/modular_citadel/sound/vox/propulsion.ogg b/sound/vox/propulsion.ogg
similarity index 100%
rename from modular_citadel/sound/vox/propulsion.ogg
rename to sound/vox/propulsion.ogg
diff --git a/modular_citadel/sound/vox/prosecute.ogg b/sound/vox/prosecute.ogg
similarity index 100%
rename from modular_citadel/sound/vox/prosecute.ogg
rename to sound/vox/prosecute.ogg
diff --git a/modular_citadel/sound/vox/protective.ogg b/sound/vox/protective.ogg
similarity index 100%
rename from modular_citadel/sound/vox/protective.ogg
rename to sound/vox/protective.ogg
diff --git a/modular_citadel/sound/vox/push.ogg b/sound/vox/push.ogg
similarity index 100%
rename from modular_citadel/sound/vox/push.ogg
rename to sound/vox/push.ogg
diff --git a/modular_citadel/sound/vox/quantum.ogg b/sound/vox/quantum.ogg
similarity index 100%
rename from modular_citadel/sound/vox/quantum.ogg
rename to sound/vox/quantum.ogg
diff --git a/modular_citadel/sound/vox/quebec.ogg b/sound/vox/quebec.ogg
similarity index 100%
rename from modular_citadel/sound/vox/quebec.ogg
rename to sound/vox/quebec.ogg
diff --git a/modular_citadel/sound/vox/question.ogg b/sound/vox/question.ogg
similarity index 100%
rename from modular_citadel/sound/vox/question.ogg
rename to sound/vox/question.ogg
diff --git a/modular_citadel/sound/vox/questioning.ogg b/sound/vox/questioning.ogg
similarity index 100%
rename from modular_citadel/sound/vox/questioning.ogg
rename to sound/vox/questioning.ogg
diff --git a/modular_citadel/sound/vox/quick.ogg b/sound/vox/quick.ogg
similarity index 100%
rename from modular_citadel/sound/vox/quick.ogg
rename to sound/vox/quick.ogg
diff --git a/modular_citadel/sound/vox/quit.ogg b/sound/vox/quit.ogg
similarity index 100%
rename from modular_citadel/sound/vox/quit.ogg
rename to sound/vox/quit.ogg
diff --git a/modular_citadel/sound/vox/radiation.ogg b/sound/vox/radiation.ogg
similarity index 100%
rename from modular_citadel/sound/vox/radiation.ogg
rename to sound/vox/radiation.ogg
diff --git a/modular_citadel/sound/vox/radioactive.ogg b/sound/vox/radioactive.ogg
similarity index 100%
rename from modular_citadel/sound/vox/radioactive.ogg
rename to sound/vox/radioactive.ogg
diff --git a/modular_citadel/sound/vox/rads.ogg b/sound/vox/rads.ogg
similarity index 100%
rename from modular_citadel/sound/vox/rads.ogg
rename to sound/vox/rads.ogg
diff --git a/modular_citadel/sound/vox/rapid.ogg b/sound/vox/rapid.ogg
similarity index 100%
rename from modular_citadel/sound/vox/rapid.ogg
rename to sound/vox/rapid.ogg
diff --git a/modular_citadel/sound/vox/reach.ogg b/sound/vox/reach.ogg
similarity index 100%
rename from modular_citadel/sound/vox/reach.ogg
rename to sound/vox/reach.ogg
diff --git a/modular_citadel/sound/vox/reached.ogg b/sound/vox/reached.ogg
similarity index 100%
rename from modular_citadel/sound/vox/reached.ogg
rename to sound/vox/reached.ogg
diff --git a/modular_citadel/sound/vox/reactor.ogg b/sound/vox/reactor.ogg
similarity index 100%
rename from modular_citadel/sound/vox/reactor.ogg
rename to sound/vox/reactor.ogg
diff --git a/modular_citadel/sound/vox/red.ogg b/sound/vox/red.ogg
similarity index 100%
rename from modular_citadel/sound/vox/red.ogg
rename to sound/vox/red.ogg
diff --git a/modular_citadel/sound/vox/relay.ogg b/sound/vox/relay.ogg
similarity index 100%
rename from modular_citadel/sound/vox/relay.ogg
rename to sound/vox/relay.ogg
diff --git a/modular_citadel/sound/vox/released.ogg b/sound/vox/released.ogg
similarity index 100%
rename from modular_citadel/sound/vox/released.ogg
rename to sound/vox/released.ogg
diff --git a/modular_citadel/sound/vox/remaining.ogg b/sound/vox/remaining.ogg
similarity index 100%
rename from modular_citadel/sound/vox/remaining.ogg
rename to sound/vox/remaining.ogg
diff --git a/modular_citadel/sound/vox/renegade.ogg b/sound/vox/renegade.ogg
similarity index 100%
rename from modular_citadel/sound/vox/renegade.ogg
rename to sound/vox/renegade.ogg
diff --git a/modular_citadel/sound/vox/repair.ogg b/sound/vox/repair.ogg
similarity index 100%
rename from modular_citadel/sound/vox/repair.ogg
rename to sound/vox/repair.ogg
diff --git a/modular_citadel/sound/vox/report.ogg b/sound/vox/report.ogg
similarity index 100%
rename from modular_citadel/sound/vox/report.ogg
rename to sound/vox/report.ogg
diff --git a/modular_citadel/sound/vox/reports.ogg b/sound/vox/reports.ogg
similarity index 100%
rename from modular_citadel/sound/vox/reports.ogg
rename to sound/vox/reports.ogg
diff --git a/modular_citadel/sound/vox/required.ogg b/sound/vox/required.ogg
similarity index 100%
rename from modular_citadel/sound/vox/required.ogg
rename to sound/vox/required.ogg
diff --git a/modular_citadel/sound/vox/research.ogg b/sound/vox/research.ogg
similarity index 100%
rename from modular_citadel/sound/vox/research.ogg
rename to sound/vox/research.ogg
diff --git a/modular_citadel/sound/vox/reset.ogg b/sound/vox/reset.ogg
similarity index 100%
rename from modular_citadel/sound/vox/reset.ogg
rename to sound/vox/reset.ogg
diff --git a/modular_citadel/sound/vox/resevoir.ogg b/sound/vox/resevoir.ogg
similarity index 100%
rename from modular_citadel/sound/vox/resevoir.ogg
rename to sound/vox/resevoir.ogg
diff --git a/modular_citadel/sound/vox/resistance.ogg b/sound/vox/resistance.ogg
similarity index 100%
rename from modular_citadel/sound/vox/resistance.ogg
rename to sound/vox/resistance.ogg
diff --git a/modular_citadel/sound/vox/returned.ogg b/sound/vox/returned.ogg
similarity index 100%
rename from modular_citadel/sound/vox/returned.ogg
rename to sound/vox/returned.ogg
diff --git a/modular_citadel/sound/vox/right.ogg b/sound/vox/right.ogg
similarity index 100%
rename from modular_citadel/sound/vox/right.ogg
rename to sound/vox/right.ogg
diff --git a/modular_citadel/sound/vox/rocket.ogg b/sound/vox/rocket.ogg
similarity index 100%
rename from modular_citadel/sound/vox/rocket.ogg
rename to sound/vox/rocket.ogg
diff --git a/modular_citadel/sound/vox/roger.ogg b/sound/vox/roger.ogg
similarity index 100%
rename from modular_citadel/sound/vox/roger.ogg
rename to sound/vox/roger.ogg
diff --git a/modular_citadel/sound/vox/romeo.ogg b/sound/vox/romeo.ogg
similarity index 100%
rename from modular_citadel/sound/vox/romeo.ogg
rename to sound/vox/romeo.ogg
diff --git a/modular_citadel/sound/vox/room.ogg b/sound/vox/room.ogg
similarity index 100%
rename from modular_citadel/sound/vox/room.ogg
rename to sound/vox/room.ogg
diff --git a/modular_citadel/sound/vox/round.ogg b/sound/vox/round.ogg
similarity index 100%
rename from modular_citadel/sound/vox/round.ogg
rename to sound/vox/round.ogg
diff --git a/modular_citadel/sound/vox/run.ogg b/sound/vox/run.ogg
similarity index 100%
rename from modular_citadel/sound/vox/run.ogg
rename to sound/vox/run.ogg
diff --git a/modular_citadel/sound/vox/safe.ogg b/sound/vox/safe.ogg
similarity index 100%
rename from modular_citadel/sound/vox/safe.ogg
rename to sound/vox/safe.ogg
diff --git a/modular_citadel/sound/vox/safety.ogg b/sound/vox/safety.ogg
similarity index 100%
rename from modular_citadel/sound/vox/safety.ogg
rename to sound/vox/safety.ogg
diff --git a/modular_citadel/sound/vox/sargeant.ogg b/sound/vox/sargeant.ogg
similarity index 100%
rename from modular_citadel/sound/vox/sargeant.ogg
rename to sound/vox/sargeant.ogg
diff --git a/modular_citadel/sound/vox/satellite.ogg b/sound/vox/satellite.ogg
similarity index 100%
rename from modular_citadel/sound/vox/satellite.ogg
rename to sound/vox/satellite.ogg
diff --git a/modular_citadel/sound/vox/save.ogg b/sound/vox/save.ogg
similarity index 100%
rename from modular_citadel/sound/vox/save.ogg
rename to sound/vox/save.ogg
diff --git a/modular_citadel/sound/vox/science.ogg b/sound/vox/science.ogg
similarity index 100%
rename from modular_citadel/sound/vox/science.ogg
rename to sound/vox/science.ogg
diff --git a/modular_citadel/sound/vox/scores.ogg b/sound/vox/scores.ogg
similarity index 100%
rename from modular_citadel/sound/vox/scores.ogg
rename to sound/vox/scores.ogg
diff --git a/modular_citadel/sound/vox/scream.ogg b/sound/vox/scream.ogg
similarity index 100%
rename from modular_citadel/sound/vox/scream.ogg
rename to sound/vox/scream.ogg
diff --git a/modular_citadel/sound/vox/screen.ogg b/sound/vox/screen.ogg
similarity index 100%
rename from modular_citadel/sound/vox/screen.ogg
rename to sound/vox/screen.ogg
diff --git a/modular_citadel/sound/vox/search.ogg b/sound/vox/search.ogg
similarity index 100%
rename from modular_citadel/sound/vox/search.ogg
rename to sound/vox/search.ogg
diff --git a/modular_citadel/sound/vox/second.ogg b/sound/vox/second.ogg
similarity index 100%
rename from modular_citadel/sound/vox/second.ogg
rename to sound/vox/second.ogg
diff --git a/modular_citadel/sound/vox/secondary.ogg b/sound/vox/secondary.ogg
similarity index 100%
rename from modular_citadel/sound/vox/secondary.ogg
rename to sound/vox/secondary.ogg
diff --git a/modular_citadel/sound/vox/seconds.ogg b/sound/vox/seconds.ogg
similarity index 100%
rename from modular_citadel/sound/vox/seconds.ogg
rename to sound/vox/seconds.ogg
diff --git a/modular_citadel/sound/vox/sector.ogg b/sound/vox/sector.ogg
similarity index 100%
rename from modular_citadel/sound/vox/sector.ogg
rename to sound/vox/sector.ogg
diff --git a/modular_citadel/sound/vox/secure.ogg b/sound/vox/secure.ogg
similarity index 100%
rename from modular_citadel/sound/vox/secure.ogg
rename to sound/vox/secure.ogg
diff --git a/modular_citadel/sound/vox/secured.ogg b/sound/vox/secured.ogg
similarity index 100%
rename from modular_citadel/sound/vox/secured.ogg
rename to sound/vox/secured.ogg
diff --git a/modular_citadel/sound/vox/security.ogg b/sound/vox/security.ogg
similarity index 100%
rename from modular_citadel/sound/vox/security.ogg
rename to sound/vox/security.ogg
diff --git a/modular_citadel/sound/vox/select.ogg b/sound/vox/select.ogg
similarity index 100%
rename from modular_citadel/sound/vox/select.ogg
rename to sound/vox/select.ogg
diff --git a/modular_citadel/sound/vox/selected.ogg b/sound/vox/selected.ogg
similarity index 100%
rename from modular_citadel/sound/vox/selected.ogg
rename to sound/vox/selected.ogg
diff --git a/modular_citadel/sound/vox/service.ogg b/sound/vox/service.ogg
similarity index 100%
rename from modular_citadel/sound/vox/service.ogg
rename to sound/vox/service.ogg
diff --git a/modular_citadel/sound/vox/seven.ogg b/sound/vox/seven.ogg
similarity index 100%
rename from modular_citadel/sound/vox/seven.ogg
rename to sound/vox/seven.ogg
diff --git a/modular_citadel/sound/vox/seventeen.ogg b/sound/vox/seventeen.ogg
similarity index 100%
rename from modular_citadel/sound/vox/seventeen.ogg
rename to sound/vox/seventeen.ogg
diff --git a/modular_citadel/sound/vox/seventy.ogg b/sound/vox/seventy.ogg
similarity index 100%
rename from modular_citadel/sound/vox/seventy.ogg
rename to sound/vox/seventy.ogg
diff --git a/modular_citadel/sound/vox/severe.ogg b/sound/vox/severe.ogg
similarity index 100%
rename from modular_citadel/sound/vox/severe.ogg
rename to sound/vox/severe.ogg
diff --git a/modular_citadel/sound/vox/sewage.ogg b/sound/vox/sewage.ogg
similarity index 100%
rename from modular_citadel/sound/vox/sewage.ogg
rename to sound/vox/sewage.ogg
diff --git a/modular_citadel/sound/vox/sewer.ogg b/sound/vox/sewer.ogg
similarity index 100%
rename from modular_citadel/sound/vox/sewer.ogg
rename to sound/vox/sewer.ogg
diff --git a/modular_citadel/sound/vox/shield.ogg b/sound/vox/shield.ogg
similarity index 100%
rename from modular_citadel/sound/vox/shield.ogg
rename to sound/vox/shield.ogg
diff --git a/modular_citadel/sound/vox/shipment.ogg b/sound/vox/shipment.ogg
similarity index 100%
rename from modular_citadel/sound/vox/shipment.ogg
rename to sound/vox/shipment.ogg
diff --git a/modular_citadel/sound/vox/shock.ogg b/sound/vox/shock.ogg
similarity index 100%
rename from modular_citadel/sound/vox/shock.ogg
rename to sound/vox/shock.ogg
diff --git a/modular_citadel/sound/vox/shoot.ogg b/sound/vox/shoot.ogg
similarity index 100%
rename from modular_citadel/sound/vox/shoot.ogg
rename to sound/vox/shoot.ogg
diff --git a/modular_citadel/sound/vox/shower.ogg b/sound/vox/shower.ogg
similarity index 100%
rename from modular_citadel/sound/vox/shower.ogg
rename to sound/vox/shower.ogg
diff --git a/modular_citadel/sound/vox/shut.ogg b/sound/vox/shut.ogg
similarity index 100%
rename from modular_citadel/sound/vox/shut.ogg
rename to sound/vox/shut.ogg
diff --git a/modular_citadel/sound/vox/side.ogg b/sound/vox/side.ogg
similarity index 100%
rename from modular_citadel/sound/vox/side.ogg
rename to sound/vox/side.ogg
diff --git a/modular_citadel/sound/vox/sierra.ogg b/sound/vox/sierra.ogg
similarity index 100%
rename from modular_citadel/sound/vox/sierra.ogg
rename to sound/vox/sierra.ogg
diff --git a/modular_citadel/sound/vox/sight.ogg b/sound/vox/sight.ogg
similarity index 100%
rename from modular_citadel/sound/vox/sight.ogg
rename to sound/vox/sight.ogg
diff --git a/modular_citadel/sound/vox/silo.ogg b/sound/vox/silo.ogg
similarity index 100%
rename from modular_citadel/sound/vox/silo.ogg
rename to sound/vox/silo.ogg
diff --git a/modular_citadel/sound/vox/six.ogg b/sound/vox/six.ogg
similarity index 100%
rename from modular_citadel/sound/vox/six.ogg
rename to sound/vox/six.ogg
diff --git a/modular_citadel/sound/vox/sixteen.ogg b/sound/vox/sixteen.ogg
similarity index 100%
rename from modular_citadel/sound/vox/sixteen.ogg
rename to sound/vox/sixteen.ogg
diff --git a/modular_citadel/sound/vox/sixty.ogg b/sound/vox/sixty.ogg
similarity index 100%
rename from modular_citadel/sound/vox/sixty.ogg
rename to sound/vox/sixty.ogg
diff --git a/modular_citadel/sound/vox/slime.ogg b/sound/vox/slime.ogg
similarity index 100%
rename from modular_citadel/sound/vox/slime.ogg
rename to sound/vox/slime.ogg
diff --git a/modular_citadel/sound/vox/slow.ogg b/sound/vox/slow.ogg
similarity index 100%
rename from modular_citadel/sound/vox/slow.ogg
rename to sound/vox/slow.ogg
diff --git a/modular_citadel/sound/vox/soldier.ogg b/sound/vox/soldier.ogg
similarity index 100%
rename from modular_citadel/sound/vox/soldier.ogg
rename to sound/vox/soldier.ogg
diff --git a/modular_citadel/sound/vox/some.ogg b/sound/vox/some.ogg
similarity index 100%
rename from modular_citadel/sound/vox/some.ogg
rename to sound/vox/some.ogg
diff --git a/modular_citadel/sound/vox/someone.ogg b/sound/vox/someone.ogg
similarity index 100%
rename from modular_citadel/sound/vox/someone.ogg
rename to sound/vox/someone.ogg
diff --git a/modular_citadel/sound/vox/something.ogg b/sound/vox/something.ogg
similarity index 100%
rename from modular_citadel/sound/vox/something.ogg
rename to sound/vox/something.ogg
diff --git a/modular_citadel/sound/vox/son.ogg b/sound/vox/son.ogg
similarity index 100%
rename from modular_citadel/sound/vox/son.ogg
rename to sound/vox/son.ogg
diff --git a/modular_citadel/sound/vox/sorry.ogg b/sound/vox/sorry.ogg
similarity index 100%
rename from modular_citadel/sound/vox/sorry.ogg
rename to sound/vox/sorry.ogg
diff --git a/modular_citadel/sound/vox/south.ogg b/sound/vox/south.ogg
similarity index 100%
rename from modular_citadel/sound/vox/south.ogg
rename to sound/vox/south.ogg
diff --git a/modular_citadel/sound/vox/squad.ogg b/sound/vox/squad.ogg
similarity index 100%
rename from modular_citadel/sound/vox/squad.ogg
rename to sound/vox/squad.ogg
diff --git a/modular_citadel/sound/vox/square.ogg b/sound/vox/square.ogg
similarity index 100%
rename from modular_citadel/sound/vox/square.ogg
rename to sound/vox/square.ogg
diff --git a/modular_citadel/sound/vox/stairway.ogg b/sound/vox/stairway.ogg
similarity index 100%
rename from modular_citadel/sound/vox/stairway.ogg
rename to sound/vox/stairway.ogg
diff --git a/modular_citadel/sound/vox/status.ogg b/sound/vox/status.ogg
similarity index 100%
rename from modular_citadel/sound/vox/status.ogg
rename to sound/vox/status.ogg
diff --git a/modular_citadel/sound/vox/sterile.ogg b/sound/vox/sterile.ogg
similarity index 100%
rename from modular_citadel/sound/vox/sterile.ogg
rename to sound/vox/sterile.ogg
diff --git a/modular_citadel/sound/vox/sterilization.ogg b/sound/vox/sterilization.ogg
similarity index 100%
rename from modular_citadel/sound/vox/sterilization.ogg
rename to sound/vox/sterilization.ogg
diff --git a/modular_citadel/sound/vox/stolen.ogg b/sound/vox/stolen.ogg
similarity index 100%
rename from modular_citadel/sound/vox/stolen.ogg
rename to sound/vox/stolen.ogg
diff --git a/modular_citadel/sound/vox/storage.ogg b/sound/vox/storage.ogg
similarity index 100%
rename from modular_citadel/sound/vox/storage.ogg
rename to sound/vox/storage.ogg
diff --git a/modular_citadel/sound/vox/sub.ogg b/sound/vox/sub.ogg
similarity index 100%
rename from modular_citadel/sound/vox/sub.ogg
rename to sound/vox/sub.ogg
diff --git a/modular_citadel/sound/vox/subsurface.ogg b/sound/vox/subsurface.ogg
similarity index 100%
rename from modular_citadel/sound/vox/subsurface.ogg
rename to sound/vox/subsurface.ogg
diff --git a/modular_citadel/sound/vox/sudden.ogg b/sound/vox/sudden.ogg
similarity index 100%
rename from modular_citadel/sound/vox/sudden.ogg
rename to sound/vox/sudden.ogg
diff --git a/modular_citadel/sound/vox/suit.ogg b/sound/vox/suit.ogg
similarity index 100%
rename from modular_citadel/sound/vox/suit.ogg
rename to sound/vox/suit.ogg
diff --git a/modular_citadel/sound/vox/superconducting.ogg b/sound/vox/superconducting.ogg
similarity index 100%
rename from modular_citadel/sound/vox/superconducting.ogg
rename to sound/vox/superconducting.ogg
diff --git a/modular_citadel/sound/vox/supercooled.ogg b/sound/vox/supercooled.ogg
similarity index 100%
rename from modular_citadel/sound/vox/supercooled.ogg
rename to sound/vox/supercooled.ogg
diff --git a/modular_citadel/sound/vox/supply.ogg b/sound/vox/supply.ogg
similarity index 100%
rename from modular_citadel/sound/vox/supply.ogg
rename to sound/vox/supply.ogg
diff --git a/modular_citadel/sound/vox/surface.ogg b/sound/vox/surface.ogg
similarity index 100%
rename from modular_citadel/sound/vox/surface.ogg
rename to sound/vox/surface.ogg
diff --git a/modular_citadel/sound/vox/surrender.ogg b/sound/vox/surrender.ogg
similarity index 100%
rename from modular_citadel/sound/vox/surrender.ogg
rename to sound/vox/surrender.ogg
diff --git a/modular_citadel/sound/vox/surround.ogg b/sound/vox/surround.ogg
similarity index 100%
rename from modular_citadel/sound/vox/surround.ogg
rename to sound/vox/surround.ogg
diff --git a/modular_citadel/sound/vox/surrounded.ogg b/sound/vox/surrounded.ogg
similarity index 100%
rename from modular_citadel/sound/vox/surrounded.ogg
rename to sound/vox/surrounded.ogg
diff --git a/modular_citadel/sound/vox/switch.ogg b/sound/vox/switch.ogg
similarity index 100%
rename from modular_citadel/sound/vox/switch.ogg
rename to sound/vox/switch.ogg
diff --git a/modular_citadel/sound/vox/system.ogg b/sound/vox/system.ogg
similarity index 100%
rename from modular_citadel/sound/vox/system.ogg
rename to sound/vox/system.ogg
diff --git a/modular_citadel/sound/vox/systems.ogg b/sound/vox/systems.ogg
similarity index 100%
rename from modular_citadel/sound/vox/systems.ogg
rename to sound/vox/systems.ogg
diff --git a/modular_citadel/sound/vox/tactical.ogg b/sound/vox/tactical.ogg
similarity index 100%
rename from modular_citadel/sound/vox/tactical.ogg
rename to sound/vox/tactical.ogg
diff --git a/modular_citadel/sound/vox/take.ogg b/sound/vox/take.ogg
similarity index 100%
rename from modular_citadel/sound/vox/take.ogg
rename to sound/vox/take.ogg
diff --git a/modular_citadel/sound/vox/talk.ogg b/sound/vox/talk.ogg
similarity index 100%
rename from modular_citadel/sound/vox/talk.ogg
rename to sound/vox/talk.ogg
diff --git a/modular_citadel/sound/vox/tango.ogg b/sound/vox/tango.ogg
similarity index 100%
rename from modular_citadel/sound/vox/tango.ogg
rename to sound/vox/tango.ogg
diff --git a/modular_citadel/sound/vox/tank.ogg b/sound/vox/tank.ogg
similarity index 100%
rename from modular_citadel/sound/vox/tank.ogg
rename to sound/vox/tank.ogg
diff --git a/modular_citadel/sound/vox/target.ogg b/sound/vox/target.ogg
similarity index 100%
rename from modular_citadel/sound/vox/target.ogg
rename to sound/vox/target.ogg
diff --git a/modular_citadel/sound/vox/team.ogg b/sound/vox/team.ogg
similarity index 100%
rename from modular_citadel/sound/vox/team.ogg
rename to sound/vox/team.ogg
diff --git a/modular_citadel/sound/vox/temperature.ogg b/sound/vox/temperature.ogg
similarity index 100%
rename from modular_citadel/sound/vox/temperature.ogg
rename to sound/vox/temperature.ogg
diff --git a/modular_citadel/sound/vox/temporal.ogg b/sound/vox/temporal.ogg
similarity index 100%
rename from modular_citadel/sound/vox/temporal.ogg
rename to sound/vox/temporal.ogg
diff --git a/modular_citadel/sound/vox/ten.ogg b/sound/vox/ten.ogg
similarity index 100%
rename from modular_citadel/sound/vox/ten.ogg
rename to sound/vox/ten.ogg
diff --git a/modular_citadel/sound/vox/terminal.ogg b/sound/vox/terminal.ogg
similarity index 100%
rename from modular_citadel/sound/vox/terminal.ogg
rename to sound/vox/terminal.ogg
diff --git a/modular_citadel/sound/vox/terminated.ogg b/sound/vox/terminated.ogg
similarity index 100%
rename from modular_citadel/sound/vox/terminated.ogg
rename to sound/vox/terminated.ogg
diff --git a/modular_citadel/sound/vox/termination.ogg b/sound/vox/termination.ogg
similarity index 100%
rename from modular_citadel/sound/vox/termination.ogg
rename to sound/vox/termination.ogg
diff --git a/modular_citadel/sound/vox/test.ogg b/sound/vox/test.ogg
similarity index 100%
rename from modular_citadel/sound/vox/test.ogg
rename to sound/vox/test.ogg
diff --git a/modular_citadel/sound/vox/that.ogg b/sound/vox/that.ogg
similarity index 100%
rename from modular_citadel/sound/vox/that.ogg
rename to sound/vox/that.ogg
diff --git a/modular_citadel/sound/vox/the.ogg b/sound/vox/the.ogg
similarity index 100%
rename from modular_citadel/sound/vox/the.ogg
rename to sound/vox/the.ogg
diff --git a/modular_citadel/sound/vox/then.ogg b/sound/vox/then.ogg
similarity index 100%
rename from modular_citadel/sound/vox/then.ogg
rename to sound/vox/then.ogg
diff --git a/modular_citadel/sound/vox/there.ogg b/sound/vox/there.ogg
similarity index 100%
rename from modular_citadel/sound/vox/there.ogg
rename to sound/vox/there.ogg
diff --git a/modular_citadel/sound/vox/third.ogg b/sound/vox/third.ogg
similarity index 100%
rename from modular_citadel/sound/vox/third.ogg
rename to sound/vox/third.ogg
diff --git a/modular_citadel/sound/vox/thirteen.ogg b/sound/vox/thirteen.ogg
similarity index 100%
rename from modular_citadel/sound/vox/thirteen.ogg
rename to sound/vox/thirteen.ogg
diff --git a/modular_citadel/sound/vox/thirty.ogg b/sound/vox/thirty.ogg
similarity index 100%
rename from modular_citadel/sound/vox/thirty.ogg
rename to sound/vox/thirty.ogg
diff --git a/modular_citadel/sound/vox/this.ogg b/sound/vox/this.ogg
similarity index 100%
rename from modular_citadel/sound/vox/this.ogg
rename to sound/vox/this.ogg
diff --git a/modular_citadel/sound/vox/those.ogg b/sound/vox/those.ogg
similarity index 100%
rename from modular_citadel/sound/vox/those.ogg
rename to sound/vox/those.ogg
diff --git a/modular_citadel/sound/vox/thousand.ogg b/sound/vox/thousand.ogg
similarity index 100%
rename from modular_citadel/sound/vox/thousand.ogg
rename to sound/vox/thousand.ogg
diff --git a/modular_citadel/sound/vox/threat.ogg b/sound/vox/threat.ogg
similarity index 100%
rename from modular_citadel/sound/vox/threat.ogg
rename to sound/vox/threat.ogg
diff --git a/modular_citadel/sound/vox/three.ogg b/sound/vox/three.ogg
similarity index 100%
rename from modular_citadel/sound/vox/three.ogg
rename to sound/vox/three.ogg
diff --git a/modular_citadel/sound/vox/through.ogg b/sound/vox/through.ogg
similarity index 100%
rename from modular_citadel/sound/vox/through.ogg
rename to sound/vox/through.ogg
diff --git a/modular_citadel/sound/vox/time.ogg b/sound/vox/time.ogg
similarity index 100%
rename from modular_citadel/sound/vox/time.ogg
rename to sound/vox/time.ogg
diff --git a/modular_citadel/sound/vox/to.ogg b/sound/vox/to.ogg
similarity index 100%
rename from modular_citadel/sound/vox/to.ogg
rename to sound/vox/to.ogg
diff --git a/modular_citadel/sound/vox/top.ogg b/sound/vox/top.ogg
similarity index 100%
rename from modular_citadel/sound/vox/top.ogg
rename to sound/vox/top.ogg
diff --git a/modular_citadel/sound/vox/topside.ogg b/sound/vox/topside.ogg
similarity index 100%
rename from modular_citadel/sound/vox/topside.ogg
rename to sound/vox/topside.ogg
diff --git a/modular_citadel/sound/vox/touch.ogg b/sound/vox/touch.ogg
similarity index 100%
rename from modular_citadel/sound/vox/touch.ogg
rename to sound/vox/touch.ogg
diff --git a/modular_citadel/sound/vox/towards.ogg b/sound/vox/towards.ogg
similarity index 100%
rename from modular_citadel/sound/vox/towards.ogg
rename to sound/vox/towards.ogg
diff --git a/modular_citadel/sound/vox/track.ogg b/sound/vox/track.ogg
similarity index 100%
rename from modular_citadel/sound/vox/track.ogg
rename to sound/vox/track.ogg
diff --git a/modular_citadel/sound/vox/train.ogg b/sound/vox/train.ogg
similarity index 100%
rename from modular_citadel/sound/vox/train.ogg
rename to sound/vox/train.ogg
diff --git a/modular_citadel/sound/vox/transportation.ogg b/sound/vox/transportation.ogg
similarity index 100%
rename from modular_citadel/sound/vox/transportation.ogg
rename to sound/vox/transportation.ogg
diff --git a/modular_citadel/sound/vox/truck.ogg b/sound/vox/truck.ogg
similarity index 100%
rename from modular_citadel/sound/vox/truck.ogg
rename to sound/vox/truck.ogg
diff --git a/modular_citadel/sound/vox/tunnel.ogg b/sound/vox/tunnel.ogg
similarity index 100%
rename from modular_citadel/sound/vox/tunnel.ogg
rename to sound/vox/tunnel.ogg
diff --git a/modular_citadel/sound/vox/turn.ogg b/sound/vox/turn.ogg
similarity index 100%
rename from modular_citadel/sound/vox/turn.ogg
rename to sound/vox/turn.ogg
diff --git a/modular_citadel/sound/vox/turret.ogg b/sound/vox/turret.ogg
similarity index 100%
rename from modular_citadel/sound/vox/turret.ogg
rename to sound/vox/turret.ogg
diff --git a/modular_citadel/sound/vox/twelve.ogg b/sound/vox/twelve.ogg
similarity index 100%
rename from modular_citadel/sound/vox/twelve.ogg
rename to sound/vox/twelve.ogg
diff --git a/modular_citadel/sound/vox/twenty.ogg b/sound/vox/twenty.ogg
similarity index 100%
rename from modular_citadel/sound/vox/twenty.ogg
rename to sound/vox/twenty.ogg
diff --git a/modular_citadel/sound/vox/two.ogg b/sound/vox/two.ogg
similarity index 100%
rename from modular_citadel/sound/vox/two.ogg
rename to sound/vox/two.ogg
diff --git a/modular_citadel/sound/vox/unauthorized.ogg b/sound/vox/unauthorized.ogg
similarity index 100%
rename from modular_citadel/sound/vox/unauthorized.ogg
rename to sound/vox/unauthorized.ogg
diff --git a/modular_citadel/sound/vox/under.ogg b/sound/vox/under.ogg
similarity index 100%
rename from modular_citadel/sound/vox/under.ogg
rename to sound/vox/under.ogg
diff --git a/modular_citadel/sound/vox/uniform.ogg b/sound/vox/uniform.ogg
similarity index 100%
rename from modular_citadel/sound/vox/uniform.ogg
rename to sound/vox/uniform.ogg
diff --git a/modular_citadel/sound/vox/unlocked.ogg b/sound/vox/unlocked.ogg
similarity index 100%
rename from modular_citadel/sound/vox/unlocked.ogg
rename to sound/vox/unlocked.ogg
diff --git a/modular_citadel/sound/vox/until.ogg b/sound/vox/until.ogg
similarity index 100%
rename from modular_citadel/sound/vox/until.ogg
rename to sound/vox/until.ogg
diff --git a/modular_citadel/sound/vox/up.ogg b/sound/vox/up.ogg
similarity index 100%
rename from modular_citadel/sound/vox/up.ogg
rename to sound/vox/up.ogg
diff --git a/modular_citadel/sound/vox/upper.ogg b/sound/vox/upper.ogg
similarity index 100%
rename from modular_citadel/sound/vox/upper.ogg
rename to sound/vox/upper.ogg
diff --git a/modular_citadel/sound/vox/uranium.ogg b/sound/vox/uranium.ogg
similarity index 100%
rename from modular_citadel/sound/vox/uranium.ogg
rename to sound/vox/uranium.ogg
diff --git a/modular_citadel/sound/vox/us.ogg b/sound/vox/us.ogg
similarity index 100%
rename from modular_citadel/sound/vox/us.ogg
rename to sound/vox/us.ogg
diff --git a/modular_citadel/sound/vox/usa.ogg b/sound/vox/usa.ogg
similarity index 100%
rename from modular_citadel/sound/vox/usa.ogg
rename to sound/vox/usa.ogg
diff --git a/modular_citadel/sound/vox/use.ogg b/sound/vox/use.ogg
similarity index 100%
rename from modular_citadel/sound/vox/use.ogg
rename to sound/vox/use.ogg
diff --git a/modular_citadel/sound/vox/used.ogg b/sound/vox/used.ogg
similarity index 100%
rename from modular_citadel/sound/vox/used.ogg
rename to sound/vox/used.ogg
diff --git a/modular_citadel/sound/vox/user.ogg b/sound/vox/user.ogg
similarity index 100%
rename from modular_citadel/sound/vox/user.ogg
rename to sound/vox/user.ogg
diff --git a/modular_citadel/sound/vox/vacate.ogg b/sound/vox/vacate.ogg
similarity index 100%
rename from modular_citadel/sound/vox/vacate.ogg
rename to sound/vox/vacate.ogg
diff --git a/modular_citadel/sound/vox/valid.ogg b/sound/vox/valid.ogg
similarity index 100%
rename from modular_citadel/sound/vox/valid.ogg
rename to sound/vox/valid.ogg
diff --git a/modular_citadel/sound/vox/vapor.ogg b/sound/vox/vapor.ogg
similarity index 100%
rename from modular_citadel/sound/vox/vapor.ogg
rename to sound/vox/vapor.ogg
diff --git a/modular_citadel/sound/vox/vent.ogg b/sound/vox/vent.ogg
similarity index 100%
rename from modular_citadel/sound/vox/vent.ogg
rename to sound/vox/vent.ogg
diff --git a/modular_citadel/sound/vox/ventillation.ogg b/sound/vox/ventillation.ogg
similarity index 100%
rename from modular_citadel/sound/vox/ventillation.ogg
rename to sound/vox/ventillation.ogg
diff --git a/modular_citadel/sound/vox/victor.ogg b/sound/vox/victor.ogg
similarity index 100%
rename from modular_citadel/sound/vox/victor.ogg
rename to sound/vox/victor.ogg
diff --git a/modular_citadel/sound/vox/violated.ogg b/sound/vox/violated.ogg
similarity index 100%
rename from modular_citadel/sound/vox/violated.ogg
rename to sound/vox/violated.ogg
diff --git a/modular_citadel/sound/vox/violation.ogg b/sound/vox/violation.ogg
similarity index 100%
rename from modular_citadel/sound/vox/violation.ogg
rename to sound/vox/violation.ogg
diff --git a/modular_citadel/sound/vox/voltage.ogg b/sound/vox/voltage.ogg
similarity index 100%
rename from modular_citadel/sound/vox/voltage.ogg
rename to sound/vox/voltage.ogg
diff --git a/modular_citadel/sound/vox/vox_login.ogg b/sound/vox/vox_login.ogg
similarity index 100%
rename from modular_citadel/sound/vox/vox_login.ogg
rename to sound/vox/vox_login.ogg
diff --git a/modular_citadel/sound/vox/walk.ogg b/sound/vox/walk.ogg
similarity index 100%
rename from modular_citadel/sound/vox/walk.ogg
rename to sound/vox/walk.ogg
diff --git a/modular_citadel/sound/vox/wall.ogg b/sound/vox/wall.ogg
similarity index 100%
rename from modular_citadel/sound/vox/wall.ogg
rename to sound/vox/wall.ogg
diff --git a/modular_citadel/sound/vox/want.ogg b/sound/vox/want.ogg
similarity index 100%
rename from modular_citadel/sound/vox/want.ogg
rename to sound/vox/want.ogg
diff --git a/modular_citadel/sound/vox/wanted.ogg b/sound/vox/wanted.ogg
similarity index 100%
rename from modular_citadel/sound/vox/wanted.ogg
rename to sound/vox/wanted.ogg
diff --git a/modular_citadel/sound/vox/warm.ogg b/sound/vox/warm.ogg
similarity index 100%
rename from modular_citadel/sound/vox/warm.ogg
rename to sound/vox/warm.ogg
diff --git a/modular_citadel/sound/vox/warn.ogg b/sound/vox/warn.ogg
similarity index 100%
rename from modular_citadel/sound/vox/warn.ogg
rename to sound/vox/warn.ogg
diff --git a/modular_citadel/sound/vox/warning.ogg b/sound/vox/warning.ogg
similarity index 100%
rename from modular_citadel/sound/vox/warning.ogg
rename to sound/vox/warning.ogg
diff --git a/modular_citadel/sound/vox/waste.ogg b/sound/vox/waste.ogg
similarity index 100%
rename from modular_citadel/sound/vox/waste.ogg
rename to sound/vox/waste.ogg
diff --git a/modular_citadel/sound/vox/water.ogg b/sound/vox/water.ogg
similarity index 100%
rename from modular_citadel/sound/vox/water.ogg
rename to sound/vox/water.ogg
diff --git a/modular_citadel/sound/vox/we.ogg b/sound/vox/we.ogg
similarity index 100%
rename from modular_citadel/sound/vox/we.ogg
rename to sound/vox/we.ogg
diff --git a/modular_citadel/sound/vox/weapon.ogg b/sound/vox/weapon.ogg
similarity index 100%
rename from modular_citadel/sound/vox/weapon.ogg
rename to sound/vox/weapon.ogg
diff --git a/modular_citadel/sound/vox/west.ogg b/sound/vox/west.ogg
similarity index 100%
rename from modular_citadel/sound/vox/west.ogg
rename to sound/vox/west.ogg
diff --git a/modular_citadel/sound/vox/whiskey.ogg b/sound/vox/whiskey.ogg
similarity index 100%
rename from modular_citadel/sound/vox/whiskey.ogg
rename to sound/vox/whiskey.ogg
diff --git a/modular_citadel/sound/vox/white.ogg b/sound/vox/white.ogg
similarity index 100%
rename from modular_citadel/sound/vox/white.ogg
rename to sound/vox/white.ogg
diff --git a/modular_citadel/sound/vox/wilco.ogg b/sound/vox/wilco.ogg
similarity index 100%
rename from modular_citadel/sound/vox/wilco.ogg
rename to sound/vox/wilco.ogg
diff --git a/modular_citadel/sound/vox/will.ogg b/sound/vox/will.ogg
similarity index 100%
rename from modular_citadel/sound/vox/will.ogg
rename to sound/vox/will.ogg
diff --git a/modular_citadel/sound/vox/with.ogg b/sound/vox/with.ogg
similarity index 100%
rename from modular_citadel/sound/vox/with.ogg
rename to sound/vox/with.ogg
diff --git a/modular_citadel/sound/vox/without.ogg b/sound/vox/without.ogg
similarity index 100%
rename from modular_citadel/sound/vox/without.ogg
rename to sound/vox/without.ogg
diff --git a/modular_citadel/sound/vox/woop.ogg b/sound/vox/woop.ogg
similarity index 100%
rename from modular_citadel/sound/vox/woop.ogg
rename to sound/vox/woop.ogg
diff --git a/modular_citadel/sound/vox/xeno.ogg b/sound/vox/xeno.ogg
similarity index 100%
rename from modular_citadel/sound/vox/xeno.ogg
rename to sound/vox/xeno.ogg
diff --git a/modular_citadel/sound/vox/yankee.ogg b/sound/vox/yankee.ogg
similarity index 100%
rename from modular_citadel/sound/vox/yankee.ogg
rename to sound/vox/yankee.ogg
diff --git a/modular_citadel/sound/vox/yards.ogg b/sound/vox/yards.ogg
similarity index 100%
rename from modular_citadel/sound/vox/yards.ogg
rename to sound/vox/yards.ogg
diff --git a/modular_citadel/sound/vox/year.ogg b/sound/vox/year.ogg
similarity index 100%
rename from modular_citadel/sound/vox/year.ogg
rename to sound/vox/year.ogg
diff --git a/modular_citadel/sound/vox/yellow.ogg b/sound/vox/yellow.ogg
similarity index 100%
rename from modular_citadel/sound/vox/yellow.ogg
rename to sound/vox/yellow.ogg
diff --git a/modular_citadel/sound/vox/yes.ogg b/sound/vox/yes.ogg
similarity index 100%
rename from modular_citadel/sound/vox/yes.ogg
rename to sound/vox/yes.ogg
diff --git a/modular_citadel/sound/vox/you.ogg b/sound/vox/you.ogg
similarity index 100%
rename from modular_citadel/sound/vox/you.ogg
rename to sound/vox/you.ogg
diff --git a/modular_citadel/sound/vox/your.ogg b/sound/vox/your.ogg
similarity index 100%
rename from modular_citadel/sound/vox/your.ogg
rename to sound/vox/your.ogg
diff --git a/modular_citadel/sound/vox/yourself.ogg b/sound/vox/yourself.ogg
similarity index 100%
rename from modular_citadel/sound/vox/yourself.ogg
rename to sound/vox/yourself.ogg
diff --git a/modular_citadel/sound/vox/zero.ogg b/sound/vox/zero.ogg
similarity index 100%
rename from modular_citadel/sound/vox/zero.ogg
rename to sound/vox/zero.ogg
diff --git a/modular_citadel/sound/vox/zone.ogg b/sound/vox/zone.ogg
similarity index 100%
rename from modular_citadel/sound/vox/zone.ogg
rename to sound/vox/zone.ogg
diff --git a/modular_citadel/sound/vox/zulu.ogg b/sound/vox/zulu.ogg
similarity index 100%
rename from modular_citadel/sound/vox/zulu.ogg
rename to sound/vox/zulu.ogg
diff --git a/tgstation.dme b/tgstation.dme
index 2b15355698..e0a86f0e95 100755
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -368,12 +368,12 @@
#include "code\datums\components\ntnet_interface.dm"
#include "code\datums\components\orbiter.dm"
#include "code\datums\components\paintable.dm"
+#include "code\datums\components\phantomthief.dm"
#include "code\datums\components\rad_insulation.dm"
#include "code\datums\components\radioactive.dm"
#include "code\datums\components\remote_materials.dm"
#include "code\datums\components\riding.dm"
#include "code\datums\components\rotation.dm"
-#include "code\datums\components\signal_redirect.dm"
#include "code\datums\components\slippery.dm"
#include "code\datums\components\spooky.dm"
#include "code\datums\components\squeak.dm"
@@ -2585,6 +2585,7 @@
#include "code\modules\reagents\reagent_containers\dropper.dm"
#include "code\modules\reagents\reagent_containers\glass.dm"
#include "code\modules\reagents\reagent_containers\hypospray.dm"
+#include "code\modules\reagents\reagent_containers\hypovial.dm"
#include "code\modules\reagents\reagent_containers\medspray.dm"
#include "code\modules\reagents\reagent_containers\patch.dm"
#include "code\modules\reagents\reagent_containers\pill.dm"
@@ -2710,6 +2711,7 @@
#include "code\modules\ruins\spaceruin_code\crashedship.dm"
#include "code\modules\ruins\spaceruin_code\deepstorage.dm"
#include "code\modules\ruins\spaceruin_code\DJstation.dm"
+#include "code\modules\ruins\spaceruin_code\hilbertshotel.dm"
#include "code\modules\ruins\spaceruin_code\listeningstation.dm"
#include "code\modules\ruins\spaceruin_code\miracle.dm"
#include "code\modules\ruins\spaceruin_code\oldstation.dm"
@@ -2947,7 +2949,6 @@
#include "modular_citadel\code\controllers\subsystem\job.dm"
#include "modular_citadel\code\controllers\subsystem\shuttle.dm"
#include "modular_citadel\code\datums\components\material_container.dm"
-#include "modular_citadel\code\datums\components\phantomthief.dm"
#include "modular_citadel\code\datums\components\souldeath.dm"
#include "modular_citadel\code\datums\mood_events\chem_events.dm"
#include "modular_citadel\code\datums\mood_events\generic_negative_events.dm"
@@ -2984,7 +2985,6 @@
#include "modular_citadel\code\game\machinery\doors\airlock.dm"
#include "modular_citadel\code\game\machinery\doors\airlock_types.dm"
#include "modular_citadel\code\game\objects\cit_screenshake.dm"
-#include "modular_citadel\code\game\objects\ids.dm"
#include "modular_citadel\code\game\objects\items.dm"
#include "modular_citadel\code\game\objects\tools.dm"
#include "modular_citadel\code\game\objects\effects\spawner\spawners.dm"
@@ -3003,7 +3003,6 @@
#include "modular_citadel\code\game\objects\items\devices\radio\encryptionkey.dm"
#include "modular_citadel\code\game\objects\items\devices\radio\headset.dm"
#include "modular_citadel\code\game\objects\items\devices\radio\shockcollar.dm"
-#include "modular_citadel\code\game\objects\items\melee\eutactic_blades.dm"
#include "modular_citadel\code\game\objects\items\storage\firstaid.dm"
#include "modular_citadel\code\game\objects\structures\tables_racks.dm"
#include "modular_citadel\code\game\objects\structures\beds_chairs\chair.dm"
@@ -3027,7 +3026,6 @@
#include "modular_citadel\code\modules\arousal\organs\vagina.dm"
#include "modular_citadel\code\modules\arousal\organs\womb.dm"
#include "modular_citadel\code\modules\arousal\toys\dildos.dm"
-#include "modular_citadel\code\modules\awaymissions\citadel_ghostrole_spawners.dm"
#include "modular_citadel\code\modules\cargo\console.dm"
#include "modular_citadel\code\modules\client\client_defines.dm"
#include "modular_citadel\code\modules\client\client_procs.dm"
@@ -3054,7 +3052,6 @@
#include "modular_citadel\code\modules\clothing\neck.dm"
#include "modular_citadel\code\modules\clothing\glasses\phantomthief.dm"
#include "modular_citadel\code\modules\clothing\head\head.dm"
-#include "modular_citadel\code\modules\clothing\spacesuits\cydonian_armor.dm"
#include "modular_citadel\code\modules\clothing\spacesuits\flightsuit.dm"
#include "modular_citadel\code\modules\clothing\suits\polychromic_cloaks.dm"
#include "modular_citadel\code\modules\clothing\suits\suits.dm"
@@ -3065,17 +3062,8 @@
#include "modular_citadel\code\modules\custom_loadout\custom_items.dm"
#include "modular_citadel\code\modules\custom_loadout\load_to_mob.dm"
#include "modular_citadel\code\modules\custom_loadout\read_from_file.dm"
-#include "modular_citadel\code\modules\events\blob.dm"
-#include "modular_citadel\code\modules\events\wizard\magicarp.dm"
#include "modular_citadel\code\modules\food_and_drinks\snacks\meat.dm"
#include "modular_citadel\code\modules\integrated_electronics\subtypes\manipulation.dm"
-#include "modular_citadel\code\modules\jobs\dresscode_values.dm"
-#include "modular_citadel\code\modules\jobs\job_types\captain.dm"
-#include "modular_citadel\code\modules\jobs\job_types\cargo_service.dm"
-#include "modular_citadel\code\modules\jobs\job_types\engineering.dm"
-#include "modular_citadel\code\modules\jobs\job_types\medical.dm"
-#include "modular_citadel\code\modules\jobs\job_types\science.dm"
-#include "modular_citadel\code\modules\jobs\job_types\security.dm"
#include "modular_citadel\code\modules\keybindings\bindings_carbon.dm"
#include "modular_citadel\code\modules\keybindings\bindings_human.dm"
#include "modular_citadel\code\modules\keybindings\bindings_robot.dm"
@@ -3098,7 +3086,6 @@
#include "modular_citadel\code\modules\mob\living\carbon\human\human.dm"
#include "modular_citadel\code\modules\mob\living\carbon\human\human_defense.dm"
#include "modular_citadel\code\modules\mob\living\carbon\human\human_movement.dm"
-#include "modular_citadel\code\modules\mob\living\silicon\ai\vox_sounds.dm"
#include "modular_citadel\code\modules\mob\living\silicon\robot\dogborg_equipment.dm"
#include "modular_citadel\code\modules\mob\living\silicon\robot\robot.dm"
#include "modular_citadel\code\modules\mob\living\silicon\robot\robot_modules.dm"
@@ -3135,15 +3122,9 @@
#include "modular_citadel\code\modules\reagents\chemistry\recipes\fermi.dm"
#include "modular_citadel\code\modules\reagents\objects\clothes.dm"
#include "modular_citadel\code\modules\reagents\objects\items.dm"
-#include "modular_citadel\code\modules\reagents\reagent container\hypospraymkii.dm"
-#include "modular_citadel\code\modules\reagents\reagent container\hypovial.dm"
#include "modular_citadel\code\modules\reagents\reagents\cit_reagents.dm"
#include "modular_citadel\code\modules\recycling\disposal\bin.dm"
#include "modular_citadel\code\modules\research\designs\autoylathe_designs.dm"
-#include "modular_citadel\code\modules\research\designs\machine_designs.dm"
-#include "modular_citadel\code\modules\research\designs\xenobio_designs.dm"
-#include "modular_citadel\code\modules\research\techweb\_techweb.dm"
-#include "modular_citadel\code\modules\research\xenobiology\xenobio_camera.dm"
#include "modular_citadel\code\modules\vehicles\secway.dm"
#include "modular_citadel\interface\skin.dmf"
// END_INCLUDE