From e7e86c3fa0257d080cfde44d5f85d8a233c07211 Mon Sep 17 00:00:00 2001 From: Zonespace <41448081+Zonespace27@users.noreply.github.com> Date: Sun, 15 Oct 2023 12:12:05 -0700 Subject: [PATCH] Nerfs the black market (#4674) # About the pull request - Removed several guns from the black market - Removed extended m4ra mags from black market - Removed monkeycubes from the "food" crate - The black market now requires a specialized tool (sprite by Wei) to hack. Can be found in the scanner object spawner 2.5% of the time. 9 spawners exist on the Almayer, meaning one will normally spawn every 2-3 rounds. - Removed lunge mines from black market # Explain why it's good for the game The black market is not in a good place currently. - It is completely trivial to access the black market, owing to the ease of hacking and the CL's ability to print money. This removes any chance of it being a special thing, instead turning it into an affair that occurs almost every round. - The CMB don't actually fix anything, they just encourage CTs to fuck around with the black market - Many of the things in the black market are just better than marine gear. Removing the really good weapons is the start, I will have to see if anything more is necessary. - Monkey cubes allow for effectively infinite greenoes. The black market shouldn't be significantly impacting a round, and this is directly counter to that. - Lunge mines are dumb as fuck, instantly gib humans (yes even the broken ones do that) and encourage LRP behavior. # Testing Photographs and Procedure
Screenshots & Videos ![image](https://github.com/cmss13-devs/cmss13/assets/41448081/a5f28f12-f660-4d0d-944d-ecfba40879fc)
# Changelog :cl: Zonespace, Wei (sprites) balance: Removed NSG, Type71, tactical Mar-40, and Mar-50 from the black market balance: Removed Ext. M4ra mags from the black market balance: Removed monkeycubes from the black market balance: Removed lunge mines from the black market balance: You now need a modified security access tuner to access the black market, which can be found ship- and ground-side where scanners and radios can spawn. /:cl: --- code/__DEFINES/traits.dm | 3 + code/datums/supply_packs/black_market.dm | 89 +++++------------- code/game/objects/effects/spawners/random.dm | 11 ++- .../objects/items/circuitboards/computer.dm | 9 +- code/game/objects/items/devices/scanners.dm | 10 ++ icons/obj/items/devices.dmi | Bin 46032 -> 47010 bytes 6 files changed, 48 insertions(+), 74 deletions(-) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index b40ae85c3f5f..ef500b6af9f8 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -221,6 +221,9 @@ /// Can lockout blackmarket from ASRS console circuits. #define TRAIT_TOOL_TRADEBAND "t_tool_tradeband" +/// Can hack ASRS consoles to access the black market +#define TRAIT_TOOL_BLACKMARKET_HACKER "t_tool_blackmarket_hacker" + // CLOTHING TRAITS #define TRAIT_CLOTHING_HOOD "t_clothing_hood" diff --git a/code/datums/supply_packs/black_market.dm b/code/datums/supply_packs/black_market.dm index 5f8fae824312..1b8464820bb6 100644 --- a/code/datums/supply_packs/black_market.dm +++ b/code/datums/supply_packs/black_market.dm @@ -127,70 +127,42 @@ Non-USCM items, from CLF, UPP, colonies, etc. Mostly combat-related. spawn_guns() //the crate gives 2 guns /obj/structure/largecrate/black_market/confiscated_weaponry/proc/spawn_guns() - switch(rand(1,6)) + switch(rand(1, 5)) if(1) //pmc - if(prob(50)) - new /obj/item/weapon/gun/rifle/nsg23/no_lock(src) - new /obj/item/ammo_magazine/rifle/nsg23(src) - new /obj/item/ammo_magazine/rifle/nsg23(src) - new /obj/item/ammo_magazine/rifle/nsg23/ap(src) - new /obj/item/ammo_magazine/rifle/nsg23/extended(src) - else - new /obj/item/weapon/gun/smg/fp9000(src) - new /obj/item/ammo_magazine/smg/fp9000(src) - new /obj/item/ammo_magazine/smg/fp9000(src) - new /obj/item/ammo_magazine/smg/fp9000(src) - new /obj/item/ammo_magazine/smg/fp9000(src) + new /obj/item/weapon/gun/smg/fp9000(src) + new /obj/item/ammo_magazine/smg/fp9000(src) + new /obj/item/ammo_magazine/smg/fp9000(src) + new /obj/item/ammo_magazine/smg/fp9000(src) + new /obj/item/ammo_magazine/smg/fp9000(src) if(2) //pizza new /obj/item/weapon/gun/pistol/holdout(src) new /obj/item/ammo_magazine/pistol/holdout(src) if(3) //clf - switch(rand(1, 3)) + switch(rand(1, 2)) if(1) - new /obj/item/weapon/twohanded/lungemine/damaged(src) - if(2) new /obj/item/weapon/gun/smg/uzi(src) new /obj/item/ammo_magazine/smg/uzi/extended(src) new /obj/item/ammo_magazine/smg/uzi(src) new /obj/item/ammo_magazine/smg/uzi(src) - if(3) + if(2) new /obj/item/weapon/gun/smg/mac15(src) new /obj/item/ammo_magazine/smg/mac15/extended(src) new /obj/item/ammo_magazine/smg/mac15(src) new /obj/item/ammo_magazine/smg/mac15(src) if(4) //upp - if(prob(50)) - new /obj/item/weapon/gun/rifle/type71(src) - new /obj/item/ammo_magazine/rifle/type71/ap(src) - new /obj/item/ammo_magazine/rifle/type71(src) - new /obj/item/ammo_magazine/rifle/type71(src) - else - new /obj/item/weapon/gun/shotgun/type23/riot_control(src) - new /obj/item/ammo_magazine/handful/shotgun/heavy/beanbag(src) - new /obj/item/ammo_magazine/handful/shotgun/heavy/beanbag(src) - new /obj/item/ammo_magazine/handful/shotgun/heavy/flechette(src) - new /obj/item/ammo_magazine/handful/shotgun/heavy/flechette(src) - new /obj/item/ammo_magazine/handful/shotgun/heavy/slug(src) - new /obj/item/ammo_magazine/handful/shotgun/heavy/slug(src) //NO buckshot! + new /obj/item/weapon/gun/shotgun/type23/riot_control(src) + new /obj/item/ammo_magazine/handful/shotgun/heavy/beanbag(src) + new /obj/item/ammo_magazine/handful/shotgun/heavy/beanbag(src) + new /obj/item/ammo_magazine/handful/shotgun/heavy/flechette(src) + new /obj/item/ammo_magazine/handful/shotgun/heavy/flechette(src) + new /obj/item/ammo_magazine/handful/shotgun/heavy/slug(src) + new /obj/item/ammo_magazine/handful/shotgun/heavy/slug(src) //NO buckshot! if(5) //freelancer - if(prob(80)) - new /obj/item/weapon/gun/rifle/mar40(src) - new /obj/item/ammo_magazine/rifle/mar40/extended(src) - new /obj/item/ammo_magazine/rifle/mar40(src) - new /obj/item/ammo_magazine/rifle/mar40(src) - else - new /obj/item/weapon/gun/rifle/mar40/lmg(src) - new /obj/item/ammo_magazine/rifle/mar40/lmg(src) - if(6) //VAIPO - if(prob(50)) - new /obj/item/weapon/gun/rifle/mar40/tactical(src) - new /obj/item/ammo_magazine/rifle/mar40/extended(src) - new /obj/item/ammo_magazine/rifle/mar40/extended(src) - new /obj/item/ammo_magazine/rifle/mar40(src) - else - new /obj/item/weapon/gun/rifle/mar40/lmg(src) - new /obj/item/ammo_magazine/rifle/mar40/lmg(src) - new /obj/item/ammo_magazine/rifle/mar40/lmg(src) + new /obj/item/weapon/gun/rifle/mar40(src) + new /obj/item/ammo_magazine/rifle/mar40/extended(src) + new /obj/item/ammo_magazine/rifle/mar40(src) + new /obj/item/ammo_magazine/rifle/mar40(src) + /* Misc. Individual Guns */ @@ -561,10 +533,6 @@ Primarily made up of things that would be best utilized, well, shipside. Recreat /obj/item/reagent_container/food/snacks/egg/random, /obj/item/reagent_container/food/snacks/egg/random, //not a dupe /obj/item/reagent_container/food/snacks/xemeatpie, - /obj/item/reagent_container/food/snacks/monkeycube, - /obj/item/reagent_container/food/snacks/monkeycube/farwacube, - /obj/item/reagent_container/food/snacks/monkeycube/stokcube, - /obj/item/reagent_container/food/snacks/monkeycube/yirencube, /obj/item/reagent_container/food/snacks/upp, /obj/item/reagent_container/food/snacks/mre_pack/xmas1, /obj/item/reagent_container/food/snacks/mre_pack/xmas2, @@ -722,13 +690,6 @@ USCM spare items, miscellaneous gear that's too niche and distant (or restricted dollar_cost = 50 containertype = /obj/structure/largecrate/black_market -/datum/supply_packs/contraband/surplus/surplus_m4ra_extended - name = "surplus magazine box (Ext M4RA x 12)" - contains = list(/obj/item/ammo_box/magazine/m4ra/ext) - dollar_cost = 45 - crate_heat = 3 - containertype = /obj/structure/largecrate/black_market - /* - Misc. USCM weaponry - */ /datum/supply_packs/contraband/surplus/mk45_automag @@ -1108,7 +1069,7 @@ Things that don't fit anywhere else. If they're meant for shipside use, they pro new /obj/item/ammo_magazine/smg/mac15/extended(loc) new /obj/item/ammo_magazine/smg/mac15/extended(loc) loot_message = SPAN_NOTICE("It's some CLF SMG armaments.") - if(21 to 25) + if(21 to 29) // Discovered Yautja ruins.. (None of these will trigger any alarms. They are far too old, degraded, and useless for any Yautja to care.) new /obj/item/clothing/mask/yautja_flavor(loc) new /obj/item/clothing/suit/armor/yautja_flavor(loc) @@ -1116,13 +1077,7 @@ Things that don't fit anywhere else. If they're meant for shipside use, they pro new /obj/item/weapon/twohanded/yautja/glaive/damaged(loc) new /obj/item/stack/yautja_rope(loc) loot_message = SPAN_NOTICE("It's some strange ancient gear...?") - if(26 to 30) - // Damaged lunge mines, don't let the marines near these. Not even *close* to effective against even a runner. - new /obj/item/weapon/twohanded/lungemine/damaged(loc) - new /obj/item/weapon/twohanded/lungemine/damaged(loc) - new /obj/item/weapon/twohanded/lungemine/damaged(loc) - loot_message = SPAN_NOTICE("It's a bunch of lunge mines..?") - if(31 to 35) + if(30 to 35) // CLF nades! loot_message = SPAN_NOTICE("It's a package of assorted CLF grenades!") var/list/nades_to_pick = list( diff --git a/code/game/objects/effects/spawners/random.dm b/code/game/objects/effects/spawners/random.dm index 450981377a73..a70fb5588f84 100644 --- a/code/game/objects/effects/spawners/random.dm +++ b/code/game/objects/effects/spawners/random.dm @@ -57,10 +57,13 @@ icon_state = "atmos" /obj/effect/spawner/random/technology_scanner/item_to_spawn() - return pick(prob(5);/obj/item/device/t_scanner,\ - prob(2);/obj/item/device/radio,\ - prob(5);/obj/item/device/analyzer) - + return pick_weight(list( + "none" = 10, + /obj/item/device/t_scanner = 10, + /obj/item/device/radio = 8, + /obj/item/device/analyzer = 10, + /obj/item/device/black_market_hacking_device = 2, + )) /obj/effect/spawner/random/powercell name = "Random Powercell" diff --git a/code/game/objects/items/circuitboards/computer.dm b/code/game/objects/items/circuitboards/computer.dm index db19b79ac0fd..7276e8a7f051 100644 --- a/code/game/objects/items/circuitboards/computer.dm +++ b/code/game/objects/items/circuitboards/computer.dm @@ -177,7 +177,11 @@ /obj/item/circuitboard/computer/supplycomp/attackby(obj/item/tool, mob/user) if(HAS_TRAIT(tool, TRAIT_TOOL_MULTITOOL)) - to_chat(user, SPAN_WARNING("You start messing around with the electronics of \the [src]...")) + to_chat(user, SPAN_WARNING("You try to pulse the circuit board, but nothing happens. Maybe you need something more specialized?")) + return + + else if(HAS_TRAIT(tool, TRAIT_TOOL_BLACKMARKET_HACKER)) + to_chat(user, SPAN_WARNING("You start messing around with the electronics of [src]...")) if(do_after(user, 8 SECONDS, INTERRUPT_ALL, BUSY_ICON_FRIENDLY)) if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) to_chat(user, SPAN_WARNING("You have no idea what you're doing.")) @@ -191,8 +195,7 @@ to_chat(user, SPAN_WARNING("You weaken the broadcasting function with \the [tool], and the red light stops blinking, turning off. It's probably good now.")) contraband_enabled = FALSE - if(HAS_TRAIT(tool, TRAIT_TOOL_TRADEBAND)) - + else if(HAS_TRAIT(tool, TRAIT_TOOL_TRADEBAND)) if(!skillcheck(user, SKILL_POLICE, SKILL_POLICE_SKILLED)) to_chat(user, SPAN_NOTICE("You do not know how to use [tool]")) return diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 38ff8859ef97..512ca8baad9b 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -457,6 +457,16 @@ FORENSIC SCANNER playsound(user, 'sound/machines/twobeep.ogg', 15, TRUE) to_chat(user, SPAN_NOTICE("You scan [hit_atom] and notice a reading on [src]'s pad, it says: ITEM HAS [market_value] VALUE ")) +/obj/item/device/black_market_hacking_device + name = "modified security access tuner" + desc = "A security access tuner with wires and electrical pins sticking out at odd angles. A handwritten label on the bottom says something about the ASRS system." + icon_state = "bm_hacker" + item_state = "analyzer" + w_class = SIZE_SMALL + flags_atom = FPRINT + flags_equip_slot = SLOT_WAIST + inherent_traits = list(TRAIT_TOOL_BLACKMARKET_HACKER) + /obj/item/device/cmb_black_market_tradeband name = "\improper CMB Tradeband Compliance Device" desc = "A device used to reset any tampering done to trading devices' signal range. Occasionally used to fix any signal chips damaged in an accident, but often for malpractice in trading. Use this with caution, as it will also reset any evidence of potential illicit trade. Created to fulfill a joint-organization requirement for CMB-ICC teams on the frontier, where tampered machinery was difficult to move and refurbish. Smugglers beware." diff --git a/icons/obj/items/devices.dmi b/icons/obj/items/devices.dmi index 8bf7634a7df44ad715301b3e9605eb266069fcee..9e0891f361702c51fe083b5b99ca5e9d4affd4f8 100644 GIT binary patch delta 2617 zcmYjSdpy(o8~;v3xt~grxVLP%~Mp%RguavNQ2F14uKim^hGOXe1` zG|6SIle;a2x!*Qvv&&iM{9eD;`TX&DJ+II6Jn!f8ykF0yhbcx}7JH-)>V2zGEv}|H zjw_Aq9nYL7Zd-Tmn+#j$57x|$c7q=aLB__WPuh<3pC+w|o8^lAc9x`{A0vhNo}t-o zBKMVX9=8kGqWyrP`)1~iwSf*B-ln7zeypQ9IV0bQD=(MTqe@kM7U0_V=xCUhvPO0Q zYT!X?waW<7rn(?-K2*JvU-i+!^i)xZC9+P2=IY6JCBilVI0BrWqLuGE5&s}R71JX%VP5+#hkG*4;eYRD{2-% zxnD<`gjLELOYe`Ztx^>v(!_d1{!R;e+2$(e=~DS-4Z^FHCshtWAP^wVA&b#aYqDUb z8j?0Y)Pl}0frShdx+JHfq%LOWDr>s4z)Q+`Cjx5s{E=Cc7kOkA2QP<( ziC?aoB>f7|H#CGh*9ol}wWOaqYG|m>_!d<^e%-a-X+J~BnGEJ0LQBj%8#2EN{lZFBFeQ|r%RprejSLVOqd4+ zl^izqd<#4DJu4etSy_qMbG@T|x7tY<3>Ke{_nW@3%B6kJboNlcBFJ(T_#=_Mp~l&X zql>6tj?)An?ww{;RaMcjzeU13_{EDCO8|FJ)L!18a)W(jawg|sP)|i?R}FU^n)*P^ z9J$lzxm}@ejpU)>#1sX$!Z;%%qa*10i?Rpi91@d~K;nrhn1>JLXwpD*BW2<&`#wH7 z>chw&!P-zsfz`nV^ zDDbTOm!sB;QkjGy4ifpcMGTi#BGTXH|2X>NPgj;dh1c8#g(Pakq&hU~oT26|d`Z8- zo^hyZAlkypUO9ryd4HO*5^&#Cq*W7JUt?&WpPVbiYcabCpC>3-5U`Ixzqgin*!h1} z7n`LI8uouV`D4q{P#dkFWPf|qRhC3=?;?B?Mh`@gy@d$jje&kcT}=37*g+(u!WJoU z*7D+mtU4`8D=Wmd%{}S!(x>rq&-%6*Fh-)@i=dBb9FqlB?!E#0QsN6SGMnVk`ZJ67 zGRekkZh&HnGqFy|wW*Z(aVhLwBd$)5ipTSc+V5V8X)&fm8x=5xPKOGFlE8{R<9FLD z%7)i&Z9jKTUKTHW+Zq20JIgMElaOtXRJUxF=$ZD{zwu)^82(Pkomoj#{uDLO+9)jC z0vP&T76VY9TUNM>n7}9Rx%#1@p&^_#znf9);Gc!daPFoE^L+m{eZ*T4Q&c4f(9v)E zDBV96kv29z6>;?9!LPgp+AgDH&cGBQDEg0HrG{tE#dQ&4J%S(D5h+07X942ax&i|X zw%BNv*={h97wNn8Ld_Ix&o1wOxVLh`es~B*96&QLbT5JNT#GIuX6-hSL3AYlf^p9B1H1% zx@f8wN>J)i*3WCGBDG#HDIQmLI;uk3e z4A2kOvYG%p|%|aw>T$CI-3@{vT6$ae{5HyS;AS1nX1;AHNEaJF4S-OU|n=e1&$~Qpckm+N67+f#jV__U5KQqjtIg1CemFUZ@cM%mj@J`W{!|+y!O`HX+>EGPq{n%x z^Px78$*xlN>#wcl1a7yvC#}~sN@`gtWG z-t8asYGAfX)3x+|^||71^Z#zfTH;nwAeI$$VU|t(>t1ZNf~Tl#ui<01kI9TJZy+#I z^>(LUZb$F@Kx67vYP6-R!@xl5X6nQ&D>t`!NXdlD$TX1(>5{;`vLf0CNc$q;7RgtN22TU7_W`0~V`Yad IweY_4H-m>SHvj+t delta 1632 zcmV-m2A}z&?*h>00+1vD#jz!}1Q*EMh<>iV|N2&a`}t$?KO(>_4eLfBue1IHKA-{) zinBhYeh7b`&?fIVj^m$R^a$9#W8;W)q=E)zZciEu|I2!w?V44(Su0w5Ix`d45lxJnt8j zKIs$v{F2M_<@ftOzXy;ceemA9HM2TS&SK}!3;%!V%b|ZCb!b8~am z86ip9wr$(GqR7+|n5|SQDH@HcSS%VTgo^iPbYps|?)e>i_ml4e1rPv0Qe~Frn@@V{ zo|7tfxvsoF8p&iTcYS(wlY{daUv}~Hs$1JlErHpM&(Ubq=nPObe{n^U6z%M&IVRs7 z3Lt*~K()7LqgkCyCKFjPI3{Ni^ytweZU5|Z?da~-?81VI*RRz)9Cht7nRB+t3-
`<%d*O`SWNMFr4cum%c)Q(D4R92okE!NGnq`JUjBh& zUZ>ah;K75+CWzOsskr*L-rnA7kux(hBk6y|(pOhkm*)>cwTqwg=g%8&@OSQZTw1Ig zo1B4ZmwXB!04*hzO6jNch3f11;+#^c6!|{qTb5O`sj0~gPVJ>H=iWZfB{Anrkt98R z`qb0n$HYTVH{zW2u=`&8nt=&&J_QhfmM}g(UcPwoqGGX_Bvof1=8JQhn3zy1l`4M^ z3=AldNO*GbA^-LAozMI8VjOGP#ZA3ko$W%$%YvuX*fSu}&W@U6^4*~T0?-mJU%8}M zET;KlrI9t4d$GUAd~r^(SWK6%Tv8&DAm7LQKPJrY>>j4#=5@47502mY6hHu4!bjVC z6pzQ1PNySMWky2My4POk=kxjFl8%234h|lWqIU;F9(yi5>k=4Id-{WQenlV(f zz0UXh`v**81_(gQ$Y!$<%c?Zl+A|@hZUaxJ(-F(E%BxE~k-ok@NtI$`e0<#V0>GJ{ zNF*Z8!pB6ump!(U9Nr`2c?av;$W=L7yHv zQGVycZpGst*L_becT@i^E$D{}KR12*bn=^@&rZ+)fG}$4Sz!D2?5cY%m%G{UV8{WtA+;1YN`X0G&J)*V!{UNz&OfIh{NeZ`z=On7?!P7T@yk%{(#w z`2he3vW5#F=SAOnF*e0n^z7Wd#n=3kr{cOd^TgMD)1MyzfFOT!-2=35&n}HgT3VKt zmMa(i@4nB~ocEG5-_Eti;a9%jpWkFY008a4bpdqy&Rq=*{iyEl?sexD78Z2-&fTUA zjQrNj2LPZQxGsQ-_h)otdaCaE9eek0YCz<-c0K?A?V#Zvpwi-sN{cJ&j!hxo-+TZ7 zf~=u^fF#K}cu0SeG&?<2b8HIv{^kP!5M&J(K+fHUON*7`Xs5X+k(2LlJ^%ng)|43_ zyYIxW84&W#=K}x`WSgD=igtF?9GgPEzxe*^mIJ