diff --git a/_maps/map_files/Lawanka_Outpost/LawankaOutpost.dmm b/_maps/map_files/Lawanka_Outpost/LawankaOutpost.dmm index bf3a391705f33..ef4c6adec2375 100644 --- a/_maps/map_files/Lawanka_Outpost/LawankaOutpost.dmm +++ b/_maps/map_files/Lawanka_Outpost/LawankaOutpost.dmm @@ -1298,6 +1298,7 @@ pixel_y = -4 }, /obj/effect/landmark/weed_node, +/obj/effect/landmark/campaign_structure/tele_blocker, /turf/open/ground/grass/weedable, /area/lawankaoutpost/outside/west) "bdf" = ( @@ -2791,8 +2792,8 @@ /area/lawankaoutpost/colony/marshalls) "cqC" = ( /obj/machinery/door/airlock/multi_tile/mainship/generic/canteen{ - name = "\improper Mineral Processing"; - dir = 1 + dir = 1; + name = "\improper Mineral Processing" }, /obj/structure/cable, /turf/open/floor/tile/dark2, @@ -3476,6 +3477,10 @@ }, /turf/open/floor/tile/darkgreen/darkgreen2/corner, /area/lawankaoutpost/colony/marshalls) +"cXI" = ( +/obj/effect/landmark/campaign_structure/asat_system, +/turf/open/floor/plating/ground/dirtgrassborder/autosmooth/buildable, +/area/lawankaoutpost/outside/west) "cXS" = ( /obj/effect/spawner/random/misc/plant, /turf/open/floor/tile/dark2, @@ -3596,8 +3601,8 @@ /area/lawankaoutpost/colony/northdorms) "dcs" = ( /obj/machinery/door/airlock/multi_tile/mainship/generic/canteen{ - name = "\improper Northern Dormitories"; - dir = 1 + dir = 1; + name = "\improper Northern Dormitories" }, /obj/machinery/atmospherics/pipe/simple/green/hidden{ dir = 4 @@ -3661,8 +3666,8 @@ /area/lawankaoutpost/colony/biologics) "del" = ( /obj/machinery/door/airlock/multi_tile/mainship/generic/noglass{ - name = "\improper Women's Restroom"; - dir = 1 + dir = 1; + name = "\improper Women's Restroom" }, /turf/open/floor/freezer, /area/lawankaoutpost/colony/northdorms) @@ -3819,8 +3824,8 @@ /area/lawankaoutpost/colony/mining) "dkI" = ( /obj/machinery/door/airlock/mainship/research/glass/free_access{ - name = "\improper Eta Lab Director's Office"; - dir = 1 + dir = 1; + name = "\improper Eta Lab Director's Office" }, /obj/machinery/atmospherics/pipe/simple/green/hidden, /turf/open/floor/tile/dark, @@ -4167,8 +4172,8 @@ /area/lawankaoutpost/caves/nanotrasen_lab) "dDg" = ( /obj/machinery/door/airlock/multi_tile/research{ - name = "\improper Biological Research Facility"; - dir = 1 + dir = 1; + name = "\improper Biological Research Facility" }, /turf/open/floor, /area/lawankaoutpost/colony/biologics) @@ -6082,8 +6087,8 @@ /area/lawankaoutpost/outside/northeast) "fkb" = ( /obj/machinery/door/airlock/multi_tile/mainship/generic/noglass{ - name = "\improper Men's Restroom"; - dir = 1 + dir = 1; + name = "\improper Men's Restroom" }, /obj/machinery/atmospherics/pipe/simple/green/hidden{ dir = 4 @@ -6183,8 +6188,8 @@ /area/lawankaoutpost/colony/marshalls) "fnT" = ( /obj/machinery/door/airlock/mainship/medical/glass/free_access{ - name = "\improper Medical Clinic Storage"; - dir = 1 + dir = 1; + name = "\improper Medical Clinic Storage" }, /turf/open/floor/tile/white, /area/lawankaoutpost/colony/medbay) @@ -6259,8 +6264,8 @@ /area/lawankaoutpost/colony/operations_administration) "fqj" = ( /obj/machinery/door/airlock/multi_tile/mainship/comdoor/free_access{ - name = "\improper Operations Office"; - dir = 2 + dir = 2; + name = "\improper Operations Office" }, /turf/open/floor/tile/dark2, /area/lawankaoutpost/colony/operations_administration) @@ -6918,8 +6923,8 @@ /area/lawankaoutpost/outside/central) "fPR" = ( /obj/machinery/door/airlock/multi_tile/mainship/engineering{ - name = "\improper Engineering Break Room"; - dir = 1 + dir = 1; + name = "\improper Engineering Break Room" }, /obj/machinery/atmospherics/pipe/simple/green/hidden{ dir = 4 @@ -7227,8 +7232,8 @@ /area/lawankaoutpost/colony/operations_hall) "gcX" = ( /obj/machinery/door/airlock/mainship/security/glass/free_access{ - name = "\improper Security Prep"; - dir = 1 + dir = 1; + name = "\improper Security Prep" }, /obj/machinery/atmospherics/pipe/simple/green/hidden, /turf/open/floor/tile/dark2, @@ -7374,8 +7379,8 @@ /area/lawankaoutpost/colony/operations_hall) "ghN" = ( /obj/machinery/door/airlock/multi_tile/mainship/generic/noglass{ - name = "\improper Women's Restroom"; - dir = 1 + dir = 1; + name = "\improper Women's Restroom" }, /obj/machinery/atmospherics/pipe/simple/green/hidden{ dir = 4 @@ -7451,6 +7456,10 @@ }, /turf/open/floor/tile/white, /area/lawankaoutpost/colony/operations_hall) +"gjD" = ( +/obj/effect/landmark/campaign_structure/asat_system, +/turf/open/floor, +/area/lawankaoutpost/colony/landingzonetwo) "gjR" = ( /turf/open/floor/freezer, /area/lawankaoutpost/colony/biologics) @@ -7603,8 +7612,8 @@ /area/lawankaoutpost/colony/biologics) "gqU" = ( /obj/machinery/door/airlock/multi_tile/research{ - name = "\improper Biological Research Facility"; - dir = 1 + dir = 1; + name = "\improper Biological Research Facility" }, /obj/machinery/atmospherics/pipe/simple/green/hidden{ dir = 4 @@ -9043,8 +9052,8 @@ /area/lawankaoutpost/colony/cargo) "hOl" = ( /obj/machinery/door/airlock/mainship/medical/glass/free_access{ - name = "\improper Medical Clinic Operating Theatre"; - dir = 1 + dir = 1; + name = "\improper Medical Clinic Operating Theatre" }, /turf/open/floor/tile/white, /area/lawankaoutpost/colony/medbay) @@ -9409,8 +9418,8 @@ /area/lawankaoutpost/colony/operations_hall) "ibF" = ( /obj/machinery/door/airlock/multi_tile/mainship/blackgeneric{ - name = "\improper Morgue"; - dir = 1 + dir = 1; + name = "\improper Morgue" }, /turf/open/floor/tile/white, /area/lawankaoutpost/colony/medbay) @@ -9766,8 +9775,8 @@ /area/lawankaoutpost/caves/nanotrasen_lab) "isS" = ( /obj/machinery/door/airlock/multi_tile/mainship/generic/garden{ - name = "\improper Hydroponics"; - dir = 1 + dir = 1; + name = "\improper Hydroponics" }, /turf/open/floor/tile/green/full, /area/lawankaoutpost/colony/hydroponics) @@ -9845,8 +9854,8 @@ /area/lawankaoutpost/outside/central) "ixI" = ( /obj/machinery/door/airlock/multi_tile/mainship/medidoor{ - name = "\improper Eta Storage"; - dir = 1 + dir = 1; + name = "\improper Eta Storage" }, /obj/machinery/atmospherics/pipe/simple/green/hidden{ dir = 4 @@ -10106,8 +10115,8 @@ /area/lawankaoutpost/colony/mining) "iHn" = ( /obj/machinery/door/airlock/multi_tile/mainship/generic{ - name = "\improper Robotics"; - dir = 1 + dir = 1; + name = "\improper Robotics" }, /obj/machinery/atmospherics/pipe/simple/green/hidden{ dir = 4 @@ -10411,8 +10420,8 @@ /area/lawankaoutpost/colony/operations_kitchen) "iWB" = ( /obj/machinery/door/airlock/multi_tile/mainship/generic/noglass{ - name = "\improper Men's Restroom"; - dir = 1 + dir = 1; + name = "\improper Men's Restroom" }, /turf/open/floor/freezer, /area/lawankaoutpost/colony/northdorms) @@ -12176,8 +12185,8 @@ }, /obj/effect/mapping_helpers/airlock/locked, /obj/machinery/door/airlock/multi_tile/mainship/medidoor{ - name = "\improper Medical Clinic Psychology"; - dir = 1 + dir = 1; + name = "\improper Medical Clinic Psychology" }, /turf/open/floor/tile/white, /area/lawankaoutpost/colony/medbay) @@ -13278,8 +13287,8 @@ /area/lawankaoutpost/colony/marshalls) "lqA" = ( /obj/machinery/door/airlock/multi_tile/mainship/generic/canteen{ - name = "\improper Southern Dormitories"; - dir = 1 + dir = 1; + name = "\improper Southern Dormitories" }, /turf/open/floor, /area/lawankaoutpost/colony/southdorms) @@ -14066,8 +14075,8 @@ /area/lawankaoutpost/colony/northdorms) "lXJ" = ( /obj/machinery/door/airlock/multi_tile/mainship/generic/noglass{ - name = "\improper Women's Restroom"; - dir = 1 + dir = 1; + name = "\improper Women's Restroom" }, /obj/machinery/atmospherics/pipe/simple/green/hidden{ dir = 4 @@ -14782,8 +14791,8 @@ /area/lawankaoutpost/colony/engineering) "mEF" = ( /obj/machinery/door/airlock/multi_tile/mainship/generic/garden{ - name = "\improper Hydroponics"; - dir = 1 + dir = 1; + name = "\improper Hydroponics" }, /turf/open/floor/plating, /area/lawankaoutpost/colony/hydroponics) @@ -15981,8 +15990,8 @@ /area/lawankaoutpost/colony/medbay) "nDw" = ( /obj/machinery/door/airlock/multi_tile/mainship/medidoor{ - name = "\improper Eta Lab"; - dir = 1 + dir = 1; + name = "\improper Eta Lab" }, /turf/open/floor/tile/dark2, /area/lawankaoutpost/caves/nanotrasen_lab) @@ -16177,8 +16186,8 @@ /area/lawankaoutpost/colony/operations_administration) "nKn" = ( /obj/machinery/door/airlock/mainship/medical/glass/free_access{ - name = "\improper Medical Clinic Scanner Room"; - dir = 1 + dir = 1; + name = "\improper Medical Clinic Scanner Room" }, /turf/open/floor/tile/white, /area/lawankaoutpost/colony/medbay) @@ -17789,6 +17798,10 @@ dir = 4 }, /area/lawankaoutpost/colony/northdorms) +"pbK" = ( +/obj/effect/landmark/campaign_structure/asat_system, +/turf/open/floor/plating/ground/dirt, +/area/lawankaoutpost/outside/central) "pcm" = ( /turf/open/floor/mainship/blue, /area/lawankaoutpost/colony/biologics) @@ -18193,8 +18206,8 @@ /area/lawankaoutpost/colony/marshalls) "psq" = ( /obj/machinery/door/airlock/multi_tile/mainship/generic/garden{ - name = "\improper Hydroponics Break Room"; - dir = 1 + dir = 1; + name = "\improper Hydroponics Break Room" }, /turf/open/floor, /area/lawankaoutpost/colony/hydroponics) @@ -18513,6 +18526,10 @@ }, /turf/open/floor/freezer, /area/lawankaoutpost/colony/northdorms) +"pEo" = ( +/obj/effect/landmark/campaign_structure/asat_system, +/turf/open/ground/grass/weedable, +/area/lawankaoutpost/outside/northwest) "pEq" = ( /obj/effect/landmark/weed_node, /turf/open/floor/plating, @@ -18706,8 +18723,8 @@ /area/lawankaoutpost/outside/northeast) "pLT" = ( /obj/machinery/door/airlock/multi_tile/mainship/medidoor{ - name = "\improper Medical Clinic Storage"; - dir = 1 + dir = 1; + name = "\improper Medical Clinic Storage" }, /turf/open/floor/tile/white, /area/lawankaoutpost/colony/medbay) @@ -19801,8 +19818,8 @@ /area/lawankaoutpost/caves/nanotrasen_lab) "qLJ" = ( /obj/machinery/door/airlock/mainship/medical/glass/free_access{ - name = "\improper Basketball Court"; - dir = 1 + dir = 1; + name = "\improper Basketball Court" }, /obj/machinery/atmospherics/pipe/simple/green/hidden, /turf/open/floor, @@ -20089,8 +20106,8 @@ /area/lawankaoutpost/caves/nanotrasen_lab) "qYa" = ( /obj/machinery/door/airlock/multi_tile/mainship/engineering{ - name = "\improper Engineering Break Room"; - dir = 1 + dir = 1; + name = "\improper Engineering Break Room" }, /turf/open/floor/tile/dark2, /area/lawankaoutpost/colony/engineering) @@ -21250,8 +21267,8 @@ /area/lawankaoutpost/outside/southeast) "rTK" = ( /obj/machinery/door/airlock/colony/research{ - name = "\improper Robotics"; - dir = 1 + dir = 1; + name = "\improper Robotics" }, /turf/open/floor, /area/lawankaoutpost/colony/robotics) @@ -21565,8 +21582,8 @@ /area/lawankaoutpost/outside/northwest) "sjb" = ( /obj/machinery/door/airlock/multi_tile/mainship/generic/noglass{ - name = "\improper Men's Restroom"; - dir = 1 + dir = 1; + name = "\improper Men's Restroom" }, /obj/effect/turf_decal/tracks/wheels/bloody{ dir = 4 @@ -21972,8 +21989,8 @@ /area/lawankaoutpost/colony/engineering) "szg" = ( /obj/machinery/door/airlock/multi_tile/mainship/medidoor{ - name = "\improper Medical Clinic Cryo"; - dir = 1 + dir = 1; + name = "\improper Medical Clinic Cryo" }, /turf/open/floor/tile/white, /area/lawankaoutpost/colony/medbay) @@ -22559,8 +22576,8 @@ /area/lawankaoutpost/colony/medbay) "sZJ" = ( /obj/machinery/door/airlock/multi_tile/mainship/generic{ - name = "\improper Chapel"; - dir = 1 + dir = 1; + name = "\improper Chapel" }, /obj/structure/cable, /obj/machinery/atmospherics/pipe/simple/green/hidden{ @@ -24103,8 +24120,8 @@ /area/lawankaoutpost/colony/bar) "unX" = ( /obj/machinery/door/airlock/multi_tile/mainship/engineering{ - name = "\improper Engineering"; - dir = 1 + dir = 1; + name = "\improper Engineering" }, /obj/structure/cable, /obj/machinery/atmospherics/pipe/simple/green/hidden{ @@ -24148,8 +24165,8 @@ /area/lawankaoutpost/outside/northeast) "upq" = ( /obj/machinery/door/airlock/multi_tile/mainship/comdoor/free_access{ - name = "\improper Operations Storage"; - dir = 1 + dir = 1; + name = "\improper Operations Storage" }, /turf/open/floor/tile/dark, /area/lawankaoutpost/colony/operations_storage) @@ -24648,8 +24665,8 @@ /area/lawankaoutpost/colony/operations_kitchen) "uKA" = ( /obj/machinery/door/airlock/multi_tile/mainship/generic/noglass{ - name = "\improper Men's Restroom"; - dir = 1 + dir = 1; + name = "\improper Men's Restroom" }, /obj/machinery/atmospherics/pipe/simple/green/hidden{ dir = 4 @@ -24846,8 +24863,8 @@ /area/lawankaoutpost/outside/north) "uTl" = ( /obj/machinery/door/airlock/multi_tile/mainship/medidoor{ - name = "\improper Medical Clinic Scanner Room"; - dir = 1 + dir = 1; + name = "\improper Medical Clinic Scanner Room" }, /turf/open/floor/tile/white, /area/lawankaoutpost/colony/medbay) @@ -25326,8 +25343,8 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/simple/green/hidden, /obj/machinery/door/airlock/colony/research{ - name = "\improper Cargo"; - dir = 1 + dir = 1; + name = "\improper Cargo" }, /turf/open/floor/tile/dark2, /area/lawankaoutpost/colony/cargo) @@ -26224,6 +26241,7 @@ /area/lawankaoutpost/colony/medbay) "wca" = ( /obj/structure/flora/ausbushes/ppflowers, +/obj/effect/landmark/campaign_structure/asat_system, /turf/open/ground/grass/weedable, /area/lawankaoutpost/colony/operations_hall) "wce" = ( @@ -26255,8 +26273,8 @@ "wde" = ( /obj/structure/cable, /obj/machinery/door/airlock/multi_tile/mainship/engineering{ - name = "\improper Engineering Generators"; - dir = 1 + dir = 1; + name = "\improper Engineering Generators" }, /turf/open/floor/tile/dark2, /area/lawankaoutpost/colony/engineering) @@ -26874,8 +26892,8 @@ /area/lawankaoutpost/colony/operations_kitchen) "wzv" = ( /obj/machinery/door/airlock/colony/research{ - name = "\improper Robotics"; - dir = 1 + dir = 1; + name = "\improper Robotics" }, /obj/structure/cable, /obj/machinery/atmospherics/pipe/simple/green/hidden, @@ -26901,8 +26919,8 @@ /area/lawankaoutpost/colony/engineering) "wAF" = ( /obj/machinery/door/airlock/multi_tile/mainship/generic/canteen{ - name = "\improper Dormitories Recreation"; - dir = 1 + dir = 1; + name = "\improper Dormitories Recreation" }, /obj/machinery/atmospherics/pipe/simple/green/hidden{ dir = 4 @@ -27154,8 +27172,8 @@ /area/lawankaoutpost/outside/east) "wLT" = ( /obj/machinery/door/airlock/mainship/medical/glass/free_access{ - name = "\improper Medical Clinic Cryo"; - dir = 1 + dir = 1; + name = "\improper Medical Clinic Cryo" }, /turf/open/floor/tile/white, /area/lawankaoutpost/colony/medbay) @@ -27402,8 +27420,8 @@ /area/lawankaoutpost/colony/hydroponics) "xaD" = ( /obj/machinery/door/airlock/multi_tile/mainship/comdoor/free_access{ - name = "\improper Operations Office"; - dir = 2 + dir = 2; + name = "\improper Operations Office" }, /obj/structure/cable, /obj/machinery/atmospherics/pipe/simple/green/hidden{ @@ -27665,8 +27683,8 @@ /area/lawankaoutpost/colony/biologics) "xhZ" = ( /obj/machinery/door/airlock/multi_tile/research{ - name = "\improper Biological Research Facility"; - dir = 1 + dir = 1; + name = "\improper Biological Research Facility" }, /obj/machinery/atmospherics/pipe/simple/green/hidden{ dir = 4 @@ -47520,7 +47538,7 @@ vuj ewf qyR lNL -vuj +cXI oxj iJs ulZ @@ -50728,7 +50746,7 @@ nQk amB uPN xQt -xQt +pEo oRz xuZ sdr @@ -63408,7 +63426,7 @@ uJt dxV sUR hoS -wQV +pbK iBn wQV pCP @@ -71260,7 +71278,7 @@ uaC wEk wEk hYh -wEk +gjD wEk wEk xRX diff --git a/code/datums/gamemodes/campaign/faction_stats.dm b/code/datums/gamemodes/campaign/faction_stats.dm index b40578e57e320..424a232c2ad12 100644 --- a/code/datums/gamemodes/campaign/faction_stats.dm +++ b/code/datums/gamemodes/campaign/faction_stats.dm @@ -62,7 +62,7 @@ GLOBAL_LIST_INIT(campaign_mission_pool, list( FACTION_TERRAGOV = list( /datum/campaign_mission/tdm = 10, /datum/campaign_mission/destroy_mission/fire_support_raid = 15, - /datum/campaign_mission/capture_mission = 15, + /datum/campaign_mission/capture_mission/phoron_capture = 15, /datum/campaign_mission/tdm/mech_wars = 12, /datum/campaign_mission/destroy_mission/supply_raid = 15, /datum/campaign_mission/destroy_mission/base_rescue = 12, @@ -70,9 +70,9 @@ GLOBAL_LIST_INIT(campaign_mission_pool, list( FACTION_SOM = list( /datum/campaign_mission/tdm/lv624 = 10, /datum/campaign_mission/destroy_mission/fire_support_raid/som = 15, - /datum/campaign_mission/capture_mission = 15, /datum/campaign_mission/tdm/mech_wars/som = 12, /datum/campaign_mission/destroy_mission/supply_raid/som = 15, + /datum/campaign_mission/capture_mission/asat = 12, ), )) diff --git a/code/datums/gamemodes/campaign/missions/asat_capture.dm b/code/datums/gamemodes/campaign/missions/asat_capture.dm index 4bfb6931a24e4..b34b6c29f1bae 100644 --- a/code/datums/gamemodes/campaign/missions/asat_capture.dm +++ b/code/datums/gamemodes/campaign/missions/asat_capture.dm @@ -2,24 +2,33 @@ /datum/campaign_mission/capture_mission/asat name = "ASAT capture" mission_icon = "asat_capture" - map_name = "Orion Outpost" - map_file = '_maps/map_files/Campaign maps/jungle_outpost/jungle_outpost.dmm' - max_game_time = 20 MINUTES + map_name = "Lawanka outpost" + map_file = '_maps/map_files/Lawanka_Outpost/LawankaOutpost.dmm' + map_traits = list(ZTRAIT_AWAY = TRUE, ZTRAIT_RAIN = TRUE) + map_light_colours = list(LIGHT_COLOR_PALE_GREEN, LIGHT_COLOR_PALE_GREEN, LIGHT_COLOR_PALE_GREEN, LIGHT_COLOR_PALE_GREEN) + mission_flags = MISSION_DISALLOW_TELEPORT + shutter_open_delay = list( + MISSION_STARTING_FACTION = 90 SECONDS, + MISSION_HOSTILE_FACTION = 0, + ) victory_point_rewards = list( - MISSION_OUTCOME_MAJOR_VICTORY = list(3, 0), + MISSION_OUTCOME_MAJOR_VICTORY = list(2, 0), MISSION_OUTCOME_MINOR_VICTORY = list(1, 0), MISSION_OUTCOME_DRAW = list(0, 0), MISSION_OUTCOME_MINOR_LOSS = list(0, 1), - MISSION_OUTCOME_MAJOR_LOSS = list(0, 3), + MISSION_OUTCOME_MAJOR_LOSS = list(0, 2), ) attrition_point_rewards = list( MISSION_OUTCOME_MAJOR_VICTORY = list(10, 0), - MISSION_OUTCOME_MINOR_VICTORY = list(10, 0), + MISSION_OUTCOME_MINOR_VICTORY = list(5, 0), MISSION_OUTCOME_DRAW = list(0, 0), - MISSION_OUTCOME_MINOR_LOSS = list(0, 25), - MISSION_OUTCOME_MAJOR_LOSS = list(0, 30), + MISSION_OUTCOME_MINOR_LOSS = list(0, 10), + MISSION_OUTCOME_MAJOR_LOSS = list(0, 15), + ) + intro_message = list( + MISSION_STARTING_FACTION = "Locate and recover all ASAT systems in the AO before the enemy has time to respond.", + MISSION_HOSTILE_FACTION = "Protect all ASAT systems in the AO from the SOM attack.", ) - starting_faction_mission_brief = "A TGMC ASAT battery has been detected in this location. It forms part if their space defense grid across the planet and so is a valuable installation to them. \ Although the destruction of this site is unlikely to weaken their space defenses appreciably, \ the capture of these weapons would provide us with a unique opportunity to bypass parts of their own ship defenses. \ @@ -30,61 +39,40 @@ starting_faction_additional_rewards = "Additional ICC support, ability to counteract TGMC drop pod usage" hostile_faction_additional_rewards = "Preserve the ability to use drop pods uncontested" + objectives_total = 5 min_capture_amount = 3 /datum/campaign_mission/capture_mission/asat/load_pre_mission_bonuses() . = ..() - for(var/obj/effect/landmark/campaign/mech_spawner/mech_spawner AS in GLOB.campaign_mech_spawners[hostile_faction]) - if(mech_spawner.type != /obj/effect/landmark/campaign/mech_spawner/light) - continue - var/new_mech = mech_spawner.spawn_mech() - GLOB.campaign_structures += new_mech - RegisterSignal(new_mech, COMSIG_QDELETING, TYPE_PROC_REF(/datum/campaign_mission, remove_mission_object)) - return + spawn_mech(hostile_faction, 0, 0, 3) + spawn_mech(starting_faction, 0, 2) /datum/campaign_mission/capture_mission/asat/load_objective_description() starting_faction_objective_description = "Major Victory:Capture all [objectives_total] ASAT systems.[min_capture_amount ? " Minor Victory: Capture at least [min_capture_amount] ASAT systems." : ""]" hostile_faction_objective_description = "Major Victory:Prevent the capture of all [objectives_total] ASAT systems.[min_capture_amount ? " Minor Victory: Prevent the capture of atleast [min_capture_amount] ASAT systems." : ""]" -/datum/campaign_mission/capture_mission/asat/check_mission_progress() - if(outcome) - return TRUE - - if(!game_timer) - return FALSE - - if(!max_time_reached && objectives_remaining) //todo: maybe a check in case both teams wipe each other out at the same time... - return FALSE - - if(capture_count[MISSION_STARTING_FACTION] >= objectives_total) - message_admins("Mission finished: [MISSION_OUTCOME_MAJOR_VICTORY]") - outcome = MISSION_OUTCOME_MAJOR_VICTORY - else if(min_capture_amount && (capture_count[MISSION_STARTING_FACTION] >= min_capture_amount)) - message_admins("Mission finished: [MISSION_OUTCOME_MINOR_VICTORY]") - outcome = MISSION_OUTCOME_MINOR_VICTORY - else if(capture_count[MISSION_STARTING_FACTION] > 0) - message_admins("Mission finished: [MISSION_OUTCOME_MINOR_LOSS]") - outcome = MISSION_OUTCOME_MINOR_LOSS - else - message_admins("Mission finished: [MISSION_OUTCOME_MAJOR_LOSS]") - outcome = MISSION_OUTCOME_MAJOR_LOSS - - return TRUE - /datum/campaign_mission/capture_mission/asat/apply_major_victory() . = ..() var/datum/faction_stats/som_team = mode.stat_list[starting_faction] som_team.add_asset(/datum/campaign_asset/droppod_disable) som_team.add_asset(/datum/campaign_asset/bonus_job/icc) + som_team.add_asset(/datum/campaign_asset/bonus_job/icc) /datum/campaign_mission/capture_mission/asat/apply_minor_victory() . = ..() var/datum/faction_stats/som_team = mode.stat_list[starting_faction] som_team.add_asset(/datum/campaign_asset/droppod_disable) + som_team.add_asset(/datum/campaign_asset/bonus_job/icc) /datum/campaign_mission/capture_mission/asat/apply_minor_loss() . = ..() + var/datum/faction_stats/tgmc_team = mode.stat_list[hostile_faction] + tgmc_team.add_asset(/datum/campaign_asset/equipment/power_armor) /datum/campaign_mission/capture_mission/asat/apply_major_loss() . = ..() + var/datum/faction_stats/tgmc_team = mode.stat_list[hostile_faction] + tgmc_team.add_asset(/datum/campaign_asset/equipment/power_armor) +/datum/campaign_mission/capture_mission/asat/objective_reward_bonus() + return diff --git a/code/datums/gamemodes/campaign/missions/base_rescue.dm b/code/datums/gamemodes/campaign/missions/base_rescue.dm index 2159cc6f4eaee..cabbffb0ffd80 100644 --- a/code/datums/gamemodes/campaign/missions/base_rescue.dm +++ b/code/datums/gamemodes/campaign/missions/base_rescue.dm @@ -5,8 +5,9 @@ mission_flags = MISSION_DISALLOW_TELEPORT map_name = "NT site B-403" map_file = '_maps/map_files/Campaign maps/nt_base/nt_base.dmm' - map_traits = list(ZTRAIT_AWAY = TRUE, ZTRAIT_RAIN = TRUE) - map_light_colours = list(LIGHT_COLOR_PALE_GREEN, LIGHT_COLOR_PALE_GREEN, LIGHT_COLOR_PALE_GREEN, LIGHT_COLOR_PALE_GREEN) + map_traits = list(ZTRAIT_AWAY = TRUE, ZTRAIT_SNOWSTORM = TRUE) + map_light_colours = list(COLOR_MISSION_BLUE, COLOR_MISSION_BLUE, COLOR_MISSION_BLUE, COLOR_MISSION_BLUE) + map_light_levels = list(225, 150, 100, 75) objectives_total = 1 min_destruction_amount = 1 shutter_open_delay = list( diff --git a/code/datums/gamemodes/campaign/missions/loot_capture.dm b/code/datums/gamemodes/campaign/missions/capture_mission.dm similarity index 69% rename from code/datums/gamemodes/campaign/missions/loot_capture.dm rename to code/datums/gamemodes/campaign/missions/capture_mission.dm index 5fea9e367d639..25ab03cd3e526 100644 --- a/code/datums/gamemodes/campaign/missions/loot_capture.dm +++ b/code/datums/gamemodes/campaign/missions/capture_mission.dm @@ -1,38 +1,7 @@ //Loot capture mission /datum/campaign_mission/capture_mission - name = "Phoron retrieval" - mission_icon = "phoron_raid" - map_name = "Jungle outpost SR-422" - map_file = '_maps/map_files/Campaign maps/jungle_outpost/jungle_outpost.dmm' - map_traits = list(ZTRAIT_AWAY = TRUE, ZTRAIT_RAIN = TRUE) - map_light_colours = list(LIGHT_COLOR_PALE_GREEN, LIGHT_COLOR_PALE_GREEN, LIGHT_COLOR_PALE_GREEN, LIGHT_COLOR_PALE_GREEN) + name = "BASE CAPTURE MISSION" max_game_time = 12 MINUTES - mission_flags = MISSION_DISALLOW_DROPPODS|MISSION_DISALLOW_TELEPORT - victory_point_rewards = list( - MISSION_OUTCOME_MAJOR_VICTORY = list(3, 0), - MISSION_OUTCOME_MINOR_VICTORY = list(1, 0), - MISSION_OUTCOME_DRAW = list(0, 0), - MISSION_OUTCOME_MINOR_LOSS = list(0, 1), - MISSION_OUTCOME_MAJOR_LOSS = list(0, 3), - ) - attrition_point_rewards = list( - MISSION_OUTCOME_MAJOR_VICTORY = list(10, 0), - MISSION_OUTCOME_MINOR_VICTORY = list(5, 0), - MISSION_OUTCOME_DRAW = list(0, 0), - MISSION_OUTCOME_MINOR_LOSS = list(0, 10), - MISSION_OUTCOME_MAJOR_LOSS = list(0, 15), - ) - intro_message = list( - MISSION_STARTING_FACTION = "Locate and extract all phoron crates in the ao before the enemy does.", - MISSION_HOSTILE_FACTION = "Locate and extract all phoron crates in the ao before the enemy does.", - ) - starting_faction_mission_brief = "Hostile forces have been building a stock pile of valuable phoron in this location. \ - Before they have the chance to ship it out, your forces are being sent to intercept and liberate these supplies to hamper the enemy's war effort. \ - Hostile forces will likely be aiming to evacuate as much phoron out of the ao as well. Get to the phoron first and fulton out as much as you can." - hostile_faction_mission_brief = "Enemy forces are moving to steal a stockpile of valuable phoron. \ - Send in your forces to fulton out the phoron as quickly as possible, before they can get to it first." - starting_faction_additional_rewards = "Additional supplies for every phoron crate captured" - hostile_faction_additional_rewards = "Additional supplies for every phoron crate captured" ///Total number of objectives at round start var/objectives_total = 11 ///number of targets to capture for a minor victory @@ -98,23 +67,7 @@ outcome = MISSION_OUTCOME_DRAW return TRUE -/datum/campaign_mission/capture_mission/apply_major_victory() - . = ..() - objective_reward_bonus() - -/datum/campaign_mission/capture_mission/apply_minor_victory() - . = ..() - objective_reward_bonus() - -/datum/campaign_mission/capture_mission/apply_minor_loss() - . = ..() - objective_reward_bonus() - -/datum/campaign_mission/capture_mission/apply_major_loss() - . = ..() - objective_reward_bonus() - -/datum/campaign_mission/capture_mission/apply_draw() +/datum/campaign_mission/capture_mission/apply_outcome() . = ..() objective_reward_bonus() @@ -152,8 +105,8 @@ ///The addition rewards for capturing objectives, regardless of outcome /datum/campaign_mission/capture_mission/proc/objective_reward_bonus() - var/starting_team_bonus = capture_count[MISSION_STARTING_FACTION] * 4 - var/hostile_team_bonus = capture_count[MISSION_HOSTILE_FACTION] * 2 + var/starting_team_bonus = capture_count[MISSION_STARTING_FACTION] * 3 + var/hostile_team_bonus = capture_count[MISSION_HOSTILE_FACTION] * 3 modify_attrition_points(starting_team_bonus, hostile_team_bonus) map_text_broadcast(starting_faction, "[starting_team_bonus] bonus attrition points awarded for the capture of [capture_count[MISSION_STARTING_FACTION]] objectives", "Bonus reward") diff --git a/code/datums/gamemodes/campaign/missions/phoron_capture.dm b/code/datums/gamemodes/campaign/missions/phoron_capture.dm new file mode 100644 index 0000000000000..82e948d4e5054 --- /dev/null +++ b/code/datums/gamemodes/campaign/missions/phoron_capture.dm @@ -0,0 +1,57 @@ +//Loot capture mission +/datum/campaign_mission/capture_mission/phoron_capture + name = "Phoron retrieval" + mission_icon = "phoron_raid" + map_name = "Jungle outpost SR-422" + map_file = '_maps/map_files/Campaign maps/jungle_outpost/jungle_outpost.dmm' + map_traits = list(ZTRAIT_AWAY = TRUE, ZTRAIT_RAIN = TRUE) + map_light_colours = list(LIGHT_COLOR_PALE_GREEN, LIGHT_COLOR_PALE_GREEN, LIGHT_COLOR_PALE_GREEN, LIGHT_COLOR_PALE_GREEN) + mission_flags = MISSION_DISALLOW_DROPPODS|MISSION_DISALLOW_TELEPORT + victory_point_rewards = list( + MISSION_OUTCOME_MAJOR_VICTORY = list(3, 0), + MISSION_OUTCOME_MINOR_VICTORY = list(1, 0), + MISSION_OUTCOME_DRAW = list(0, 0), + MISSION_OUTCOME_MINOR_LOSS = list(0, 1), + MISSION_OUTCOME_MAJOR_LOSS = list(0, 3), + ) + attrition_point_rewards = list( + MISSION_OUTCOME_MAJOR_VICTORY = list(10, 0), + MISSION_OUTCOME_MINOR_VICTORY = list(5, 0), + MISSION_OUTCOME_DRAW = list(0, 0), + MISSION_OUTCOME_MINOR_LOSS = list(0, 10), + MISSION_OUTCOME_MAJOR_LOSS = list(0, 15), + ) + intro_message = list( + MISSION_STARTING_FACTION = "Locate and extract all phoron crates in the AO before the enemy does.", + MISSION_HOSTILE_FACTION = "Locate and extract all phoron crates in the AO before the enemy does.", + ) + starting_faction_mission_brief = "Hostile forces have been building a stock pile of valuable phoron in this location. \ + Before they have the chance to ship it out, your forces are being sent to intercept and liberate these supplies to hamper the enemy's war effort. \ + Hostile forces will likely be aiming to evacuate as much phoron out of the AO as well. Get to the phoron first and fulton out as much as you can." + hostile_faction_mission_brief = "Enemy forces are moving to steal a stockpile of valuable phoron that we are transporting for a local union. \ + Send in your forces to fulton out the phoron as quickly as possible, before they can get to it first." + starting_faction_additional_rewards = "Additional supplies for every phoron crate captured, and freelancer support" + hostile_faction_additional_rewards = "Additional supplies for every phoron crate captured and local support" + objectives_total = 11 + min_capture_amount = 7 + +/datum/campaign_mission/capture_mission/phoron_capture/apply_major_victory() + . = ..() + var/datum/faction_stats/tgmc_team = mode.stat_list[starting_faction] + tgmc_team.add_asset(/datum/campaign_asset/mech/light) + tgmc_team.add_asset(/datum/campaign_asset/bonus_job/freelancer) + +/datum/campaign_mission/capture_mission/phoron_capture/apply_minor_victory() + . = ..() + var/datum/faction_stats/tgmc_team = mode.stat_list[starting_faction] + tgmc_team.add_asset(/datum/campaign_asset/bonus_job/freelancer) + +/datum/campaign_mission/capture_mission/phoron_capture/apply_minor_loss() + . = ..() + var/datum/faction_stats/som_team = mode.stat_list[hostile_faction] + som_team.add_asset(/datum/campaign_asset/attrition_modifier/local_approval) + +/datum/campaign_mission/capture_mission/phoron_capture/apply_major_loss() + . = ..() + var/datum/faction_stats/som_team = mode.stat_list[hostile_faction] + som_team.add_asset(/datum/campaign_asset/attrition_modifier/local_approval) diff --git a/code/datums/gamemodes/campaign/rewards/attrition_mods.dm b/code/datums/gamemodes/campaign/rewards/attrition_mods.dm index 2524da59c3f58..39929a0bb5996 100644 --- a/code/datums/gamemodes/campaign/rewards/attrition_mods.dm +++ b/code/datums/gamemodes/campaign/rewards/attrition_mods.dm @@ -43,6 +43,17 @@ attrition_mod = 0.2 ui_icon = "support_2" +/datum/campaign_asset/attrition_modifier/corporate_backing/reapply() + faction.add_asset(/datum/campaign_asset/attrition_modifier/corporate_directive) + remove_passive_effect() + +/datum/campaign_asset/attrition_modifier/corporate_directive + name = "Corporate directive" + desc = "+30% passive Attrition Point gain" + detailed_desc = "Our mission goals have been realigned with ensuring that lawful megacorporate economic uplift programs can be reestablished. The corporations are now heavily support our efforts." + attrition_mod = 0.3 + ui_icon = "support_3" + //native support /datum/campaign_asset/attrition_modifier/local_approval name = "Indigenous approval" @@ -62,6 +73,17 @@ attrition_mod = 0.2 ui_icon = "support_2" +/datum/campaign_asset/attrition_modifier/local_backing/reapply() + faction.add_asset(/datum/campaign_asset/attrition_modifier/local_uprising) + remove_passive_effect() + +/datum/campaign_asset/attrition_modifier/local_uprising + name = "Indigenous uprising" + desc = "+30% passive Attrition Point gain" + detailed_desc = "Signficiant portions of the local population now actively oppose our enemy as well as supporting our forces. Large swathes of the planet can be considered friendly territory." + attrition_mod = 0.3 + ui_icon = "support_3" + /datum/campaign_asset/attrition_modifier/malus_standard name = "Degraded supply lines" desc = "-20% passive Attrition Point gain" diff --git a/code/game/objects/structures/campaign_structures/capture_objectives.dm b/code/game/objects/structures/campaign_structures/capture_objectives.dm index 6ad744596d348..f31b31e1333d8 100644 --- a/code/game/objects/structures/campaign_structures/capture_objectives.dm +++ b/code/game/objects/structures/campaign_structures/capture_objectives.dm @@ -169,7 +169,7 @@ name = "phoron crate objective" icon = 'icons/obj/structures/campaign_structures.dmi' icon_state = "orebox_phoron" - mission_types = list(/datum/campaign_mission/capture_mission) + mission_types = list(/datum/campaign_mission/capture_mission/phoron_capture) spawn_object = /obj/structure/campaign_objective/capture_objective/fultonable /obj/structure/campaign_objective/capture_objective/fultonable @@ -219,6 +219,13 @@ icon = 'icons/obj/structures/campaign_structures.dmi' icon_state = "asat" desc = "A sophisticated surface to space missile system designed for attacking orbiting satellites or spacecraft." - capture_delay = 45 SECONDS capture_flags = CAPTURE_OBJECTIVE_RECAPTURABLE - owning_faction = FACTION_TERRAGOV //this could have a coded solution, but the mission is tgmc specific + ///owning faction + var/faction = FACTION_TERRAGOV + +/obj/structure/campaign_objective/capture_objective/fultonable/asat_system/capture_check(mob/living/user) + //This is a 'defend' objective. The defending faction can't actually claim it for themselves, just decap it. + if((user.faction == faction) && !capturing_faction && !owning_faction) + user.balloon_alert(user, "Defend this objective!") + return FALSE + return ..() diff --git a/code/game/objects/structures/campaign_structures/deploy_blockers.dm b/code/game/objects/structures/campaign_structures/deploy_blockers.dm index 0b9f394bc6b20..bc7b02963c543 100644 --- a/code/game/objects/structures/campaign_structures/deploy_blockers.dm +++ b/code/game/objects/structures/campaign_structures/deploy_blockers.dm @@ -3,7 +3,7 @@ icon = 'icons/obj/structures/campaign/tele_blocker.dmi' icon_state = "tele_blocker" pixel_x = -16 - mission_types = list(/datum/campaign_mission/destroy_mission/supply_raid/som, /datum/campaign_mission/destroy_mission/fire_support_raid/som) + mission_types = list(/datum/campaign_mission/destroy_mission/supply_raid/som, /datum/campaign_mission/destroy_mission/fire_support_raid/som, /datum/campaign_mission/capture_mission/asat) spawn_object = /obj/structure/campaign_deployblocker /obj/structure/campaign_deployblocker diff --git a/tgmc.dme b/tgmc.dme index 011dfe0d8c252..873c23f0ab57b 100644 --- a/tgmc.dme +++ b/tgmc.dme @@ -468,13 +468,14 @@ #include "code\datums\gamemodes\campaign\missions\airbase_raid.dm" #include "code\datums\gamemodes\campaign\missions\asat_capture.dm" #include "code\datums\gamemodes\campaign\missions\base_rescue.dm" +#include "code\datums\gamemodes\campaign\missions\capture_mission.dm" #include "code\datums\gamemodes\campaign\missions\comm_uplink.dm" #include "code\datums\gamemodes\campaign\missions\destroy_mission.dm" #include "code\datums\gamemodes\campaign\missions\final_mission.dm" #include "code\datums\gamemodes\campaign\missions\fire_support_raid.dm" -#include "code\datums\gamemodes\campaign\missions\loot_capture.dm" #include "code\datums\gamemodes\campaign\missions\mech_wars.dm" #include "code\datums\gamemodes\campaign\missions\patrol_mission.dm" +#include "code\datums\gamemodes\campaign\missions\phoron_capture.dm" #include "code\datums\gamemodes\campaign\missions\raiding_base.dm" #include "code\datums\gamemodes\campaign\missions\spearhead_assault.dm" #include "code\datums\gamemodes\campaign\missions\supply_raid.dm"