Add persistent smartfridges with lossiness

This commit is contained in:
Chompstation Bot
2021-05-15 17:15:26 +00:00
committed by Darlantan
parent faad3af89e
commit 9784331cdb
21 changed files with 682 additions and 183 deletions
+10 -14
View File
@@ -1,26 +1,22 @@
/datum/persistent/filth
name = "filth"
tokens_per_line = 5
entries_expire_at = 4 // 4 rounds, 24 hours.
/datum/persistent/filth/LabelTokens(var/list/tokens)
var/list/labelled_tokens = ..()
labelled_tokens["path"] = text2path(tokens[LAZYLEN(labelled_tokens)+1])
return labelled_tokens
/datum/persistent/filth/IsValidEntry(var/atom/entry)
. = ..() && entry.invisibility == 0
/datum/persistent/filth/CheckTokenSanity(var/list/tokens)
return ..() && ispath(tokens["path"])
/datum/persistent/filth/CheckTokenSanity(var/list/token)
// byond's json implementation is "questionable", and uses types as keys and values without quotes sometimes even though they aren't valid json
token["path"] = istext(token["path"]) ? text2path(token["path"]) : token["path"]
return ..() && ispath(token["path"])
/datum/persistent/filth/CheckTurfContents(var/turf/T, var/list/tokens)
var/_path = tokens["path"]
/datum/persistent/filth/CheckTurfContents(var/turf/T, var/list/token)
var/_path = token["path"]
return (locate(_path) in T) ? FALSE : TRUE
/datum/persistent/filth/CreateEntryInstance(var/turf/creating, var/list/tokens)
var/_path = tokens["path"]
new _path(creating, tokens["age"]+1)
/datum/persistent/filth/CreateEntryInstance(var/turf/creating, var/list/token)
var/_path = token["path"]
new _path(creating, token["age"]+1)
/datum/persistent/filth/GetEntryAge(var/atom/entry)
var/obj/effect/decal/cleanable/filth = entry
@@ -32,4 +28,4 @@
/datum/persistent/filth/CompileEntry(var/atom/entry)
. = ..()
LAZYADD(., "[GetEntryPath(entry)]")
LAZYADDASSOC(., "path", "[GetEntryPath(entry)]")
+9 -14
View File
@@ -1,22 +1,14 @@
/datum/persistent/graffiti
name = "graffiti"
tokens_per_line = 6
entries_expire_at = 4 // This previously was at 50 rounds??? Over 10 days.
has_admin_data = TRUE
/datum/persistent/graffiti/LabelTokens(var/list/tokens)
var/list/labelled_tokens = ..()
var/entries = LAZYLEN(labelled_tokens)
labelled_tokens["author"] = tokens[entries+1]
labelled_tokens["message"] = tokens[entries+2]
return labelled_tokens
/datum/persistent/graffiti/GetValidTurf(var/turf/T, var/list/tokens)
/datum/persistent/graffiti/GetValidTurf(var/turf/T, var/list/token)
var/turf/checking_turf = ..()
if(istype(checking_turf) && checking_turf.can_engrave())
return checking_turf
/datum/persistent/graffiti/CheckTurfContents(var/turf/T, var/list/tokens)
/datum/persistent/graffiti/CheckTurfContents(var/turf/T, var/list/token)
var/too_much_graffiti = 0
for(var/obj/effect/decal/writing/W in .)
too_much_graffiti++
@@ -24,8 +16,10 @@
return FALSE
return TRUE
/datum/persistent/graffiti/CreateEntryInstance(var/turf/creating, var/list/tokens)
new /obj/effect/decal/writing(creating, tokens["age"]+1, tokens["message"], tokens["author"])
/datum/persistent/graffiti/CreateEntryInstance(var/turf/creating, var/list/token)
var/obj/effect/decal/writing/inst = new /obj/effect/decal/writing(creating, token["age"]+1, token["message"], token["author"])
if(token["icon_state"])
inst.icon_state = token["icon_state"]
/datum/persistent/graffiti/IsValidEntry(var/atom/entry)
. = ..()
@@ -40,8 +34,9 @@
/datum/persistent/graffiti/CompileEntry(var/atom/entry, var/write_file)
. = ..()
var/obj/effect/decal/writing/save_graffiti = entry
LAZYADD(., "[save_graffiti.author ? save_graffiti.author : "unknown"]")
LAZYADD(., "[save_graffiti.message]")
LAZYADDASSOC(., "author", "[save_graffiti.author ? save_graffiti.author : "unknown"]")
LAZYADDASSOC(., "message", "[save_graffiti.message]")
LAZYADDASSOC(., "icon_state", "[save_graffiti.icon_state]")
/datum/persistent/graffiti/GetAdminDataStringFor(var/thing, var/can_modify, var/mob/user)
var/obj/effect/decal/writing/save_graffiti = thing
+9 -17
View File
@@ -1,32 +1,24 @@
/datum/persistent/paper
name = "paper"
tokens_per_line = 7
entries_expire_at = 50
has_admin_data = TRUE
var/paper_type = /obj/item/weapon/paper
var/requires_noticeboard = TRUE
/datum/persistent/paper/LabelTokens(var/list/tokens)
var/list/labelled_tokens = ..()
var/entries = LAZYLEN(labelled_tokens)
labelled_tokens["author"] = tokens[entries+1]
labelled_tokens["message"] = tokens[entries+2]
labelled_tokens["title"] = tokens[entries+3]
return labelled_tokens
/datum/persistent/paper/CheckTurfContents(var/turf/T, var/list/tokens)
/datum/persistent/paper/CheckTurfContents(var/turf/T, var/list/token)
if(requires_noticeboard && !(locate(/obj/structure/noticeboard) in T))
new /obj/structure/noticeboard(T)
. = ..()
/datum/persistent/paper/CreateEntryInstance(var/turf/creating, var/list/tokens)
/datum/persistent/paper/CreateEntryInstance(var/turf/creating, var/list/token)
var/obj/structure/noticeboard/board = locate() in creating
if(requires_noticeboard && LAZYLEN(board.notices) >= board.max_notices)
return
var/obj/item/weapon/paper/paper = new paper_type(creating)
paper.info = tokens["message"]
paper.name = tokens["title"]
paper.last_modified_ckey = tokens["author"]
paper.info = token["message"]
paper.name = token["title"]
paper.last_modified_ckey = token["author"]
paper.age = token["age"]+1
if(requires_noticeboard)
board.add_paper(paper)
if(!paper.was_maploaded) // If we were created/loaded when the map was made, skip us!
@@ -40,9 +32,9 @@
/datum/persistent/paper/CompileEntry(var/atom/entry, var/write_file)
. = ..()
var/obj/item/weapon/paper/paper = entry
LAZYADD(., "[paper.last_modified_ckey ? paper.last_modified_ckey : "unknown"]")
LAZYADD(., "[paper.info]")
LAZYADD(., "[paper.name]")
LAZYADDASSOC(., "author", "[paper.last_modified_ckey ? paper.last_modified_ckey : "unknown"]")
LAZYADDASSOC(., "message", "[paper.info]")
LAZYADDASSOC(., "name", "[paper.name]")
/datum/persistent/paper/GetAdminDataStringFor(var/thing, var/can_modify, var/mob/user)
var/obj/item/weapon/paper/paper = thing
@@ -2,27 +2,22 @@
name = "stickynotes"
paper_type = /obj/item/weapon/paper/sticky
requires_noticeboard = FALSE
tokens_per_line = 10
/datum/persistent/paper/sticky/LabelTokens(var/list/tokens)
var/list/labelled_tokens = ..()
var/entries = LAZYLEN(labelled_tokens)
labelled_tokens["offset_x"] = tokens[entries+1]
labelled_tokens["offset_y"] = tokens[entries+2]
labelled_tokens["color"] = tokens[entries+3]
return labelled_tokens
/datum/persistent/paper/sticky/CreateEntryInstance(var/turf/creating, var/list/tokens)
/datum/persistent/paper/sticky/CreateEntryInstance(var/turf/creating, var/list/token)
var/atom/paper = ..()
if(paper)
paper.pixel_x = text2num(tokens["offset_x"])
paper.pixel_y = text2num(tokens["offset_y"])
paper.color = tokens["color"]
if(prob(90))
paper.pixel_x = token["offset_x"]
paper.pixel_y = token["offset_y"]
else
paper.pixel_x = rand(-5,5)
paper.pixel_y = rand(-5,5)
paper.color = token["color"]
return paper
/datum/persistent/paper/sticky/CompileEntry(var/atom/entry, var/write_file)
. = ..()
var/obj/item/weapon/paper/sticky/paper = entry
LAZYADD(., "[paper.pixel_x]")
LAZYADD(., "[paper.pixel_y]")
LAZYADD(., "[paper.color]")
LAZYADDASSOC(., "offset_x", paper.pixel_x)
LAZYADDASSOC(., "offset_y", paper.pixel_y)
LAZYADDASSOC(., "color", paper.color)