diff --git a/nsv13/code/modules/overmap/ai-skynet.dm b/nsv13/code/modules/overmap/ai-skynet.dm index 650158d08c2..1241626a672 100644 --- a/nsv13/code/modules/overmap/ai-skynet.dm +++ b/nsv13/code/modules/overmap/ai-skynet.dm @@ -752,6 +752,7 @@ Adding tasks is easy! Just define a datum for it. supply_types = list(/obj/structure/overmap/syndicate/ai/carrier, /obj/structure/overmap/syndicate/ai/carrier/elite) fleet_trait = FLEET_TRAIT_BORDER_PATROL hide_movements = TRUE + size = FLEET_DIFFICULTY_HARD //Border patrol is stronger /datum/fleet/boarding name = "\improper Syndicate commando taskforce" @@ -762,25 +763,31 @@ Adding tasks is easy! Just define a datum for it. /datum/fleet/wolfpack name = "\improper unidentified Syndicate fleet" destroyer_types = list(/obj/structure/overmap/syndicate/ai/submarine) - battleship_types = list(/obj/structure/overmap/syndicate/ai/cruiser, /obj/structure/overmap/syndicate/ai/cruiser/elite, /obj/structure/overmap/syndicate/ai/mako_flak, /obj/structure/overmap/syndicate/ai/destroyer) + battleship_types = list(/obj/structure/overmap/syndicate/ai/cruiser, /obj/structure/overmap/syndicate/ai/cruiser/elite, /obj/structure/overmap/syndicate/ai/mako_flak, /obj/structure/overmap/syndicate/ai/destroyer, /obj/structure/overmap/syndicate/ai/submarine/elite) audio_cues = list() hide_movements = TRUE taunts = list("....", "*static*") fleet_trait = FLEET_TRAIT_NEUTRAL_ZONE +/datum/fleet/wolfpack/elite + name = "\improper unidentified Syndicate taskforce" + destroyer_types = list(/obj/structure/overmap/syndicate/ai/submarine, /obj/structure/overmap/syndicate/ai/submarine/elite) + battleship_types = list(/obj/structure/overmap/syndicate/ai/submarine/elite, /obj/structure/overmap/syndicate/ai/cruiser/elite) + taunts = list(".....", "*loud microphone feedback*", "You've got nowhere to run, and nowhere to hide...") + /datum/fleet/conflagration name = "\improper Syndicate conflagration deterrent" taunts = list("Enemy ship, surrender now. This vessel is armed with hellfire weapons and eager to test them.") audio_cues = list() destroyer_types = list(/obj/structure/overmap/syndicate/ai/conflagration, /obj/structure/overmap/syndicate/ai/conflagration/elite) - size = 2 + size = FLEET_DIFFICULTY_EASY fleet_trait = FLEET_TRAIT_NEUTRAL_ZONE /datum/fleet/elite name = "\improper elite Syndicate taskforce" taunts = list("Enemy ship, surrender immediately or face destruction.", "Excellent, a worthwhile target. Arm all batteries.") supply_types = list(/obj/structure/overmap/syndicate/ai/carrier/elite) - destroyer_types = list(/obj/structure/overmap/syndicate/ai/destroyer/elite) + destroyer_types = list(/obj/structure/overmap/syndicate/ai/destroyer/elite, /obj/structure/overmap/syndicate/ai/submarine/elite) battleship_types = list(/obj/structure/overmap/syndicate/ai/cruiser/elite) //Space Pirate Fleets @@ -845,7 +852,7 @@ Adding tasks is easy! Just define a datum for it. /datum/fleet/earthbuster name = "\proper Syndicate Armada" //Fleet spawned if the players are too inactive. Set course...FOR EARTH. destroyer_types = list(/obj/structure/overmap/syndicate/ai, /obj/structure/overmap/syndicate/ai/conflagration, /obj/structure/overmap/syndicate/ai/assault_cruiser, /obj/structure/overmap/syndicate/ai/gunboat, /obj/structure/overmap/syndicate/ai/submarine, /obj/structure/overmap/syndicate/ai/assault_cruiser/boarding_frigate) - size = FLEET_DIFFICULTY_VERY_HARD + size = FLEET_DIFFICULTY_INSANE allow_difficulty_scaling = FALSE taunts = list("We're coming for Sol, and you can't stop us. All batteries fire at will.", "Lay down your arms now, you're outnumbered.", "All hands, assume assault formation. Begin bombardment.") audio_cues = list() diff --git a/nsv13/code/modules/overmap/factions.dm b/nsv13/code/modules/overmap/factions.dm index c01aef381d2..aa918424779 100644 --- a/nsv13/code/modules/overmap/factions.dm +++ b/nsv13/code/modules/overmap/factions.dm @@ -16,6 +16,8 @@ var/tickets = 0 //How many victory tickets has this faction accrued? Factions other than NT can win! var/list/fleet_types = list() var/list/randomspawn_only_fleet_types = list() //These fleets only get spawned randomly, not by say, missions. + var/list/elite_fleet_types = list() //These fleets are only spawned if the difficulty is high enough. + var/elite_difficulty_threshold = 3 //The minimum difficulty for elite fleets to spawn for this faction. var/next_fleet_spawn = 0 //Factions spawn fleets more frequently when they're doing well with tickets. var/fleet_spawn_rate = 10 MINUTES //By default, 1 / 5 minutes. var/spawn_rate_jitter = 3 MINUTES @@ -91,6 +93,8 @@ Set up relationships. possible_types += fleet_types if(!force) possible_types += randomspawn_only_fleet_types + if(custom_difficulty >= elite_difficulty_threshold || SSovermap_mode.mode.difficulty >= elite_difficulty_threshold) + possible_types += elite_fleet_types var/fleet_type = pickweight(possible_types) var/datum/fleet/F = new fleet_type F.current_system = starsys @@ -125,6 +129,7 @@ Set up relationships. preset_allies = list(FACTION_ID_SOLGOV, FACTION_ID_UNATHI) preset_enemies = list(FACTION_ID_SYNDICATE, FACTION_ID_PIRATES) fleet_types = list(/datum/fleet/nanotrasen/light = 1) + elite_fleet_types = list(/datum/fleet/nanotrasen = 1) fleet_spawn_rate = 40 MINUTES id = FACTION_ID_NT @@ -149,6 +154,7 @@ Set up relationships. preset_enemies = list(FACTION_ID_NT) fleet_types = list(/datum/fleet/neutral = 5, /datum/fleet/boarding = 5, /datum/fleet/wolfpack = 5, /datum/fleet/conflagration = 5) randomspawn_only_fleet_types = list(/datum/fleet/interdiction/light = 1) + elite_fleet_types = list(/datum/fleet/wolfpack/elite = 2, /datum/fleet/elite = 2) fleet_spawn_rate = 30 MINUTES id = FACTION_ID_SYNDICATE diff --git a/nsv13/code/modules/overmap/types/syndicate.dm b/nsv13/code/modules/overmap/types/syndicate.dm index 307d530d530..d77038c6d59 100644 --- a/nsv13/code/modules/overmap/types/syndicate.dm +++ b/nsv13/code/modules/overmap/types/syndicate.dm @@ -396,7 +396,7 @@ weapon_types[FIRE_MODE_MISSILE] = new/datum/ship_weapon/missile_launcher(src) /obj/structure/overmap/syndicate/ai/submarine //A big box of tank which is hard to take down, and lethal up close. - name = "Aspala Class Sub-spacemarine" + name = "Aspala class sub-spacemarine" desc = "A highly advanced Syndicate cruiser which can mask its sensor signature drastically." icon = 'nsv13/icons/overmap/new/syndicate/cruiser.dmi' icon_state = "aspala" @@ -429,6 +429,31 @@ weapon_types[FIRE_MODE_GAUSS] = new /datum/ship_weapon/gauss(src) //AI ships want to be able to use gauss too. I say let them... weapon_types[FIRE_MODE_MISSILE] = new/datum/ship_weapon/missile_launcher(src) +/obj/structure/overmap/syndicate/ai/submarine/elite + name = "Stalker class sub-spacemarine" + icon_state = "aspala_elite" + obj_integrity = 1000 + max_integrity = 1000 //Max health + integrity_failure = 200 //At this integrity it will start phase 2 + armor = list("overmap_light" = 90, "overmap_medium" = 65, "overmap_heavy" = 35) + shots_left = 35 + torpedoes = 20 //Many torps 4u + missiles = 15 + bounty = 3500 + ai_flags = AI_FLAG_DESTROYER | AI_FLAG_ELITE + cloak_factor = 80 //Harder to see + combat_dice_type = /datum/combat_dice/destroyer + torpedo_type = /obj/item/projectile/guided_munition/torpedo/disruptor + +/obj/structure/overmap/syndicate/ai/submarine/elite/try_repair(amount) + . = ..() + if(obj_integrity > integrity_failure) //Reset our torp type if we have been healed + torpedo_type = initial(torpedo_type) + +/obj/structure/overmap/syndicate/ai/submarine/elite/obj_break() //Unused for overmaps, so we just steal it to make damage phases :3c + torpedo_type = /obj/item/projectile/guided_munition/torpedo/viscerator + torpedoes = CLAMP((torpedoes),2 , 3) //This is their secret weapon, they only have a few of these + /obj/structure/overmap/syndicate/ai/kadesh //I sure wonder what this one does.... name = "Kadesh class advanced cruiser" desc = "An experimental Syndicate cruiser capable of projecting energy bursts powerful enough to disrupt drive systems." @@ -469,7 +494,7 @@ add_sensor_profile_penalty(150, 10 SECONDS) /obj/structure/overmap/syndicate/ai/fistofsol - name = "\improper SSV Fist of Sol" + name = "SSV Fist of Sol" icon = 'nsv13/icons/overmap/syndicate/tuningfork.dmi' icon_state = "tuningfork" desc = "A terrifying vessel packing every inch of the Syndicate's abhorrent arsenal." diff --git a/nsv13/icons/overmap/new/syndicate/cruiser.dmi b/nsv13/icons/overmap/new/syndicate/cruiser.dmi index d4ba0cb5d61..b860fa2cd35 100644 Binary files a/nsv13/icons/overmap/new/syndicate/cruiser.dmi and b/nsv13/icons/overmap/new/syndicate/cruiser.dmi differ