From 7196ebb10aaca24e4bb916cfc69d921a537dbf46 Mon Sep 17 00:00:00 2001 From: Batrachophreno Date: Mon, 15 Sep 2025 08:12:08 -0400 Subject: [PATCH] Spacevines, Comet Expulsion event balances (#21256) Slightly increases potency of Spacevines random seeds, and increases range of areas which can spawn them. Makes Comet Expulsion event populate a whole bunch of meteors on the overmap, but most of them are just traveling in random directions. Makes it less trivial for bridge crew to just scoot one tile to the left and everything's fine. Tested it multiple times on local instance to find numbers that tended to make the overmap dangerous, but not bullet-hell levels. It should be okay for the Horizon to get hit once or thrice- dodging them all ought to be a really nice trick. Also increased minimum spawn distance from the edges of the overmap on round start to prevent comet spawn from deciding 'hey fuck you' and nuking you with 4 meteors to the face and 0 time to maneuver. That's too mean, even for me. changes: - balance: "Spacevines event has more area types to potentially spawn in." - balance: "Spacevines event potency_min increased from 70 -> 85." - balance: "Comet Expulsion event chances slightly increased with greater weighting towards Bridge Crew availability." - balance: "Comet Expulsion event now generates many overmap hazards, mostly in random directions, to make evasion less trivial." - balance: "Comet Expulsion event meteors now have a small chance to do greater damage." - balance: "Horizon and other overmap visitable sites minimum spawn distance from overmap edge increased from 2 to 4." - qol: "Provided additional admin logging for Comet Expulsion event." --- code/game/gamemodes/meteor/meteors.dm | 21 +++--- code/modules/events/comet_expulsion.dm | 47 +++++++++++-- code/modules/events/event_container.dm | 4 +- .../hydroponics/spreading/spreading.dm | 26 +++++-- code/modules/overmap/_defines.dm | 2 +- html/changelogs/Bat-eventbalancing.yml | 64 ++++++++++++++++++ .../Event Probabilities.xlsx | Bin 33230 -> 33235 bytes 7 files changed, 140 insertions(+), 24 deletions(-) create mode 100644 html/changelogs/Bat-eventbalancing.yml diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index cc0804631b9..e4c6cac3238 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -1,4 +1,4 @@ -//Meteor groups, used for the Meteor gamemode. +//Meteor groups, used for the Meteor gamemode and Comet Expulsion event. /proc/spawn_meteors(var/number = 10, var/list/meteortypes, var/startSide, var/zlevel) for(var/i = 0; i < number; i++) @@ -62,27 +62,26 @@ pass_flags = PASSTABLE mouse_opacity = MOUSE_OPACITY_ICON - ///The resilience of our meteor + /// The resilience of our meteor var/hits = 4 - ///Level of ex_act to be called on hit + /// Level of ex_act to be called on hit var/hitpwr = 2 - //Should we shake people's screens on impact + /// Should we shake people's screens on impact var/heavy = FALSE - ///Our starting z level, prevents infinite meteors + /// Our starting z level, prevents infinite meteors var/z_original - //Potential items to spawn when you die + /// Potential items to spawn when you die var/meteordrop = list(/obj/item/ore/iron) - ///How much stuff to spawn when you die + /// How much stuff to spawn when you die var/dropamt = 3 - ///The thing we're moving towards, usually a turf + /// The thing we're moving towards, usually a turf var/atom/dest - ///If TRUE, this meteor will not be destroyed by shield collisions + /// If TRUE, this meteor will not be destroyed by shield collisions var/ignore_shield_destruction = FALSE - /obj/effect/meteor/Destroy() walk(src,0) //this cancels the walk_towards() proc return ..() @@ -154,8 +153,6 @@ /obj/effect/meteor/Process_Spacemove(movement_dir = 0, continuous_move = FALSE) return TRUE //Keeps us from drifting for no reason - - /*##################### METEOR SUBTYPES #####################*/ diff --git a/code/modules/events/comet_expulsion.dm b/code/modules/events/comet_expulsion.dm index 2d79e61aeab..435d438ed29 100644 --- a/code/modules/events/comet_expulsion.dm +++ b/code/modules/events/comet_expulsion.dm @@ -62,9 +62,12 @@ /obj/effect/meteor/comet_expulsion heavy = TRUE ignore_shield_destruction = TRUE - hitpwr = 2 + hitpwr = 3 /obj/effect/meteor/comet_expulsion/Collide(atom/A) + // Low chance that its a big boi + if(prob(3)) + hitpwr = 5 //If there's shields and it's strong enough, the power of the explosion is reduced, but it won't stop it if(istype(A, /obj/effect/energy_field)) var/obj/effect/energy_field/impacted_energy_field = A @@ -76,7 +79,6 @@ /obj/effect/meteor/comet_expulsion/meteor_effect() . = ..() - explosion(get_turf(src), ROUND_UP(hitpwr), ROUND_UP(hitpwr*1.2), ROUND_UP(hitpwr*1.4)) @@ -87,13 +89,16 @@ /datum/event/comet_expulsion severity = EVENT_LEVEL_MAJOR startWhen = 30 + /// Number of meteors aimed directly at Horizon (few) + var/meteors_aimed = 0 + /// Number of meteors traveling on random trajectories on the overmap (lots) + var/meteors_random = 0 /datum/event/comet_expulsion/setup() if(!SSatlas.current_map.use_overmap) qdel(src) return - /datum/event/comet_expulsion/start() . = ..() @@ -105,10 +110,35 @@ var/obj/effect/overmap/visitable/target = GLOB.map_sectors["[pick(possible_station_levels)]"] if(!istype(target)) + log_and_message_admins("Comet Expulsion failed to find a viable overmap target.") qdel(src) return + /** + * These numbers may seem high, but the overmap is a Big Place. Meteors aimed at the Horizon will impact along its outer hull, if they manage to strike. + * Huddling crew in the Central Ring is the easiest way to keep them safe. The overwhelming majority of unaimed meteors will almost never come close; they + * just need to ensure there's stuff to dodge in most directions. + */ + meteors_aimed = (rand(2,5)) + meteors_random = (rand(12,24)) + // Rocks aimed directly at us. + for(var/x in 1 to meteors_aimed) + fire_comet(target, TRUE) + // Rocks flying around nearby to dodge. + for(var/y in 1 to meteors_random) + fire_comet(target) + + log_and_message_admins("Comet Expulsion has spawned meteors: [meteors_aimed] aimed at Horizon, [meteors_random] traveling random directions") + +/** + * Generate a meteor and fire it from the overmap edge in the general direction of, but not directly at, the Horizon. + * + * Parameter: + * * aimed - aim DIRECTLY at the horizon: guaranteed collision if no action is taken. + */ +/datum/event/comet_expulsion/proc/fire_comet(var/obj/effect/overmap/visitable/target, var/aimed = FALSE) var/list/turf/unsimulated/map/edge/overmap_edges = list() + var/projectile_angle for(var/turf/unsimulated/map/edge/E in block(locate(1,1,SSatlas.current_map.overmap_z), locate(SSatlas.current_map.overmap_size,SSatlas.current_map.overmap_size,SSatlas.current_map.overmap_z))) overmap_edges += E @@ -121,12 +151,19 @@ var/obj/projectile/comet_expulsion/our_comet = new(source) our_comet.preparePixelProjectile(target, source) our_comet.original = target - our_comet.fire(get_angle(source, target)) + // Get the angle to hit our target directly. + projectile_angle = get_angle(source, target) + // If we're not aiming, introduce random deviation. + if(!aimed) + var/random_deviation = rand(-75, 75) + projectile_angle = abs((projectile_angle + random_deviation) % 360) + + our_comet.fire(projectile_angle) /datum/event/comet_expulsion/announce_start() . = ..() - command_announcement.Announce("Warning, long range field scanners have detected an unforseen comet mass expulsion in collision route with [location_name()].\n\ + command_announcement.Announce("Warning, long range field scanners have detected an unforeseen comet expulsion in collision route with [location_name()].\n\ All hands, assume defense condition, perform evasive maneuvers to avoid collision with the debris cloud. Damage control teams prepare to respond to breaches of the \ vessel perimeter.", "[location_name()] Long Range Field Objects Sensor Array", new_sound = 'sound/effects/Evacuation.ogg', zlevels = affecting_z) diff --git a/code/modules/events/event_container.dm b/code/modules/events/event_container.dm index 25c7b924ebb..841e2c2f844 100644 --- a/code/modules/events/event_container.dm +++ b/code/modules/events/event_container.dm @@ -378,8 +378,8 @@ GLOBAL_LIST_INIT(severity_to_string, list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT pop_needed = 4), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Comet Expulsion", /datum/event/comet_expulsion, - 1, list(ASSIGNMENT_BRIDGE_CREW = 15, ASSIGNMENT_ENGINEER = 12), is_one_shot = TRUE, - pop_needed = 8), + 5, list(ASSIGNMENT_BRIDGE_CREW = 20, ASSIGNMENT_ENGINEER = 12), is_one_shot = TRUE, + pop_needed = 12), new /datum/event_meta(EVENT_LEVEL_MAJOR, "APC Damage", /datum/event/apc_damage, 20, list(ASSIGNMENT_ENGINEER = 15, ASSIGNMENT_JANITOR = 20)), diff --git a/code/modules/hydroponics/spreading/spreading.dm b/code/modules/hydroponics/spreading/spreading.dm index 21c58c3b67c..310d72df82d 100644 --- a/code/modules/hydroponics/spreading/spreading.dm +++ b/code/modules/hydroponics/spreading/spreading.dm @@ -1,13 +1,32 @@ #define DEFAULT_SEED "glowshroom" #define VINE_GROWTH_STAGES 5 -/proc/spacevine_infestation(var/potency_min=70, var/potency_max=100, var/maturation_min=1, var/maturation_max=3) - var/turf/T = pick_subarea_turf(/area/horizon/hallway, list(/proc/is_station_turf, /proc/not_turf_contains_dense_objects)) +/proc/spacevine_infestation(var/potency_min=85, var/potency_max=100, var/maturation_min=1, var/maturation_max=3) + /// List of areas to affect. + var/list/area/areaList = list() + /// Area types to include. + var/list/areaType = list( + /area/horizon/hallway, + /area/horizon/security/hallway, + /area/horizon/engineering/hallway, + /area/horizon/medical/hallway, + /area/horizon/operations/lobby, + /area/horizon/rnd/hallway, + /area/horizon/security/hallway, + /area/horizon/security/investigations_hallway, + /area/horizon/service/cafeteria, + /area/horizon/hangar + ) + for(var/area/area in GLOB.the_station_areas) + if(is_type_in_list(area, areaType)) + areaList += area + + var/turf/T = pick_subarea_turf(pick(areaList), list(/proc/is_station_turf, /proc/not_turf_contains_dense_objects)) if(T) var/datum/seed/seed = SSplants.create_random_seed(TRUE, SEED_NOUN_PITS) seed.set_trait(TRAIT_SPREAD,2) // So it will function properly as vines. seed.growth_stages = VINE_GROWTH_STAGES - seed.set_trait(TRAIT_POTENCY,rand(potency_min, potency_max)) // 70-100 potency will help guarantee a wide spread and powerful effects. + seed.set_trait(TRAIT_POTENCY,rand(potency_min, potency_max)) // 85-100 potency will help guarantee a wide spread and powerful effects. seed.set_trait(TRAIT_MATURATION,rand(maturation_min, maturation_max)) //make vine zero start off fully matured @@ -79,7 +98,6 @@ /obj/effect/plant/single spread_chance = 0 - /obj/effect/plant/Initialize(mapload, datum/seed/newseed, obj/effect/plant/newparent) . = ..() diff --git a/code/modules/overmap/_defines.dm b/code/modules/overmap/_defines.dm index 04814a908bf..2397936f9b7 100644 --- a/code/modules/overmap/_defines.dm +++ b/code/modules/overmap/_defines.dm @@ -1,6 +1,6 @@ //How far from the edge of overmap zlevel could randomly placed objects spawn -#define OVERMAP_EDGE 2 +#define OVERMAP_EDGE 4 /// All sector overmap objects. /// Assoc list of stringified zlevel integer value (like `"1"` or `"42"` etc) diff --git a/html/changelogs/Bat-eventbalancing.yml b/html/changelogs/Bat-eventbalancing.yml new file mode 100644 index 00000000000..87c9c3d0eec --- /dev/null +++ b/html/changelogs/Bat-eventbalancing.yml @@ -0,0 +1,64 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# - (fixes bugs) +# wip +# - (work in progress) +# qol +# - (quality of life) +# soundadd +# - (adds a sound) +# sounddel +# - (removes a sound) +# rscadd +# - (adds a feature) +# rscdel +# - (removes a feature) +# imageadd +# - (adds an image or sprite) +# imagedel +# - (removes an image or sprite) +# spellcheck +# - (fixes spelling or grammar) +# experiment +# - (experimental change) +# balance +# - (balance changes) +# code_imp +# - (misc internal code change) +# refactor +# - (refactors code) +# config +# - (makes a change to the config files) +# admin +# - (makes changes to administrator tools) +# server +# - (miscellaneous changes to server) +################################# + +# Your name. +author: Batrachophrenoboocosmomachia + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit. +# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. +changes: + - balance: "Spacevines event has more area types to potentially spawn in." + - balance: "Spacevines event potency_min increased from 70 -> 85." + - balance: "Comet Expulsion event chances slightly increased with greater weighting towards Bridge Crew availability." + - balance: "Comet Expulsion event now generates many overmap hazards, mostly in random directions, to make evasion less trivial." + - balance: "Comet Expulsion event meteors now have a small chance to do greater damage." + - balance: "Horizon and other overmap visitable sites minimum spawn distance from overmap edge increased from 2 to 4." + - qol: "Provided additional admin logging for Comet Expulsion event." diff --git a/tools/Event Probabilities/Event Probabilities.xlsx b/tools/Event Probabilities/Event Probabilities.xlsx index c4da815aeb42061376e9ca94595efe5d4fd8e7f7..3cf8d201294196b39deb0c92028bdf382a4a4731 100644 GIT binary patch delta 13894 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 delta 13923 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 a=YPG8J9-YY4HPA0hvf!dCBpdQZ~YIg=#?q}