Skip to content

Commit

Permalink
IOs get their own squads (#4375)
Browse files Browse the repository at this point in the history
# About the pull request

IOs get their own squad, and they get assigned roundstart

# Explain why it's good for the game

It promotes teamwork for IOs, the lack of which is the
#1 cause of IO death

In addition there's already an overwatch console in the CIC office.

You could already do this via Echo, but that's not apparant to new
players

# Testing Photographs and Procedure
<details>
<summary>Screenshots & Videos</summary>

Put screenshots and videos here with an empty line between the
screenshots and the `<details>` tags.

</details>


# Changelog
:cl: TheGamerdk, ihatethisengine
add: IOs start in their own squad now
/:cl:

---------

Co-authored-by: TheGamerdk <[email protected]>
Co-authored-by: ihatethisengine <[email protected]>
  • Loading branch information
3 people authored Sep 19, 2023
1 parent a154f98 commit e97996f
Show file tree
Hide file tree
Showing 7 changed files with 42 additions and 5 deletions.
1 change: 1 addition & 0 deletions code/__DEFINES/job.dm
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#define SQUAD_MARINE_4 "Delta"
#define SQUAD_MARINE_5 "Echo"
#define SQUAD_MARINE_CRYO "Foxtrot"
#define SQUAD_MARINE_INTEL "Intel"
#define SQUAD_SOF "SOF"

// Job name defines
Expand Down
1 change: 1 addition & 0 deletions code/__DEFINES/minimap.dm
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ GLOBAL_LIST_INIT(all_minimap_flags, bitfield2list(MINIMAP_FLAG_ALL))
#define MINIMAP_SQUAD_ECHO "#00b043"
#define MINIMAP_SQUAD_FOXTROT "#fe7b2e"
#define MINIMAP_SQUAD_SOF "#400000"
#define MINIMAP_SQUAD_INTEL "#053818"

#define MINIMAP_ICON_BACKGROUND_CIVILIAN "#7D4820"
#define MINIMAP_ICON_BACKGROUND_CIC "#3f3f3f"
Expand Down
2 changes: 1 addition & 1 deletion code/game/jobs/job/command/auxiliary/intel.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
allow_additional = 1
scaled = 1
supervisors = "the auxiliary support officer"
flags_startup_parameters = ROLE_ADD_TO_DEFAULT
flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADD_TO_SQUAD
gear_preset = "USCM Intelligence Officer (IO) (Cryo)"
entry_message_body = "<a href='"+URL_WIKI_IO_GUIDE+"'>Your job is to assist the marines in collecting intelligence related</a> to the current operation to better inform command of their opposition. You are in charge of gathering any data disks, folders, and notes you may find on the operational grounds and decrypt them to grant the USCM additional resources."

Expand Down
29 changes: 27 additions & 2 deletions code/game/jobs/job/marine/squads.dm
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@
var/tracking_id = null //Used for the tracking subsystem
/// Maximum number allowed in a squad. Defaults to infinite
var/max_positions = -1
/// If uses the overlay
var/use_stripe_overlay = TRUE
/// Color for the squad marines gear overlays
var/equipment_color = "#FFFFFF"
/// The alpha for the armor overlay used by equipment color
Expand Down Expand Up @@ -108,6 +110,9 @@

var/minimap_color = MINIMAP_SQUAD_UNKNOWN

///Should we add the name of our squad in front of their name? Ex: Alpha Hospital Corpsman
var/prepend_squad_name_to_assignment = TRUE


/datum/squad/marine
name = "Root"
Expand Down Expand Up @@ -175,6 +180,23 @@
roundstart = FALSE
locked = TRUE

/datum/squad/marine/intel
name = SQUAD_MARINE_INTEL
use_stripe_overlay = FALSE
equipment_color = "#053818"
minimap_color = MINIMAP_SQUAD_INTEL
radio_freq = null

roundstart = FALSE
prepend_squad_name_to_assignment = FALSE

max_engineers = 0
max_medics = 0
max_specialists = 0
max_tl = 0
max_smartgun = 0
max_leaders = 0

/datum/squad/marine/sof
name = SQUAD_SOF
equipment_color = "#400000"
Expand Down Expand Up @@ -496,7 +518,10 @@
marines_list += M
M.assigned_squad = src //Add them to the squad
C.access += (src.access + extra_access) //Add their squad access to their ID
C.assignment = "[name] [assignment]"
if(prepend_squad_name_to_assignment)
C.assignment = "[name] [assignment]"
else
C.assignment = assignment

SEND_SIGNAL(M, COMSIG_SET_SQUAD)

Expand All @@ -505,7 +530,7 @@
C.name = "[C.registered_name]'s ID Card ([C.assignment])"

var/obj/item/device/radio/headset/almayer/marine/headset = locate() in list(M.wear_l_ear, M.wear_r_ear)
if(headset)
if(headset && radio_freq)
headset.set_frequency(radio_freq)
M.update_inv_head()
M.update_inv_wear_suit()
Expand Down
9 changes: 9 additions & 0 deletions code/game/jobs/role_authority.dm
Original file line number Diff line number Diff line change
Expand Up @@ -652,6 +652,15 @@ I hope it's easier to tell what the heck this proc is even doing, unlike previou
if (S.roundstart && S.usable && S.faction == H.faction && S.name != "Root")
mixed_squads += S

//Deal with IOs first
if(H.job == JOB_INTEL)
var/datum/squad/intel_squad = get_squad_by_name(SQUAD_MARINE_INTEL)
if(!intel_squad || !istype(intel_squad)) //Something went horribly wrong!
to_chat(H, "Something went wrong with randomize_squad()! Tell a coder!")
return
intel_squad.put_marine_in_squad(H) //Found one, finish up
return

//Deal with non-standards first.
//Non-standards are distributed regardless of squad population.
//If the number of available positions for the job are more than max_whatever, it will break.
Expand Down
4 changes: 2 additions & 2 deletions code/modules/mob/living/carbon/human/update_icons.dm
Original file line number Diff line number Diff line change
Expand Up @@ -494,7 +494,7 @@ Applied by gun suicide and high impact bullet executions, removed by rejuvenate,
if(istype(head, /obj/item/clothing/head/helmet/marine))
var/obj/item/clothing/head/helmet/marine/marine_helmet = head
if(assigned_squad && marine_helmet.flags_marine_helmet & HELMET_SQUAD_OVERLAY)
if(assigned_squad && assigned_squad.equipment_color)
if(assigned_squad && assigned_squad.equipment_color && assigned_squad.use_stripe_overlay)
var/leader = assigned_squad.squad_leader
var/image/helmet_overlay = image(marine_helmet.helmet_overlay_icon, icon_state = "std-helmet")
if(leader == src)
Expand Down Expand Up @@ -556,7 +556,7 @@ Applied by gun suicide and high impact bullet executions, removed by rejuvenate,
if(istype(wear_suit, /obj/item/clothing/suit/storage/marine))
var/obj/item/clothing/suit/storage/marine/marine_armor = wear_suit
if(marine_armor.flags_marine_armor & ARMOR_SQUAD_OVERLAY)
if(assigned_squad && assigned_squad.equipment_color)
if(assigned_squad && assigned_squad.equipment_color && assigned_squad.use_stripe_overlay)
var/leader = assigned_squad.squad_leader
var/image/squad_overlay = image(marine_armor.squad_overlay_icon, icon_state = "std-armor")
if(leader == src)
Expand Down
1 change: 1 addition & 0 deletions tgui/packages/tgui/interfaces/OverwatchConsole.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ const HomePanel = (props, context) => {
'delta': 'blue',
'echo': 'green',
'foxtrot': 'brown',
'intel': 'green',
};

return (
Expand Down

0 comments on commit e97996f

Please sign in to comment.