From e634c802bbf6dc9f81a5a2bbbfc3d56f32156ece Mon Sep 17 00:00:00 2001 From: Seris02 Date: Mon, 16 Jan 2023 14:30:11 +0800 Subject: [PATCH] better dirt persistence --- .../objects/effects/decals/Cleanable/misc.dm | 6 +++--- code/modules/persistence/effects/filth.dm | 1 + code/modules/persistence/effects/filth_vr.dm | 21 +++++++++++++++++++ code/modules/persistence/effects/trash.dm | 1 + vorestation.dme | 1 + 5 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 code/modules/persistence/effects/filth_vr.dm diff --git a/code/game/objects/effects/decals/Cleanable/misc.dm b/code/game/objects/effects/decals/Cleanable/misc.dm index cf26c6463d..b1a521d45d 100644 --- a/code/game/objects/effects/decals/Cleanable/misc.dm +++ b/code/game/objects/effects/decals/Cleanable/misc.dm @@ -38,11 +38,11 @@ icon_state = "dirt" mouse_opacity = 0 -/obj/effect/decal/cleanable/Initialize(var/mapload, var/_age) +/obj/effect/decal/cleanable/dirt/Initialize(var/mapload, var/_age, var/dirt) .=..() var/turf/simulated/our_turf = src.loc - if(our_turf && istype(our_turf) && our_turf.can_dirty && _age) - our_turf.dirt = 101 + if(dirt && our_turf && istype(our_turf) && our_turf.can_dirty) + our_turf.dirt = dirt /obj/effect/decal/cleanable/flour name = "flour" diff --git a/code/modules/persistence/effects/filth.dm b/code/modules/persistence/effects/filth.dm index 166c374c02..0b2a34109b 100644 --- a/code/modules/persistence/effects/filth.dm +++ b/code/modules/persistence/effects/filth.dm @@ -1,6 +1,7 @@ /datum/persistent/filth name = "filth" entries_expire_at = 4 // 4 rounds, 24 hours. + var/saves_dirt = TRUE //VOREStation edit /datum/persistent/filth/IsValidEntry(var/atom/entry) . = ..() && entry.invisibility == 0 diff --git a/code/modules/persistence/effects/filth_vr.dm b/code/modules/persistence/effects/filth_vr.dm new file mode 100644 index 0000000000..7c50e78889 --- /dev/null +++ b/code/modules/persistence/effects/filth_vr.dm @@ -0,0 +1,21 @@ +/datum/persistent/filth/CheckTokenSanity(var/list/token) + . = ..() + return saves_dirt ? . && isnum(token["dirt"]) : . + +/datum/persistent/filth/CreateEntryInstance(var/turf/creating, var/list/token) + var/_path = token["path"] + if (saves_dirt) + new _path(creating, token["age"]+1, token["dirt"]) + else + new _path(creating, token["age"]+1) + +/datum/persistent/filth/proc/GetEntryDirt(var/atom/entry) + var/turf/simulated/T = get_turf(entry) + if (istype(T)) + return T.dirt + return 0 + +/datum/persistent/filth/CompileEntry(var/atom/entry) + . = ..() + if (saves_dirt) + LAZYADDASSOC(., "dirt", GetEntryDirt(entry)) \ No newline at end of file diff --git a/code/modules/persistence/effects/trash.dm b/code/modules/persistence/effects/trash.dm index 3eaa121711..628c1d421f 100644 --- a/code/modules/persistence/effects/trash.dm +++ b/code/modules/persistence/effects/trash.dm @@ -1,5 +1,6 @@ /datum/persistent/filth/trash name = "trash" + saves_dirt = FALSE //VOREStation edit /datum/persistent/filth/trash/CheckTurfContents(var/turf/T, var/list/tokens) var/too_much_trash = 0 diff --git a/vorestation.dme b/vorestation.dme index 20c55d9cfc..25c33c591c 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -3456,6 +3456,7 @@ #include "code\modules\persistence\serialize.dm" #include "code\modules\persistence\datum\persistence_datum.dm" #include "code\modules\persistence\effects\filth.dm" +#include "code\modules\persistence\effects\filth_vr.dm" #include "code\modules\persistence\effects\graffiti.dm" #include "code\modules\persistence\effects\paper.dm" #include "code\modules\persistence\effects\paper_sticky.dm"