Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Adds the ability for elite fleets to spawn at higher difficulties + new elite submarine variant #2735

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 11 additions & 4 deletions nsv13/code/modules/overmap/ai-skynet.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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
Expand Down Expand Up @@ -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()
Expand Down
6 changes: 6 additions & 0 deletions nsv13/code/modules/overmap/factions.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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

Expand All @@ -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

Expand Down
29 changes: 27 additions & 2 deletions nsv13/code/modules/overmap/types/syndicate.dm
Original file line number Diff line number Diff line change
Expand Up @@ -388,7 +388,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"
Expand Down Expand Up @@ -421,6 +421,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."
Expand Down Expand Up @@ -461,7 +486,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."
Expand Down
Binary file modified nsv13/icons/overmap/new/syndicate/cruiser.dmi
Binary file not shown.
Loading