mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 03:27:05 +01:00
Adds a new Fungal Growth event, makes fungus re-harvestable (#21928)
* the fungus is amongus * us -> al * Update code/game/objects/effects/decals/Cleanable/misc_cleanables.dm Co-authored-by: JimKil3 <47290811+JimKil3@users.noreply.github.com> * Update code/game/objects/effects/decals/Cleanable/misc_cleanables.dm Co-authored-by: JimKil3 <47290811+JimKil3@users.noreply.github.com> * Update code/game/objects/effects/decals/Cleanable/misc_cleanables.dm fineeee Co-authored-by: JimKil3 <47290811+JimKil3@users.noreply.github.com> --------- Co-authored-by: JimKil3 <47290811+JimKil3@users.noreply.github.com>
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
#define ASSIGNMENT_MEDICAL "Medical"
|
||||
#define ASSIGNMENT_SCIENTIST "Scientist"
|
||||
#define ASSIGNMENT_SECURITY "Security"
|
||||
#define ASSIGNMENT_CHEMIST "Chemist"
|
||||
|
||||
GLOBAL_LIST_INIT(severity_to_string, list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT_LEVEL_MODERATE = "Moderate", EVENT_LEVEL_MAJOR = "Major"))
|
||||
GLOBAL_LIST_EMPTY(event_last_fired)
|
||||
@@ -141,6 +142,7 @@ GLOBAL_LIST_EMPTY(event_last_fired)
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Vermin Infestation",/datum/event/infestation, 100, list(ASSIGNMENT_JANITOR = 100)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Sentience", /datum/event/sentience, 50),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Wallrot", /datum/event/wallrot, 0, list(ASSIGNMENT_ENGINEER = 30, ASSIGNMENT_GARDENER = 50)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Fungal Growth", /datum/event/wallrot/fungus, 50, list(ASSIGNMENT_CHEMIST = 50)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Koi School", /datum/event/carp_migration/koi, 80),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Camera Failure", /datum/event/camera_failure, 100, list(ASSIGNMENT_ENGINEER = 10)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Fake Virus", /datum/event/fake_virus, 50),
|
||||
@@ -218,3 +220,4 @@ GLOBAL_LIST_EMPTY(event_last_fired)
|
||||
#undef ASSIGNMENT_MEDICAL
|
||||
#undef ASSIGNMENT_SCIENTIST
|
||||
#undef ASSIGNMENT_SECURITY
|
||||
#undef ASSIGNMENT_CHEMIST
|
||||
|
||||
@@ -1,29 +1,44 @@
|
||||
/datum/event/wallrot/start()
|
||||
INVOKE_ASYNC(src, PROC_REF(spawn_wallrot))
|
||||
|
||||
/datum/event/wallrot/proc/apply_to_turf(turf/T)
|
||||
var/turf/simulated/wall/W = T
|
||||
W.rot()
|
||||
|
||||
/datum/event/wallrot/proc/is_valid_candidate(turf/T)
|
||||
return TRUE
|
||||
|
||||
/datum/event/wallrot/proc/spawn_wallrot()
|
||||
var/turf/simulated/wall/center = null
|
||||
|
||||
// 100 attempts
|
||||
for(var/i in 0 to 100)
|
||||
var/turf/candidate = locate(rand(1, world.maxx), rand(1, world.maxy), level_name_to_num(MAIN_STATION))
|
||||
if(iswallturf(candidate))
|
||||
if(iswallturf(candidate) && is_valid_candidate(candidate))
|
||||
center = candidate
|
||||
break
|
||||
|
||||
if(!center)
|
||||
return
|
||||
// Make sure at least one piece of wall rots!
|
||||
center.rot()
|
||||
apply_to_turf(center)
|
||||
|
||||
// Have a chance to rot lots of other walls.
|
||||
var/rotcount = 0
|
||||
var/actual_severity = severity * rand(5, 10)
|
||||
for(var/turf/simulated/wall/W in range(5, center))
|
||||
if(prob(50))
|
||||
W.rot()
|
||||
apply_to_turf(W)
|
||||
rotcount++
|
||||
|
||||
// Only rot up to severity walls
|
||||
if(rotcount >= actual_severity)
|
||||
break
|
||||
|
||||
/datum/event/wallrot/fungus
|
||||
|
||||
/datum/event/wallrot/fungus/is_valid_candidate(turf/T)
|
||||
return istype(get_area(T), /area/maintenance)
|
||||
|
||||
/datum/event/wallrot/fungus/apply_to_turf(turf/T)
|
||||
new /obj/effect/decal/cleanable/fungus(T)
|
||||
|
||||
Reference in New Issue
Block a user