mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-20 06:32:56 +00:00
* Adds a small cafeteria behind the right wing shutters of the museum. (#81465) ## About The Pull Request I was thinking to contribute something to the new away mission map to make it better. Mapping and all takes too much time for me, so I could do little. Though it comes with its own unique gimmicks. To reach the cafeteria, one has to complete a couple puzzles. The first set is opened by inputing the correct PIN on the password panel beside it. There're several clues to help you guess this fairly easy puzzle, in the form of several number graffitis, a scrapped piece of paper full of numbers, and a board filled with colored dots also found just beside the panel. The second one is opened by a keycard, and is generally lazier. To find it, you'll need to do a bit of (toilet) searching. As for the unique things this PR adds: - A fire extinguisher... that actually contains welding fuel - A (dirt-cheap) hotdog vending machine* - A completely ornamental maneki-neko (that's the name of the luck-bringing, paw-waving cat figurine) - A piggy bank that carries money between rounds. It has a cap of 10k credits worth of holochips, cash and coins, which is pretty high, but I'm confident people will just destroy it for its contents the moment they find it. His name is Pigston Swinelord VI. - More, totally legit and not actually fake bombable walls :^) *By the by, you can also find it during the national hotdog day. Screenshots of the new location:   ## Why It's Good For The Game You know how most away missions are not that special at all? Yeah, @ mc-oofert set an example of a pretty decent one actually, if not a tad small. I thought it could use a touch of another mind actually contributing to it too, because it deserves it. Also, this sets the basis for other persistent piggy banks. I don't think they should all have that 10k cap like this one, perhaps 1k is enough. Beside, the code that mothblocks did for json database datum is pretty good, so there is not a whole lot of shitcode here. ## Changelog 🆑 add: Added a cafeteria to the museum away mission, with a few special things to it. To reach it, you'll have to complete a couple puzzles however. map: The museum away mission now has a couple restrooms. add: Hotdog vending machines may spawn during the National Hot Dog Day. /🆑 * Adds a small cafeteria behind the right wing shutters of the museum. --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
83 lines
2.2 KiB
Plaintext
83 lines
2.2 KiB
Plaintext
/atom/proc/MatchedLinks(id, list/partners)
|
|
|
|
SUBSYSTEM_DEF(queuelinks)
|
|
name = "Queue Links"
|
|
flags = SS_NO_FIRE
|
|
init_order = INIT_ORDER_QUEUELINKS
|
|
///assoc list of pending queues, id = /datum/queue_link
|
|
var/list/queues = list()
|
|
|
|
/datum/controller/subsystem/queuelinks/Initialize()
|
|
return SS_INIT_SUCCESS
|
|
|
|
///Creates or adds to a queue with the id supplied, if the queue is now or above the size of the queue, calls MatchedLinks and clears queue.
|
|
/// queues with a size of 0 wait never pop until something is added with an actual queue_max
|
|
/datum/controller/subsystem/queuelinks/proc/add_to_queue(atom/what, id, queue_max = 0)
|
|
if(!isatom(what))
|
|
CRASH("Attempted to add a non-atom to queue; [what]!")
|
|
if(isnull(id))
|
|
CRASH("Attempted to add to queue with no ID; [what]")
|
|
|
|
var/datum/queue_link/link = queues[id]
|
|
if(isnull(link))
|
|
link = new /datum/queue_link(id)
|
|
queues[id] = link
|
|
|
|
if(link.add(what, queue_max))
|
|
queues -= id
|
|
|
|
/**
|
|
* Pop a queue link without waiting for it to reach its max size.
|
|
* This is useful for those links that do not have a fixed size and thus may not pop.
|
|
*/
|
|
/datum/controller/subsystem/queuelinks/proc/pop_link(id)
|
|
if(isnull(id))
|
|
CRASH("Attempted to pop a queue with no ID")
|
|
|
|
var/datum/queue_link/link = queues[id]
|
|
if(isnull(queues[id]))
|
|
CRASH("Attempted to pop a non-existant queue: [id]")
|
|
|
|
link.pop()
|
|
queues -= id
|
|
|
|
|
|
/datum/queue_link
|
|
/// atoms in our queue
|
|
var/list/partners = list()
|
|
/// how much length until we pop, only incrementable, 0 means the queue will not pop until a maximum is set
|
|
var/queue_max = 0
|
|
/// id
|
|
var/id
|
|
|
|
/datum/queue_link/New(new_id)
|
|
id = new_id
|
|
return ..()
|
|
|
|
///adds an atom to the queue, if we are popping this returns TRUE
|
|
/datum/queue_link/proc/add(atom/what, max = 0)
|
|
. = FALSE
|
|
if(what in partners)
|
|
return
|
|
partners += what
|
|
|
|
if(queue_max != 0 && max != 0 && max != queue_max)
|
|
CRASH("Tried to change queue size to [max] from [queue_max]!")
|
|
else if(!queue_max)
|
|
queue_max = max
|
|
|
|
if(!queue_max || length(partners) < queue_max)
|
|
return
|
|
|
|
pop()
|
|
return TRUE
|
|
|
|
/datum/queue_link/proc/pop()
|
|
for(var/atom/item as anything in partners)
|
|
item.MatchedLinks(id, partners - item)
|
|
qdel(src)
|
|
|
|
/datum/queue_link/Destroy()
|
|
. = ..()
|
|
partners = null
|