From ac6231b43255948bb6fd0d54fdc00a161f986258 Mon Sep 17 00:00:00 2001 From: Da Cool Boss <142358580+DaCoolBoss@users.noreply.github.com> Date: Mon, 30 Sep 2024 23:11:23 +0100 Subject: [PATCH] Rebalances Donksoft vendors. (#86542) ## About The Pull Request ![!](https://i.imgur.com/bml0Ivn.png) ![!](https://i.imgur.com/TVDaHPa.png) ![!](https://i.imgur.com/p098Hd4.png) Notable changes: - Prices have been increased across the board. They're about on par with the good clean fun vendor now. - Less of each item. The machine will have to be restocked more often. - Fake emags and fake hot potatoes are now avaliable. - The ammo boxes are half-size boxes (20 darts) in the non-syndicate vendor. Each foam dart costs 5 credits, and every riot dart costs 10 credits. The syndicate vendor sells the old size of boxes (40 darts) for the same price, getting twice as many darts per credit. - Syndicate balloon is now in the contraband section. There is only one of them per vendor and they cost 999 credits. - Replica space suits come in boxes now, instead of the parts being bought seperately. - All toy guns bought from the syndicate vendor are loaded with riot darts. - No more discounts for service jobs. Everyone pays the full price. ## Why It's Good For The Game The current vendor isn't balanced very well, the pricing is a placeholder and the vast amounts of gear in them make them a destabilizing element when it makes its way on station. Spawning a lot of high-end riot dart guns is easy, and the fact that this has 5 syndicate balloons with a value of 20 telecrystals avaliable for effectively free is simply absurd. Reining it in a little makes it easier for mappers and admins to put these machines in player-accessible spots without worrying about it derailing rounds or empowering griefers. Additionally, this change makes this vendor play nicer with the new vending restock economy. None of the pricing changes affect any vending machine that was mapped in off the station z-level. Lavaland syndicates will continue not to be charged for using their machine. ## Changelog :cl: balance: Donksoft vendors now stock slightly more items, slightly less of each item, and has increased prices across the board. /:cl: --- .../LavaRuins/lavaland_surface_pizzaparty.dmm | 2 +- _maps/RandomZLevels/SnowCabin.dmm | 2 +- .../items/storage/boxes/clothes_boxes.dm | 4 +-- code/modules/mining/abandoned_crates.dm | 2 +- .../boxes_magazines/internal/toy.dm | 6 ++++ .../modules/projectiles/guns/ballistic/toy.dm | 12 ++++--- code/modules/vending/liberation_toy.dm | 35 ++++++++++--------- code/modules/vending/toys.dm | 34 ++++++++++-------- 8 files changed, 56 insertions(+), 41 deletions(-) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm index 5653125ca0e..6e29288ba67 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm @@ -376,7 +376,7 @@ /obj/item/storage/box/lights/bulbs, /obj/item/storage/toolbox/mechanical/old, /obj/item/gift{ - contains_type = /obj/item/gun/ballistic/automatic/toy/unrestricted + contains_type = /obj/item/gun/ballistic/automatic/toy }, /obj/item/gift{ contains_type = /obj/item/gun/ballistic/automatic/pistol/toy diff --git a/_maps/RandomZLevels/SnowCabin.dmm b/_maps/RandomZLevels/SnowCabin.dmm index bfbc5a18c56..0c30bb3c51d 100644 --- a/_maps/RandomZLevels/SnowCabin.dmm +++ b/_maps/RandomZLevels/SnowCabin.dmm @@ -4122,7 +4122,7 @@ pixel_x = -1; pixel_y = 10 }, -/obj/item/gun/ballistic/shotgun/toy/unrestricted{ +/obj/item/gun/ballistic/shotgun/toy{ pixel_y = -2 }, /obj/effect/light_emitter{ diff --git a/code/game/objects/items/storage/boxes/clothes_boxes.dm b/code/game/objects/items/storage/boxes/clothes_boxes.dm index 582b611186c..86cd3931f1e 100644 --- a/code/game/objects/items/storage/boxes/clothes_boxes.dm +++ b/code/game/objects/items/storage/boxes/clothes_boxes.dm @@ -38,8 +38,8 @@ new /obj/item/stack/sticky_tape(src) /obj/item/storage/box/fakesyndiesuit - name = "boxed space suit and helmet" - desc = "A sleek, sturdy box used to hold replica spacesuits." + name = "boxed replica space suit and helmet" + desc = "A sleek, sturdy box used to hold toy spacesuits." icon_state = "syndiebox" illustration = "syndiesuit" diff --git a/code/modules/mining/abandoned_crates.dm b/code/modules/mining/abandoned_crates.dm index 40cb967d3a0..10b2fbe71d0 100644 --- a/code/modules/mining/abandoned_crates.dm +++ b/code/modules/mining/abandoned_crates.dm @@ -246,7 +246,7 @@ new /obj/item/clothing/mask/balaclava(src) new /obj/item/gun/ballistic/shotgun/toy(src) new /obj/item/gun/ballistic/automatic/pistol/toy(src) - new /obj/item/gun/ballistic/automatic/toy/unrestricted(src) + new /obj/item/gun/ballistic/automatic/toy(src) new /obj/item/gun/ballistic/automatic/l6_saw/toy/unrestricted(src) new /obj/item/ammo_box/foambox(src) if(98) diff --git a/code/modules/projectiles/boxes_magazines/internal/toy.dm b/code/modules/projectiles/boxes_magazines/internal/toy.dm index 639323f81d8..395ad80972b 100644 --- a/code/modules/projectiles/boxes_magazines/internal/toy.dm +++ b/code/modules/projectiles/boxes_magazines/internal/toy.dm @@ -3,5 +3,11 @@ caliber = CALIBER_FOAM max_ammo = 4 +/obj/item/ammo_box/magazine/internal/shot/toy/riot + ammo_type = /obj/item/ammo_casing/foam_dart/riot + /obj/item/ammo_box/magazine/internal/shot/toy/crossbow max_ammo = 5 + +/obj/item/ammo_box/magazine/internal/shot/toy/crossbow/riot + ammo_type = /obj/item/ammo_casing/foam_dart/riot diff --git a/code/modules/projectiles/guns/ballistic/toy.dm b/code/modules/projectiles/guns/ballistic/toy.dm index cb90438f56b..bd84e5f7941 100644 --- a/code/modules/projectiles/guns/ballistic/toy.dm +++ b/code/modules/projectiles/guns/ballistic/toy.dm @@ -15,9 +15,8 @@ gun_flags = TOY_FIREARM_OVERLAY | NOT_A_REAL_GUN casing_ejector = FALSE -/obj/item/gun/ballistic/automatic/toy/unrestricted - pin = /obj/item/firing_pin - +/obj/item/gun/ballistic/automatic/toy/riot + spawn_magazine_type = /obj/item/ammo_box/magazine/toy/smg/riot /obj/item/gun/ballistic/automatic/pistol/toy name = "foam force pistol" desc = "A small, easily concealable toy handgun. Ages 8 and up." @@ -52,8 +51,8 @@ if(chambered && !chambered.loaded_projectile) qdel(chambered) -/obj/item/gun/ballistic/shotgun/toy/unrestricted - pin = /obj/item/firing_pin +/obj/item/gun/ballistic/shotgun/toy/riot + spawn_magazine_type = /obj/item/ammo_box/magazine/internal/shot/toy/riot /obj/item/gun/ballistic/shotgun/toy/crossbow name = "foam force crossbow" @@ -73,6 +72,9 @@ w_class = WEIGHT_CLASS_SMALL gun_flags = NONE +/obj/item/gun/ballistic/shotgun/toy/crossbow/riot + spawn_magazine_type = /obj/item/ammo_box/magazine/internal/shot/toy/crossbow/riot + /obj/item/gun/ballistic/automatic/c20r/toy //This is the syndicate variant with syndicate firing pin and riot darts. name = "donksoft SMG" desc = "A bullpup three-round burst toy SMG, designated 'C-20r'. Ages 8 and up." diff --git a/code/modules/vending/liberation_toy.dm b/code/modules/vending/liberation_toy.dm index 0bfb2e6c2df..e5697793703 100644 --- a/code/modules/vending/liberation_toy.dm +++ b/code/modules/vending/liberation_toy.dm @@ -8,31 +8,34 @@ vend_reply = "Come back for more!" circuit = /obj/item/circuitboard/machine/vending/syndicatedonksofttoyvendor products = list( - /obj/item/gun/ballistic/automatic/toy/unrestricted = 10, - /obj/item/gun/ballistic/automatic/pistol/toy = 10, - /obj/item/gun/ballistic/shotgun/toy/unrestricted = 10, - /obj/item/toy/sword = 10, + /obj/item/card/emagfake = 4, + /obj/item/hot_potato/harmless/toy = 4, + /obj/item/toy/sword = 12, + /obj/item/dualsaber/toy = 12, + /obj/item/toy/foamblade = 12, + /obj/item/gun/ballistic/automatic/pistol/toy/riot = 8, + /obj/item/gun/ballistic/automatic/toy/riot = 8, + /obj/item/gun/ballistic/shotgun/toy/riot = 8, /obj/item/ammo_box/foambox = 20, - /obj/item/toy/foamblade = 10, - /obj/item/toy/balloon/syndicate = 10, - /obj/item/clothing/suit/syndicatefake = 5, - /obj/item/clothing/head/syndicatefake = 5, //OPS IN DORMS oh wait it's just an assistant ) contraband = list( - /obj/item/gun/ballistic/shotgun/toy/crossbow = 10, //Congrats, you unlocked the +18 setting! - /obj/item/gun/ballistic/automatic/c20r/toy/unrestricted/riot = 10, - /obj/item/gun/ballistic/automatic/l6_saw/toy/unrestricted/riot = 10, + /obj/item/toy/balloon/syndicate = 1, + /obj/item/gun/ballistic/shotgun/toy/crossbow/riot = 8, + /obj/item/toy/katana = 12, + ) + premium = list( + /obj/item/toy/cards/deck/syndicate = 12, + /obj/item/storage/box/fakesyndiesuit = 4, + /obj/item/gun/ballistic/automatic/c20r/toy/unrestricted/riot = 4, + /obj/item/gun/ballistic/automatic/l6_saw/toy/unrestricted/riot = 4, /obj/item/ammo_box/foambox/riot = 20, - /obj/item/toy/katana = 10, - /obj/item/dualsaber/toy = 5, - /obj/item/toy/cards/deck/syndicate = 10, //Gambling and it hurts, making it a +18 item ) armor_type = /datum/armor/vending_toyliberationstation resistance_flags = FIRE_PROOF refill_canister = /obj/item/vending_refill/donksoft - default_price = PAYCHECK_COMMAND + default_price = PAYCHECK_CREW extra_price = PAYCHECK_COMMAND - payment_department = ACCOUNT_SRV + payment_department = NO_FREEBIES light_mask = "donksoft-light-mask" /datum/armor/vending_toyliberationstation diff --git a/code/modules/vending/toys.dm b/code/modules/vending/toys.dm index e3f3b3316f2..8f92e438b51 100644 --- a/code/modules/vending/toys.dm +++ b/code/modules/vending/toys.dm @@ -9,27 +9,31 @@ light_mask = "donksoft-light-mask" circuit = /obj/item/circuitboard/machine/vending/donksofttoyvendor products = list( - /obj/item/gun/ballistic/automatic/toy/unrestricted = 10, - /obj/item/gun/ballistic/automatic/pistol/toy = 10, - /obj/item/gun/ballistic/shotgun/toy/unrestricted = 10, - /obj/item/toy/sword = 10, - /obj/item/ammo_box/foambox = 20, - /obj/item/toy/foamblade = 10, - /obj/item/toy/balloon/syndicate = 10, - /obj/item/clothing/suit/syndicatefake = 5, - /obj/item/clothing/head/syndicatefake = 5, + /obj/item/card/emagfake = 4, + /obj/item/hot_potato/harmless/toy = 4, + /obj/item/toy/sword = 12, + /obj/item/toy/foamblade = 12, + /obj/item/gun/ballistic/automatic/pistol/toy = 8, + /obj/item/gun/ballistic/automatic/toy = 8, + /obj/item/gun/ballistic/shotgun/toy = 8, + /obj/item/ammo_box/foambox/mini = 20, ) contraband = list( - /obj/item/gun/ballistic/shotgun/toy/crossbow = 10, - /obj/item/gun/ballistic/automatic/c20r/toy/unrestricted = 10, - /obj/item/gun/ballistic/automatic/l6_saw/toy/unrestricted = 10, - /obj/item/toy/katana = 10, - /obj/item/dualsaber/toy = 5, + /obj/item/toy/balloon/syndicate = 1, + /obj/item/gun/ballistic/shotgun/toy/crossbow = 8, + /obj/item/toy/katana = 12, + /obj/item/ammo_box/foambox/riot/mini = 20, + ) + premium = list( + /obj/item/dualsaber/toy = 4, + /obj/item/storage/box/fakesyndiesuit = 4, + /obj/item/gun/ballistic/automatic/c20r/toy/unrestricted = 4, + /obj/item/gun/ballistic/automatic/l6_saw/toy/unrestricted = 4, ) refill_canister = /obj/item/vending_refill/donksoft default_price = PAYCHECK_CREW extra_price = PAYCHECK_COMMAND - payment_department = ACCOUNT_SRV + payment_department = NO_FREEBIES /obj/item/vending_refill/donksoft machine_name = "Donksoft Toy Vendor"