From d25df943bea7e11c33b3d7e0055cced6055ef32f Mon Sep 17 00:00:00 2001 From: Steelpoint <6595389+Steelpoint@users.noreply.github.com> Date: Thu, 22 Aug 2024 23:53:38 +0800 Subject: [PATCH] UPP Logistics Worker and Political Commissar Addition (#6920) # About the pull request This PR adds two new UPP roles for admin events, the UPP Logistics Technician and the UPP Political Commissar. The duties of the Logistics Technician are self-evident, however the duties of the Political Commissar are ill defined. This is intentional and it is up to a combination of the staff running the event, and the player, how they want to have the Commissar interact with the UPP Command Staff, or USCM forces. They are technically considered a non-combat military personnel, and are not a civilian. The PR also adds a few bits of organization to the UPP gear preset file. # Explain why it's good for the game Adds more options for admins in events. The Logistics Worker can assist in managning the UPP supply depot/s whereas the Political Officer can add unique opportunities for roleplay interactions not typically seen. # Testing Photographs and Procedure ![Screenshot 2024-08-11 14 56 17](https://github.com/user-attachments/assets/e403a058-0c8d-472f-a2f2-d11750a06419) Left, Logistics Worker Right, Commissar # Changelog :cl: add: The UPP Logistics Technician has been added as a event role for the UPP. Their intention is to assist in operating any supply depots and logistics departments under the control of the UPP, they also possess engineering and construction skills allowing them to assist in fortification work as required. add: The UPP Political Commissar has been added as a event role for the UPP. They act to ensure the political ideology of the UPP is upheld within the unit they are attached to. The goals and ranking of this job are left undefined to add ambiguity as to their ability to influence the UPP command structure. /:cl: --------- Co-authored-by: Steelpoint --- code/__DEFINES/job.dm | 3 + code/__DEFINES/paygrade_defs/upp.dm | 3 + code/datums/factions/upp.dm | 4 + code/datums/paygrades/factions/upp/upp.dm | 7 + code/datums/skills/upp.dm | 28 + code/modules/cm_marines/marines_consoles.dm | 2 + code/modules/gear_presets/upp.dm | 629 +++++++++++++------- icons/mob/hud/marine_hud.dmi | Bin 13775 -> 13192 bytes 8 files changed, 462 insertions(+), 214 deletions(-) diff --git a/code/__DEFINES/job.dm b/code/__DEFINES/job.dm index 337cf94b9c95..0ea0f5bd7fb7 100644 --- a/code/__DEFINES/job.dm +++ b/code/__DEFINES/job.dm @@ -264,6 +264,7 @@ GLOBAL_LIST_INIT(job_command_roles, JOB_COMMAND_ROLES_LIST) #define JOB_UPP_SPECIALIST "UPP Serzhant" #define JOB_UPP_LEADER "UPP Master Serzhant" #define JOB_UPP_POLICE "UPP Politsiya" +#define JOB_UPP_SUPPLY "UPP Logistics Technician" #define JOB_UPP_LT_OFFICER "UPP Leytenant" #define JOB_UPP_LT_DOKTOR "UPP Leytenant Doktor" #define JOB_UPP_SRLT_OFFICER "UPP Senior Leytenant" @@ -291,6 +292,8 @@ GLOBAL_LIST_INIT(job_command_roles, JOB_COMMAND_ROLES_LIST) #define JOB_UPP_CREWMAN "UPP Tank Crewman" +#define JOB_UPP_COMMISSAR "UPP Political Commissar" + //-------- CLF --------// #define JOB_CLF "CLF Guerilla" #define JOB_CLF_ENGI "CLF Field Technician" diff --git a/code/__DEFINES/paygrade_defs/upp.dm b/code/__DEFINES/paygrade_defs/upp.dm index 40c0d8441b2e..d753d531b67d 100644 --- a/code/__DEFINES/paygrade_defs/upp.dm +++ b/code/__DEFINES/paygrade_defs/upp.dm @@ -43,6 +43,9 @@ /// UO4, Mayjor #define PAY_SHORT_UO4 "UO4" +/// UO4P, Political Commissar +#define PAY_SHORT_UO4P "UO4P" + /// UO5, Leytenant Kolonel #define PAY_SHORT_UO5 "UO5" diff --git a/code/datums/factions/upp.dm b/code/datums/factions/upp.dm index 90b04765cf85..1a1f0e9a2390 100644 --- a/code/datums/factions/upp.dm +++ b/code/datums/factions/upp.dm @@ -53,6 +53,10 @@ hud_icon_state = "vc" if(JOB_UPP_LT_DOKTOR) hud_icon_state = "doc" + if(JOB_UPP_SUPPLY) + hud_icon_state = "log" + if(JOB_UPP_COMMISSAR) + hud_icon_state = "commi" if(hud_icon_state) holder.overlays += image('icons/mob/hud/marine_hud.dmi', H, "upp_[hud_icon_state]") diff --git a/code/datums/paygrades/factions/upp/upp.dm b/code/datums/paygrades/factions/upp/upp.dm index b9ce691fdb8d..3eef33921137 100644 --- a/code/datums/paygrades/factions/upp/upp.dm +++ b/code/datums/paygrades/factions/upp/upp.dm @@ -95,6 +95,13 @@ pay_multiplier = 2.5 officer_grade = GRADE_OFFICER +/datum/paygrade/upp/uo4p + paygrade = PAY_SHORT_UO4P + name = "Political Commissar" + prefix = "Pol." + pay_multiplier = 5 + officer_grade = GRADE_OFFICER + /datum/paygrade/upp/uo5 paygrade = PAY_SHORT_UO5 name = "Leytenant Kolonel" diff --git a/code/datums/skills/upp.dm b/code/datums/skills/upp.dm index 8ada7ccad124..c292251b9ab9 100644 --- a/code/datums/skills/upp.dm +++ b/code/datums/skills/upp.dm @@ -83,6 +83,34 @@ UNITED PROGRESSIVE PEOPLES SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, ) +/datum/skills/upp/logistics_technician + name = "UPP Logistics Technician" + skills = list( + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, + ) + +/datum/skills/upp/commissar + name = "UPP Starshy Politruk" + skills = list( + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_ENGINEER = SKILL_ENGINEER_NOVICE, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, + SKILL_VEHICLE = SKILL_VEHICLE_SMALL, + SKILL_LEADERSHIP = SKILL_LEAD_MASTER, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_INTEL = SKILL_INTEL_EXPERT, + ) + /datum/skills/upp/officer name = "UPP Officer" skills = list( diff --git a/code/modules/cm_marines/marines_consoles.dm b/code/modules/cm_marines/marines_consoles.dm index 7225556584de..bd7becf8f63e 100644 --- a/code/modules/cm_marines/marines_consoles.dm +++ b/code/modules/cm_marines/marines_consoles.dm @@ -1115,12 +1115,14 @@ GLOBAL_LIST_EMPTY_TYPED(crewmonitor, /datum/crewmonitor) JOB_UPP_COMMANDO = 22, // 30-39: Security JOB_UPP_POLICE = 31, + JOB_UPP_COMMISSAR = 41, // 40-49: MedSci JOB_UPP_LT_DOKTOR = 41, // 50-59: Engineering JOB_UPP_COMBAT_SYNTH = 50, JOB_UPP_CREWMAN = 51, JOB_UPP_SUPPORT_SYNTH = 52, + JOB_UPP_SUPPLY = 53, // 60-69: Soldiers JOB_UPP_LEADER = 60, JOB_UPP_SPECIALIST = 61, diff --git a/code/modules/gear_presets/upp.dm b/code/modules/gear_presets/upp.dm index 8ac573b5beae..616515c59ac2 100644 --- a/code/modules/gear_presets/upp.dm +++ b/code/modules/gear_presets/upp.dm @@ -56,6 +56,10 @@ //*****************************************************************************************************/ +//=====================// +// Frontline Roles // +//=================// + /datum/equipment_preset/upp/soldier name = "UPP Soldier" flags = EQUIPMENT_PRESET_EXTRA @@ -956,6 +960,10 @@ //*****************************************************************************************************/ +//=====================// +// Support Roles // +//=================// + /datum/equipment_preset/upp/military_police name = "UPP Military Police" flags = EQUIPMENT_PRESET_EXTRA @@ -1110,6 +1118,234 @@ //*****************************************************************************************************/ + +/datum/equipment_preset/upp/doctor + name = "UPP Doctor" + flags = EQUIPMENT_PRESET_EXTRA + + skills = /datum/skills/upp/combat_medic + assignment = JOB_UPP_LT_DOKTOR + rank = JOB_UPP_LT_DOKTOR + role_comm_title = "Lt. Med." + paygrades = list(PAY_SHORT_UO1 = JOB_PLAYTIME_TIER_0) + +/datum/equipment_preset/upp/doctor/load_gear(mob/living/carbon/human/new_human) + //back + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/upp, WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/defibrillator, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/adv, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/roller/surgical, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/np92, WEAR_IN_BACK) //targeting unarmed medical personal is not a war crime in aliens(primarily because, off memory, warcrimes aren't really a thing, although this definately is bad manners), and the playerbase is HRP in this concern!(if you don't get the joke, the players regularly execute unarmed doctors in hvh events. :D) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/np92, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/np92, WEAR_IN_BACK) + //face + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP, WEAR_L_EAR) + if(new_human.disabilities & NEARSIGHTED) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health/prescription(new_human), WEAR_EYES) + else + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health(new_human), WEAR_EYES) + //head + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/ushanka, WEAR_HEAD) + //body + var/obj/item/clothing/under/marine/veteran/UPP/medic/UPP = new() + var/obj/item/clothing/accessory/storage/surg_vest/equipped/W = new() + UPP.attach_accessory(new_human, W) + new_human.equip_to_slot_or_del(UPP, WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/patch/upp, WEAR_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/patch/upp/naval, WEAR_ACCESSORY) + //waist + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/medical/lifesaver/upp/full, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/hypospray/autoinjector/oxycodone, WEAR_IN_BELT) + //limbs + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) + //póckets + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large, WEAR_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/medical, WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/tool/surgery/synthgraft, WEAR_IN_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/device/healthanalyzer, WEAR_IN_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/hypospray/autoinjector/oxycodone, WEAR_IN_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/hypospray/tricordrazine, WEAR_IN_L_STORE) + + if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf/tacticalmask/green, WEAR_FACE) + +/datum/equipment_preset/upp/doctor/get_antag_clothing_equipment() + return list( + list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), + list("Boots", 0, /obj/item/clothing/shoes/marine/upp/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Medic Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP/medic, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), + list("UL6 Personal Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/support, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), + list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), + list("Headset", 0, /obj/item/device/radio/headset/distress/UPP, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), + list("Ration", 0, /obj/item/reagent_container/food/snacks/upp, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), + list("Combat Pack", 0, /obj/item/storage/backpack/lightpack, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), + list("HealthMate HUD", 0, /obj/item/clothing/glasses/hud/health, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), + + list("HELMET (CHOOSE 1)", 0, null, null, null), + list("Ushanka", 0, /obj/item/clothing/head/uppcap/ushanka, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + + list("BELT", 0, null, null, null), + list("Type 41 Lifesaver Bag", 0, /obj/item/storage/belt/medical/lifesaver/upp/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_MANDATORY), + + list("POUCHES (CHOOSE 2)", 0, null, null, null), + list("Auto-Injector Pouch", 0, /obj/item/storage/pouch/autoinjector, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("First-Aid Pouch (Refillable Injectors)", 0, /obj/item/storage/pouch/firstaid/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Splints, Gauze, Ointment)", 0, /obj/item/storage/pouch/firstaid/full/alternate, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Pill Packets)", 0, /obj/item/storage/pouch/firstaid/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("First Responder Pouch", 0, /obj/item/storage/pouch/first_responder, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Flare Pouch (Full)", 0, /obj/item/storage/pouch/flare/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Medical Pouch (Splints)", 0, /obj/item/storage/pouch/medical/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Pouch (Pills)", 0, /obj/item/storage/pouch/medical/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medium General Pouch", 0, /obj/item/storage/pouch/general/medium, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + + list("MASK (CHOOSE 1)", 0, null, null, null), + list("Gas Mask", 0, /obj/item/clothing/mask/gas, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), + list("Heat Absorbent Coif", 0, /obj/item/clothing/mask/rebreather/scarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR) + ) + +/datum/equipment_preset/upp/doctor/get_antag_gear_equipment() + return list( + list("MEDIC SET (MANDATORY)", 0, null, null, null), + list("Essential Medic Set", 0, /obj/effect/essentials_set/medic/upp, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), + + list("FIELD SUPPLIES", 0, null, null, null), + list("Burn Kit", 2, /obj/item/stack/medical/advanced/ointment, null, VENDOR_ITEM_RECOMMENDED), + list("Trauma Kit", 2, /obj/item/stack/medical/advanced/bruise_pack, null, VENDOR_ITEM_RECOMMENDED), + list("Medical Splints", 1, /obj/item/stack/medical/splint, null, VENDOR_ITEM_RECOMMENDED), + + list("FIRSTAID KITS", 0, null, null, null), + list("Advanced Firstaid Kit", 12, /obj/item/storage/firstaid/adv, null, VENDOR_ITEM_RECOMMENDED), + list("Firstaid Kit", 5, /obj/item/storage/firstaid/regular/response, null, VENDOR_ITEM_REGULAR), + list("Fire Firstaid Kit", 6, /obj/item/storage/firstaid/fire, null, VENDOR_ITEM_REGULAR), + list("Toxin Firstaid Kit", 6, /obj/item/storage/firstaid/toxin, null, VENDOR_ITEM_REGULAR), + list("Oxygen Firstaid Kit", 6, /obj/item/storage/firstaid/o2, null, VENDOR_ITEM_REGULAR), + list("Radiation Firstaid Kit", 6, /obj/item/storage/firstaid/rad, null, VENDOR_ITEM_REGULAR), + + list("AUTOINJECTORS", 0, null, null, null), + list("Autoinjector (Bicaridine)", 1, /obj/item/reagent_container/hypospray/autoinjector/bicaridine, null, VENDOR_ITEM_REGULAR), + list("Autoinjector (Dexalin+)", 1, /obj/item/reagent_container/hypospray/autoinjector/dexalinp, null, VENDOR_ITEM_REGULAR), + list("Autoinjector (Epinephrine)", 2, /obj/item/reagent_container/hypospray/autoinjector/adrenaline, null, VENDOR_ITEM_REGULAR), + list("Autoinjector (Inaprovaline)", 1, /obj/item/reagent_container/hypospray/autoinjector/inaprovaline, null, VENDOR_ITEM_REGULAR), + list("Autoinjector (Kelotane)", 1, /obj/item/reagent_container/hypospray/autoinjector/kelotane, null, VENDOR_ITEM_REGULAR), + list("Autoinjector (Oxycodone)", 2, /obj/item/reagent_container/hypospray/autoinjector/oxycodone, null, VENDOR_ITEM_REGULAR), + list("Autoinjector (Tramadol)", 1, /obj/item/reagent_container/hypospray/autoinjector/tramadol, null, VENDOR_ITEM_REGULAR), + list("Autoinjector (Tricord)", 1, /obj/item/reagent_container/hypospray/autoinjector/tricord, null, VENDOR_ITEM_REGULAR), + + list("PILL BOTTLES", 0, null, null, null), + list("Pill Bottle (Bicaridine)", 5, /obj/item/storage/pill_bottle/bicaridine, null, VENDOR_ITEM_RECOMMENDED), + list("Pill Bottle (Dexalin)", 5, /obj/item/storage/pill_bottle/dexalin, null, VENDOR_ITEM_REGULAR), + list("Pill Bottle (Dylovene)", 5, /obj/item/storage/pill_bottle/antitox, null, VENDOR_ITEM_REGULAR), + list("Pill Bottle (Inaprovaline)", 5, /obj/item/storage/pill_bottle/inaprovaline, null, VENDOR_ITEM_REGULAR), + list("Pill Bottle (Kelotane)", 5, /obj/item/storage/pill_bottle/kelotane, null, VENDOR_ITEM_RECOMMENDED), + list("Pill Bottle (Peridaxon)", 5, /obj/item/storage/pill_bottle/peridaxon, null, VENDOR_ITEM_REGULAR), + list("Pill Bottle (Tramadol)", 5, /obj/item/storage/pill_bottle/tramadol, null, VENDOR_ITEM_RECOMMENDED), + + list("MEDICAL UTILITIES", 0, null, null, null), + list("Health Analyzer", 4, /obj/item/device/healthanalyzer, null, VENDOR_ITEM_REGULAR), + list("Medical HUD Glasses", 4, /obj/item/clothing/glasses/hud/health, null, VENDOR_ITEM_REGULAR), + list("Roller Bed", 4, /obj/item/roller, null, VENDOR_ITEM_REGULAR), + list("Stasis Bag", 6, /obj/item/bodybag/cryobag, null, VENDOR_ITEM_REGULAR), + + list("UTILITIES", 0, null, null, null), + list("Brown Webbing Vest", 10, /obj/item/clothing/accessory/storage/black_vest/brown_vest, null, VENDOR_ITEM_RECOMMENDED), + list("Black Webbing Vest", 10, /obj/item/clothing/accessory/storage/black_vest, null, VENDOR_ITEM_RECOMMENDED), + list("Fire Extinguisher (Portable)", 5, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), + list("Large General Pouch", 10, /obj/item/storage/pouch/general/large, null, VENDOR_ITEM_REGULAR), + list("Shoulder Holster", 10, /obj/item/clothing/accessory/storage/holster, null, VENDOR_ITEM_REGULAR), + list("Webbing", 10, /obj/item/clothing/accessory/storage/webbing, null, VENDOR_ITEM_REGULAR), + list("Drop Pouch", 10, /obj/item/clothing/accessory/storage/droppouch, null, VENDOR_ITEM_REGULAR), + ) + +//*****************************************************************************************************/ + +/datum/equipment_preset/upp/supply + name = "UPP Logistics Technician" + flags = EQUIPMENT_PRESET_EXTRA + + skills = /datum/skills/upp/logistics_technician + assignment = JOB_UPP_SUPPLY + rank = JOB_UPP_SUPPLY + role_comm_title = "Log." + paygrades = list(PAY_SHORT_UE3 = JOB_PLAYTIME_TIER_0) + +/datum/equipment_preset/upp/supply/load_gear(mob/living/carbon/human/new_human) + //back + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/engineerpack/upp, WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/motiondetector/hacked, WEAR_IN_BACK) + //face + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/cct, WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/welding(new_human), WEAR_EYES) + //head + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap(new_human), WEAR_HEAD) + //body + var/obj/item/clothing/under/marine/veteran/UPP/UPP = new() + new_human.equip_to_slot_or_del(UPP, WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/patch/upp, WEAR_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/patch/upp/naval, WEAR_ACCESSORY) + //waist + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/utility/full(new_human), WEAR_WAIST) + //limb + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/insulated(new_human), WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) + //pockets + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert(new_human), WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/construction(new_human), WEAR_R_STORE) + +/datum/equipment_preset/upp/supply/get_antag_clothing_equipment() + return list( + list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), + list("Boots", 0, /obj/item/clothing/shoes/marine/upp/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), + list("UM5 Personal Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), + list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), + list("Headset", 0, /obj/item/device/radio/headset/distress/UPP/cct, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), + list("Welding Goggles", 0, /obj/item/clothing/glasses/welding, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), + list("Ration", 0, /obj/item/reagent_container/food/snacks/upp, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), + list("Welderpack", 0, /obj/item/storage/backpack/marine/engineerpack/upp, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), + + list("HELMET (CHOOSE 1)", 0, null, null, null), + list("Armored Cap", 0, /obj/item/clothing/head/uppcap, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + list("UM4 Helmet", 0, /obj/item/clothing/head/helmet/marine/veteran/UPP, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + + list("BELT (Choose 1)", 0, null, null, null), + list("Type 41 Ammo Load Rig", 0, /obj/item/storage/belt/marine/upp, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("Type 41 Pistol Holster Rig", 0, /obj/item/storage/belt/gun/m4a3, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("Toolbelt Rig (Full)", 0, /obj/item/storage/belt/utility/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + + list("POUCHES (Choose 2)", 0, null, null, null), + list("Construction Pouch", 0, /obj/item/storage/pouch/construction, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("First-Aid Pouch (Refillable Injectors)", 0, /obj/item/storage/pouch/firstaid/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Splints, Gauze, Ointment)", 0, /obj/item/storage/pouch/firstaid/full/alternate, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Pill Packets)", 0, /obj/item/storage/pouch/firstaid/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Electronics Pouch (Full)", 0, /obj/item/storage/pouch/electronics/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Explosive Pouch", 0, /obj/item/storage/pouch/explosive, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Flare Pouch (Full)", 0, /obj/item/storage/pouch/flare/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Large Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Magazine Pouch", 0, /obj/item/storage/pouch/magazine, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medium General Pouch", 0, /obj/item/storage/pouch/general/medium, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Tools Pouch (Full)", 0, /obj/item/storage/pouch/tools/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + + list("MASK (CHOOSE 1)", 0, null, null, null), + list("Gas Mask", 0, /obj/item/clothing/mask/gas, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), + list("Heat Absorbent Coif", 0, /obj/item/clothing/mask/rebreather/scarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR) + ) + + +//*****************************************************************************************************/ + + +//====================// +// Field Officers // +//================// + /datum/equipment_preset/upp/officer name = "UPP Lieutenant" flags = EQUIPMENT_PRESET_EXTRA @@ -2075,6 +2311,10 @@ //*****************************************************************************************************/ +//===================// +// Flag Officers // +//===============// + /datum/equipment_preset/upp/officer/may_gen name = "UPP Mayjor General" assignment = JOB_UPP_KOL_OFFICER @@ -2594,6 +2834,11 @@ new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/explosive/C4, WEAR_R_STORE) //*****************************************************************************************************/ + +//===================// +// UPP Synthetics // +//================// + /datum/equipment_preset/upp/synth name = "UPP Synthetic" flags = EQUIPMENT_PRESET_EXTRA @@ -2865,131 +3110,25 @@ //*****************************************************************************************************/ -/datum/equipment_preset/upp/conscript - //meme role - name = "UPP Conscript" - flags = EQUIPMENT_PRESET_EXTRA +//=================// +// UPP SpecFor // +//=============// - skills = /datum/skills/upp - assignment = JOB_UPP_CONSCRIPT - rank = JOB_UPP_CONSCRIPT - role_comm_title = "Cons" - paygrades = list(PAY_SHORT_UE1 = JOB_PLAYTIME_TIER_0) +/datum/equipment_preset/upp/commando + name = "UPP Commando (!DEATHSQUAD!)" + flags = EQUIPMENT_PRESET_EXTRA -/datum/equipment_preset/upp/conscript/load_gear(mob/living/carbon/human/new_human) - //back - var/maybebackpack = prob(20) ? pick(/obj/item/storage/backpack/lightpack/upp, /obj/item/storage/backpack/lightpack) : null - if(maybebackpack) - new_human.equip_to_slot_or_del(new maybebackpack, WEAR_BACK) //what in back? - //face - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP, WEAR_L_EAR) + skills = /datum/skills/commando + assignment = JOB_UPP_COMMANDO + rank = JOB_UPP_COMMANDO + role_comm_title = "JKdo" + paygrades = list(PAY_SHORT_UC1 = JOB_PLAYTIME_TIER_0) + idtype = /obj/item/card/id/data + languages = list(LANGUAGE_RUSSIAN, LANGUAGE_ENGLISH, LANGUAGE_TSL, LANGUAGE_SPANISH, LANGUAGE_CHINESE) - //head - var/maybehat = prob(66) ? pick(/obj/item/clothing/head/uppcap, /obj/item/clothing/head/uppcap/beret, /obj/item/clothing/head/ushanka, /obj/item/clothing/head/uppcap/ushanka) : null - if(maybehat) - new_human.equip_to_slot_or_del(new maybehat, WEAR_HEAD) - - //body - var/obj/item/clothing/under/marine/veteran/UPP/UPP = new() - new_human.equip_to_slot_or_del(UPP, WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/patch/upp, WEAR_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/patch/upp/naval, WEAR_ACCESSORY) - - var/maybejacket = prob(50) ? pick(/obj/item/clothing/suit/storage/marine/faction/UPP/jacket, /obj/item/clothing/suit/storage/snow_suit/soviet) : null - if(maybejacket) - new_human.equip_to_slot_or_del(new maybejacket, WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/stack/medical/bruise_pack, WEAR_IN_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/drinks/bottle/vodka, WEAR_IN_JACKET) - //limit of snowcoat - new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/upp, WEAR_IN_JACKET) - - //limbs - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) - var/maybegloves = prob(80) ? pick(/obj/item/clothing/gloves/black, /obj/item/clothing/gloves/marine/veteran/upp, /obj/item/clothing/gloves/combat) : null - if(maybegloves) - new_human.equip_to_slot_or_del(new maybegloves, WEAR_HANDS) - - //gun - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/type71/carbine, WEAR_R_HAND) - - //webbing or belt? - if(prob(30)) - var/obj/item/clothing/accessory/storage/webbing/W = new() - UPP.attach_accessory(new_human, W) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71, WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71, WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71, WEAR_IN_ACCESSORY) - else if(prob(30)) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/marine/upp/scarce, WEAR_WAIST) - //if you fail the rolls you must scavenge the ammo from your fallen brethren - - if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) - new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf/tacticalmask/green, WEAR_FACE) - - if(prob(10)) - //sometimes Ivan smiles upon the corps - new_human.set_species("Human Hero") - -/datum/equipment_preset/upp/conscript/get_antag_clothing_equipment() - return list( - list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Boots", 0, /obj/item/clothing/shoes/marine/upp/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), - list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), - list("Headset", 0, /obj/item/device/radio/headset/distress/UPP, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), - list("Ration", 0, /obj/item/reagent_container/food/snacks/upp, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), - - list("HELMET", 0, null, null, null), - list("Armored Cap", 0, /obj/item/clothing/head/uppcap, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), - list("Armored Ushanka", 0, /obj/item/clothing/head/uppcap/ushanka, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), - - list("BELT (CHOOSE 1)", 0, null, null, null), - list("Type 41 Pistol Holster Rig", 0, /obj/item/storage/belt/gun/m4a3, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), - - list("POUCHES (CHOOSE 2)", 0, null, null, null), - list("Bayonet Sheath", 0, /obj/item/storage/pouch/bayonet/upp, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Flare Pouch (Full)", 0, /obj/item/storage/pouch/flare/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), - list("Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - - list("ATTACHMENT (CHOOSE 1)", 0, null, null, null), - list("Laser Sight", 0, /obj/item/attachable/lasersight, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - - list("MASK (CHOOSE 1)", 0, null, null, null), - list("Tactical Bandana", 0, /obj/item/clothing/mask/rebreather/scarf/tacticalmask/green, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR) - ) - -/datum/equipment_preset/upp/conscript/get_antag_gear_equipment() - return list( - list("ENGINEERING SUPPLIES", 0, null, null, null), - list("Entrenching Tool", 2, /obj/item/tool/shovel/etool, null, VENDOR_ITEM_RECOMMENDED), - list("Sandbags x25", 5, /obj/item/stack/sandbags_empty/half, null, VENDOR_ITEM_RECOMMENDED), - - list("EXPLOSIVES", 0, null, null, null), - list("Smoke Grenade", 5, /obj/item/explosive/grenade/smokebomb, null, VENDOR_ITEM_REGULAR), - - list("UTILITIES", 0, null, null, null), - list("Brown Webbing Vest", 10, /obj/item/clothing/accessory/storage/black_vest/brown_vest, null, VENDOR_ITEM_RECOMMENDED), - list("Black Webbing Vest", 10, /obj/item/clothing/accessory/storage/black_vest, null, VENDOR_ITEM_RECOMMENDED), - list("Webbing", 10, /obj/item/clothing/accessory/storage/webbing, null, VENDOR_ITEM_REGULAR), - list("Drop Pouch", 10, /obj/item/clothing/accessory/storage/droppouch, null, VENDOR_ITEM_REGULAR) - ) - -//*****************************************************************************************************/ - -/datum/equipment_preset/upp/commando - name = "UPP Commando (!DEATHSQUAD!)" - flags = EQUIPMENT_PRESET_EXTRA - - skills = /datum/skills/commando - assignment = JOB_UPP_COMMANDO - rank = JOB_UPP_COMMANDO - role_comm_title = "JKdo" - paygrades = list(PAY_SHORT_UC1 = JOB_PLAYTIME_TIER_0) - idtype = /obj/item/card/id/data - languages = list(LANGUAGE_RUSSIAN, LANGUAGE_ENGLISH, LANGUAGE_TSL, LANGUAGE_SPANISH, LANGUAGE_CHINESE) - -/datum/equipment_preset/upp/commando/New() - . = ..() - access = get_access(ACCESS_LIST_GLOBAL) +/datum/equipment_preset/upp/commando/New() + . = ..() + access = get_access(ACCESS_LIST_GLOBAL) /datum/equipment_preset/upp/commando/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/kdo, WEAR_L_EAR) @@ -3525,6 +3664,10 @@ //*****************************************************************************************************/ +//============// +// Other // +//========// + /datum/equipment_preset/upp/tank name = "UPP Vehicle Crewman (TANK)" flags = EQUIPMENT_PRESET_EXTRA @@ -3643,137 +3786,195 @@ //*****************************************************************************************************/ -/datum/equipment_preset/upp/doctor - name = "UPP Doctor" +/datum/equipment_preset/upp/conscript + //meme role + name = "UPP Conscript" flags = EQUIPMENT_PRESET_EXTRA - skills = /datum/skills/upp/combat_medic - assignment = JOB_UPP_LT_DOKTOR - rank = JOB_UPP_LT_DOKTOR - role_comm_title = "Lt. Med." - paygrades = list(PAY_SHORT_UO1 = JOB_PLAYTIME_TIER_0) + skills = /datum/skills/upp + assignment = JOB_UPP_CONSCRIPT + rank = JOB_UPP_CONSCRIPT + role_comm_title = "Cons" + paygrades = list(PAY_SHORT_UE1 = JOB_PLAYTIME_TIER_0) -/datum/equipment_preset/upp/doctor/load_gear(mob/living/carbon/human/new_human) +/datum/equipment_preset/upp/conscript/load_gear(mob/living/carbon/human/new_human) //back - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/upp, WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/device/defibrillator, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/adv, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/roller/surgical, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/np92, WEAR_IN_BACK) //targeting unarmed medical personal is not a war crime in aliens(primarily because, off memory, warcrimes aren't really a thing, although this definately is bad manners), and the playerbase is HRP in this concern!(if you don't get the joke, the players regularly execute unarmed doctors in hvh events. :D) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/np92, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/np92, WEAR_IN_BACK) + var/maybebackpack = prob(20) ? pick(/obj/item/storage/backpack/lightpack/upp, /obj/item/storage/backpack/lightpack) : null + if(maybebackpack) + new_human.equip_to_slot_or_del(new maybebackpack, WEAR_BACK) //what in back? //face new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP, WEAR_L_EAR) - if(new_human.disabilities & NEARSIGHTED) - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health/prescription(new_human), WEAR_EYES) - else - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health(new_human), WEAR_EYES) + //head - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/ushanka, WEAR_HEAD) + var/maybehat = prob(66) ? pick(/obj/item/clothing/head/uppcap, /obj/item/clothing/head/uppcap/beret, /obj/item/clothing/head/ushanka, /obj/item/clothing/head/uppcap/ushanka) : null + if(maybehat) + new_human.equip_to_slot_or_del(new maybehat, WEAR_HEAD) + //body - var/obj/item/clothing/under/marine/veteran/UPP/medic/UPP = new() - var/obj/item/clothing/accessory/storage/surg_vest/equipped/W = new() - UPP.attach_accessory(new_human, W) + var/obj/item/clothing/under/marine/veteran/UPP/UPP = new() new_human.equip_to_slot_or_del(UPP, WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/patch/upp, WEAR_ACCESSORY) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/patch/upp/naval, WEAR_ACCESSORY) - //waist - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/medical/lifesaver/upp/full, WEAR_WAIST) - new_human.equip_to_slot_or_del(new /obj/item/reagent_container/hypospray/autoinjector/oxycodone, WEAR_IN_BELT) + + var/maybejacket = prob(50) ? pick(/obj/item/clothing/suit/storage/marine/faction/UPP/jacket, /obj/item/clothing/suit/storage/snow_suit/soviet) : null + if(maybejacket) + new_human.equip_to_slot_or_del(new maybejacket, WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/stack/medical/bruise_pack, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/drinks/bottle/vodka, WEAR_IN_JACKET) + //limit of snowcoat + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/upp, WEAR_IN_JACKET) + //limbs new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) - //póckets - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large, WEAR_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/medical, WEAR_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/tool/surgery/synthgraft, WEAR_IN_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/device/healthanalyzer, WEAR_IN_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/reagent_container/hypospray/autoinjector/oxycodone, WEAR_IN_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/reagent_container/hypospray/tricordrazine, WEAR_IN_L_STORE) + var/maybegloves = prob(80) ? pick(/obj/item/clothing/gloves/black, /obj/item/clothing/gloves/marine/veteran/upp, /obj/item/clothing/gloves/combat) : null + if(maybegloves) + new_human.equip_to_slot_or_del(new maybegloves, WEAR_HANDS) + + //gun + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/type71/carbine, WEAR_R_HAND) + + //webbing or belt? + if(prob(30)) + var/obj/item/clothing/accessory/storage/webbing/W = new() + UPP.attach_accessory(new_human, W) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71, WEAR_IN_ACCESSORY) + else if(prob(30)) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/marine/upp/scarce, WEAR_WAIST) + //if you fail the rolls you must scavenge the ammo from your fallen brethren if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf/tacticalmask/green, WEAR_FACE) -/datum/equipment_preset/upp/doctor/get_antag_clothing_equipment() + if(prob(10)) + //sometimes Ivan smiles upon the corps + new_human.set_species("Human Hero") + +/datum/equipment_preset/upp/conscript/get_antag_clothing_equipment() return list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Boots", 0, /obj/item/clothing/shoes/marine/upp/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), - list("Medic Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP/medic, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), - list("UL6 Personal Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/support, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), - list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), + list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("Ration", 0, /obj/item/reagent_container/food/snacks/upp, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), - list("Combat Pack", 0, /obj/item/storage/backpack/lightpack, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), - list("HealthMate HUD", 0, /obj/item/clothing/glasses/hud/health, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), - list("HELMET (CHOOSE 1)", 0, null, null, null), - list("Ushanka", 0, /obj/item/clothing/head/uppcap/ushanka, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + list("HELMET", 0, null, null, null), + list("Armored Cap", 0, /obj/item/clothing/head/uppcap, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), + list("Armored Ushanka", 0, /obj/item/clothing/head/uppcap/ushanka, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), - list("BELT", 0, null, null, null), - list("Type 41 Lifesaver Bag", 0, /obj/item/storage/belt/medical/lifesaver/upp/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_MANDATORY), + list("BELT (CHOOSE 1)", 0, null, null, null), + list("Type 41 Pistol Holster Rig", 0, /obj/item/storage/belt/gun/m4a3, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("POUCHES (CHOOSE 2)", 0, null, null, null), - list("Auto-Injector Pouch", 0, /obj/item/storage/pouch/autoinjector, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), - list("First-Aid Pouch (Refillable Injectors)", 0, /obj/item/storage/pouch/firstaid/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("First-Aid Pouch (Splints, Gauze, Ointment)", 0, /obj/item/storage/pouch/firstaid/full/alternate, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("First-Aid Pouch (Pill Packets)", 0, /obj/item/storage/pouch/firstaid/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), - list("First Responder Pouch", 0, /obj/item/storage/pouch/first_responder, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Bayonet Sheath", 0, /obj/item/storage/pouch/bayonet/upp, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Flare Pouch (Full)", 0, /obj/item/storage/pouch/flare/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), - list("Medical Pouch (Splints)", 0, /obj/item/storage/pouch/medical/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medical Pouch (Pills)", 0, /obj/item/storage/pouch/medical/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medium General Pouch", 0, /obj/item/storage/pouch/general/medium, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + + list("ATTACHMENT (CHOOSE 1)", 0, null, null, null), + list("Laser Sight", 0, /obj/item/attachable/lasersight, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + + list("MASK (CHOOSE 1)", 0, null, null, null), + list("Tactical Bandana", 0, /obj/item/clothing/mask/rebreather/scarf/tacticalmask/green, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR) + ) + +/datum/equipment_preset/upp/conscript/get_antag_gear_equipment() + return list( + list("ENGINEERING SUPPLIES", 0, null, null, null), + list("Entrenching Tool", 2, /obj/item/tool/shovel/etool, null, VENDOR_ITEM_RECOMMENDED), + list("Sandbags x25", 5, /obj/item/stack/sandbags_empty/half, null, VENDOR_ITEM_RECOMMENDED), + + list("EXPLOSIVES", 0, null, null, null), + list("Smoke Grenade", 5, /obj/item/explosive/grenade/smokebomb, null, VENDOR_ITEM_REGULAR), + + list("UTILITIES", 0, null, null, null), + list("Brown Webbing Vest", 10, /obj/item/clothing/accessory/storage/black_vest/brown_vest, null, VENDOR_ITEM_RECOMMENDED), + list("Black Webbing Vest", 10, /obj/item/clothing/accessory/storage/black_vest, null, VENDOR_ITEM_RECOMMENDED), + list("Webbing", 10, /obj/item/clothing/accessory/storage/webbing, null, VENDOR_ITEM_REGULAR), + list("Drop Pouch", 10, /obj/item/clothing/accessory/storage/droppouch, null, VENDOR_ITEM_REGULAR) + ) + + +/datum/equipment_preset/upp/commissar + name = "UPP Political Commissar" + flags = EQUIPMENT_PRESET_EXTRA + + assignment = JOB_UPP_COMMISSAR + rank = JOB_UPP_COMMISSAR + paygrades = list(PAY_SHORT_UO4P = JOB_PLAYTIME_TIER_0) + role_comm_title = "Commissar" + minimum_age = 30 + skills = /datum/skills/upp/commissar + +/datum/equipment_preset/upp/commissar/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/UPP(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/patch/upp, WEAR_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/patch/upp/naval, WEAR_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/command(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/revolver(new_human), WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/gimmick/jason(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/beret(new_human), WEAR_HEAD) + +/datum/equipment_preset/upp/commissar/load_status() + return + +/datum/equipment_preset/upp/commissar/get_antag_clothing_equipment() + return list( + list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), + list("MRE", 0, /obj/item/storage/box/MRE, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), + + list("HELMET (CHOOSE 1)", 0, null, null, null), + list("UL2 Cap", 0, /obj/item/clothing/head/uppcap, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + list("UL3 Beret", 0, /obj/item/clothing/head/uppcap/beret, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + list("UL8 Ushanka", 0, /obj/item/clothing/head/uppcap/beret, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + list("UM4 Helmet", 0, /obj/item/clothing/head/helmet/marine/veteran/UPP, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + + list("POUCHES (CHOOSE 2)", 0, null, null, null), + list("First-Aid Pouch (Full)", 0, /obj/item/storage/pouch/firstaid/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Flare Pouch (Full)", 0, /obj/item/storage/pouch/flare/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Large General Pouch", 0, /obj/item/storage/pouch/general/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Sling Pouch", 0, /obj/item/storage/pouch/sling, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Large Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Magazine Pouch", 0, /obj/item/storage/pouch/magazine, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Sidearm Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("MASK (CHOOSE 1)", 0, null, null, null), list("Gas Mask", 0, /obj/item/clothing/mask/gas, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), - list("Heat Absorbent Coif", 0, /obj/item/clothing/mask/rebreather/scarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR) + list("Heat Absorbent Coif", 0, /obj/item/clothing/mask/rebreather/scarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), ) -/datum/equipment_preset/upp/doctor/get_antag_gear_equipment() +/datum/equipment_preset/upp/commissar/get_antag_gear_equipment() return list( - list("MEDIC SET (MANDATORY)", 0, null, null, null), - list("Essential Medic Set", 0, /obj/effect/essentials_set/medic/upp, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), + list("SQUAD LEADER SET (MANDATORY)", 0, null, null, null), + list("Essential SL Set", 0, /obj/effect/essentials_set/leader/upp, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), - list("FIELD SUPPLIES", 0, null, null, null), - list("Burn Kit", 2, /obj/item/stack/medical/advanced/ointment, null, VENDOR_ITEM_RECOMMENDED), - list("Trauma Kit", 2, /obj/item/stack/medical/advanced/bruise_pack, null, VENDOR_ITEM_RECOMMENDED), - list("Medical Splints", 1, /obj/item/stack/medical/splint, null, VENDOR_ITEM_RECOMMENDED), + list("GENERAL SUPPLIES", 0, null, null, null), + list("Whistle", 5, /obj/item/device/whistle, null, VENDOR_ITEM_REGULAR), - list("FIRSTAID KITS", 0, null, null, null), - list("Advanced Firstaid Kit", 12, /obj/item/storage/firstaid/adv, null, VENDOR_ITEM_RECOMMENDED), - list("Firstaid Kit", 5, /obj/item/storage/firstaid/regular/response, null, VENDOR_ITEM_REGULAR), - list("Fire Firstaid Kit", 6, /obj/item/storage/firstaid/fire, null, VENDOR_ITEM_REGULAR), - list("Toxin Firstaid Kit", 6, /obj/item/storage/firstaid/toxin, null, VENDOR_ITEM_REGULAR), - list("Oxygen Firstaid Kit", 6, /obj/item/storage/firstaid/o2, null, VENDOR_ITEM_REGULAR), - list("Radiation Firstaid Kit", 6, /obj/item/storage/firstaid/rad, null, VENDOR_ITEM_REGULAR), + list("ENGINEERING SUPPLIES", 0, null, null, null), + list("Entrenching Tool", 2, /obj/item/tool/shovel/etool, null, VENDOR_ITEM_REGULAR), + list("Insulated Gloves", 3, /obj/item/clothing/gloves/yellow, null, VENDOR_ITEM_REGULAR), + list("Tools Pouch (Full)", 5, /obj/item/storage/pouch/tools/full, null, VENDOR_ITEM_REGULAR), + list("Welding Goggles", 5, /obj/item/clothing/glasses/welding, null, VENDOR_ITEM_REGULAR), - list("AUTOINJECTORS", 0, null, null, null), - list("Autoinjector (Bicaridine)", 1, /obj/item/reagent_container/hypospray/autoinjector/bicaridine, null, VENDOR_ITEM_REGULAR), - list("Autoinjector (Dexalin+)", 1, /obj/item/reagent_container/hypospray/autoinjector/dexalinp, null, VENDOR_ITEM_REGULAR), - list("Autoinjector (Epinephrine)", 2, /obj/item/reagent_container/hypospray/autoinjector/adrenaline, null, VENDOR_ITEM_REGULAR), - list("Autoinjector (Inaprovaline)", 1, /obj/item/reagent_container/hypospray/autoinjector/inaprovaline, null, VENDOR_ITEM_REGULAR), - list("Autoinjector (Kelotane)", 1, /obj/item/reagent_container/hypospray/autoinjector/kelotane, null, VENDOR_ITEM_REGULAR), - list("Autoinjector (Oxycodone)", 2, /obj/item/reagent_container/hypospray/autoinjector/oxycodone, null, VENDOR_ITEM_REGULAR), - list("Autoinjector (Tramadol)", 1, /obj/item/reagent_container/hypospray/autoinjector/tramadol, null, VENDOR_ITEM_REGULAR), - list("Autoinjector (Tricord)", 1, /obj/item/reagent_container/hypospray/autoinjector/tricord, null, VENDOR_ITEM_REGULAR), + list("MEDICAL SUPPLIES", 0, null, null, null), + list("Burn Kit", 2, /obj/item/stack/medical/advanced/ointment, null, VENDOR_ITEM_REGULAR), + list("Trauma Kit", 2, /obj/item/stack/medical/advanced/bruise_pack, null, VENDOR_ITEM_REGULAR), + list("Advanced Firstaid Kit", 12, /obj/item/storage/firstaid/adv, null, VENDOR_ITEM_REGULAR), + list("Medical Splints", 1, /obj/item/stack/medical/splint, null, VENDOR_ITEM_REGULAR), - list("PILL BOTTLES", 0, null, null, null), - list("Pill Bottle (Bicaridine)", 5, /obj/item/storage/pill_bottle/bicaridine, null, VENDOR_ITEM_RECOMMENDED), - list("Pill Bottle (Dexalin)", 5, /obj/item/storage/pill_bottle/dexalin, null, VENDOR_ITEM_REGULAR), - list("Pill Bottle (Dylovene)", 5, /obj/item/storage/pill_bottle/antitox, null, VENDOR_ITEM_REGULAR), - list("Pill Bottle (Inaprovaline)", 5, /obj/item/storage/pill_bottle/inaprovaline, null, VENDOR_ITEM_REGULAR), - list("Pill Bottle (Kelotane)", 5, /obj/item/storage/pill_bottle/kelotane, null, VENDOR_ITEM_RECOMMENDED), - list("Pill Bottle (Peridaxon)", 5, /obj/item/storage/pill_bottle/peridaxon, null, VENDOR_ITEM_REGULAR), - list("Pill Bottle (Tramadol)", 5, /obj/item/storage/pill_bottle/tramadol, null, VENDOR_ITEM_RECOMMENDED), + list("Injector (Bicaridine)", 1, /obj/item/reagent_container/hypospray/autoinjector/bicaridine, null, VENDOR_ITEM_REGULAR), + list("Injector (Dexalin+)", 1, /obj/item/reagent_container/hypospray/autoinjector/dexalinp, null, VENDOR_ITEM_REGULAR), + list("Injector (Inaprovaline)", 1, /obj/item/reagent_container/hypospray/autoinjector/inaprovaline, null, VENDOR_ITEM_REGULAR), + list("Injector (Kelotane)", 1, /obj/item/reagent_container/hypospray/autoinjector/kelotane, null, VENDOR_ITEM_REGULAR), + list("Injector (Oxycodone)", 2, /obj/item/reagent_container/hypospray/autoinjector/oxycodone, null, VENDOR_ITEM_REGULAR), + list("Injector (Tramadol)", 1, /obj/item/reagent_container/hypospray/autoinjector/tramadol, null, VENDOR_ITEM_REGULAR), + list("Injector (Tricord)", 1, /obj/item/reagent_container/hypospray/autoinjector/tricord, null, VENDOR_ITEM_REGULAR), - list("MEDICAL UTILITIES", 0, null, null, null), list("Health Analyzer", 4, /obj/item/device/healthanalyzer, null, VENDOR_ITEM_REGULAR), - list("Medical HUD Glasses", 4, /obj/item/clothing/glasses/hud/health, null, VENDOR_ITEM_REGULAR), - list("Roller Bed", 4, /obj/item/roller, null, VENDOR_ITEM_REGULAR), - list("Stasis Bag", 6, /obj/item/bodybag/cryobag, null, VENDOR_ITEM_REGULAR), + list("Medical HUD Glasses", 4, /obj/item/clothing/glasses/hud/health, null, VENDOR_ITEM_MANDATORY), list("UTILITIES", 0, null, null, null), list("Brown Webbing Vest", 10, /obj/item/clothing/accessory/storage/black_vest/brown_vest, null, VENDOR_ITEM_RECOMMENDED), diff --git a/icons/mob/hud/marine_hud.dmi b/icons/mob/hud/marine_hud.dmi index 53cc3a327d11cce1c72a9ecf4dee7d70b3b7d3c8..7d19ff2d852fd492a2c5483f89165cad9ae30f9f 100644 GIT binary patch literal 13192 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 literal 13775 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