Slot Machine DLC - Diversified Debt for Every Department (#95513)

## About The Pull Request
This PR takes the improvements from:
- #95313

And builds on it quite a bit. Slots now have:
- New symbol icons based on SS13 objects instead of Font Awesome icons
- Several new slot machine subtypes for every department
- New slot machine random spawner that is used to replace all slot
machines on all maps
- ~~Greyscaled the slot machine sprite and replaced it with GAGs (to
color them by department)~~
- New rare trap/hazard abilities depending on symbols (syndiebomb =
flashbang, handcuffs = cuff, singulo = shock, etc.)
- Syndie slot machine that comes preinstalled in all syndie
outposts/nuke bases
- Slot machines circuits can be configured with a screwdriver to change
the type and emagging results in the syndicate version
- Tweaked the pixel offset for the jackpot flashing icon so it is in the
correct position
- Improved the name generator with more adjectives and nouns for all
subtypes (ex. clown slot machine = "Lucky Giggles")
- IDs and Department budget cards can be linked as the owner of the slot
machine, however NT takes a 40% cut off the profits since jackpots/bonus
spins are paid out by NT

##### And yes... there is a clown and mime subtype... honk

## Why It's Good For The Game

<img width="1503" height="791" alt="dreamseeker_t8lLODECva"
src="https://github.com/user-attachments/assets/597355be-aee0-483a-82a4-7f8d6fa9ae90"
/>

Better slot machine icons and code.

## Changelog
🆑
add: To help cover budget expenses, NT has redesigned and installed new
slot machines that are themed by department. Slot machines can also be
linked to bank accounts via ID cards or department budget cards. NT
takes a 40% cut of profit to payout major jackpots and bonus spins.
Please gamble responsibly.
map: Replaced all slot machines with slot machine random spawners. Added
syndicate slot machines to Syndicate bases and nuke outposts.
/🆑

---------

Co-authored-by: Lucy <lucy@absolucy.moe>
This commit is contained in:
Tim
2026-04-03 09:25:31 -05:00
committed by GitHub
parent b5a86fe6ce
commit 14c77736e7
27 changed files with 637 additions and 188 deletions
@@ -0,0 +1,24 @@
/datum/asset/spritesheet_batched/slot_machines
name = "slotmachines"
/datum/asset/spritesheet_batched/slot_machines/create_spritesheets()
// initialising the list of items we need
var/list/target_items = list()
for(var/obj/machinery/computer/slot_machine/slot_machine as anything in typesof(/obj/machinery/computer/slot_machine))
slot_machine = new slot_machine()
target_items |= slot_machine.symbol_paths // no dupes
qdel(slot_machine)
for(var/atom/atom as anything in target_items)
var/icon = initial(atom.icon)
var/icon_state = initial(atom.icon_state)
var/id = sanitize_css_class_name("[icon][icon_state]")
var/has_gags = atom::greyscale_config && atom::greyscale_colors
var/has_color = atom::color && icon_state
// GAGS and colored icons must be pregenerated so blacklist them for now
if(has_gags || has_color)
stack_trace("[atom] is either using GAGS or colored icons which is not supported for slot machine reels")
continue
insert_icon(id, uni_icon(icon, icon_state))