diff --git a/code/datums/skills/uscm.dm b/code/datums/skills/uscm.dm
index 871278ff23..2da19793e5 100644
--- a/code/datums/skills/uscm.dm
+++ b/code/datums/skills/uscm.dm
@@ -287,7 +287,7 @@ COMMAND STAFF
SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED,
SKILL_MEDICAL = SKILL_MEDICAL_MEDIC,
SKILL_POLICE = SKILL_POLICE_FLASH,
- SKILL_VEHICLE = SKILL_VEHICLE_SMALL,
+ SKILL_VEHICLE = SKILL_VEHICLE_LARGE,
SKILL_JTAC = SKILL_JTAC_EXPERT,
SKILL_INTEL = SKILL_INTEL_TRAINED,
SKILL_SURGERY = SKILL_SURGERY_NOVICE,
diff --git a/code/game/jobs/job/command/cic/staffofficer.dm b/code/game/jobs/job/command/cic/staffofficer.dm
index 9f7d1d09bf..0a243a99b8 100644
--- a/code/game/jobs/job/command/cic/staffofficer.dm
+++ b/code/game/jobs/job/command/cic/staffofficer.dm
@@ -11,7 +11,7 @@
flags_startup_parameters = ROLE_ADD_TO_DEFAULT
gear_preset = /datum/equipment_preset/uscm_ship/so
gear_preset_secondary = /datum/equipment_preset/uscm_ship/so/lesser_rank
- entry_message_body = "Your job is to monitor the Marines, man the CIC, and listen to your superior officers. You are in charge of logistics and the overwatch system. You are also in line to take command after other eligible superior commissioned officers."
+ entry_message_body = "Your job is to conduct the briefing for the platoon, monitor the operation, and listen to your superior officers. You are in charge of the platoon for the current operation and supported by your Company Command.
They will give your orders VIA the telephone in your office once they are ready.
You remember that you've stored your personal gear are located in your personal quarters.
Your job involves heavy roleplay and requires you to behave like an officer and to stay in character at all times."
job_options = list(FIRST_LT_VARIANT = "1stLt", SECOND_LT_VARIANT = "2ndLt")
diff --git a/code/game/jobs/job/marine/marine.dm b/code/game/jobs/job/marine/marine.dm
index e07c1edd31..c50a0420a9 100644
--- a/code/game/jobs/job/marine/marine.dm
+++ b/code/game/jobs/job/marine/marine.dm
@@ -1,5 +1,5 @@
/datum/job/marine
- supervisors = "the acting squad leader"
+ supervisors = "the acting platoon leader"
selection_class = "job_marine"
total_positions = 8
spawn_positions = 8
@@ -7,7 +7,7 @@
/datum/job/marine/generate_entry_message(mob/living/carbon/human/current_human)
if(current_human.assigned_squad)
- entry_message_intro = "You are a [title]!
You have been assigned to: [lowertext(current_human.assigned_squad.name)] squad.[Check_WO() ? "" : " Make your way to the cafeteria for some post-cryosleep chow, and then get equipped in your squad's prep room." ]"
+ entry_message_intro = "You are a [title]!
You have been assigned to the [lowertext(current_human.assigned_squad.name)] platoon.[Check_WO() ? "" : " Make your way to the cafeteria for some post-cryosleep chow, and then get equipped in your team's prep room." ]"
return ..()
/datum/job/marine/generate_entry_conditions(mob/living/carbon/human/current_human)
diff --git a/code/game/jobs/job/marine/squad/leader.dm b/code/game/jobs/job/marine/squad/leader.dm
index 24233c95d5..8e1122b166 100644
--- a/code/game/jobs/job/marine/squad/leader.dm
+++ b/code/game/jobs/job/marine/squad/leader.dm
@@ -10,7 +10,7 @@
flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADD_TO_SQUAD
gear_preset = /datum/equipment_preset/uscm/leader
gear_preset_secondary = /datum/equipment_preset/uscm/leader/lesser_rank
- entry_message_body = "You are responsible for the men and women of your squad. Make sure they are on task, working together, and communicating. You are also in charge of communicating with command and letting them know about the situation first hand. Keep out of harm's way."
+ entry_message_body = "You are responsible for the men and women of your entire platoon. Make sure they are on task, working together, and communicating. You are also in charge of communicating with command and letting them know about the situation first hand. Keep out of harm's way.
You remember that you've stored your personal gear and uniform are located in the dorm or locker rooms."
job_options = list(GYSGT_VARIANT = "GYSGT", SSGT_VARIANT = "SSGT")
diff --git a/code/game/jobs/job/marine/squad/medic.dm b/code/game/jobs/job/marine/squad/medic.dm
index 0b6f9f0702..02b438c048 100644
--- a/code/game/jobs/job/marine/squad/medic.dm
+++ b/code/game/jobs/job/marine/squad/medic.dm
@@ -10,7 +10,7 @@
flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADD_TO_SQUAD
gear_preset = /datum/equipment_preset/uscm/medic
gear_preset_secondary = /datum/equipment_preset/uscm/medic/lesser_rank
- entry_message_body = "You tend the wounds of your squad mates and make sure they are healthy and active. You may not be a fully-fledged doctor, but you stand between life and death when it matters."
+ entry_message_body = "You tend the wounds of your squad mates and make sure they are healthy and active. You may not be a fully-fledged doctor, but you stand between life and death when it matters.
You remember that you've stored your personal gear and uniform are located in your medical office."
job_options = list(CPL_VARIANT = "CPL", LCPL_VARIANT = "LCPL")
diff --git a/code/game/jobs/job/marine/squad/smartgunner.dm b/code/game/jobs/job/marine/squad/smartgunner.dm
index e10724355c..6c27f5ec27 100644
--- a/code/game/jobs/job/marine/squad/smartgunner.dm
+++ b/code/game/jobs/job/marine/squad/smartgunner.dm
@@ -11,7 +11,7 @@
flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADD_TO_SQUAD
gear_preset = /datum/equipment_preset/uscm/sg
gear_preset_secondary = /datum/equipment_preset/uscm/sg/lesser_rank
- entry_message_body = "You are the smartgunner. Your task is to provide heavy weapons support."
+ entry_message_body = "You are a specialized automatic rifleman. Your task is to provide heavy weapons support for your squad.
You remember that you've stored your personal gear and uniform are located in the dorm or locker rooms."
job_options = list(CPL_VARIANT = "CPL", LCPL_VARIANT = "LCPL")
diff --git a/code/game/jobs/job/marine/squad/standard.dm b/code/game/jobs/job/marine/squad/standard.dm
index 0269366bbf..71533679d9 100644
--- a/code/game/jobs/job/marine/squad/standard.dm
+++ b/code/game/jobs/job/marine/squad/standard.dm
@@ -13,7 +13,7 @@
job_options = list(PFC_VARIANT = "PFC", PVT_VARIANT = "PVT")
/datum/job/marine/standard/on_config_load()
- entry_message_body = "You are a rank-and-file Marine of the USCM, and that is your strength. What you lack alone, you gain standing shoulder to shoulder with the men and women of the corps. Ooh-rah!"
+ entry_message_body = "You are a rank-and-file Soldier of your standing army, and that is your strength. What you lack alone, you gain standing shoulder to shoulder with the men and women of the platoon. Ooh-rah!
You remember that you've stored your personal gear and uniform are located in the dorm or locker rooms."
return ..()
/datum/job/marine/standard/set_spawn_positions(count)
diff --git a/code/game/jobs/job/marine/squad/tl.dm b/code/game/jobs/job/marine/squad/tl.dm
index 987c5d58d8..be876dc0b3 100644
--- a/code/game/jobs/job/marine/squad/tl.dm
+++ b/code/game/jobs/job/marine/squad/tl.dm
@@ -8,7 +8,7 @@
allow_additional = 1
flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADD_TO_SQUAD
gear_preset = /datum/equipment_preset/uscm/tl
- entry_message_body = "You are the Team Leader.Your task is to assist the squad leader in leading the squad as well as utilize ordnance such as orbital bombardments, CAS, and mortar as well as coordinating resupply with Requisitions and CIC. If the squad leader dies, you are expected to lead in their place."
+ entry_message_body = "You are the Squad Leader. Your task is leading the designated squad and utilize available ordnance. If the platoon leader dies, you are expected to lead in their place.
You remember that you've stored your personal gear and uniform are located in the dorm or locker rooms."
job_options = list(SGT_VARIANT = "SGT")
diff --git a/code/game/objects/items/weapons/blades.dm b/code/game/objects/items/weapons/blades.dm
index 2fe80f123b..6d8c8f7231 100644
--- a/code/game/objects/items/weapons/blades.dm
+++ b/code/game/objects/items/weapons/blades.dm
@@ -273,8 +273,6 @@
if(loc != user) //Only do unique stuff if you are holding it
return ..()
- if(!do_after(user, interaction_time, INTERRUPT_INCAPACITATED, BUSY_ICON_HOSTILE))
- return
playsound(user, 'sound/weapons/flipblade.ogg', 15, 1)
change_razor_state(!razor_opened)
to_chat(user, SPAN_NOTICE("You [razor_opened ? "reveal" : "hide"] [src]'s blade."))
@@ -375,3 +373,29 @@
human_user.apply_damage(rand(1,5), BRUTE, "head", src)
human_user.update_hair()
+/obj/item/weapon/straight_razor/attack(mob/target, mob/user)
+ if((!ishuman(target)) || (user.a_intent == INTENT_HARM) || !razor_opened)
+ return ..()
+ var/mob/living/carbon/human/poor_bastard = target
+
+ var/timer = 10 SECONDS
+ var/message = "\The [user] begins to shave \the [poor_bastard]!"
+ if(skillcheck(user, SKILL_LEADERSHIP, SKILL_LEAD_EXPERT))
+ timer = 5 SECONDS
+ message = "\The [user] begins to expertly shave \the [poor_bastard]!"
+
+ user.visible_message(SPAN_WARNING(message))
+ if(!do_after(user, timer, INTERRUPT_ALL, BUSY_ICON_HOSTILE))
+ return
+
+ switch(user.zone_selected)
+ if("mouth")
+ poor_bastard.f_style = "Shaved"
+ user.visible_message(SPAN_WARNING("\The [user] shaves off \the [poor_bastard]'s facial hair!"))
+ if("head")
+ poor_bastard.h_style = pick("Skinhead", "Bald")
+ user.visible_message(SPAN_WARNING("\The [user] shaves off \the [poor_bastard]'s hair!"))
+
+ poor_bastard.apply_damage(rand(1,5), BRUTE, "head", src)
+ poor_bastard.update_hair()
+ return TRUE
diff --git a/code/game/objects/structures/gun_rack.dm b/code/game/objects/structures/gun_rack.dm
index ac32b0162d..400002fa35 100644
--- a/code/game/objects/structures/gun_rack.dm
+++ b/code/game/objects/structures/gun_rack.dm
@@ -54,3 +54,24 @@
max_stored = 6
initial_stored = 6
allowed_type = /obj/item/weapon/gun/rifle/type71
+
+/obj/structure/gun_rack/apc
+ name = "APC ammo compartment"
+ icon_state = "frontal"
+ desc = "Uhoh. You shouldn't be seeing this."
+
+/obj/structure/gun_rack/apc/frontal
+ name = "frontal cannon ammo storage compartment"
+ icon_state = "frontal"
+ desc = "A small compartment that stores ammunition for the APC's 'Bleihagel RE-RE700 Frontal Cannon'."
+ max_stored = 2
+ initial_stored = 0
+ allowed_type = /obj/item/ammo_magazine/hardpoint/m56_cupola/frontal_cannon
+
+/obj/structure/gun_rack/apc/boyars
+ name = "dual cannon ammo storage compartment"
+ icon_state = "boyars"
+ desc = "A small compartment that stores ammunition for the APC's 'PARS-159 Boyars Dualcannon'."
+ max_stored = 2
+ initial_stored = 0
+ allowed_type = /obj/item/ammo_magazine/hardpoint/boyars_dualcannon
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 8d6441293f..c059301467 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -622,6 +622,23 @@
icon_state = "clothtable"
table_prefix = "cloth"
+/obj/structure/surface/table/reinforced/toc
+ name = "operations table"
+ desc = "A square metal surface resting on its fat metal bottom. You can't flip something that doesn't have legs."
+ icon_state = "tocWtable"
+ table_prefix = "toc"
+
+/obj/structure/surface/table/reinforced/toc/update_icon()
+ return
+
+/obj/structure/surface/table/reinforced/toc/west
+ desc = "A square metal surface resting on its fat metal bottom. You can't flip something that doesn't have legs."
+ icon_state = "tocWtable"
+
+/obj/structure/surface/table/reinforced/toc/east
+ desc = "A square metal surface resting on its fat metal bottom. You can't flip something that doesn't have legs."
+ icon_state = "tocEtable"
+
/*
* Racks
*/
diff --git a/code/modules/almayer/machinery.dm b/code/modules/almayer/machinery.dm
index 4c29fe9d5f..9491475ace 100644
--- a/code/modules/almayer/machinery.dm
+++ b/code/modules/almayer/machinery.dm
@@ -113,6 +113,11 @@
minimap_type = MINIMAP_FLAG_PMC
faction = FACTION_PMC
+/obj/structure/machinery/prop/almayer/CICmap/toc
+ name = "tactical map screen"
+ desc = "A screen on the TOC computer displaying the tactical map."
+ icon_state = "toc_map"
+
//Nonpower using props
/obj/structure/prop/almayer
diff --git a/code/modules/client/preferences_gear.dm b/code/modules/client/preferences_gear.dm
index 232464ade4..0607f83ff6 100644
--- a/code/modules/client/preferences_gear.dm
+++ b/code/modules/client/preferences_gear.dm
@@ -114,9 +114,25 @@ var/global/list/gear_datums_by_name = list()
display_name = "Face wrap, tan"
path = /obj/item/clothing/mask/rebreather/scarf/tacticalmask/tan
-/datum/gear/mask/face_wrap_squad
- display_name = "Face wrap, squad specific"
- path =/obj/item/clothing/mask/rebreather/scarf/tacticalmask/squad
+/datum/gear/mask/face_wrap_intel
+ display_name = "Face wrap, black"
+ path = /obj/item/clothing/mask/rebreather/scarf/tacticalmask/intel
+
+/datum/gear/mask/face_wrap_bravo
+ display_name = "Face wrap, yellow"
+ path = /obj/item/clothing/mask/rebreather/scarf/tacticalmask/bravo
+
+/datum/gear/mask/face_wrap_charlie
+ display_name = "Face wrap, purple"
+ path = /obj/item/clothing/mask/rebreather/scarf/tacticalmask/charlie
+
+/datum/gear/mask/face_wrap_delta
+ display_name = "Face wrap, blue"
+ path = /obj/item/clothing/mask/rebreather/scarf/tacticalmask/delta
+
+/datum/gear/mask/face_wrap_echo
+ display_name = "Face wrap, cyan green"
+ path = /obj/item/clothing/mask/rebreather/scarf/tacticalmask/echo
/datum/gear/mask/gas
display_name = "Gas mask"
@@ -207,10 +223,6 @@ var/global/list/gear_datums_by_name = list()
display_name = "USCM beanie, tan"
path = /obj/item/clothing/head/beanie/tan
-/datum/gear/headwear/uscm/beret_squad
- display_name = "USCM beret, squad specific"
- path = /obj/item/clothing/head/beret/cm/squadberet
-
/datum/gear/headwear/uscm/beret_green
display_name = "USCM beret, green"
path = /obj/item/clothing/head/beret/cm
@@ -227,6 +239,34 @@ var/global/list/gear_datums_by_name = list()
display_name = "USCM beret, white"
path = /obj/item/clothing/head/beret/cm/white
+/datum/gear/headwear/uscm/beret_alpha
+ display_name = "USCM beret, red flash"
+ path = /obj/item/clothing/head/beret/cm/alpha
+
+/datum/gear/headwear/uscm/beret_bravo
+ display_name = "USCM beret, yellow flash"
+ path = /obj/item/clothing/head/beret/cm/bravo
+
+/datum/gear/headwear/uscm/beret_charlie
+ display_name = "USCM beret, purple flash"
+ path = /obj/item/clothing/head/beret/cm/charlie
+
+/datum/gear/headwear/uscm/beret_delta
+ display_name = "USCM beret, blue flash"
+ path = /obj/item/clothing/head/beret/cm/delta
+
+/datum/gear/headwear/uscm/beret_echo
+ display_name = "USCM beret, green flash"
+ path = /obj/item/clothing/head/beret/cm/echo
+
+/datum/gear/headwear/uscm/beret_foxtrot
+ display_name = "USCM beret, brown flash"
+ path = /obj/item/clothing/head/beret/cm/foxtrot
+
+/datum/gear/headwear/uscm/beret_intel
+ display_name = "USCM beret, black flash"
+ path = /obj/item/clothing/head/beret/cm/intel
+
/datum/gear/headwear/uscm/boonie_olive
display_name = "USCM boonie hat, olive"
path = /obj/item/clothing/head/cmcap/boonie
@@ -259,9 +299,25 @@ var/global/list/gear_datums_by_name = list()
display_name = "USCM headband, tan"
path = /obj/item/clothing/head/headband/tan
-/datum/gear/headwear/uscm/headband_squad
- display_name = "USCM headband, squad specific"
- path = /obj/item/clothing/head/headband/squad
+/datum/gear/headwear/uscm/headband_intel
+ display_name = "USCM headband, black"
+ path = /obj/item/clothing/head/headband/intel
+
+/datum/gear/headwear/uscm/headband_bravo
+ display_name = "USCM headband, orange"
+ path = /obj/item/clothing/head/headband/bravo
+
+/datum/gear/headwear/uscm/headband_charlie
+ display_name = "USCM headband, purple"
+ path = /obj/item/clothing/head/headband/charlie
+
+/datum/gear/headwear/uscm/headband_delta
+ display_name = "USCM headband, blue"
+ path = /obj/item/clothing/head/headband/delta
+
+/datum/gear/headwear/uscm/headband_echo
+ display_name = "USCM headband, cyan green"
+ path = /obj/item/clothing/head/headband/echo
/datum/gear/headwear/uscm/headset
display_name = "USCM headset"
diff --git a/code/modules/clothing/head/head.dm b/code/modules/clothing/head/head.dm
index d1743a6c4f..1c9f7ea929 100644
--- a/code/modules/clothing/head/head.dm
+++ b/code/modules/clothing/head/head.dm
@@ -81,50 +81,33 @@
/obj/item/clothing/head/beret/cm/black
icon_state = "beret_black"
-/obj/item/clothing/head/beret/cm/squadberet
- name = "USCM Squad Beret"
- desc = "For those who want to show pride and have nothing to lose (in their head, at least)."
+/obj/item/clothing/head/beret/cm/alpha
+ desc = "Often found atop heads, slightly less found on those still attached."
+ icon_state = "beret_alpha"
-/obj/item/clothing/head/beret/cm/squadberet/equipped(mob/user, slot)
- . = ..()
- self_set()
- RegisterSignal(user, COMSIG_SET_SQUAD, PROC_REF(self_set), TRUE)
+/obj/item/clothing/head/beret/cm/bravo
+ desc = "It has quite a lot of debris on it, the person wearing this probably moves less than a wall."
+ icon_state = "beret_bravo"
-/obj/item/clothing/head/beret/cm/squadberet/dropped(mob/user)
- . = ..()
- UnregisterSignal(user, COMSIG_SET_SQUAD)
-
-/obj/item/clothing/head/beret/cm/squadberet/proc/self_set()
- var/mob/living/carbon/human/H = loc
- if(istype(H))
- if(H.assigned_squad)
- switch(H.assigned_squad.name)
- if(SQUAD_MARINE_2)
- icon_state = "beret_bravo"
- desc = "It has quite a lot of debris on it, the person wearing this probably moves less than a wall."
- if(SQUAD_MARINE_3)
- icon_state = "beret_charlie"
- desc = "Still has some morning toast crumbs on it."
- if(SQUAD_MARINE_4)
- icon_state = "beret_delta"
- desc = "Hard to consider protection, but these types of people don't seek protection."
- if(SQUAD_MARINE_5)
- icon_state = "beret_echo"
- desc = "Tightly Woven, as it should be."
- if(SQUAD_MARINE_CRYO)
- icon_state = "beret_foxtrot"
- desc = "Looks and feels starched, cold to the touch."
- if(SQUAD_MARINE_INTEL)
- icon_state = "beret_intel"
- desc = "Looks more intellegent than the person wearing it."
-
- if(H.assigned_squad.name == GLOB.main_platoon_name)
- icon_state = "beret_alpha"
- desc = "Often found atop heads, slightly less found on those still attached."
- else
- icon_state = "beret"
- desc = initial(desc)
- H.update_inv_head()
+/obj/item/clothing/head/beret/cm/charlie
+ desc = "Still has some morning toast crumbs on it."
+ icon_state = "beret_charlie"
+
+/obj/item/clothing/head/beret/cm/delta
+ desc = "Hard to consider protection, but these types of people don't seek protection."
+ icon_state = "beret_delta"
+
+/obj/item/clothing/head/beret/cm/echo
+ desc = "Tightly Woven, as it should be."
+ icon_state = "beret_echo"
+
+/obj/item/clothing/head/beret/cm/foxtrot
+ desc = "Looks and feels starched, cold to the touch."
+ icon_state = "beret_foxtrot"
+
+/obj/item/clothing/head/beret/cm/intel
+ desc = "Looks more intellegent than the person wearing it."
+ icon_state = "beret_intel"
/obj/item/clothing/head/headband
@@ -157,50 +140,33 @@
desc = "A headband made from a simple strip of cloth. The words \"DOWN WITH TYRANTS\" are emblazoned on the front."
icon_state = "rebelband"
-/obj/item/clothing/head/headband/squad
- var/dummy_icon_state = "headband%SQUAD%"
+/obj/item/clothing/head/headband/alpha
+ desc = "A bright red headband made out of durable cloth. it seems brand new, yet to see any wear"
+ icon_state = "headbandalpha"
- var/static/list/valid_icon_states
+/obj/item/clothing/head/headband/bravo
+ desc = "An orangish yellow headband made out of durable cloth. this one stained with sweat and dust from manual labor"
+ icon_state = "headbandbravo"
-/obj/item/clothing/head/headband/squad/Initialize(mapload, ...)
- . = ..()
- if(!valid_icon_states)
- valid_icon_states = icon_states(icon)
- adapt_to_squad()
+/obj/item/clothing/head/headband/charlie
+ desc = "A purple headband made out of durable cloth. this one smells of jealousy and breakfast"
+ icon_state = "headbandcharlie"
-/obj/item/clothing/head/headband/squad/proc/update_clothing_wrapper(mob/living/carbon/human/wearer)
- SIGNAL_HANDLER
+/obj/item/clothing/head/headband/delta
+ desc = "A blue headband made out of durable cloth. just wearing it makes you want to recklessly charge the enemy"
+ icon_state = "headbanddelta"
- var/is_worn_by_wearer = recursive_holder_check(src) == wearer
- if(is_worn_by_wearer)
- update_clothing_icon()
- else
- UnregisterSignal(wearer, COMSIG_SET_SQUAD) // we can't set this in dropped, because dropping into a helmet unsets it and then it never updates
+/obj/item/clothing/head/headband/echo
+ desc = "A sea green headband made out of durable cloth. its color has been washed out from many long sneaking missions and raids behind enemy lines"
+ icon_state = "headbandecho"
-/obj/item/clothing/head/headband/squad/update_clothing_icon()
- adapt_to_squad()
- if(istype(loc, /obj/item/storage/internal) && istype(loc.loc, /obj/item/clothing/head/helmet))
- var/obj/item/clothing/head/helmet/headwear = loc.loc
- headwear.update_icon()
- return ..()
+/obj/item/clothing/head/headband/foxtrot
+ desc = "A brown headband made out of durable cloth. it is still cold to the touch from years of cryosleep"
+ icon_state = "headbandfoxtrot"
-/obj/item/clothing/head/headband/squad/pickup(mob/user, silent)
- . = ..()
- adapt_to_squad()
-
-/obj/item/clothing/head/headband/squad/equipped(mob/user, slot, silent)
- RegisterSignal(user, COMSIG_SET_SQUAD, PROC_REF(update_clothing_wrapper), TRUE)
- adapt_to_squad()
- return ..()
-
-/obj/item/clothing/head/headband/squad/proc/adapt_to_squad()
- var/squad_color = "Delta"
- var/mob/living/carbon/human/wearer = recursive_holder_check(src)
- if(istype(wearer) && wearer.assigned_squad)
- var/squad_name = lowertext(wearer.assigned_squad.name)
- if("headband[squad_name]" in valid_icon_states)
- squad_color = squad_name
- icon_state = replacetext(initial(dummy_icon_state), "%SQUAD%", squad_color)
+/obj/item/clothing/head/headband/intel
+ desc = "A black headband made out of durable cloth. wearing this makes you feel like a secret agent."
+ icon_state = "headbandintel"
/obj/item/clothing/head/headband/rambo
desc = "It flutters in the face of the wind, defiant and unrestrained, like the man who wears it."
@@ -258,7 +224,13 @@
/obj/item/clothing/head/headband/red = "hat_headbandred",
/obj/item/clothing/head/headband/brown = "hat_headbandbrown",
/obj/item/clothing/head/headband/gray = "hat_headbandgray",
- /obj/item/clothing/head/headband/squad = HAT_GARB_RELAY_ICON_STATE,
+ /obj/item/clothing/head/headband/alpha = "hat_headbandalpha",
+ /obj/item/clothing/head/headband/bravo = "hat_headbandbravo",
+ /obj/item/clothing/head/headband/charlie = "hat_headbandcharlie",
+ /obj/item/clothing/head/headband/delta = "hat_headbanddelta",
+ /obj/item/clothing/head/headband/echo = "hat_headbandecho",
+ /obj/item/clothing/head/headband/foxtrot = "hat_headbandfoxtrot",
+ /obj/item/clothing/head/headband/foxtrot = "hat_headbandintel",
/obj/item/prop/helmetgarb/lucky_feather = "lucky_feather",
/obj/item/prop/helmetgarb/lucky_feather/blue = "lucky_feather_blue",
/obj/item/prop/helmetgarb/lucky_feather/purple = "lucky_feather_purple",
diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm
index db17b808dc..372c4844d5 100644
--- a/code/modules/clothing/head/helmet.dm
+++ b/code/modules/clothing/head/helmet.dm
@@ -314,7 +314,13 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list(
/obj/item/clothing/head/headband/red = "headbandred",
/obj/item/clothing/head/headband/brown = "helmet_headbandbrown",
/obj/item/clothing/head/headband/gray = "helmet_headbandgray",
- /obj/item/clothing/head/headband/squad = HELMET_GARB_RELAY_ICON_STATE,
+ /obj/item/clothing/head/headband/alpha = "helmet_headbandalpha",
+ /obj/item/clothing/head/headband/bravo = "helmet_headbandbravo",
+ /obj/item/clothing/head/headband/charlie = "helmet_headbandcharlie",
+ /obj/item/clothing/head/headband/delta = "helmet_headbanddelta",
+ /obj/item/clothing/head/headband/echo = "helmet_headbandecho",
+ /obj/item/clothing/head/headband/foxtrot = "helmet_headbandfoxtrot",
+ /obj/item/clothing/head/headband/foxtrot = "helmet_headbandintel",
/obj/item/tool/candle = "candle",
/obj/item/clothing/mask/facehugger/lamarr = "lamarr",
/obj/item/toy/crayon/red = "crayonred",
diff --git a/code/modules/clothing/masks/breath.dm b/code/modules/clothing/masks/breath.dm
index ffdda93f8a..db57f4db38 100644
--- a/code/modules/clothing/masks/breath.dm
+++ b/code/modules/clothing/masks/breath.dm
@@ -154,47 +154,40 @@
item_state = "scarf_black"
original_state = "scarf_black"
-/obj/item/clothing/mask/rebreather/scarf/tacticalmask/squad
- var/dummy_icon_state = "scarf_%SQUAD%"
- item_state = "scarf_%SQUAD%"
- original_state = "scarf_%SQUAD%"
-
-
- var/static/list/valid_icon_states
-
-/obj/item/clothing/mask/rebreather/scarf/tacticalmask/squad/Initialize(mapload, ...)
- . = ..()
- if(!valid_icon_states)
- valid_icon_states = icon_states(icon)
- adapt_to_squad()
-
-/obj/item/clothing/mask/rebreather/scarf/tacticalmask/squad/update_clothing_icon()
- adapt_to_squad()
- return ..()
-
-/obj/item/clothing/mask/rebreather/scarf/tacticalmask/squad/pickup(mob/user, silent)
- . = ..()
- adapt_to_squad()
-
-/obj/item/clothing/mask/rebreather/scarf/tacticalmask/squad/equipped(mob/user, slot, silent)
- RegisterSignal(user, COMSIG_SET_SQUAD, PROC_REF(update_clothing_icon), TRUE)
- adapt_to_squad()
- return ..()
-
-/obj/item/clothing/mask/rebreather/scarf/tacticalmask/squad/dropped(mob/user)
- . = ..()
- UnregisterSignal(user, COMSIG_SET_SQUAD)
-
-/obj/item/clothing/mask/rebreather/scarf/tacticalmask/squad/proc/adapt_to_squad()
- var/squad_color = "gray"
- var/mob/living/carbon/human/wearer = loc
- if(istype(wearer) && wearer.assigned_squad)
- var/squad_name = lowertext(wearer.assigned_squad.name)
- if("scarf_[squad_name]" in valid_icon_states)
- squad_color = squad_name
- icon_state = replacetext("[initial(dummy_icon_state)][pulled ? "_down" : ""]", "%SQUAD%", squad_color)
- item_state = replacetext("[initial(item_state)][pulled ? "_down" : ""]", "%SQUAD%", squad_color)
-
+/obj/item/clothing/mask/rebreather/scarf/tacticalmask/alpha
+ icon_state = "scarf_alpha"
+ item_state = "scarf_alpha"
+ original_state = "scarf_alpha"
+
+/obj/item/clothing/mask/rebreather/scarf/tacticalmask/bravo
+ icon_state = "scarf_bravo"
+ item_state = "scarf_bravo"
+ original_state = "scarf_bravo"
+
+/obj/item/clothing/mask/rebreather/scarf/tacticalmask/charlie
+ icon_state = "scarf_charlie"
+ item_state = "scarf_charlie"
+ original_state = "scarf_charlie"
+
+/obj/item/clothing/mask/rebreather/scarf/tacticalmask/delta
+ icon_state = "scarf_delta"
+ item_state = "scarf_delta"
+ original_state = "scarf_delta"
+
+/obj/item/clothing/mask/rebreather/scarf/tacticalmask/echo
+ icon_state = "scarf_echo"
+ item_state = "scarf_echo"
+ original_state = "scarf_echo"
+
+/obj/item/clothing/mask/rebreather/scarf/tacticalmask/foxtrot
+ icon_state = "scarf_foxtrot"
+ item_state = "scarf_foxtrot"
+ original_state = "scarf_foxtrot"
+
+/obj/item/clothing/mask/rebreather/scarf/tacticalmask/intel
+ icon_state = "scarf_black"
+ item_state = "scarf_black"
+ original_state = "scarf_black"
/obj/item/clothing/mask/tornscarf
name = "tactical scarf"
diff --git a/code/modules/cm_marines/overwatch.dm b/code/modules/cm_marines/overwatch.dm
index 6de3a17396..7b6572a781 100644
--- a/code/modules/cm_marines/overwatch.dm
+++ b/code/modules/cm_marines/overwatch.dm
@@ -906,6 +906,14 @@
/obj/structure/machinery/computer/overwatch/freelance
faction = FACTION_FREELANCER
+/obj/structure/machinery/computer/overwatch/toc
+ name = "TOC Overwatch Console"
+ desc = "The Tactical Operations Center overwatch console. Many different screens make up the display."
+ icon = 'icons/obj/structures/machinery/toc.dmi'
+ icon_state = "toc"
+ bound_width = 64
+ bound_height = 32
+
/obj/structure/supply_drop
name = "Supply Drop Pad"
desc = "Place a crate on here to allow bridge Overwatch officers to drop them on people's heads."
diff --git a/code/modules/gear_presets/uscm.dm b/code/modules/gear_presets/uscm.dm
index 8a369fe1e4..07d0bfac46 100644
--- a/code/modules/gear_presets/uscm.dm
+++ b/code/modules/gear_presets/uscm.dm
@@ -304,6 +304,55 @@
spawn_weapon(/obj/item/weapon/gun/smg/m39, /obj/item/ammo_magazine/smg/m39/extended, new_human, 0, 3)
/*****************************************************************************************************/
+
+/datum/equipment_preset/uscm/tank/recon
+ name = "USCM Reconnaissance Vehicle Operator (CRMN)"
+ flags = EQUIPMENT_PRESET_EXTRA|EQUIPMENT_PRESET_MARINE
+
+ assignment = "Reconnaissance Vehicle Operator"
+ role_comm_title = "RVO"
+ paygrade = "ME5"
+
+ utility_under = list(/obj/item/clothing/under/marine/officer/tanker)
+
+/datum/equipment_preset/uscm/tank/recon/load_gear(mob/living/carbon/human/new_human)
+ var/obj/item/clothing/under/marine/officer/tanker/uniform = new()
+ var/obj/item/clothing/accessory/patch/patch_uscm = new()
+ var/obj/item/clothing/accessory/patch/forecon/patch_forecon = new()
+ uniform.attach_accessory(new_human,patch_uscm)
+ uniform.attach_accessory(new_human,patch_forecon)
+ new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/sof(new_human), WEAR_L_EAR)
+ new_human.equip_to_slot_or_del(uniform, WEAR_BODY)
+ new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/jungle/knife(new_human), WEAR_FEET)
+ new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/brown(new_human), WEAR_HANDS)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m44/gunslinger/full(new_human), WEAR_WAIST)
+ new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/tanker(new_human), WEAR_JACKET)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/fancy/cigarettes/lucky_strikes(new_human), WEAR_IN_JACKET)
+ new_human.equip_to_slot_or_del(new /obj/item/tool/weldingtool/simple(new_human), WEAR_IN_JACKET)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/general_belt/standard(new_human), WEAR_J_STORE)
+ new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/packaged_burger(new_human), WEAR_IN_J_STORE)
+ new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/wy_chips/pepper(new_human), WEAR_IN_J_STORE)
+ new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/wrapped/chunk(new_human), WEAR_IN_J_STORE)
+ new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/drinks/cans/cola(new_human), WEAR_IN_J_STORE)
+ new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/drinks/cans/cola(new_human), WEAR_IN_J_STORE)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/engineerpack/welder_chestrig(new_human), WEAR_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/tool/weldpack/minitank(new_human), WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/tool/shovel/etool/folded(new_human), WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/stack/sandbags_empty/full(new_human), WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/tools/tank(new_human), WEAR_R_STORE)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/magazine/pistol/large(new_human), WEAR_L_STORE)
+ new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/marksman(new_human), WEAR_IN_L_STORE)
+ new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/marksman(new_human), WEAR_IN_L_STORE)
+ new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/marksman(new_human), WEAR_IN_L_STORE)
+ new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/marksman(new_human), WEAR_IN_L_STORE)
+ new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/marksman(new_human), WEAR_IN_L_STORE)
+ new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/marksman(new_human), WEAR_IN_L_STORE)
+ new_human.equip_to_slot_or_del(new /obj/item/clothing/head/cmcap(new_human), WEAR_HEAD)
+ new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/welding(new_human), WEAR_EYES)
+ new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette/ucigarette(new_human), WEAR_FACE)
+
+/*****************************************************************************************************/
+
/datum/equipment_preset/uscm/spec
name = "USCM (Cryo) Squad Weapons Specialist"
flags = EQUIPMENT_PRESET_EXTRA|EQUIPMENT_PRESET_MARINE
diff --git a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm
index 078ad96536..33ed75f36e 100644
--- a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm
+++ b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm
@@ -732,6 +732,13 @@
+/mob/living/carbon/xenomorph/Moved(atom/oldloc, direction, Forced)
+ . = ..()
+ if(!client) // We are not, in fact, counted steps for AI xeno in /client/Move()
+ life_steps_total++
+
+
+
/mob/living/carbon/xenomorph/slip(slip_source_name, stun_level, weaken_level, run_only, override_noslip, slide_steps)
return FALSE
diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/crusher/crusher_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/crusher/crusher_abilities.dm
index 24db82fea8..a8ce0e60c1 100644
--- a/code/modules/mob/living/carbon/xenomorph/abilities/crusher/crusher_abilities.dm
+++ b/code/modules/mob/living/carbon/xenomorph/abilities/crusher/crusher_abilities.dm
@@ -280,10 +280,10 @@
noise_timer = noise_timer ? --noise_timer : 3
if(noise_timer == 3)
- playsound(xeno, 'sound/effects/alien_footstep_charge1.ogg', 50)
+ playsound(xeno, 'sound/effects/alien_footstep_charge1.ogg', 100)
- for(var/mob/living/carbon/human/Mob in range(10, xeno))
- shake_camera(Mob, 2, 1)
+ for(var/mob/living/carbon/human/Mob in range(14, xeno))
+ shake_camera(Mob, 2, 2)
for(var/mob/living/carbon/human/Mob in xeno.loc)
if(Mob.body_position == LYING_DOWN && Mob.stat != DEAD)
diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/crusher/crusher_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/crusher/crusher_powers.dm
index ca313a69ef..b5dc656d87 100644
--- a/code/modules/mob/living/carbon/xenomorph/abilities/crusher/crusher_powers.dm
+++ b/code/modules/mob/living/carbon/xenomorph/abilities/crusher/crusher_powers.dm
@@ -109,6 +109,7 @@
if (!check_and_use_plasma_owner())
return
+ playsound(get_turf(xeno_owner), 'sound/voice/alien_crusher_spawn.ogg', 75)
apply_cooldown()
ADD_TRAIT(xeno_owner, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Stomp"))
@@ -122,7 +123,7 @@
REMOVE_TRAIT(xeno_owner, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Stomp"))
xeno_owner.anchored = FALSE
- playsound(get_turf(xeno_owner), 'sound/effects/bang.ogg', 25, 0)
+ playsound(get_turf(xeno_owner), 'sound/effects/alien_footstep_charge3.ogg', 75)
xeno_owner.visible_message(SPAN_XENODANGER("[xeno_owner] smashes into the ground!"), SPAN_XENODANGER("You smash into the ground!"))
xeno_owner.create_stomp()
diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Crusher.dm b/code/modules/mob/living/carbon/xenomorph/castes/Crusher.dm
index d326a4d061..780a46ca12 100644
--- a/code/modules/mob/living/carbon/xenomorph/castes/Crusher.dm
+++ b/code/modules/mob/living/carbon/xenomorph/castes/Crusher.dm
@@ -81,13 +81,19 @@
/mob/living/carbon/xenomorph/crusher/Initialize(mapload, mob/living/carbon/xenomorph/oldXeno, h_number, ai_hard_off = FALSE)
. = ..()
+ AddComponent(/datum/component/footstep, 2, 50, 15, 1, "metalbang")
- playsound(src, 'sound/voice/alien_crusher_spawn.ogg', 100, FALSE, 30)
+ playsound(src, 'sound/voice/alien_death_unused.ogg', 100, TRUE, 30)
for(var/mob/current_mob as anything in get_mobs_in_z_level_range(get_turf(src), 30) - src)
var/relative_dir = get_dir(current_mob, src)
var/final_dir = dir2text(relative_dir)
to_chat(current_mob, SPAN_HIGHDANGER("You hear a terrible roar coming from [final_dir ? "the [final_dir]" : "nearby"] as the ground shakes!"))
+/mob/living/carbon/xenomorph/crusher/death(cause, gibbed)
+ . = ..()
+ playsound(src, 'sound/voice/alien_crusher_death.ogg', 50, FALSE, 15)
+
+
// Refactored to handle all of crusher's interactions with object during charge.
/mob/living/carbon/xenomorph/proc/handle_collision(atom/target)
if(!target)
diff --git a/code/modules/projectiles/guns/pistols.dm b/code/modules/projectiles/guns/pistols.dm
index aeffb19b9e..7dff109572 100644
--- a/code/modules/projectiles/guns/pistols.dm
+++ b/code/modules/projectiles/guns/pistols.dm
@@ -48,7 +48,7 @@
/obj/item/weapon/gun/pistol/m4a3
name = "\improper M4A3 service pistol"
- desc = "An M4A3 Service Pistol, once the standard issue sidearm of the Colonial Marines but has recently been replaced with the 88 Mod 4 combat pistol. Fires 9mm pistol rounds."
+ desc = "An M4A3 Service Pistol, once the standard issue sidearm of the Colonial Marines but has recently been replaced with the Weyland Yutani 88 Mod 4 combat pistol. Fires 9mm pistol rounds."
icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi'
icon_state = "m4a3"
item_state = "m4a3"
diff --git a/code/modules/projectiles/guns/revolvers.dm b/code/modules/projectiles/guns/revolvers.dm
index 48f237f9b5..0e7ff3c9af 100644
--- a/code/modules/projectiles/guns/revolvers.dm
+++ b/code/modules/projectiles/guns/revolvers.dm
@@ -288,8 +288,8 @@
//M44 Revolver
/obj/item/weapon/gun/revolver/m44
- name = "\improper M44 combat revolver"
- desc = "A bulky revolver, occasionally carried by assault troops and officers in the Colonial Marines, as well as civilian law enforcement. Fires .44 Magnum rounds."
+ name = "\improper M44 revolver"
+ desc = ".44 Magnum revolver, in limited service with the USCMC for personal defense against larger xenofauna. For best results, aim carefully."
icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi'
icon_state = "m44r"
item_state = "m44r"
@@ -337,7 +337,7 @@
/obj/item/weapon/gun/revolver/m44/custom //loadout
name = "\improper M44 custom combat revolver"
- desc = "A bulky combat revolver. The handle has been polished to a pearly perfection, and the body is silver plated. Fires .44 Magnum rounds."
+ desc = "A custom version of the M44 revolver, with a handle that's been polished to a pearly sheen, and a body that's been silver-plated. Fires .44 Magnum rounds."
current_mag = /obj/item/ammo_magazine/internal/revolver/m44
icon_state = "m44rc"
item_state = "m44rc"
@@ -494,8 +494,8 @@
//a lean mean machine, pretty inaccurate unless you play its dance.
/obj/item/weapon/gun/revolver/small
- name = "\improper S&W .38 model 37 revolver"
- desc = "A lean .38 made by Smith & Wesson. A timeless classic, from antiquity to the future. This specific model is known to be wildly inaccurate, yet extremely lethal."
+ name = "\improper .38 revolver"
+ desc = "A Frontier Special. Out here, you get a lot of smalltime companies that try to push themselves as better by upping the pressure of their ammo and fiddling with the designs to make it work. It usually means that their accuracy is awful, but the impact is impressive... if you've got the knowhow to shoot them straight."
icon = 'icons/obj/items/weapons/guns/guns_by_faction/colony.dmi'
icon_state = "sw357"
item_state = "ny762" //PLACEHOLDER
diff --git a/code/modules/projectiles/guns/rifles.dm b/code/modules/projectiles/guns/rifles.dm
index 78cf3a654b..76470513f3 100644
--- a/code/modules/projectiles/guns/rifles.dm
+++ b/code/modules/projectiles/guns/rifles.dm
@@ -364,7 +364,7 @@
/obj/item/weapon/gun/rifle/m41aMK1
name = "\improper M41A pulse rifle"
- desc = "An older design of the Pulse Rifle commonly used by Colonial Marines. Uses 10x24mm caseless ammunition."
+ desc = "Pulse action 10x24mm caseless assault rifle of the USCMC, personal friend of any Marine."
icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi'
icon_state = "m41amk1" //Placeholder.
item_state = "m41amk1" //Placeholder.
@@ -878,7 +878,7 @@
/obj/item/weapon/gun/rifle/m16
name = "\improper M16 rifle"
- desc = "An old, reliable design first adopted by the U.S. military in the 1960s. Something like this belongs in a museum of war history. It is chambered in 5.56x45mm."
+ desc = "The manufacturer claims that these are Classic 16 assault rifles. It's another one of the clonetypes you see on the Frontier since the AR-15 patent expired over a century ago. Chambered in 5.56x45mm, popular on the Frontier for home defense and hunting. The old cased rounds can also be used till they disintegrate, if you can be bothered to police the brass."
icon = 'icons/obj/items/weapons/guns/guns_by_faction/colony.dmi'
icon_state = "m16"
item_state = "m16"
@@ -963,7 +963,7 @@
/obj/item/weapon/gun/rifle/m16/grenadier
name = "\improper M16 grenadier rifle"
- desc = "An old, reliable design first adopted by the U.S. military in the 1960s. Something like this belongs in a museum of war history. It is chambered in 5.56x45mm. This one has an irremovable M203 grenade launcher attached to it, holds one propriatary 40mm shell at a time, it lacks modern IFF systems and will impact the first target it hits; introduce your little friend."
+ desc = "The little worn and faded sticker on the lower receiver claims that this is a Mustang Special, Little Friend Edition. Point is, it's an M16 repro with an irremovable M203 underslung. 40mm, careful where you point it."
icon_state = "m16g"
item_state = "m16"
fire_sound = 'sound/weapons/gun_m16.ogg'
@@ -1009,9 +1009,8 @@
//awesome vietnam era special forces carbine version of the M16
/obj/item/weapon/gun/rifle/xm177
- name = "\improper XM177E2 carbine"
- desc = "An old design, essentially a shortened M16A1 with a collapsable stock. It is chambered in 5.56x45mm. The short length inhibits the attachment of most underbarrel attachments, and the barrel moderator prohibits the attachment of all muzzle devices."
- desc_lore = "A carbine similar to the M16A1, with a collapsible stock and a distinct flash suppressor. A stamp on the receiver reads: 'COLT AR-15 - PROPERTY OF U.S. GOVT - XM177E2 - CAL 5.56MM' \nA design originating from the Vietnam War, the XM177, also known as the Colt Commando or GAU-5/A, was an improvement on the CAR-15 Model 607, fixing multiple issues found with the limited service of the Model 607 with Special Forces. The XM177 saw primary use with Army Special Forces and Navy Seals operating as commandos. \nHow this got here is a mystery."
+ name = "\improper XM177 carbine"
+ desc = "5.56x45mm carbine. Either this is a really cheap replica of the old XM177, someone's crappy DIY modification, or somehow an actual genuine antique which probably is worth at least a couple grand to a museum. Who knows?"
icon = 'icons/obj/items/weapons/guns/guns_by_faction/colony.dmi'
icon_state = "xm177"
item_state = "m16"
diff --git a/code/modules/projectiles/guns/smartgun.dm b/code/modules/projectiles/guns/smartgun.dm
index 0b0ae120cd..de915250ec 100644
--- a/code/modules/projectiles/guns/smartgun.dm
+++ b/code/modules/projectiles/guns/smartgun.dm
@@ -4,7 +4,7 @@
//Come get some.
/obj/item/weapon/gun/smartgun
name = "\improper M56B smartgun"
- desc = "The actual firearm in the 4-piece M56B Smartgun System. Essentially a heavy, mobile machinegun.\nYou may toggle firing restrictions by using a special action.\nAlt-click it to open the feed cover and allow for reloading."
+ desc = "The actual firearm in the 4-piece M56 Smartgun System. Essentially a heavy, mobile machinegun.\nYou may toggle firing restrictions by using a special action.\nAlt-click it to open the feed cover and allow for reloading."
icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi'
icon_state = "m56"
item_state = "m56"
diff --git a/code/modules/projectiles/guns/smgs.dm b/code/modules/projectiles/guns/smgs.dm
index 24eddf3159..b5923a202e 100644
--- a/code/modules/projectiles/guns/smgs.dm
+++ b/code/modules/projectiles/guns/smgs.dm
@@ -11,7 +11,7 @@
aim_slowdown = SLOWDOWN_ADS_QUICK
wield_delay = WIELD_DELAY_VERY_FAST
attachable_allowed = list(
- /obj/item/attachable/suppressor,
+ /obj/item/attachable/suppressor,
/obj/item/attachable/reddot,
/obj/item/attachable/reflex,
/obj/item/attachable/flashlight,
@@ -50,7 +50,7 @@
/obj/item/attachable/suppressor,
/obj/item/attachable/reddot,
/obj/item/attachable/reflex,
- /obj/item/attachable/angledgrip,
+ /obj/item/attachable/angledgrip,
/obj/item/attachable/verticalgrip,
/obj/item/attachable/flashlight/grip,
/obj/item/attachable/stock/smg,
@@ -145,7 +145,7 @@
/obj/item/weapon/gun/smg/mp5
name = "\improper MP5 submachinegun"
- desc = "A German design, this was one of the most widely used submachine guns in the world. It's still possible to find this firearm in the hands of collectors or gun fanatics."
+ desc = "Knockoff of an antique UPP submachine gun, made somewhere in the former German state. Chambered for 9x19mm cased ammunition."
icon = 'icons/obj/items/weapons/guns/guns_by_faction/colony.dmi'
icon_state = "mp5"
item_state = "mp5"
@@ -197,7 +197,7 @@
/obj/item/weapon/gun/smg/mp27
name = "\improper MP27 submachinegun"
- desc = "An archaic design going back almost a century, the MP27 was common in its day. Today it sees limited use as cheap computer-printed replicas or family heirlooms. An extremely ergonomic and lightweight design allows easy mass production and surpisingly good handling, but the cheap materials used hurt the weapon's scatter noticeably."
+ desc = "Once a respectable weapon, now after the design files were leaked in '67 the cheaply made copies are everywhere. Lightweight and fast firing, but the poor construction of almost every copy severely hampers accuracy."
icon = 'icons/obj/items/weapons/guns/guns_by_faction/colony.dmi'
icon_state = "mp7"
item_state = "mp7"
@@ -475,7 +475,7 @@
/obj/item/weapon/gun/smg/uzi
name = "\improper UZI"
- desc = "Exported to over 90 countries, somehow this relic has managed to end up here. Couldn't be simpler to use."
+ desc = "Antique firearm, now almost two centuries old. 9mm, fully automatic. Pull the trigger and hold on tight."
icon = 'icons/obj/items/weapons/guns/guns_by_faction/colony.dmi'
icon_state = "uzi"
item_state = "uzi"
diff --git a/code/modules/projectiles/magazines/revolvers.dm b/code/modules/projectiles/magazines/revolvers.dm
index 07fc75a50f..7d56612530 100644
--- a/code/modules/projectiles/magazines/revolvers.dm
+++ b/code/modules/projectiles/magazines/revolvers.dm
@@ -3,7 +3,7 @@
/obj/item/ammo_magazine/revolver
name = "\improper M44 speed loader (.44)"
- desc = "A revolver speed loader."
+ desc = "A revolver speed loader for the M44 revolver."
default_ammo = /datum/ammo/bullet/revolver
flags_equip_slot = NO_FLAGS
caliber = ".44"
@@ -69,9 +69,10 @@
icon_state = "zhnk72loader_shrapnel"
/obj/item/ammo_magazine/revolver/small
- name = "\improper S&W speed loader (.38)"
+ name = "\improper .38 overpressure speedloader (.38 +P)"
+ desc = "A speedloader of 6 handloaded overpressure .38 bullets. Substantial impact, but suffers from accuracy issues compared to factory ammunition. Liable to damage firearms not built to handle the chamber pressure."
default_ammo = /datum/ammo/bullet/revolver/small
- caliber = ".38"
+ caliber = ".38 +P"
icon = 'icons/obj/items/weapons/guns/ammo_by_faction/colony.dmi'
icon_state = "38"
max_rounds = 6
@@ -79,7 +80,7 @@
/obj/item/ammo_magazine/revolver/cmb
name = "\improper Spearhead hollowpoint speed loader (.357)"
- desc = "This speedloader was created for the Colonial Marshals' most commonly issued sidearm, loaded with hollowpoint rounds either for colonies with wildlife problems or orbital stations, which favor the lesser penetration over other ammunition to lessen the risk of hull breaches. In exchange, they're near useless against armored targets, but what's the chance of that being a problem on a space station?"
+ desc = "A speedloader of 6 hollowpoint .357 bullets, issued to Colonial Marshals to both prevent overpenetration and improve performance against unarmored criminals or wildlife. Less effective against hard targets, but what're the chances of encountering those?"
default_ammo = /datum/ammo/bullet/revolver/small/hollowpoint
caliber = ".357"
icon = 'icons/obj/items/weapons/guns/ammo_by_faction/colony.dmi'
@@ -89,7 +90,7 @@
/obj/item/ammo_magazine/revolver/cmb/normalpoint //put these in the marshal ert - ok sure :)
name = "\improper Spearhead speed loader (.357)"
- desc = "This speedloader is fitted with standard .357 revolver bullets. A surprising rarity, as most CMB revolvers are issued to Marshals on colonies with wildlife, or weakly-hulled space stations."
+ desc = "A speedloader of 6 FMJ .357 bullets, uncommonly issued to Colonial Marshals due to overpenetration risks."
default_ammo = /datum/ammo/bullet/revolver/small
icon_state = "cmb"
@@ -181,7 +182,7 @@
/obj/item/ammo_magazine/internal/revolver/small
default_ammo = /datum/ammo/bullet/revolver/small
- caliber = ".38"
+ caliber = ".357 Hotload"
gun_type = /obj/item/weapon/gun/revolver/small
//-------------------------------------------------------
diff --git a/code/modules/projectiles/magazines/rifles.dm b/code/modules/projectiles/magazines/rifles.dm
index 47ee89fb79..91f7bbca33 100644
--- a/code/modules/projectiles/magazines/rifles.dm
+++ b/code/modules/projectiles/magazines/rifles.dm
@@ -78,8 +78,8 @@
//M41A (MK1) TRUE AND ORIGINAL
/obj/item/ammo_magazine/rifle/m41aMK1
- name = "\improper M41A MK1 magazine (10x24mm)"
- desc = "A long rectangular box of rounds that is only compatible with the older M41A MK1. Holds up to 99 rounds."
+ name = "\improper M41A magazine (10x24mm)"
+ desc = "A long rectangular box magazine for the M41A. Holds 99 caseless 10x24mm rounds."
icon_state = "m41a_mk1"
max_rounds = 99
gun_type = /obj/item/weapon/gun/rifle/m41aMK1
@@ -87,21 +87,33 @@
ammo_band_icon = "+m41a_mk1_band"
ammo_band_icon_empty = "+m41a_mk1_band_e"
+/obj/item/ammo_magazine/rifle/m41aMK1/rubber
+ name = "\improper M41A Less Lethal magazine"
+ desc = "A long rectangular box magazine for the M41A. Holds 99 caseless 10x24mm less lethal rubber bullets. Be careful, they're LESS, lethal, not NON, lethal."
+ default_ammo = /datum/ammo/bullet/rifle/rubber
+ ammo_band_color = AMMO_BAND_COLOR_RUBBER
+
+/obj/item/ammo_magazine/rifle/m41aMK1/training
+ name = "\improper M41A training magazine"
+ desc = "A long rectangular box magazine for the M41A. Holds 99 caseless 10x24mm training rounds."
+ default_ammo = /datum/ammo/bullet/rifle/rubber
+ ammo_band_color = AMMO_BAND_COLOR_TRAINING
+
/obj/item/ammo_magazine/rifle/m41aMK1/ap
- name = "\improper M41A MK1 AP magazine (10x24mm)"
- desc = "A long rectangular box of rounds that is only compatible with the older M41A MK1. Holds up to 99 rounds. This one contains AP bullets."
+ name = "\improper M41A AP magazine (10x24mm)"
+ desc = "A long rectangular box magazine for the M41A. Holds 99 caseless 10x24mm steelcore armor piercing rounds."
default_ammo = /datum/ammo/bullet/rifle/ap
ammo_band_color = AMMO_BAND_COLOR_AP
/obj/item/ammo_magazine/rifle/m41aMK1/heap
- name = "\improper M41A MK1 HEAP magazine (10x24mm)"
- desc = "A long rectangular box of rounds that is only compatible with the older M41A MK1. Holds up to 99 rounds. This one contains High-Explosive Armor-Piercing bullets."
+ name = "\improper M41A HEAP magazine (10x24mm)"
+ desc = "A long rectangular box magazine for the M41A. Holds 99 caseless 10x24mm M309 Armor Piercing High Explosive rounds."
default_ammo = /datum/ammo/bullet/rifle/heap
ammo_band_color = AMMO_BAND_COLOR_HEAP
/obj/item/ammo_magazine/rifle/m41aMK1/incendiary
name = "\improper M41A MK1 incendiary magazine (10x24mm)"
- desc = "A long rectangular box of rounds that is only compatible with the older M41A MK1. Holds up to 99 rounds. This one contains incendiary bullets."
+ desc = "A long rectangular box magazine for the M41A. Holds 99 caseless 10x24mm incendiary rounds."
default_ammo = /datum/ammo/bullet/rifle/incendiary
ammo_band_color = AMMO_BAND_COLOR_INCENDIARY
@@ -227,8 +239,8 @@
//M16 RIFLE
/obj/item/ammo_magazine/rifle/m16
- name = "\improper M16 magazine (5.56x45mm)"
- desc = "A 5.56x45mm magazine for the M16 assault rifle."
+ name = "\improper M16 magazine"
+ desc = "An FMJ 5.56x45mm magazine for the M16 assault rifle and its clones. Holds 20 rounds."
caliber = "5.56x45mm"
icon = 'icons/obj/items/weapons/guns/ammo_by_faction/colony.dmi'
icon_state = "m16"
@@ -239,9 +251,22 @@
ammo_band_icon = "+m16_band"
ammo_band_icon_empty = "+m16_band_e"
+/obj/item/ammo_magazine/rifle/m16/extended
+ name = "\improper M16 extended magazine"
+ desc = "An FMJ 5.56x45mm magazine for the M16 assault rifle and its clones. Holds 30 rounds."
+ caliber = "5.56x45mm"
+ icon = 'icons/obj/items/weapons/guns/ammo_by_faction/colony.dmi'
+ icon_state = "m16"
+ default_ammo = /datum/ammo/bullet/rifle
+ max_rounds = 30
+ gun_type = /obj/item/weapon/gun/rifle/m16
+ w_class = SIZE_MEDIUM
+ ammo_band_icon = "+m16_band"
+ ammo_band_icon_empty = "+m16_band_e"
+
/obj/item/ammo_magazine/rifle/m16/ap
- name = "\improper M16 AP magazine (5.56x45mm)"
- desc = "An AP 5.56x45mm magazine for the M16 assault rifle."
+ name = "\improper M16 AP magazine"
+ desc = "An AP 5.56x45mm magazine for the M16 assault rifle and its clones. Holds 20 rounds."
caliber = "5.56x45mm"
default_ammo = /datum/ammo/bullet/rifle/ap
max_rounds = 20
diff --git a/code/modules/shuttle/computers/dropship_computer.dm b/code/modules/shuttle/computers/dropship_computer.dm
index d86d409a6b..3f688c5721 100644
--- a/code/modules/shuttle/computers/dropship_computer.dm
+++ b/code/modules/shuttle/computers/dropship_computer.dm
@@ -500,3 +500,11 @@
icon_state = "shuttle"
is_remote = TRUE
needs_power = TRUE
+
+/obj/structure/machinery/computer/shuttle/dropship/flight/toc
+ name = "midway control screen"
+ desc = "A screen on the TOC computer for controlling the dropship linked to it."
+ icon = 'icons/obj/structures/machinery/computer.dmi'
+ icon_state = "toc_shuttle"
+ shuttleId = DROPSHIP_MIDWAY
+ is_remote = TRUE
diff --git a/code/modules/vehicles/interior/interactable/seats.dm b/code/modules/vehicles/interior/interactable/seats.dm
index 017b9e6b58..06217d4cc0 100644
--- a/code/modules/vehicles/interior/interactable/seats.dm
+++ b/code/modules/vehicles/interior/interactable/seats.dm
@@ -300,6 +300,7 @@
desc = "A sturdy chair with a brace that lowers over your body. Prevents being flung around in vehicle during crash being injured as a result. Fasten your seatbelts, kids! Fix with welding tool in case of damage."
icon = 'icons/obj/vehicles/interiors/general.dmi'
icon_state = "vehicle_seat"
+ buckling_sound = 'sound/effects/metal_close.ogg'
var/image/chairbar = null
var/broken = FALSE
buildstackamount = 0
@@ -442,3 +443,39 @@
break_seat()
if(EXPLOSION_THRESHOLD_MEDIUM to INFINITY)
break_seat()
+
+/obj/structure/bed/chair/vehicle/toc
+ name = "overwatch chair"
+ desc = "A sturdy chair with a brace that lowers over the body. Prevents being flung around in vehicle during a crash and being injured as a result. Fasten your seatbelts, kids! Fix with welding tool in case of damage."
+ icon_state = "armor_chair"
+ can_rotate = TRUE
+
+/obj/structure/bed/chair/vehicle/toc/afterbuckle(mob/M)
+ if(buckled_mob)
+ if(buckled_mob != M)
+ return
+ icon_state = initial(icon_state) + "_buckled"
+ overlays += chairbar
+
+ if(buckle_offset_x != 0)
+ mob_old_x = M.pixel_x
+ M.pixel_x = buckle_offset_x
+ if(buckle_offset_y != 0)
+ mob_old_y = M.pixel_y
+ M.pixel_y = buckle_offset_y
+
+ ADD_TRAIT(buckled_mob, TRAIT_UNDENSE, BUCKLED_TRAIT)
+ else
+ icon_state = initial(icon_state)
+ overlays -= chairbar
+
+ if(buckle_offset_x != 0)
+ M.pixel_x = mob_old_x
+ mob_old_x = 0
+ if(buckle_offset_y != 0)
+ M.pixel_y = mob_old_y
+ mob_old_y = 0
+
+ REMOVE_TRAIT(M, TRAIT_UNDENSE, BUCKLED_TRAIT)
+
+ handle_rotation()
diff --git a/code/modules/vehicles/interior/interactable/vehicle_locker.dm b/code/modules/vehicles/interior/interactable/vehicle_locker.dm
index 5571995594..feeb533796 100644
--- a/code/modules/vehicles/interior/interactable/vehicle_locker.dm
+++ b/code/modules/vehicles/interior/interactable/vehicle_locker.dm
@@ -15,8 +15,6 @@
unslashable = TRUE
indestructible = TRUE
- var/list/role_restriction = list(JOB_CREWMAN, JOB_WO_CREWMAN, JOB_UPP_CREWMAN, JOB_PMC_CREWMAN)
-
var/obj/item/storage/internal/container
/obj/structure/vehicle_locker/Initialize()
@@ -34,7 +32,8 @@
/obj/item/storage/pouch,
/obj/item/device/motiondetector,
/obj/item/ammo_magazine/hardpoint,
- /obj/item/tool/weldpack
+ /obj/item/tool/weldpack,
+ /obj/item/ammo_box/magazine
)
flags_atom |= USES_HEARING
@@ -47,10 +46,6 @@
if (!ishuman(H) || H.is_mob_restrained())
return
- if(!role_restriction.Find(H.job))
- to_chat(H, SPAN_WARNING("You cannot access \the [name]."))
- return
-
empty(get_turf(H), H)
//regular storage's empty() proc doesn't work due to checks, so imitate it
@@ -80,10 +75,6 @@
if(user.get_active_hand())
return ..()
- if(!role_restriction.Find(user.job))
- to_chat(user, SPAN_WARNING("You cannot access \the [name]."))
- return TRUE
-
if(Adjacent(user))
container.open(user)
return TRUE
@@ -98,9 +89,6 @@
return
if(user.is_mob_incapacitated())
return
- if(!role_restriction.Find(user.job))
- to_chat(user, SPAN_WARNING("You cannot access \the [name]."))
- return
if (container.handle_mousedrop(user, over_object))
..(over_object)
@@ -111,9 +99,6 @@
return
if(!istype(user))
return
- if(!role_restriction.Find(user.job))
- to_chat(user, SPAN_WARNING("You cannot access \the [name]."))
- return
return container.attackby(W, user)
/obj/structure/vehicle_locker/emp_act(severity)
@@ -141,11 +126,16 @@
icon = 'icons/obj/vehicles/interiors/tank.dmi'
icon_state = "locker"
+/obj/structure/vehicle_locker/movie
+ name = "storage compartment"
+ desc = "A wide storage unit to allow it's users to store a wide variety of objects, from equipment to weapons and their ammo. Very versatile."
+ icon = 'icons/obj/vehicles/interiors/movie.dmi'
+ icon_state = "locker"
+
/obj/structure/vehicle_locker/med
name = "wall-mounted surgery kit storage"
desc = "A small locker that securely stores a full surgical kit. ID-locked to surgeons."
icon_state = "locker_med"
- role_restriction = list(JOB_CMO, JOB_DOCTOR, JOB_RESEARCHER, JOB_SYNTH, JOB_WO_CMO, JOB_WO_DOCTOR, JOB_WO_RESEARCHER, JOB_SEA, JOB_CLF_MEDIC, "Colonial Doctor", "Sorokyne Strata Doctor", JOB_SYNTH, JOB_WO_SYNTH)
var/has_tray = TRUE
@@ -197,9 +187,6 @@
return
if(!istype(user))
return
- if(!role_restriction.Find(user.job))
- to_chat(user, SPAN_WARNING("You cannot access \the [name]."))
- return
if(istype(W, /obj/item/storage/surgical_tray))
add_tray(user, W)
return
@@ -215,10 +202,6 @@
if(user.get_active_hand())
return ..()
- if(!role_restriction.Find(user.job))
- to_chat(user, SPAN_WARNING("You cannot access \the [name]."))
- return TRUE
-
if(!has_tray)
to_chat(user, SPAN_WARNING("\The [name] doesn't have a surgical tray installed!"))
return TRUE
@@ -233,9 +216,6 @@
return
if(user.is_mob_incapacitated())
return
- if(!role_restriction.Find(user.job))
- to_chat(user, SPAN_WARNING("You cannot access \the [name]."))
- return
if(!has_tray)
to_chat(user, SPAN_WARNING("\The [name] doesn't have a surgical tray installed!"))
return
@@ -256,10 +236,6 @@
if(H.is_mob_incapacitated())
return
- if(!role_restriction.Find(H.job))
- to_chat(H, SPAN_WARNING("You cannot access \the [name]."))
- return
-
remove_tray(H)
/obj/structure/vehicle_locker/med/proc/remove_tray(mob/living/carbon/human/H)
@@ -303,4 +279,3 @@
has_tray = TRUE
update_icon()
H.visible_message(SPAN_NOTICE("[H] installs \the [tray] into \the [src]."), SPAN_NOTICE("You install \the [tray] into \the [src]."))
-
diff --git a/code/modules/vehicles/interior/interior_landmarks.dm b/code/modules/vehicles/interior/interior_landmarks.dm
index eb62e50243..bfb4ab58c7 100644
--- a/code/modules/vehicles/interior/interior_landmarks.dm
+++ b/code/modules/vehicles/interior/interior_landmarks.dm
@@ -146,6 +146,28 @@
qdel(src)
+/obj/effect/landmark/interior/spawn/vehicle_driver_seat/armor/movie
+ name = "movie apc seat spawner"
+ var/buckling_y = 0
+
+/obj/effect/landmark/interior/spawn/vehicle_driver_seat/armor/movie/on_load(datum/interior/I)
+ var/obj/structure/bed/chair/comfy/vehicle/driver/S = new(loc)
+
+ S.icon = icon
+ S.icon_state = icon_state
+ S.layer = layer
+ S.vehicle = I.exterior
+ S.required_skill = S.vehicle.required_skill
+ S.setDir(dir)
+ S.alpha = alpha
+ S.update_icon()
+ S.handle_rotation()
+ S.pixel_x = pixel_x
+ S.pixel_y = pixel_y
+ S.buckling_y = buckling_y
+
+ qdel(src)
+
/obj/effect/landmark/interior/spawn/vehicle_support_gunner_seat
name = "1st support gunner's seat spawner"
icon = 'icons/obj/vehicles/interiors/general.dmi'
@@ -215,6 +237,10 @@
icon_state = "wall_phone"
color = "yellow"
+/obj/effect/landmark/interior/spawn/telephone/toc
+ icon = 'icons/obj/vehicles/interiors/movie.dmi'
+ icon_state = "wall_phone"
+
/obj/effect/landmark/interior/spawn/telephone/on_load(datum/interior/I)
var/obj/structure/phone_base/phone = new(loc)
@@ -246,6 +272,7 @@
R.layer = layer
R.pixel_x = pixel_x
R.pixel_y = pixel_y
+ R.density = density
R.vehicle = I.exterior
R.setDir(dir)
R.update_icon()
@@ -268,6 +295,7 @@
V.pixel_x = pixel_x
V.pixel_y = pixel_y
V.alpha = alpha
+ V.layer = layer
V.update_icon()
qdel(src)
diff --git a/icons/obj/items/clothing/cm_hats.dmi b/icons/obj/items/clothing/cm_hats.dmi
index e68f26baae..5df0576c6a 100644
Binary files a/icons/obj/items/clothing/cm_hats.dmi and b/icons/obj/items/clothing/cm_hats.dmi differ
diff --git a/icons/obj/structures/gun_racks.dmi b/icons/obj/structures/gun_racks.dmi
index e452fa3c68..fb4e3c4b9c 100644
Binary files a/icons/obj/structures/gun_racks.dmi and b/icons/obj/structures/gun_racks.dmi differ
diff --git a/icons/obj/structures/machinery/computer.dmi b/icons/obj/structures/machinery/computer.dmi
index a3f60be487..4224992af2 100644
Binary files a/icons/obj/structures/machinery/computer.dmi and b/icons/obj/structures/machinery/computer.dmi differ
diff --git a/icons/obj/structures/machinery/toc.dmi b/icons/obj/structures/machinery/toc.dmi
new file mode 100644
index 0000000000..b2917b4790
Binary files /dev/null and b/icons/obj/structures/machinery/toc.dmi differ
diff --git a/icons/obj/structures/tables.dmi b/icons/obj/structures/tables.dmi
index bee6f34772..2528751b60 100644
Binary files a/icons/obj/structures/tables.dmi and b/icons/obj/structures/tables.dmi differ
diff --git a/icons/obj/vehicles/interiors/apc.dmi b/icons/obj/vehicles/interiors/apc.dmi
index e12c5f68ab..0d91ca9447 100644
Binary files a/icons/obj/vehicles/interiors/apc.dmi and b/icons/obj/vehicles/interiors/apc.dmi differ
diff --git a/icons/obj/vehicles/interiors/movie.dmi b/icons/obj/vehicles/interiors/movie.dmi
new file mode 100644
index 0000000000..1bacbe09b4
Binary files /dev/null and b/icons/obj/vehicles/interiors/movie.dmi differ
diff --git a/maps/interiors/apc_movie.dmm b/maps/interiors/apc_movie.dmm
index d32b9f49ec..d1f9258eef 100644
--- a/maps/interiors/apc_movie.dmm
+++ b/maps/interiors/apc_movie.dmm
@@ -6,34 +6,30 @@
/turf/open/void/vehicle,
/area/space)
"b" = (
-/obj/structure/machinery/computer/shuttle/dropship/flight/remote_control{
- name = "Alamo Remote Control Console";
- shuttleId = "dropship_alamo";
- pixel_x = 7;
- pixel_y = 11
- },
-/obj/structure/bed/chair/vehicle{
- dir = 1;
- pixel_x = -16;
- layer = 3.21
+/obj/structure/interior_wall/apc{
+ icon_state = "wall";
+ pixel_y = -12;
+ opacity = 0
},
-/turf/open/shuttle/vehicle{
- icon_state = "floor_1_4"
+/obj/structure/interior_wall/apc{
+ icon_state = "wheel_front_top_2";
+ pixel_x = -4;
+ pixel_y = -5;
+ layer = 2.01
},
-/area/vehicle/apc/movie)
+/turf/open/void/vehicle,
+/area/space)
"c" = (
-/obj/structure/machinery/computer/overwatch/almayer{
- layer = 3.2;
- pixel_x = 16;
- pixel_y = 23
- },
-/obj/structure/machinery/prop/almayer/CICmap{
- icon_state = "security_cam";
+/obj/structure/machinery/computer/overwatch/toc{
layer = 2.97;
- name = "Tactical Map Display";
- pixel_x = -7;
- pixel_y = 11;
- density = 0
+ pixel_y = 12
+ },
+/obj/structure/surface/table/reinforced/toc/west{
+ pixel_y = -7
+ },
+/obj/structure/machinery/computer/shuttle/dropship/flight/toc{
+ pixel_y = 12;
+ pixel_x = 7
},
/turf/open/shuttle/vehicle{
icon_state = "floor_1_3"
@@ -61,7 +57,8 @@
/obj/structure/interior_wall/apc{
icon_state = "wheel_front_top_2";
pixel_x = 4;
- pixel_y = -4
+ pixel_y = -5;
+ layer = 2.01
},
/turf/open/void/vehicle,
/area/space)
@@ -69,7 +66,8 @@
/obj/structure/interior_wall/apc{
icon_state = "wheel_front_top_1";
pixel_x = 1;
- pixel_y = -4
+ pixel_y = -5;
+ layer = 2.01
},
/turf/open/void/vehicle,
/area/space)
@@ -80,18 +78,14 @@
/turf/open/void/vehicle,
/area/space)
"h" = (
-/obj/effect/landmark/interior/spawn/weapons_loader,
+/obj/effect/landmark/interior/spawn/weapons_loader{
+ pixel_y = -11;
+ layer = 4
+ },
/turf/open/shuttle/vehicle{
icon_state = "floor_2"
},
/area/vehicle/apc/movie)
-"i" = (
-/obj/structure/interior_wall/apc{
- icon_state = "corner_inverse_R";
- opacity = 0
- },
-/turf/open/space/basic,
-/area/space)
"j" = (
/obj/structure/bed/chair/vehicle{
dir = 1;
@@ -103,7 +97,7 @@
},
/obj/effect/landmark/interior/spawn/interior_viewport{
dir = 1;
- pixel_x = 8;
+ pixel_x = -7;
pixel_y = -11
},
/turf/open/shuttle/vehicle{
@@ -111,29 +105,31 @@
},
/area/vehicle/apc/movie)
"l" = (
-/obj/structure/interior_wall/apc{
- icon_state = "wall";
- opacity = 0
+/obj/structure/machinery/prop/almayer/CICmap{
+ density = 0;
+ icon_state = "toc_map";
+ layer = 2.97;
+ name = "Tactical Map Display";
+ pixel_y = 11;
+ pixel_x = -7
+ },
+/obj/structure/surface/table/reinforced/toc/east{
+ pixel_y = -7
+ },
+/obj/effect/landmark/interior/spawn/telephone/toc{
+ pixel_y = 11;
+ pixel_x = 11
},
-/turf/open/space/basic,
-/area/space)
-"m" = (
/turf/open/shuttle/vehicle{
- icon_state = "floor_1_5"
+ icon_state = "floor_1_4"
},
/area/vehicle/apc/movie)
"n" = (
/obj/structure/interior_wall/apc{
- icon_state = "intersection_2";
+ icon_state = "corner_inverse_L";
opacity = 0
},
-/obj/structure/interior_wall/apc{
- icon_state = "wheel_front_top_2";
- pixel_x = 2;
- pixel_y = 8;
- layer = 2
- },
-/turf/open/shuttle/vehicle,
+/turf/open/space/basic,
/area/space)
"o" = (
/obj/structure/interior_wall/apc{
@@ -143,9 +139,10 @@
/area/space)
"p" = (
/obj/structure/interior_wall/apc{
- icon_state = "front_4"
+ icon_state = "wall_2";
+ opacity = 0
},
-/turf/open/void/vehicle,
+/turf/open/space/basic,
/area/space)
"q" = (
/obj/structure/interior_wall/apc{
@@ -160,23 +157,11 @@
},
/turf/open/space/basic,
/area/space)
-"s" = (
-/obj/structure/interior_wall/apc{
- icon_state = "wall_2";
- opacity = 0
- },
-/turf/open/space/basic,
-/area/space)
"t" = (
-/turf/open/shuttle/vehicle{
- icon_state = "floor_0_10"
- },
-/area/vehicle/apc/movie)
-"u" = (
-/obj/effect/landmark/interior/spawn/interior_camera{
- dir = 10;
- pixel_x = -14;
- pixel_y = 38
+/obj/structure/bed/chair/vehicle/toc{
+ dir = 1;
+ pixel_y = 19;
+ pixel_x = 16
},
/turf/open/shuttle/vehicle{
icon_state = "floor_1_3"
@@ -184,33 +169,65 @@
/area/vehicle/apc/movie)
"v" = (
/obj/structure/bed/chair/vehicle{
- pixel_x = 8
+ pixel_x = 8;
+ pixel_y = 14
},
/obj/structure/bed/chair/vehicle{
- pixel_x = -8
+ pixel_x = -8;
+ pixel_y = 14
},
-/obj/effect/landmark/interior/spawn/interior_viewport{
- pixel_x = -7;
- pixel_y = 23
+/obj/structure/vehicle_locker/movie{
+ pixel_y = 31;
+ layer = 2.9
},
/turf/open/shuttle/vehicle{
icon_state = "floor_2"
},
/area/vehicle/apc/movie)
"w" = (
-/obj/structure/machinery/cm_vending/sorted/medical/wall_med/vehicle{
- pixel_x = 6;
- pixel_y = 28
+/obj/effect/landmark/interior/spawn/interior_camera{
+ dir = 5;
+ pixel_x = -18;
+ pixel_y = 38
+ },
+/obj/structure/vehicle_locker/movie{
+ pixel_y = 11;
+ layer = 2.9
},
-/obj/structure/extinguisher_cabinet/lifeboat{
- icon = 'icons/obj/vehicles/interiors/general.dmi';
+/obj/structure/gun_rack/apc/boyars{
+ pixel_x = 8;
+ pixel_y = 1;
+ density = 0
+ },
+/obj/structure/gun_rack/apc/frontal{
+ pixel_y = 1;
pixel_x = -8;
- pixel_y = 28
+ density = 0
},
/turf/open/shuttle/vehicle{
- icon_state = "floor_1_5"
+ icon_state = "floor_2"
},
/area/vehicle/apc/movie)
+"x" = (
+/obj/structure/interior_wall/apc{
+ icon_state = "wall";
+ opacity = 0;
+ pixel_y = -12
+ },
+/obj/structure/interior_wall/apc{
+ icon_state = "wheel_front_top_2";
+ pixel_x = 10;
+ pixel_y = -5;
+ layer = 2.01
+ },
+/obj/structure/interior_wall/apc{
+ icon_state = "wheel_front_top_2";
+ pixel_x = -18;
+ pixel_y = -5;
+ layer = 2.01
+ },
+/turf/open/void/vehicle,
+/area/space)
"y" = (
/obj/structure/interior_wall/apc{
icon_state = "front_5"
@@ -265,27 +282,31 @@
/turf/open/void/vehicle,
/area/space)
"F" = (
+/obj/effect/landmark/interior/spawn/interior_viewport{
+ pixel_x = 8;
+ pixel_y = 26;
+ layer = 3
+ },
/obj/structure/bed/chair/vehicle{
- pixel_x = 8
+ pixel_x = -8;
+ pixel_y = 14
},
/obj/structure/bed/chair/vehicle{
- pixel_x = -8
+ pixel_x = 8;
+ pixel_y = 14
},
-/obj/structure/vehicle_locker{
- pixel_y = 28
+/obj/structure/machinery/cm_vending/sorted/medical/wall_med/vehicle{
+ pixel_y = 30;
+ pixel_x = -8
},
/turf/open/shuttle/vehicle{
icon_state = "floor_2"
},
/area/vehicle/apc/movie)
"G" = (
-/obj/structure/machinery/cm_vending/sorted/vehicle_supply{
- pixel_y = 16
- },
-/obj/effect/landmark/interior/spawn/interior_viewport{
- dir = 8;
- pixel_x = 5;
- pixel_y = 8
+/obj/structure/gun_rack/m41{
+ pixel_y = 22;
+ density = 0
},
/turf/open/shuttle/vehicle{
icon_state = "floor_2"
@@ -293,7 +314,7 @@
/area/vehicle/apc/movie)
"H" = (
/obj/structure/interior_wall/apc{
- icon_state = "corner_inverse_L";
+ icon_state = "corner_inverse_R";
opacity = 0
},
/turf/open/space/basic,
@@ -303,26 +324,39 @@
icon_state = "front_3"
},
/obj/structure/interior_wall/apc{
- icon_state = "front_4"
+ icon_state = "front_4";
+ pixel_y = 12
},
/turf/open/void/vehicle,
/area/space)
"J" = (
-/obj/structure/interior_wall/apc{
- icon_state = "intersection_1";
- opacity = 0
- },
/obj/structure/interior_wall/apc{
icon_state = "wheel_front_top_2";
pixel_x = 4;
pixel_y = 1;
- layer = 2.01
+ layer = 2.01;
+ opacity = 0
+ },
+/obj/structure/interior_wall/apc{
+ icon_state = "corner_smaller_R";
+ opacity = 0;
+ pixel_y = 12
+ },
+/obj/structure/interior_wall/apc{
+ icon_state = "corner_smaller_L";
+ opacity = 0;
+ pixel_y = 12
+ },
+/obj/structure/interior_wall/apc{
+ icon_state = "intersection_2";
+ opacity = 0;
+ pixel_y = -20
},
/turf/open/shuttle/vehicle,
/area/space)
"K" = (
/obj/structure/interior_wall/apc{
- icon_state = "corner_small_L";
+ icon_state = "corner_smaller_L";
opacity = 0
},
/obj/structure/interior_wall/apc{
@@ -351,15 +385,16 @@
/area/vehicle/apc/movie)
"O" = (
/obj/structure/interior_wall/apc{
- icon_state = "front_2"
+ icon_state = "front_2";
+ pixel_y = 7
+ },
+/obj/structure/interior_wall/apc{
+ icon_state = "front_2";
+ pixel_y = -2;
+ layer = 2.01
},
/turf/open/void/vehicle,
/area/space)
-"P" = (
-/turf/open/shuttle/vehicle{
- icon_state = "floor_0_9"
- },
-/area/vehicle/apc/movie)
"Q" = (
/obj/structure/interior_wall/apc{
icon_state = "door_big_left";
@@ -377,7 +412,8 @@
/area/space)
"S" = (
/obj/structure/interior_wall/apc{
- icon_state = "front_6"
+ icon_state = "front_6";
+ pixel_y = -1
},
/turf/open/void/vehicle,
/area/space)
@@ -394,7 +430,8 @@
/area/vehicle/apc/movie)
"U" = (
/obj/structure/interior_wall/apc{
- icon_state = "front_wheel_R"
+ icon_state = "front_wheel_R";
+ layer = 4.1
},
/turf/open/space/basic,
/area/space)
@@ -407,27 +444,20 @@
/turf/open/void/vehicle,
/area/space)
"W" = (
-/obj/effect/landmark/interior/spawn/vehicle_driver_seat/armor{
- dir = 4
- },
/obj/effect/landmark/interior/spawn/interior_viewport{
dir = 8;
- pixel_x = 5
+ pixel_x = 5;
+ pixel_y = 18
+ },
+/obj/effect/landmark/interior/spawn/vehicle_driver_seat/armor/movie{
+ dir = 4;
+ buckling_y = 16;
+ pixel_y = 16
},
/turf/open/shuttle/vehicle{
icon_state = "floor_2"
},
/area/vehicle/apc/movie)
-"X" = (
-/obj/structure/interior_wall/apc{
- icon_state = "wall";
- opacity = 0
- },
-/obj/structure/surface/table/reinforced/almayer_B{
- pixel_y = -18
- },
-/turf/open/space/basic,
-/area/space)
"Y" = (
/obj/structure/interior_wall/apc{
icon_state = "rear_2"
@@ -436,19 +466,20 @@
/area/space)
"Z" = (
/obj/structure/interior_wall/apc{
- icon_state = "corner_small_R";
+ icon_state = "corner_smaller_R";
opacity = 0
},
/obj/structure/interior_wall/apc{
icon_state = "wheel_front_top_2";
pixel_x = 4;
- pixel_y = -4
+ pixel_y = -5;
+ layer = 2.01
},
/obj/structure/interior_wall/apc{
icon_state = "wheel_front_top_2";
pixel_x = 8;
- pixel_y = -4;
- layer = 2.03
+ pixel_y = -5;
+ layer = 2.01
},
/turf/open/void/vehicle,
/area/space)
@@ -457,52 +488,46 @@
a
D
M
-M
Y
o
E
"}
(2,1,1) = {"
V
-s
+p
v
-m
-A
+j
L
E
"}
(3,1,1) = {"
K
-H
+n
F
-m
-j
+A
r
E
"}
(4,1,1) = {"
-X
+b
c
-u
-P
+t
B
z
Q
"}
(5,1,1) = {"
-X
-b
+x
+l
N
-t
N
T
C
"}
(6,1,1) = {"
Z
-i
+H
G
-m
d
R
E
@@ -510,7 +535,6 @@ E
(7,1,1) = {"
e
J
-n
w
A
q
@@ -518,9 +542,8 @@ E
"}
(8,1,1) = {"
f
-l
+p
W
-m
h
U
E
@@ -529,7 +552,6 @@ E
S
I
O
-p
y
g
E
diff --git a/maps/map_files/chapaev/chapaev.dmm b/maps/map_files/chapaev/chapaev.dmm
index 19221308e2..c2b8457ee8 100644
--- a/maps/map_files/chapaev/chapaev.dmm
+++ b/maps/map_files/chapaev/chapaev.dmm
@@ -1069,6 +1069,7 @@
icon_off = "cabinetdetective_broken";
has_cryo_gear = 0
},
+/obj/item/clothing/under/marine/veteran/UPP/boiler,
/turf/open/floor/strata{
dir = 6;
icon_state = "multi_tiles"
diff --git a/maps/map_files/golden_arrow/golden_arrow.dmm b/maps/map_files/golden_arrow/golden_arrow.dmm
index 952d2b2f85..ab5d87ee73 100644
--- a/maps/map_files/golden_arrow/golden_arrow.dmm
+++ b/maps/map_files/golden_arrow/golden_arrow.dmm
@@ -3251,6 +3251,7 @@
icon_off = "cabinetdetective_broken";
has_cryo_gear = 0
},
+/obj/item/clothing/under/marine/officer/boiler,
/turf/open/floor/almayer{
icon_state = "plate"
},
diff --git a/sound/voice/alien_crusher_death.ogg b/sound/voice/alien_crusher_death.ogg
new file mode 100644
index 0000000000..67629295be
Binary files /dev/null and b/sound/voice/alien_crusher_death.ogg differ