Files
Paradise/code/modules/events/wallrot.dm
Contrabang 65ab4a5d89 Refactors station areas to be /area/station subtypes (#21681)
* areas

* progress...

* death hatred and murder

* get current master maps

* hoooly shit i can load up the maps

* it compiles now

* map changes

* fixes some unintended stuff

* make the .dme right

* fix mixed space+tab indents

* more space-tab fixes

* CI, please show me more than 1 CI fail at a time

* UPDATE PATHS!!!

* none of the stations had it anyways, but fixed

* mint wasnt actually deleted, my bad

* epic random CI fail for no reason

* i beg you, CI

* dont delete anything

* okay THAT should work now

* okay get master maps and rerun

* okay THEN run update paths

* actually done now

* oops
2023-09-06 17:37:50 +01:00

45 lines
1.1 KiB
Plaintext

/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) && is_valid_candidate(candidate))
center = candidate
break
if(!center)
return
// Make sure at least one piece of wall rots!
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))
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/station/maintenance)
/datum/event/wallrot/fungus/apply_to_turf(turf/T)
new /obj/effect/decal/cleanable/fungus(T)