Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Solar Devils ERT [PvE Marines] #6811

Merged
merged 16 commits into from
Aug 23, 2024
3 changes: 3 additions & 0 deletions code/__DEFINES/job.dm
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#define SQUAD_SOF "SOF"
#define SQUAD_CBRN "CBRN"
#define SQUAD_FORECON "FORECON"
#define SQUAD_SOLAR "Solar Devils"

// Job name defines
#define JOB_SQUAD_MARINE "Rifleman"
Expand Down Expand Up @@ -124,6 +125,8 @@ GLOBAL_LIST_INIT(job_command_roles, JOB_COMMAND_ROLES_LIST)
#define JOB_GENERAL "USCM General"
#define JOB_ACMC "Assistant Commandant of the Marine Corps"
#define JOB_CMC "Commandant of the Marine Corps"
#define JOB_PLT_MED "Platoon Corpsman"
#define JOB_PLT_SL "Platoon Squad Leader"

// Used to add a timelock to a job. Will be passed onto derivatives
#define AddTimelock(Path, timelockList) \
Expand Down
1 change: 1 addition & 0 deletions code/controllers/subsystem/communications.dm
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,7 @@ GLOBAL_LIST_INIT(radiochannels, list(
SQUAD_SOF = SOF_FREQ,
SQUAD_CBRN = CBRN_FREQ,
SQUAD_FORECON = FORECON_FREQ,
SQUAD_SOLAR = SOF_FREQ,

RADIO_CHANNEL_ALAMO = DS1_FREQ,
RADIO_CHANNEL_NORMANDY = DS2_FREQ,
Expand Down
91 changes: 91 additions & 0 deletions code/datums/emergency_calls/solar_devils.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
/datum/emergency_call/solar_devils
name = "USCM Solar Devils (Half Squad)"
arrival_message = "This is the USCM 2nd Division, 3rd Battalion, Solar Devils, responding to your distress beacon. Don't worry, the grown ups are here to clean up your mess."
Steelpoint marked this conversation as resolved.
Show resolved Hide resolved
objectives = "Assist local Marine forces in dealing with whatever issue they can't handle. Further orders may be forthcoming."
home_base = /datum/lazy_template/ert/uscm_station
probability = 0
mob_min = 3
mob_max = 5

max_medics = 1
max_smartgunners = 1

/datum/emergency_call/solar_devils/create_member(datum/mind/new_mind, turf/override_spawn_loc)
var/turf/spawn_loc = override_spawn_loc ? override_spawn_loc : get_spawn_point()

if(!istype(spawn_loc))
return //Didn't find a useable spawn point.

var/mob/living/carbon/human/mob = new(spawn_loc)
new_mind.transfer_to(mob, TRUE)

if(!leader && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(mob.client, JOB_SQUAD_LEADER, time_required_for_job))
leader = mob
arm_equipment(mob, /datum/equipment_preset/uscm/tl_pve, TRUE, TRUE)
to_chat(mob, SPAN_ROLE_HEADER("You are the Solar Devils Team Leader!"))

else if(medics < max_medics && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_MEDIC) && check_timelock(mob.client, JOB_SQUAD_MEDIC, time_required_for_job))
medics++
arm_equipment(mob, /datum/equipment_preset/uscm/medic_pve, TRUE, TRUE)
to_chat(mob, SPAN_ROLE_HEADER("You are the Solar Devils Platoon Corpsman!"))

else if(smartgunners < max_smartgunners && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_SMARTGUNNER) && check_timelock(mob.client, JOB_SQUAD_SMARTGUN))
smartgunners++
to_chat(mob, SPAN_ROLE_HEADER("You are the Solar Devils Smartgunner!"))
arm_equipment(mob, /datum/equipment_preset/uscm/sg_pve, TRUE, TRUE)

else
arm_equipment(mob, /datum/equipment_preset/uscm/rifleman_pve, TRUE, TRUE)
to_chat(mob, SPAN_ROLE_HEADER("You are a Solar Devils Rifleman!"))

to_chat(mob, SPAN_ROLE_BODY("You are a member of the Solar Devils, part of the 2nd Div, 3rd Batt. Unlike the Marines of the USS Almayer, you are through and through professionals. Well trained and well equipped. Semper Fidelis Marine."))
Steelpoint marked this conversation as resolved.
Show resolved Hide resolved
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), mob, SPAN_BOLD("Objectives:</b> [objectives]")), 1 SECONDS)

/datum/emergency_call/solar_devils_full
name = "USCM Solar Devils (Full Squad)"
arrival_message = "This is the USCM 2nd Division, 3rd Battalion, Solar Devils, responding to your distress beacon. Don't worry, the grown ups are here to clean up your mess."
Steelpoint marked this conversation as resolved.
Show resolved Hide resolved
objectives = "Assist local Marine forces in dealing with whatever issue they can't handle. Further orders may be forthcoming."
home_base = /datum/lazy_template/ert/uscm_station
probability = 0
mob_min = 3
mob_max = 10

max_engineers = 2
max_medics = 1
max_smartgunners = 2

/datum/emergency_call/solar_devils_full/create_member(datum/mind/new_mind, turf/override_spawn_loc)
var/turf/spawn_loc = override_spawn_loc ? override_spawn_loc : get_spawn_point()

if(!istype(spawn_loc))
return //Didn't find a useable spawn point.

var/mob/living/carbon/human/mob = new(spawn_loc)
new_mind.transfer_to(mob, TRUE)

if(!leader && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(mob.client, JOB_SQUAD_LEADER, time_required_for_job))
leader = mob
arm_equipment(mob, /datum/equipment_preset/uscm/sl_pve, TRUE, TRUE)
to_chat(mob, SPAN_ROLE_HEADER("You are the Solar Devils Platoon Leader!"))

else if(engineers < max_engineers && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_ENGINEER) && check_timelock(mob.client, JOB_SQUAD_LEADER, time_required_for_job))
engineers++
arm_equipment(mob, /datum/equipment_preset/uscm/tl_pve, TRUE, TRUE)
to_chat(mob, SPAN_ROLE_HEADER("You are a Solar Devils Team Leader!"))

else if(medics < max_medics && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_MEDIC) && check_timelock(mob.client, JOB_SQUAD_MEDIC, time_required_for_job))
medics++
arm_equipment(mob, /datum/equipment_preset/uscm/medic_pve, TRUE, TRUE)
to_chat(mob, SPAN_ROLE_HEADER("You are the Solar Devils Platoon Corpsman!"))

else if(smartgunners < max_smartgunners && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_SMARTGUNNER) && check_timelock(mob.client, JOB_SQUAD_SMARTGUN))
smartgunners++
to_chat(mob, SPAN_ROLE_HEADER("You are a Solar Devils Smartgunner!"))
arm_equipment(mob, /datum/equipment_preset/uscm/sg_pve, TRUE, TRUE)

else
arm_equipment(mob, /datum/equipment_preset/uscm/rifleman_pve, TRUE, TRUE)
to_chat(mob, SPAN_ROLE_HEADER("You are a Solar Devils Rifleman!"))

to_chat(mob, SPAN_ROLE_BODY("You are a member of the Solar Devils, part of the 2nd Div, 3rd Batt. Unlike the Marines of the USS Almayer, you are through and through professionals. Well trained and well equipped. Semper Fidelis Marine."))
Steelpoint marked this conversation as resolved.
Show resolved Hide resolved
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), mob, SPAN_BOLD("Objectives:</b> [objectives]")), 1 SECONDS)
4 changes: 4 additions & 0 deletions code/datums/factions/uscm.dm
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,10 @@
if(JOB_GENERAL, JOB_COLONEL, JOB_ACMC, JOB_CMC)
marine_rk = "general"
border_rk = "command"
if(JOB_PLT_MED)
marine_rk = "med"
if(JOB_PLT_SL)
marine_rk = "leader"
if(JOB_INTEL)
marine_rk = "io"
if(JOB_CAS_PILOT)
Expand Down
79 changes: 79 additions & 0 deletions code/datums/skills/uscm.dm
Original file line number Diff line number Diff line change
Expand Up @@ -426,3 +426,82 @@ COMMAND STAFF
SKILL_JTAC = SKILL_JTAC_EXPERT,
SKILL_INTEL = SKILL_INTEL_TRAINED,
)

/*
---------------------
SOLAR DEVILS (PvE Marines)
---------------------
*/

/datum/skills/rifleman_PvE
Steelpoint marked this conversation as resolved.
Show resolved Hide resolved
name = "Private"
skills = list(
SKILL_ENGINEER = SKILL_ENGINEER_ENGI,
SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI,
SKILL_FIREMAN = SKILL_FIREMAN_EXPERT,
SKILL_POWERLOADER = SKILL_POWERLOADER_TRAINED,
SKILL_VEHICLE = SKILL_VEHICLE_SMALL,
SKILL_JTAC = SKILL_JTAC_BEGINNER,
SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED,
)

/datum/skills/combat_medic_PvE
name = "Combat Medic"
skills = list(
SKILL_ENGINEER = SKILL_ENGINEER_ENGI,
SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI,
SKILL_FIREMAN = SKILL_FIREMAN_EXPERT,
SKILL_POWERLOADER = SKILL_POWERLOADER_TRAINED,
SKILL_VEHICLE = SKILL_VEHICLE_SMALL,
SKILL_JTAC = SKILL_JTAC_BEGINNER,
SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED,
SKILL_MEDICAL = SKILL_MEDICAL_MEDIC,
SKILL_SURGERY = SKILL_SURGERY_NOVICE,
)

/datum/skills/smartgunner_PvE
name = "Fireteam Leader"
Steelpoint marked this conversation as resolved.
Show resolved Hide resolved
skills = list(
SKILL_ENGINEER = SKILL_ENGINEER_ENGI,
SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI,
SKILL_FIREMAN = SKILL_FIREMAN_EXPERT,
SKILL_POWERLOADER = SKILL_POWERLOADER_TRAINED,
SKILL_VEHICLE = SKILL_VEHICLE_SMALL,
SKILL_JTAC = SKILL_JTAC_BEGINNER,
SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED,
SKILL_SPEC_WEAPONS = SKILL_SPEC_SMARTGUN,
)

/datum/skills/tl_PvE
name = "Fireteam Leader"
skills = list(
SKILL_ENGINEER = SKILL_ENGINEER_ENGI,
SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI,
SKILL_FIREMAN = SKILL_FIREMAN_EXPERT,
SKILL_POWERLOADER = SKILL_POWERLOADER_TRAINED,
SKILL_VEHICLE = SKILL_VEHICLE_SMALL,
SKILL_JTAC = SKILL_JTAC_TRAINED,
SKILL_LEADERSHIP = SKILL_LEAD_TRAINED,
SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED,
SKILL_PILOT = SKILL_PILOT_TRAINED,
)

/datum/skills/sl_PvE
name = "Squad Leader"
skills = list(
SKILL_ENGINEER = SKILL_ENGINEER_ENGI,
SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI,
SKILL_FIREMAN = SKILL_FIREMAN_EXPERT,
SKILL_POWERLOADER = SKILL_POWERLOADER_TRAINED,
SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER,
SKILL_CQC = SKILL_CQC_TRAINED,
SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI,
SKILL_ENGINEER = SKILL_ENGINEER_ENGI,
SKILL_LEADERSHIP = SKILL_LEAD_EXPERT,
SKILL_MEDICAL = SKILL_MEDICAL_TRAINED,
SKILL_SURGERY = SKILL_SURGERY_NOVICE,
SKILL_VEHICLE = SKILL_VEHICLE_SMALL,
SKILL_JTAC = SKILL_JTAC_TRAINED,
SKILL_INTEL = SKILL_INTEL_TRAINED,
SKILL_PILOT = SKILL_PILOT_EXPERT,
)
Steelpoint marked this conversation as resolved.
Show resolved Hide resolved
11 changes: 11 additions & 0 deletions code/game/jobs/job/marine/squads.dm
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,17 @@
roundstart = FALSE
locked = TRUE

/datum/squad/marine/solardevils
name = SQUAD_SOLAR
equipment_color = "#5a2c2c"
chat_color = "#5a2c2c"
radio_freq = SOF_FREQ
minimap_color = "#5a2c2c"

active = FALSE
roundstart = FALSE
locked = TRUE


//############################### UPP Squads
/datum/squad/upp
Expand Down
10 changes: 10 additions & 0 deletions code/game/objects/items/storage/toolkit.dm
Original file line number Diff line number Diff line change
Expand Up @@ -41,5 +41,15 @@
else
icon_state = icon_full

/obj/item/storage/toolkit/full/fill_preset_inventory()
new /obj/item/stack/cable_coil/random(src)
new /obj/item/circuitboard/apc(src)
new /obj/item/circuitboard/apc(src)
new /obj/item/circuitboard/apc(src)
new /obj/item/cell/high(src)
new /obj/item/cell/high(src)
new /obj/item/clothing/glasses/welding(src)


/obj/item/storage/toolkit/empty/fill_preset_inventory()
return
6 changes: 6 additions & 0 deletions code/modules/clothing/gloves/marine_gloves.dm
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,12 @@
item_state = "insulated"
siemens_coefficient = 0

/obj/item/clothing/gloves/marine/insulated/black
name = "marine insulated black gloves"
desc = "These marine gloves will protect the wearer from electric shocks and shrapnal. Standard issue for well equipped Marine battalions."
Steelpoint marked this conversation as resolved.
Show resolved Hide resolved
icon_state = "black"
item_state = "black"

/obj/item/clothing/gloves/marine/black
name = "marine black combat gloves"
adopts_squad_color = FALSE
Expand Down
5 changes: 5 additions & 0 deletions code/modules/clothing/under/ties.dm
Original file line number Diff line number Diff line change
Expand Up @@ -375,6 +375,11 @@
desc = "A fire-resistant shoulder patch, worn by the men and women of the Falling Falcons, the 2nd battalion of the 4th brigade of the USCM."
icon_state = "fallingfalconspatch"

/obj/item/clothing/accessory/patch/devils
name = "USCM Solar Devils patch"
desc = "A fire-resistant shoulder patch, worn by the men and women of the Solar Devils, the 3rd battalion of the 2nd division of the USCM."
Steelpoint marked this conversation as resolved.
Show resolved Hide resolved
icon_state = "solardevilspatch"

/obj/item/clothing/accessory/patch/forecon
name = "USCM Force Reconnaissance patch"
desc = "A fire-resistant shoulder patch, worn by the men and women of the USS Hanyut, USCM FORECON."
Expand Down
Loading
Loading