diff --git a/code/__DEFINES/job.dm b/code/__DEFINES/job.dm index 5b295e68069f..bedc8234d9c9 100644 --- a/code/__DEFINES/job.dm +++ b/code/__DEFINES/job.dm @@ -77,13 +77,13 @@ GLOBAL_LIST_INIT(job_command_roles, JOB_COMMAND_ROLES_LIST) #define JOB_AUXILIARY_OFFICER "Auxiliary Support Officer" #define JOB_CAS_PILOT "Gunship Pilot" #define JOB_DROPSHIP_PILOT "Dropship Pilot" +#define JOB_TANK_CREW "Tank Crew" #define JOB_DROPSHIP_CREW_CHIEF "Dropship Crew Chief" -#define JOB_CREWMAN "Vehicle Crewman" #define JOB_INTEL "Intelligence Officer" #define JOB_DROPSHIP_ROLES /datum/timelock/dropship #define JOB_DROPSHIP_ROLES_LIST list(JOB_DROPSHIP_CREW_CHIEF, JOB_CAS_PILOT, JOB_DROPSHIP_PILOT) #define JOB_AUXILIARY_ROLES /datum/timelock/auxiliary -#define JOB_AUXILIARY_ROLES_LIST list(JOB_CAS_PILOT, JOB_DROPSHIP_PILOT, JOB_DROPSHIP_CREW_CHIEF, JOB_CREWMAN, JOB_INTEL) +#define JOB_AUXILIARY_ROLES_LIST list(JOB_CAS_PILOT, JOB_DROPSHIP_PILOT, JOB_DROPSHIP_CREW_CHIEF, JOB_INTEL, JOB_TANK_CREW) #define JOB_POLICE "Military Police" #define JOB_WARDEN "Military Warden" diff --git a/code/__DEFINES/mode.dm b/code/__DEFINES/mode.dm index ca35fadd396b..83b05342a0e6 100644 --- a/code/__DEFINES/mode.dm +++ b/code/__DEFINES/mode.dm @@ -120,12 +120,12 @@ //================================================= //Role defines, specifically lists of roles for job bans, crew manifests and the like. -GLOBAL_LIST_INIT(ROLES_COMMAND, list(JOB_CO, JOB_XO, JOB_SO, JOB_AUXILIARY_OFFICER, JOB_INTEL, JOB_CAS_PILOT, JOB_DROPSHIP_PILOT, JOB_DROPSHIP_CREW_CHIEF, JOB_CREWMAN, JOB_POLICE, JOB_CORPORATE_LIAISON, JOB_COMBAT_REPORTER, JOB_CHIEF_REQUISITION, JOB_CHIEF_ENGINEER, JOB_CMO, JOB_CHIEF_POLICE, JOB_SEA, JOB_SYNTH, JOB_WARDEN)) +GLOBAL_LIST_INIT(ROLES_COMMAND, list(JOB_CO, JOB_XO, JOB_SO, JOB_AUXILIARY_OFFICER, JOB_INTEL, JOB_CAS_PILOT, JOB_DROPSHIP_PILOT, JOB_TANK_CREW, JOB_DROPSHIP_CREW_CHIEF, JOB_POLICE, JOB_CORPORATE_LIAISON, JOB_COMBAT_REPORTER, JOB_CHIEF_REQUISITION, JOB_CHIEF_ENGINEER, JOB_CMO, JOB_CHIEF_POLICE, JOB_SEA, JOB_SYNTH, JOB_WARDEN)) //Marine roles -#define ROLES_OFFICERS list(JOB_CO, JOB_XO, JOB_SO, JOB_AUXILIARY_OFFICER, JOB_INTEL, JOB_CAS_PILOT, JOB_DROPSHIP_PILOT, JOB_DROPSHIP_CREW_CHIEF, JOB_SEA, JOB_CORPORATE_LIAISON, JOB_COMBAT_REPORTER, JOB_SYNTH, JOB_CHIEF_POLICE, JOB_WARDEN, JOB_POLICE) +#define ROLES_OFFICERS list(JOB_CO, JOB_XO, JOB_SO, JOB_AUXILIARY_OFFICER, JOB_INTEL, JOB_CAS_PILOT, JOB_DROPSHIP_PILOT, JOB_TANK_CREW, JOB_DROPSHIP_CREW_CHIEF, JOB_SEA, JOB_CORPORATE_LIAISON, JOB_COMBAT_REPORTER, JOB_SYNTH, JOB_CHIEF_POLICE, JOB_WARDEN, JOB_POLICE) GLOBAL_LIST_INIT(ROLES_CIC, list(JOB_CO, JOB_XO, JOB_SO, JOB_WO_CO, JOB_WO_XO)) -GLOBAL_LIST_INIT(ROLES_AUXIL_SUPPORT, list(JOB_AUXILIARY_OFFICER, JOB_INTEL, JOB_CAS_PILOT, JOB_DROPSHIP_PILOT, JOB_DROPSHIP_CREW_CHIEF, JOB_WO_CHIEF_POLICE, JOB_WO_SO, JOB_WO_CREWMAN, JOB_WO_POLICE, JOB_WO_PILOT)) +GLOBAL_LIST_INIT(ROLES_AUXIL_SUPPORT, list(JOB_AUXILIARY_OFFICER, JOB_INTEL, JOB_CAS_PILOT, JOB_DROPSHIP_PILOT, JOB_DROPSHIP_CREW_CHIEF, JOB_TANK_CREW, JOB_WO_CHIEF_POLICE, JOB_WO_SO, JOB_WO_CREWMAN, JOB_WO_POLICE, JOB_WO_PILOT)) GLOBAL_LIST_INIT(ROLES_MISC, list(JOB_SYNTH, JOB_WORKING_JOE, JOB_SEA, JOB_CORPORATE_LIAISON, JOB_COMBAT_REPORTER, JOB_MESS_SERGEANT, JOB_WO_CORPORATE_LIAISON, JOB_WO_SYNTH)) GLOBAL_LIST_INIT(ROLES_POLICE, list(JOB_CHIEF_POLICE, JOB_WARDEN, JOB_POLICE)) GLOBAL_LIST_INIT(ROLES_ENGINEERING, list(JOB_CHIEF_ENGINEER, JOB_ORDNANCE_TECH, JOB_MAINT_TECH, JOB_WO_CHIEF_ENGINEER, JOB_WO_ORDNANCE_TECH)) @@ -149,11 +149,11 @@ GLOBAL_LIST_INIT(ROLES_FACTION_CLASH, ROLES_USCM + JOB_PREDATOR) GLOBAL_LIST_INIT(ROLES_UNASSIGNED, list(JOB_SQUAD_MARINE)) //Role lists used for switch() checks in show_blurb_uscm(). Cosmetic, determines ex. "Engineering, USS Almayer", "2nd Bat. 'Falling Falcons'" etc. -#define BLURB_USCM_COMBAT JOB_CO, JOB_XO, JOB_SO, JOB_WO_CO, JOB_WO_XO, JOB_WO_CHIEF_POLICE, JOB_WO_SO, JOB_WO_CREWMAN, JOB_WO_POLICE, JOB_SEA,\ +#define BLURB_USCM_COMBAT JOB_CO, JOB_XO, JOB_SO, JOB_WO_CO, JOB_WO_XO, JOB_WO_CHIEF_POLICE, JOB_TANK_CREW, JOB_WO_SO, JOB_WO_CREWMAN, JOB_WO_POLICE, JOB_SEA,\ JOB_SQUAD_LEADER, JOB_SQUAD_TEAM_LEADER, JOB_SQUAD_SPECIALIST, JOB_SQUAD_SMARTGUN, JOB_SQUAD_MEDIC, JOB_SQUAD_ENGI, JOB_SQUAD_MARINE #define BLURB_USCM_FLIGHT JOB_CAS_PILOT, JOB_DROPSHIP_PILOT, JOB_DROPSHIP_CREW_CHIEF #define BLURB_USCM_MP JOB_CHIEF_POLICE, JOB_WARDEN, JOB_POLICE -#define BLURB_USCM_ENGI JOB_CHIEF_ENGINEER, JOB_ORDNANCE_TECH, JOB_MAINT_TECH, JOB_WO_CHIEF_ENGINEER, JOB_WO_ORDNANCE_TECH, JOB_WO_PILOT +#define BLURB_USCM_ENGI JOB_CHIEF_ENGINEER, JOB_ORDNANCE_TECH, JOB_MAINT_TECH, JOB_WO_CHIEF_ENGINEER, JOB_WO_ORDNANCE_TECH, JOB_TANK_CREW, JOB_WO_PILOT #define BLURB_USCM_MEDICAL JOB_CMO, JOB_RESEARCHER, JOB_DOCTOR, JOB_NURSE, JOB_WO_CMO, JOB_WO_RESEARCHER, JOB_WO_DOCTOR #define BLURB_USCM_REQ JOB_CHIEF_REQUISITION, JOB_CARGO_TECH, JOB_WO_CHIEF_REQUISITION, JOB_WO_REQUISITION #define BLURB_USCM_WY JOB_CORPORATE_LIAISON diff --git a/code/__HELPERS/job.dm b/code/__HELPERS/job.dm index ec36a485333c..51cc496feeae 100644 --- a/code/__HELPERS/job.dm +++ b/code/__HELPERS/job.dm @@ -34,6 +34,7 @@ JOB_CAS_PILOT, JOB_DROPSHIP_PILOT, JOB_DROPSHIP_CREW_CHIEF, + JOB_TANK_CREW, JOB_CORPORATE_LIAISON, JOB_COMBAT_REPORTER, JOB_CHIEF_ENGINEER, diff --git a/code/datums/factions/uscm.dm b/code/datums/factions/uscm.dm index a19faba32d81..690fb15921ea 100644 --- a/code/datums/factions/uscm.dm +++ b/code/datums/factions/uscm.dm @@ -24,9 +24,9 @@ if(JOB_GENERAL) marine_rk = "general" if(JOB_CAS_PILOT) marine_rk = "gp" if(JOB_DROPSHIP_PILOT) marine_rk = "dp" + if(JOB_TANK_CREW) marine_rk = "tc" if(JOB_INTEL) marine_rk = "io" if(JOB_DROPSHIP_CREW_CHIEF) marine_rk = "dcc" - if(JOB_CREWMAN) marine_rk = "tc" if(JOB_MARINE_RAIDER) marine_rk = "soc" if(JOB_MARINE_RAIDER_SL) marine_rk = "soctl" if(JOB_MARINE_RAIDER_CMD) marine_rk = "soccmd" @@ -97,6 +97,8 @@ border_rk = "command" if(JOB_POLICE) marine_rk = "mp" + if(JOB_TANK_CREW) + marine_rk = "tc" if(JOB_WARDEN) marine_rk = "warden" border_rk = "command" diff --git a/code/game/gamemodes/colonialmarines/whiskey_outpost.dm b/code/game/gamemodes/colonialmarines/whiskey_outpost.dm index c5b25d3e1538..e7a43debb5fc 100644 --- a/code/game/gamemodes/colonialmarines/whiskey_outpost.dm +++ b/code/game/gamemodes/colonialmarines/whiskey_outpost.dm @@ -18,7 +18,7 @@ /datum/job/civilian/synthetic/whiskey = JOB_SYNTH, /datum/job/command/warrant/whiskey = JOB_CHIEF_POLICE, /datum/job/command/bridge/whiskey = JOB_SO, - /datum/job/command/tank_crew/whiskey = JOB_CREWMAN, + /datum/job/command/tank_crew/whiskey = JOB_TANK_CREW, /datum/job/command/police/whiskey = JOB_POLICE, /datum/job/command/pilot/whiskey = JOB_CAS_PILOT, /datum/job/logistics/requisition/whiskey = JOB_CHIEF_REQUISITION, diff --git a/code/game/jobs/job/command/auxiliary/tank_crew.dm b/code/game/jobs/job/command/auxiliary/tank_crew.dm new file mode 100644 index 000000000000..1a5926b53c05 --- /dev/null +++ b/code/game/jobs/job/command/auxiliary/tank_crew.dm @@ -0,0 +1,26 @@ +/datum/job/command/tank_crew + title = JOB_TANK_CREW + total_positions = 2 + spawn_positions = 2 + allow_additional = TRUE + scaled = TRUE + supervisors = "the acting commanding officer" + flags_startup_parameters = ROLE_ADD_TO_DEFAULT + gear_preset = /datum/equipment_preset/uscm/tank + entry_message_body = "Your job is to operate and maintain the ship's armored vehicles. You are in charge of representing the armored presence amongst the marines during the operation, as well as maintaining and repairing your own vehicles." + +/datum/job/command/tank_crew/set_spawn_positions(count) + if (length(GLOB.clients) >= 200) + spawn_positions = 2 + else + spawn_positions = 0 + +/datum/job/command/tank_crew/get_total_positions(latejoin = FALSE) + if(length(GLOB.clients) >= 200 || total_positions_so_far > 0) + return 2 + + return 0 + +/obj/effect/landmark/start/tank_crew + name = JOB_TANK_CREW + job = /datum/job/command/tank_crew diff --git a/code/game/jobs/role_authority.dm b/code/game/jobs/role_authority.dm index 58c9ad5b5092..a9017e2cc8d3 100644 --- a/code/game/jobs/role_authority.dm +++ b/code/game/jobs/role_authority.dm @@ -61,7 +61,6 @@ GLOBAL_VAR_INIT(players_preassigned, 0) /datum/job/special/uaac, /datum/job/special/uaac/tis, /datum/job/special/uscm, - /datum/job/command/tank_crew //Rip VC ) var/squads_all[] = typesof(/datum/squad) - /datum/squad var/castes_all[] = subtypesof(/datum/caste_datum) diff --git a/code/game/machinery/vending/vendor_types/crew/vehicle_crew.dm b/code/game/machinery/vending/vendor_types/crew/vehicle_crew.dm index 0586f4b72fa5..1795b06dbf10 100644 --- a/code/game/machinery/vending/vendor_types/crew/vehicle_crew.dm +++ b/code/game/machinery/vending/vendor_types/crew/vehicle_crew.dm @@ -7,7 +7,7 @@ icon_state = "vehicle_gear" req_access = list(ACCESS_MARINE_CREWMAN) - vendor_role = list(JOB_CREWMAN) + vendor_role = list(JOB_TANK_CREW) bound_width = 64 unslashable = TRUE @@ -56,30 +56,26 @@ UnregisterSignal(SSdcs, COMSIG_GLOB_VEHICLE_ORDERED) if(!selected_vehicle) - selected_vehicle = "APC" // The whole thing seems to be based upon the assumption you unlock tank as an override, defaulting to APC - if(selected_vehicle == "APC") - available_categories &= ~(VEHICLE_ARMOR_AVAILABLE|VEHICLE_INTEGRAL_AVAILABLE) //APC lacks these, so we need to remove these flags to be able to access spare parts section + selected_vehicle = "TANK" // The whole thing seems to be based upon the assumption you unlock tank as an override, defaulting to APC + if(selected_vehicle == "TANK") + available_categories &= ~(VEHICLE_INTEGRAL_AVAILABLE) //APC lacks these, so we need to remove these flags to be able to access spare parts section /obj/structure/machinery/cm_vending/gear/vehicle_crew/get_listed_products(mob/user) var/list/display_list = list() if(!user) display_list += GLOB.cm_vending_vehicle_crew_tank - display_list += GLOB.cm_vending_vehicle_crew_tank_spare display_list += GLOB.cm_vending_vehicle_crew_apc - display_list += GLOB.cm_vending_vehicle_crew_apc_spare return display_list if(selected_vehicle == "TANK") if(available_categories) display_list = GLOB.cm_vending_vehicle_crew_tank - else - display_list = GLOB.cm_vending_vehicle_crew_tank_spare else if(selected_vehicle == "ARC") display_list = GLOB.cm_vending_vehicle_crew_arc - else if(selected_vehicle == "APC") + else if(selected_vehicle == "TANK") if(available_categories) display_list = GLOB.cm_vending_vehicle_crew_apc else //APC stuff costs more to prevent 4000 points spent on shitton of ammunition @@ -150,64 +146,11 @@ GLOBAL_LIST_INIT(cm_vending_vehicle_crew_tank, list( list("Overdrive Enhancer", 0, /obj/item/hardpoint/support/overdrive_enhancer, VEHICLE_SUPPORT_AVAILABLE, VENDOR_ITEM_RECOMMENDED), list("ARMOR", 0, null, null, null), - list("Ballistic Armor", 0, /obj/item/hardpoint/armor/ballistic, VEHICLE_ARMOR_AVAILABLE, VENDOR_ITEM_RECOMMENDED), - list("Caustic Armor", 0, /obj/item/hardpoint/armor/caustic, VEHICLE_ARMOR_AVAILABLE, VENDOR_ITEM_REGULAR), - list("Concussive Armor", 0, /obj/item/hardpoint/armor/concussive, VEHICLE_ARMOR_AVAILABLE, VENDOR_ITEM_REGULAR), - list("Paladin Armor", 0, /obj/item/hardpoint/armor/paladin, VEHICLE_ARMOR_AVAILABLE, VENDOR_ITEM_REGULAR), list("Snowplow", 0, /obj/item/hardpoint/armor/snowplow, VEHICLE_ARMOR_AVAILABLE, VENDOR_ITEM_REGULAR), list("TREADS", 0, null, null, null), list("Reinforced Treads", 0, /obj/item/hardpoint/locomotion/treads/robust, VEHICLE_TREADS_AVAILABLE, VENDOR_ITEM_REGULAR), - list("Treads", 0, /obj/item/hardpoint/locomotion/treads, VEHICLE_TREADS_AVAILABLE, VENDOR_ITEM_RECOMMENDED))) - -GLOBAL_LIST_INIT(cm_vending_vehicle_crew_tank_spare, list( - list("SPARE PARTS SELECTION:", 0, null, null, null), - - list("INTEGRAL PARTS", 0, null, null, null), - list("M34A2-A Multipurpose Turret", 500, /obj/item/hardpoint/holder/tank_turret, null, VENDOR_ITEM_REGULAR), - - list("SUPPORT AMMUNITION", 0, null, null, null), - list("Turret Smoke Screen Magazine", 50, /obj/item/ammo_magazine/hardpoint/turret_smoke, null, VENDOR_ITEM_REGULAR), - - list("PRIMARY WEAPON", 0, null, null, null), - list("AC3-E Autocannon", 200, /obj/item/hardpoint/primary/autocannon, null, VENDOR_ITEM_REGULAR), - list("DRG-N Offensive Flamer Unit", 200, /obj/item/hardpoint/primary/flamer, null, VENDOR_ITEM_REGULAR), - list("LTAA-AP Minigun", 200, /obj/item/hardpoint/primary/minigun, null, VENDOR_ITEM_REGULAR), - list("LTB Cannon", 400, /obj/item/hardpoint/primary/cannon, null, VENDOR_ITEM_RECOMMENDED), - - list("PRIMARY AMMUNITION", 0, null, null, null), - list("AC3-E Autocannon Magazine", 100, /obj/item/ammo_magazine/hardpoint/ace_autocannon, null, VENDOR_ITEM_REGULAR), - list("DRG-N Offensive Flamer Unit Fuel Tank", 100, /obj/item/ammo_magazine/hardpoint/primary_flamer, null, VENDOR_ITEM_REGULAR), - list("LTAA-AP Minigun Magazine", 100, /obj/item/ammo_magazine/hardpoint/ltaaap_minigun, null, VENDOR_ITEM_REGULAR), - list("LTB Cannon Magazine", 100, /obj/item/ammo_magazine/hardpoint/ltb_cannon, null, VENDOR_ITEM_REGULAR), - - list("SECONDARY WEAPON", 0, null, null, null), - list("M92T Grenade Launcher", 200, /obj/item/hardpoint/secondary/grenade_launcher, null, VENDOR_ITEM_REGULAR), - list("M56 Cupola", 200, /obj/item/hardpoint/secondary/m56cupola, null, VENDOR_ITEM_REGULAR), - list("LZR-N Flamer Unit", 200, /obj/item/hardpoint/secondary/small_flamer, null, VENDOR_ITEM_REGULAR), - list("TOW Launcher", 300, /obj/item/hardpoint/secondary/towlauncher, null, VENDOR_ITEM_REGULAR), - - list("SECONDARY AMMUNITION", 0, null, null, null), - list("M92T Grenade Launcher Magazine", 50, /obj/item/ammo_magazine/hardpoint/tank_glauncher, null, VENDOR_ITEM_REGULAR), - list("M56 Cupola Magazine", 50, /obj/item/ammo_magazine/hardpoint/m56_cupola, null, VENDOR_ITEM_REGULAR), - list("LZR-N Flamer Unit Fuel Tank", 50, /obj/item/ammo_magazine/hardpoint/secondary_flamer, null, VENDOR_ITEM_REGULAR), - list("TOW Launcher Magazine", 50, /obj/item/ammo_magazine/hardpoint/towlauncher, null, VENDOR_ITEM_REGULAR), - - list("SUPPORT MODULE", 0, null, null, null), - list("Artillery Module", 300, /obj/item/hardpoint/support/artillery_module, null, VENDOR_ITEM_REGULAR), - list("Integrated Weapons Sensor Array", 200, /obj/item/hardpoint/support/weapons_sensor, null, VENDOR_ITEM_REGULAR), - list("Overdrive Enhancer", 200, /obj/item/hardpoint/support/overdrive_enhancer, null, VENDOR_ITEM_REGULAR), - - list("ARMOR", 0, null, null, null), - list("Ballistic Armor", 300, /obj/item/hardpoint/armor/ballistic, null, VENDOR_ITEM_REGULAR), - list("Caustic Armor", 300, /obj/item/hardpoint/armor/caustic, null, VENDOR_ITEM_REGULAR), - list("Concussive Armor", 300, /obj/item/hardpoint/armor/concussive, null, VENDOR_ITEM_REGULAR), - list("Paladin Armor", 300, /obj/item/hardpoint/armor/paladin, null, VENDOR_ITEM_REGULAR), - list("Snowplow", 200, /obj/item/hardpoint/armor/snowplow, null, VENDOR_ITEM_REGULAR), - - list("TREADS", 0, null, null, null), - list("Reinforced Treads", 200, /obj/item/hardpoint/locomotion/treads/robust, null, VENDOR_ITEM_REGULAR), - list("Treads", 200, /obj/item/hardpoint/locomotion/treads, null, VENDOR_ITEM_REGULAR))) + list("Treads", 0, /obj/item/hardpoint/locomotion/treads, VEHICLE_TREADS_AVAILABLE, VENDOR_ITEM_REGULAR))) GLOBAL_LIST_INIT(cm_vending_vehicle_crew_apc, list( list("STARTING KIT SELECTION:", 0, null, null, null), @@ -261,7 +204,7 @@ GLOBAL_LIST_INIT(cm_vending_vehicle_crew_arc, list( desc = "An automated weapon rack hooked up to a small storage of standard-issue weapons. Can be accessed only by the Vehicle Crewmen." icon_state = "guns" req_access = list(ACCESS_MARINE_CREWMAN) - vendor_role = list(JOB_CREWMAN) + vendor_role = list(JOB_TANK_CREW) vend_flags = VEND_CLUTTER_PROTECTION | VEND_LIMITED_INVENTORY | VEND_TO_HAND listed_products = list( @@ -400,7 +343,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_vehicle_crew, list( name = "\improper ColMarTech Vehicle Crewman Equipment Rack" desc = "An automated rack hooked up to a colossal storage of Vehicle Crewmen standard-issue equipment." req_access = list(ACCESS_MARINE_CREWMAN) - vendor_role = list(JOB_CREWMAN) + vendor_role = list(JOB_TANK_CREW) /obj/structure/machinery/cm_vending/clothing/vehicle_crew/get_listed_products(mob/user) return GLOB.cm_vending_clothing_vehicle_crew diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index 3e61939cb1ca..c1d0352766a6 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -1323,9 +1323,9 @@ GLOBAL_DATUM_INIT(supply_controller, /datum/controller/supply, new()) req_access = list(ACCESS_MARINE_CREWMAN) circuit = /obj/item/circuitboard/computer/supplycomp/vehicle // Can only retrieve one vehicle per round - var/spent = TRUE - var/tank_unlocked = FALSE - var/list/allowed_roles = list(JOB_CREWMAN) + var/spent = FALSE + var/tank_unlocked = TRUE + var/list/allowed_roles = list(JOB_TANK_CREW) var/list/vehicles @@ -1384,9 +1384,7 @@ GLOBAL_DATUM_INIT(supply_controller, /datum/controller/supply, new()) . = ..() vehicles = list( - new /datum/vehicle_order/apc(), - new /datum/vehicle_order/apc/med(), - new /datum/vehicle_order/apc/cmd(), + new /datum/vehicle_order/tank/plain ) if(!GLOB.VehicleElevatorConsole) @@ -1477,7 +1475,6 @@ GLOBAL_DATUM_INIT(supply_controller, /datum/controller/supply, new()) if(VO?.has_vehicle_lock()) return - spent = TRUE ordered_vehicle = new VO.ordered_vehicle(middle_turf) SSshuttle.vehicle_elevator.request(SSshuttle.getDock("almayer vehicle")) diff --git a/code/modules/character_traits/biology_traits.dm b/code/modules/character_traits/biology_traits.dm index a78dd0d38464..2220f8f82fd2 100644 --- a/code/modules/character_traits/biology_traits.dm +++ b/code/modules/character_traits/biology_traits.dm @@ -82,7 +82,7 @@ /datum/character_trait/biology/bad_leg/New() . = ..() // Not on definition as several lists are added - inapplicable_roles = list(JOB_CAS_PILOT, JOB_DROPSHIP_PILOT, JOB_DROPSHIP_CREW_CHIEF, JOB_CREWMAN, JOB_INTEL, JOB_ORDNANCE_TECH, JOB_MARINE) + JOB_SQUAD_ROLES_LIST + JOB_MARINE_RAIDER_ROLES_LIST + JOB_ERT_GRUNT_LIST + inapplicable_roles = list(JOB_CAS_PILOT, JOB_DROPSHIP_PILOT, JOB_DROPSHIP_CREW_CHIEF, JOB_TANK_CREW, JOB_INTEL, JOB_ORDNANCE_TECH, JOB_MARINE) + JOB_SQUAD_ROLES_LIST + JOB_MARINE_RAIDER_ROLES_LIST + JOB_ERT_GRUNT_LIST bad_cane_roles = list(JOB_SURVIVOR, JOB_STOWAWAY) fancy_cane_roles = list(JOB_CO_SURVIVOR, CORPORATE_SURVIVOR, JOB_CMO, JOB_CORPORATE_LIAISON, JOB_SEA, JOB_CHIEF_ENGINEER) + JOB_COMMAND_ROLES_LIST inapplicable_species = list(SPECIES_SYNTHETIC, SPECIES_YAUTJA) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 2432303a1416..7be039f4ada1 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -666,7 +666,7 @@ GLOBAL_LIST_INIT(bgstate_options, list( * * width - Screen' width. * * height - Screen's height. */ -/datum/preferences/proc/SetChoices(mob/user, limit = 20, list/splitJobs = list(JOB_CHIEF_REQUISITION, JOB_WO_CMO), width = 950, height = 750) +/datum/preferences/proc/SetChoices(mob/user, limit = 21, list/splitJobs = list(JOB_CHIEF_REQUISITION, JOB_WO_CMO), width = 950, height = 750) if(!GLOB.RoleAuthority) return @@ -784,7 +784,7 @@ GLOBAL_LIST_INIT(bgstate_options, list( * * width - Screen' width. * * height - Screen's height. */ -/datum/preferences/proc/set_job_slots(mob/user, limit = 20, list/splitJobs = list(JOB_CHIEF_REQUISITION, JOB_WO_CMO), width = 950, height = 750) +/datum/preferences/proc/set_job_slots(mob/user, limit = 21, list/splitJobs = list(JOB_CHIEF_REQUISITION, JOB_WO_CMO), width = 950, height = 750) if(!GLOB.RoleAuthority) return diff --git a/code/modules/cm_marines/marines_consoles.dm b/code/modules/cm_marines/marines_consoles.dm index 6d1aba4aca70..93ef0e21e8cb 100644 --- a/code/modules/cm_marines/marines_consoles.dm +++ b/code/modules/cm_marines/marines_consoles.dm @@ -942,6 +942,7 @@ GLOBAL_LIST_EMPTY_TYPED(crewmonitor, /datum/crewmonitor) JOB_DROPSHIP_PILOT = 23, JOB_DROPSHIP_CREW_CHIEF = 24, JOB_INTEL = 25, + JOB_TANK_CREW = 26, // 30-39: Security JOB_CHIEF_POLICE = 30, JOB_PROVOST_TML = 30, diff --git a/code/modules/cm_tech/implements/tank.dm b/code/modules/cm_tech/implements/tank.dm index ec1b81e9f675..9cd8a5c6a804 100644 --- a/code/modules/cm_tech/implements/tank.dm +++ b/code/modules/cm_tech/implements/tank.dm @@ -18,7 +18,7 @@ name = "tank coupon" desc = "We're done playing! This coupon allows the ship crew to retrieve a complete Longstreet tank from Vehicle ASRS. Make sure to send the ASRS lift down so it can be retrieved. One use only. LTB not included. Comes with free friendly fire." vehicle_type = /datum/vehicle_order/tank/broken - vehicle_category = "TANK" + vehicle_category = "LONGSTREET" /obj/item/vehicle_coupon/attack_self(mob/user) if(QDELETED(src)) diff --git a/code/modules/gear_presets/other.dm b/code/modules/gear_presets/other.dm index 99b8bf634eed..51e02bd451b0 100644 --- a/code/modules/gear_presets/other.dm +++ b/code/modules/gear_presets/other.dm @@ -881,8 +881,8 @@ flags = EQUIPMENT_PRESET_EXTRA idtype = /obj/item/card/id/dogtag - assignment = JOB_CREWMAN - rank = JOB_CREWMAN + assignment = JOB_TANK_CREW + rank = JOB_TANK_CREW paygrade = PAY_SHORT_ME4 role_comm_title = "CRMN" minimum_age = 30 diff --git a/code/modules/gear_presets/uscm.dm b/code/modules/gear_presets/uscm.dm index eec3b6157877..74e02a7a3533 100644 --- a/code/modules/gear_presets/uscm.dm +++ b/code/modules/gear_presets/uscm.dm @@ -161,8 +161,8 @@ ACCESS_MARINE_CHARLIE, ACCESS_MARINE_DELTA, ) - assignment = JOB_CREWMAN - rank = JOB_CREWMAN + assignment = JOB_TANK_CREW + rank = JOB_TANK_CREW paygrade = PAY_SHORT_ME4 role_comm_title = "CRMN" minimum_age = 30 diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index edabde203ab6..8495b8fefb41 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -260,6 +260,8 @@ return /datum/equipment_preset/uscm/intel/full if(JOB_CAS_PILOT) return /datum/equipment_preset/uscm_ship/gp/full + if(JOB_TANK_CREW) + return /datum/equipment_preset/uscm/tank/full if(JOB_DROPSHIP_PILOT) return /datum/equipment_preset/uscm_ship/dp/full if(JOB_DROPSHIP_CREW_CHIEF) diff --git a/code/modules/vehicles/apc/apc.dm b/code/modules/vehicles/apc/apc.dm index 78219e439832..b7d35f21fbe3 100644 --- a/code/modules/vehicles/apc/apc.dm +++ b/code/modules/vehicles/apc/apc.dm @@ -87,7 +87,7 @@ GLOBAL_LIST_EMPTY(command_apc_list) /obj/vehicle/multitile/apc/load_role_reserved_slots() var/datum/role_reserved_slots/RRS = new RRS.category_name = "Crewmen" - RRS.roles = list(JOB_CREWMAN, JOB_WO_CREWMAN, JOB_UPP_CREWMAN, JOB_PMC_CREWMAN) + RRS.roles = list(JOB_TANK_CREW, JOB_WO_CREWMAN, JOB_UPP_CREWMAN, JOB_PMC_CREWMAN) RRS.total = 2 role_reserved_slots += RRS diff --git a/code/modules/vehicles/apc/apc_command.dm b/code/modules/vehicles/apc/apc_command.dm index 54647279ec3b..8d056daec2ea 100644 --- a/code/modules/vehicles/apc/apc_command.dm +++ b/code/modules/vehicles/apc/apc_command.dm @@ -68,7 +68,7 @@ /obj/vehicle/multitile/apc/command/load_role_reserved_slots() var/datum/role_reserved_slots/RRS = new RRS.category_name = "Crewmen" - RRS.roles = list(JOB_CREWMAN, JOB_WO_CREWMAN, JOB_UPP_CREWMAN, JOB_PMC_CREWMAN) + RRS.roles = list(JOB_TANK_CREW, JOB_WO_CREWMAN, JOB_UPP_CREWMAN, JOB_PMC_CREWMAN) RRS.total = 2 role_reserved_slots += RRS diff --git a/code/modules/vehicles/apc/apc_medical.dm b/code/modules/vehicles/apc/apc_medical.dm index f8809bedaa73..7d462e7da27b 100644 --- a/code/modules/vehicles/apc/apc_medical.dm +++ b/code/modules/vehicles/apc/apc_medical.dm @@ -32,7 +32,7 @@ /obj/vehicle/multitile/apc/medical/load_role_reserved_slots() var/datum/role_reserved_slots/RRS = new RRS.category_name = "Crewmen" - RRS.roles = list(JOB_CREWMAN, JOB_WO_CREWMAN, JOB_UPP_CREWMAN, JOB_PMC_CREWMAN) + RRS.roles = list(JOB_TANK_CREW, JOB_WO_CREWMAN, JOB_UPP_CREWMAN, JOB_PMC_CREWMAN) RRS.total = 2 role_reserved_slots += RRS diff --git a/code/modules/vehicles/hardpoints/armor/snowplow.dm b/code/modules/vehicles/hardpoints/armor/snowplow.dm index 84e589658029..a1b1a9dc800c 100644 --- a/code/modules/vehicles/hardpoints/armor/snowplow.dm +++ b/code/modules/vehicles/hardpoints/armor/snowplow.dm @@ -6,7 +6,7 @@ disp_icon = "tank" disp_icon_state = "snowplow" - health = 600 + health = 150 activatable = 1 /obj/item/hardpoint/armor/snowplow/livingmob_interact(mob/living/M) diff --git a/code/modules/vehicles/hardpoints/holder/tank_turret.dm b/code/modules/vehicles/hardpoints/holder/tank_turret.dm index bdf106aecac3..2a01098de523 100644 --- a/code/modules/vehicles/hardpoints/holder/tank_turret.dm +++ b/code/modules/vehicles/hardpoints/holder/tank_turret.dm @@ -27,7 +27,7 @@ slot = HDPT_TURRET // big beefy chonk of metal - health = 750 + health = 450 damage_multiplier = 0.05 accepted_hardpoints = list( diff --git a/code/modules/vehicles/hardpoints/wheels/treads.dm b/code/modules/vehicles/hardpoints/wheels/treads.dm index b718d1c8e897..dd819ea2af03 100644 --- a/code/modules/vehicles/hardpoints/wheels/treads.dm +++ b/code/modules/vehicles/hardpoints/wheels/treads.dm @@ -8,7 +8,7 @@ slot = HDPT_TREADS - health = 500 + health = 300 //with this settings, takes 3 tiles to reach top speed move_delay = 3.8 @@ -20,7 +20,7 @@ name = "Reinforced Treads" desc = "These treads are made of a tougher material and are more durable. However, the extra weight slows the tank down slightly." - health = 750 + health = 500 acid_resistant = TRUE move_max_momentum = 5 //same top speed, but takes 5 tiles to reach it diff --git a/code/modules/vehicles/interior/interactable/vehicle_locker.dm b/code/modules/vehicles/interior/interactable/vehicle_locker.dm index 5571995594f0..1ad6fb5bb8df 100644 --- a/code/modules/vehicles/interior/interactable/vehicle_locker.dm +++ b/code/modules/vehicles/interior/interactable/vehicle_locker.dm @@ -15,7 +15,7 @@ unslashable = TRUE indestructible = TRUE - var/list/role_restriction = list(JOB_CREWMAN, JOB_WO_CREWMAN, JOB_UPP_CREWMAN, JOB_PMC_CREWMAN) + var/list/role_restriction = list(JOB_TANK_CREW, JOB_WO_CREWMAN, JOB_UPP_CREWMAN, JOB_PMC_CREWMAN) var/obj/item/storage/internal/container diff --git a/code/modules/vehicles/tank/tank.dm b/code/modules/vehicles/tank/tank.dm index 147e359471df..1cc1174c43fe 100644 --- a/code/modules/vehicles/tank/tank.dm +++ b/code/modules/vehicles/tank/tank.dm @@ -90,7 +90,7 @@ /obj/vehicle/multitile/tank/load_role_reserved_slots() var/datum/role_reserved_slots/RRS = new RRS.category_name = "Crewmen" - RRS.roles = list(JOB_CREWMAN, JOB_WO_CREWMAN, JOB_UPP_CREWMAN, JOB_PMC_CREWMAN) + RRS.roles = list(JOB_TANK_CREW, JOB_WO_CREWMAN, JOB_UPP_CREWMAN, JOB_PMC_CREWMAN) RRS.total = 2 role_reserved_slots += RRS @@ -165,6 +165,39 @@ return TRUE +/obj/vehicle/multitile/tank/MouseDrop_T(mob/dropped, mob/user) + . = ..() + if((dropped != user) || !isxeno(user)) + return + + if(health > 0) + to_chat(user, SPAN_XENO("We can't jump over [src] until it is destroyed!")) + return + + var/turf/current_turf = get_turf(user) + var/dir_to_go = get_dir(current_turf, src) + for(var/i in 1 to 3) + current_turf = get_step(current_turf, dir_to_go) + if(!(current_turf in locs)) + break + + if(current_turf.density) + to_chat(user, SPAN_XENO("The path over [src] is obstructed!")) + return + + // Now we check to make sure the turf on the other side of the tank isn't dense too + current_turf = get_step(current_turf, dir_to_go) + if(current_turf.density) + to_chat(user, SPAN_XENO("The path over [src] is obstructed!")) + return + + to_chat(user, SPAN_XENO("We begin to jump over [src]...")) + if(!do_after(user, 3 SECONDS, INTERRUPT_ALL, BUSY_ICON_HOSTILE)) + to_chat(user, SPAN_XENO("We stop jumping over [src].")) + return + + user.forceMove(current_turf) + to_chat(user, SPAN_XENO("We jump to the other side of [src].")) /* ** PRESETS SPAWNERS */ diff --git a/colonialmarines.dme b/colonialmarines.dme index 984a416cb0d6..15c3171ba295 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -803,6 +803,7 @@ #include "code\game\jobs\job\command\auxiliary\dropship_pilot.dm" #include "code\game\jobs\job\command\auxiliary\intel.dm" #include "code\game\jobs\job\command\auxiliary\senior.dm" +#include "code\game\jobs\job\command\auxiliary\tank_crew.dm" #include "code\game\jobs\job\command\cic\captain.dm" #include "code\game\jobs\job\command\cic\executive.dm" #include "code\game\jobs\job\command\cic\staffofficer.dm"