mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-22 20:43:10 +01:00
Overmap hazard rebalance (#21571)
# Summary This PR rebalances the spawn count and radius of overmap hazard clusters, as well as adjusts some of their overmap movement behavior. ## Justification Mining trips to exoplanets distant to the Horizon can force miners to spend large portions of a given round just trying to navigate around overmap hazards; in the worst cases, the sheer number of dead ends and blind spots can result in their effective removal from the first 60-90 minutes of a round, and the worst delays can obviate the need for their materials in the first place. While reducing these hazards would also benefit the Horizon and offships, the primary motivation was to reduce mining's "dead time" in any given round. ## Details Most overmap hazard types have had their 'count' (the number of clusters spawned) and radius reduced, to open up more navigable space on the overmap. This has been compensated for by modifying movement probabilities, speeds, and behaviors of overmap hazards. The intervals between overmap hazards moving (their effective speeds) has been made variable; different clusters of movable hazards will no longer always proc movement at the same time. Carp continue to have a random chance to move in a random direction every interval. Space dust and meteors now also have a chance to spawn in as movable hazards, but they will only ever move in one direction. While more dangerous to passing shuttles and ships than carp, they are also much more predictable. The current numbers were based on observation of several randomly generated maps during testing, but will likely need adjustment as it faces actual miners and we accumulate their feedback. I erred on the side of 'less difficult' to avoid overtuned rocks from smashing crew to pieces every round.
This commit is contained in:
@@ -168,28 +168,31 @@
|
||||
var/list/events
|
||||
var/list/event_icon_states = list("event")
|
||||
var/difficulty = EVENT_LEVEL_MODERATE
|
||||
var/list/victims //basically cached events on which Z level
|
||||
var/can_be_destroyed = TRUE //Can this event be destroyed by ship guns?
|
||||
/// Basically cached events on which Z level
|
||||
var/list/victims
|
||||
/// Can this event be destroyed by ship guns?
|
||||
var/can_be_destroyed = TRUE
|
||||
|
||||
// Events must be detected by sensors, but are otherwise instantly visible.
|
||||
/// Events must be detected by sensors, but are otherwise instantly visible.
|
||||
requires_contact = TRUE
|
||||
instant_contact = TRUE
|
||||
|
||||
// Vars that determine movability, current moving direction, and moving speed //
|
||||
// Vars that determine movability, current moving direction, and moving speed
|
||||
/// Whether this event can move or not
|
||||
var/movable_event = FALSE
|
||||
/// The percentage chance that this event will turn itself into a mobile version
|
||||
var/movable_event_chance = 0
|
||||
var/movable_event_chance
|
||||
/// In which direction this event is currently planning on moving, will select a random dir if null
|
||||
var/moving_dir = null
|
||||
/// How many times the event has to process before moving (2 seconds per)
|
||||
var/movable_speed = 60
|
||||
/// How many times the event has to process before moving (2 seconds per).
|
||||
/// This is automatically randomized to be 1/3 higher or lower on init, so not all events fire simultaneously.
|
||||
var/movable_speed = 75
|
||||
/// Ticks up each process until move speed is matched, at which point the event will move
|
||||
var/move_counter = 0
|
||||
/// Percentage chance that the event changes direction
|
||||
var/dir_change_chance = 25
|
||||
var/dir_change_chance = 33
|
||||
/// How long to delay the next move counter if there's a ship in our loc, this gives bad events some time to happen
|
||||
var/ship_delay_time = 2
|
||||
var/ship_delay_time = 10
|
||||
/// Ticks up each process until move speed is matched, at which point the event will move
|
||||
var/ship_delay_counter = 0
|
||||
|
||||
@@ -203,7 +206,12 @@
|
||||
make_movable()
|
||||
|
||||
/obj/effect/overmap/event/proc/make_movable()
|
||||
movable_event = TRUE
|
||||
// For a default movable_speed of 60, this could result in a movable speed of anywhere between 40 and 80 (ie. moves every ~1.5-2.5 minutes).
|
||||
var/speed_randomness = movable_speed / 3
|
||||
movable_speed = movable_speed + rand((0 - speed_randomness), (speed_randomness))
|
||||
// Hee hee
|
||||
if(prob(1))
|
||||
movable_speed = initial(movable_speed) / 4
|
||||
start_moving()
|
||||
|
||||
/obj/effect/overmap/event/proc/start_moving()
|
||||
@@ -258,6 +266,10 @@
|
||||
opacity = 1
|
||||
event_icon_states = list("meteor1", "meteor2", "meteor3", "meteor4")
|
||||
difficulty = EVENT_LEVEL_MAJOR
|
||||
// Faster than carp, but only ever move in a single direction.
|
||||
movable_event_chance = 20
|
||||
movable_speed = 50
|
||||
dir_change_chance = 0
|
||||
|
||||
/obj/effect/overmap/event/electric
|
||||
name = "electrical storm"
|
||||
@@ -272,6 +284,10 @@
|
||||
opacity = 1
|
||||
event_icon_states = list("dust1", "dust2", "dust3", "dust4")
|
||||
can_be_destroyed = FALSE
|
||||
// Faster than carp, but only ever move in a single direction.
|
||||
movable_event_chance = 20
|
||||
movable_speed = 40
|
||||
dir_change_chance = 0
|
||||
|
||||
/obj/effect/overmap/event/ion
|
||||
name = "ion cloud"
|
||||
@@ -279,18 +295,23 @@
|
||||
event_icon_states = list("ion1", "ion2", "ion3", "ion4")
|
||||
difficulty = EVENT_LEVEL_MAJOR
|
||||
can_be_destroyed = FALSE
|
||||
// Very rare to move, very slow to move when it does, but hilarious.
|
||||
movable_event_chance = 5
|
||||
movable_speed = 240
|
||||
dir_change_chance = 0
|
||||
|
||||
/obj/effect/overmap/event/carp
|
||||
name = "carp shoal"
|
||||
events = list(/datum/event/carp_migration/overmap)
|
||||
difficulty = EVENT_LEVEL_MODERATE
|
||||
event_icon_states = list("carp")
|
||||
movable_event_chance = 5
|
||||
movable_event_chance = 30
|
||||
|
||||
/obj/effect/overmap/event/carp/major
|
||||
name = "carp school"
|
||||
opacity = 1
|
||||
difficulty = EVENT_LEVEL_MAJOR
|
||||
movable_event_chance = 15
|
||||
|
||||
// see comment at code/modules/events/gravity.dm
|
||||
// tl;dr gravity is handled globally, meaning if the horizon loses gravity, everyone does
|
||||
@@ -299,14 +320,15 @@
|
||||
// events = list(/datum/event/gravity)
|
||||
// can_be_destroyed = FALSE
|
||||
|
||||
//These now are basically only used to spawn hazards. Will be useful when we need to spawn group of moving hazards
|
||||
///These now are basically only used to spawn hazards. Will be useful when we need to spawn group of moving hazards
|
||||
/datum/overmap_event
|
||||
var/name = "map event"
|
||||
var/radius = 2
|
||||
var/count = 6
|
||||
var/hazards
|
||||
var/opacity = 0
|
||||
var/continuous = TRUE //if it should form continous blob, or can have gaps
|
||||
/// If it should form continous blobs, or can have gaps
|
||||
var/continuous = TRUE
|
||||
|
||||
/datum/overmap_event/meteor
|
||||
name = "asteroid field"
|
||||
@@ -318,34 +340,34 @@
|
||||
|
||||
/datum/overmap_event/electric
|
||||
name = "electrical storm"
|
||||
count = 11
|
||||
radius = 3
|
||||
count = 6
|
||||
radius = 2
|
||||
hazards = /obj/effect/overmap/event/electric
|
||||
|
||||
/datum/overmap_event/dust
|
||||
name = "dust cloud"
|
||||
count = 16
|
||||
radius = 4
|
||||
count = 13
|
||||
radius = 3
|
||||
opacity = 1
|
||||
hazards = /obj/effect/overmap/event/dust
|
||||
|
||||
/datum/overmap_event/ion
|
||||
name = "ion cloud"
|
||||
count = 8
|
||||
radius = 3
|
||||
count = 5
|
||||
radius = 2
|
||||
hazards = /obj/effect/overmap/event/ion
|
||||
|
||||
/datum/overmap_event/carp
|
||||
name = "carp shoal"
|
||||
count = 8
|
||||
radius = 3
|
||||
radius = 2
|
||||
continuous = FALSE
|
||||
hazards = /obj/effect/overmap/event/carp
|
||||
|
||||
/datum/overmap_event/carp/major
|
||||
name = "carp school"
|
||||
count = 5
|
||||
radius = 4
|
||||
radius = 3
|
||||
opacity = 1
|
||||
hazards = /obj/effect/overmap/event/carp/major
|
||||
|
||||
|
||||
Reference in New Issue
Block a user