Files
Bubberstation/code/modules/vending/security.dm
Krysonism 075de00420 Chekov's Canister! Adds missing resupply canisters, makes them constructable & spawn in maint,. (#93028)
## About The Pull Request

This is was created because I found several rare and exciting canisters
in game and then finding out there is no way to actually construct the
vendor they belong to!...

<img width="768" height="385" alt="image"
src="https://github.com/user-attachments/assets/70261cea-daaf-41df-a212-21cef6d6bd0c"
/>

### This PR:

* Makes all noteable vendors constructable, if you have the canister. 
* Adds canisters to syndismokes, syndiechem, liberation station,
magivend, shambler's juice and bombuddy
* Replaces the old tptally random canisters spawner, with a variety of
spawners weighted for power and split according to different themes.
* Adds the new main canister spawner to maint. 

### Spawner weights

The random canister spawner from maintenance has a:

* **93,5%** chance to spawn a common station vendor refill(with weights
for wardrobes being somewhat reduced.)
* **6%** chance to spawn a rare and special vendor refill.
* **0.5%** chance to spawn a oddity level., super powerful vendor
refill.

## Why It's Good For The Game

One must never place a filled canister in maint if it isn't going to be
constructed It's wrong to make promises you don't mean to keep.

## Changelog

🆑
add: Nearly all notable vendors are now constructable if you have the
canister.
add Added refill canisters for syndiesmokes, liberation station,
magivend, bombuddy 3000, shambler's juice and syndichem.
add: Random vending refill canisters now have a chance to spawn in
maint.
image: Robco Toolmaker and Centdrobe canisters have new sprites.
/🆑
2025-10-02 20:12:46 +02:00

53 lines
1.9 KiB
Plaintext

/obj/machinery/vending/security
name = "\improper SecTech"
desc = "A security equipment vendor."
product_ads = "Crack communist skulls!;Beat some heads in!;Don't forget - harm is good!;Your weapons are right here.;Handcuffs!;Freeze, scumbag!;Don't tase me bro!;Tase them, bro.;Why not have a donut?"
icon_state = "sec"
icon_deny = "sec-deny"
panel_type = "panel6"
light_mask = "sec-light-mask"
products = list(
/obj/item/restraints/handcuffs = 8,
/obj/item/restraints/handcuffs/cable/zipties = 10,
/obj/item/grenade/flashbang = 4,
/obj/item/assembly/flash/handheld = 5,
/obj/item/food/donut/plain = 12,
/obj/item/storage/box/evidence = 6,
/obj/item/flashlight/seclite = 4,
/obj/item/restraints/legcuffs/bola/energy = 7,
/obj/item/clothing/gloves/tackler = 5,
/obj/item/holosign_creator/security = 2,
/obj/item/gun_maintenance_supplies = 2,
)
contraband = list(
/obj/item/clothing/glasses/sunglasses = 2,
/obj/item/storage/fancy/donut_box = 2,
)
premium = list(
/obj/item/storage/belt/security/webbing = 5,
/obj/item/coin/antagtoken = 1,
/obj/item/clothing/head/helmet/blueshirt = 1,
/obj/item/clothing/gloves/color/black/security/blu = 1,
/obj/item/clothing/suit/armor/vest/blueshirt = 1,
/obj/item/grenade/stingbang = 1,
/obj/item/watertank/pepperspray = 2,
/obj/item/storage/belt/holster/energy = 4,
)
refill_canister = /obj/item/vending_refill/security
default_price = PAYCHECK_CREW
extra_price = PAYCHECK_COMMAND * 1.5
payment_department = ACCOUNT_SEC
/obj/machinery/vending/security/pre_throw(obj/item/thrown_item)
if(isgrenade(thrown_item))
var/obj/item/grenade/thrown_grenade = thrown_item
thrown_grenade.arm_grenade()
else if(istype(thrown_item, /obj/item/flashlight))
var/obj/item/flashlight/thrown_flashlight = thrown_item
thrown_flashlight.set_light_on(TRUE)
thrown_flashlight.update_brightness()
/obj/item/vending_refill/security
machine_name = "SecTech"
icon_state = "refill_sec"