From 1f51e73dd622045dea452be1dfc07c55052e4f42 Mon Sep 17 00:00:00 2001 From: TrilbySpaceClone Date: Tue, 7 Apr 2020 08:43:18 -0400 Subject: [PATCH] more rng --- code/_globalvars/lists/maintenance_loot.dm | 7 +- .../game/objects/effects/spawners/lootdrop.dm | 89 ++++++++++++++++++- code/game/objects/items/storage/wallets.dm | 6 +- .../crates_lockers/closets/utility_closets.dm | 12 ++- code/modules/mining/abandoned_crates.dm | 3 +- .../xenobiology/crossbreeding/regenerative.dm | 3 +- 6 files changed, 106 insertions(+), 14 deletions(-) diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index e825233bca..f85503a678 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -34,7 +34,7 @@ GLOBAL_LIST_INIT(maintenance_loot, list( /obj/item/clothing/head/that = 1, /obj/item/clothing/head/ushanka = 1, /obj/item/clothing/head/welding = 1, - /obj/item/clothing/mask/gas = 15, + /obj/effect/spawner/lootdrop/breathing_masks = 15, /obj/item/clothing/suit/hazardvest = 1, /obj/item/clothing/under/misc/vice_officer = 1, /obj/item/clothing/suit/hooded/flashsuit = 2, @@ -86,9 +86,8 @@ GLOBAL_LIST_INIT(maintenance_loot, list( /obj/item/screwdriver = 3, /obj/item/tank/internals/emergency_oxygen = 2, /obj/item/vending_refill/cola = 1, - /obj/item/weldingtool = 3, - /obj/item/wirecutters = 1, - /obj/item/wrench = 4, + /obj/effect/spawner/lootdrop/welder_tools = 3, + /obj/effect/spawner/lootdrop/low_tools = 5, /obj/item/relic = 3, /obj/item/weaponcrafting/receiver = 2, /obj/item/clothing/head/cone = 2, diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index d79fba7172..bdc02877ac 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -263,7 +263,6 @@ LAZYSET(loot, M, our_chance) return ..() - // Tech storage circuit board spawners // For these, make sure that lootcount equals the number of list items @@ -521,3 +520,91 @@ /obj/item/clothing/gloves/combat = 10, /obj/item/clothing/shoes/sneakers/noslip = 10 ) + +/obj/effect/spawner/lootdrop/low_tools + name = "random basic tool(s) spawner" + lootcount = 1 + loot = list( + /obj/item/screwdriver = 1, + /obj/item/wrench = 1, + /obj/item/weldingtool/mini = 1, + /obj/item/crowbar = 1, + /obj/item/wirecutters = 1, + /obj/item/analyzer = 1, + /obj/item/t_scanner = 1 + ) + +/obj/effect/spawner/lootdrop/high_tools + name = "random adv tool(s) spawner" + lootcount = 1 + loot = list( + /obj/item/screwdriver/power = 1, + /obj/item/weldingtool/experimental = 1, + /obj/item/crowbar/power = 1, + /obj/item/analyzer = 1, + /obj/item/multitool = 1 + ) + +/obj/effect/spawner/lootdrop/welder_tools + name = "random safe welder tool(s) spawner" + lootcount = 1 + loot = list( + /obj/item/weldingtool = 1, + /obj/item/weldingtool/mini = 1, + /obj/item/weldingtool/hugetank = 1, + /obj/item/weldingtool/largetank = 1 + ) + +/obj/effect/spawner/lootdrop/tool_box + name = "random safe tool box(es) spawner" + lootcount = 1 + loot = list( + /obj/item/storage/toolbox/mechanical = 1, + /obj/item/storage/toolbox/mechanical/old = 1, + /obj/item/storage/toolbox/emergency = 1, + /obj/item/storage/toolbox/emergency/old = 1, + /obj/item/storage/toolbox/electrical = 1, + /obj/item/storage/toolbox/syndicate = 1, + /obj/item/storage/toolbox/artistic = 1, + /obj/item/storage/toolbox/gold_fake = 1, + /obj/item/storage/toolbox/rubber = 1 + ) + +/obj/effect/spawner/lootdrop/healing_kits + name = "random medical kit(s) spawner" + lootcount = 1 + loot = list( + /obj/item/storage/firstaid/regular = 1, + /obj/item/storage/firstaid/ancient = 1, + /obj/item/storage/firstaid/fire = 1, + /obj/item/storage/firstaid/toxin = 1, + /obj/item/storage/firstaid/radbgone = 1, + /obj/item/storage/firstaid/o2 = 1, + /obj/item/storage/firstaid/brute = 1, + /obj/item/storage/firstaid/tactical = 1 + ) + +/obj/effect/spawner/lootdrop/breathing_tanks + name = "random internal tank(s) spawner" + lootcount = 1 + loot = list( + /obj/item/tank/internals/oxygen = 1, + /obj/item/tank/internals/oxygen/yellow = 1, + /obj/item/tank/internals/oxygen/red = 1, + /obj/item/tank/internals/air = 1, + /obj/item/tank/internals/plasmaman = 1, + /obj/item/tank/internals/plasmaman/belt = 1, + /obj/item/tank/internals/emergency_oxygen = 1, + /obj/item/tank/internals/emergency_oxygen/engi = 1, + /obj/item/tank/internals/emergency_oxygen/double = 1 + ) + +/obj/effect/spawner/lootdrop/breathing_masks + name = "random internal mask(s) spawner" + lootcount = 1 + loot = list( + /obj/item/clothing/mask/gas = 2, + /obj/item/clothing/mask/gas/glass = 4, + /obj/item/clothing/mask/breath = 5, + /obj/item/clothing/mask/breath/medical = 1 + ) \ No newline at end of file diff --git a/code/game/objects/items/storage/wallets.dm b/code/game/objects/items/storage/wallets.dm index 27cd9c8908..1af58011bd 100644 --- a/code/game/objects/items/storage/wallets.dm +++ b/code/game/objects/items/storage/wallets.dm @@ -101,11 +101,11 @@ icon_state = "random_wallet" /obj/item/storage/wallet/random/PopulateContents() - var/item1_type = pick( /obj/item/stack/spacecash/c10, /obj/item/stack/spacecash/c100, /obj/item/stack/spacecash/c1000, /obj/item/stack/spacecash/c20, /obj/item/stack/spacecash/c200, /obj/item/stack/spacecash/c50, /obj/item/stack/spacecash/c500) + var/item1_type = /obj/effect/spawner/lootdrop/space_cash var/item2_type if(prob(50)) - item2_type = pick( /obj/item/stack/spacecash/c10, /obj/item/stack/spacecash/c100, /obj/item/stack/spacecash/c1000, /obj/item/stack/spacecash/c20, /obj/item/stack/spacecash/c200, /obj/item/stack/spacecash/c50, /obj/item/stack/spacecash/c500) - var/item3_type = pick( /obj/item/coin/silver, /obj/item/coin/silver, /obj/item/coin/gold, /obj/item/coin/iron, /obj/item/coin/iron, /obj/item/coin/iron ) + item2_type = /obj/effect/spawner/lootdrop/space_cash + var/item3_type = /obj/effect/spawner/lootdrop/coin spawn(2) if(item1_type) diff --git a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm index a8f3dc0676..9cfd4e62c8 100644 --- a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm @@ -26,7 +26,7 @@ if (prob(40)) new /obj/item/storage/toolbox/emergency(src) - switch (pickweight(list("small" = 40, "aid" = 25, "tank" = 20, "both" = 10, "nothing" = 5))) + switch (pickweight(list("small" = 35, "aid" = 25, "tank" = 20, "both" = 10, "nothing" = 5, "rng" = 5))) if ("small") new /obj/item/tank/internals/emergency_oxygen(src) new /obj/item/tank/internals/emergency_oxygen(src) @@ -49,6 +49,12 @@ if ("nothing") // doot + if ("rng") + new /obj/effect/spawner/lootdrop/breathing_tanks(src) + new /obj/effect/spawner/lootdrop/breathing_tanks(src) + new /obj/effect/spawner/lootdrop/breathing_masks(src) + new /obj/effect/spawner/lootdrop/breathing_masks(src) + return /* @@ -100,13 +106,15 @@ if(prob(70)) new /obj/item/wrench(src) if(prob(70)) - new /obj/item/weldingtool(src) + new /obj/effect/spawner/lootdrop/welder_tools(src) if(prob(70)) new /obj/item/crowbar(src) if(prob(70)) new /obj/item/wirecutters(src) if(prob(70)) new /obj/item/t_scanner(src) + if(prob(70)) + new /obj/effect/spawner/lootdrop/low_tools(src) //Spare random basic tool if(prob(20)) new /obj/item/storage/belt/utility(src) if(prob(30)) diff --git a/code/modules/mining/abandoned_crates.dm b/code/modules/mining/abandoned_crates.dm index 916fb50844..94f5be65bf 100644 --- a/code/modules/mining/abandoned_crates.dm +++ b/code/modules/mining/abandoned_crates.dm @@ -75,8 +75,7 @@ new /obj/item/clothing/neck/petcollar(src) if(63 to 64) for(var/i in 1 to rand(4, 7)) - var/newcoin = pick(/obj/item/coin/silver, /obj/item/coin/silver, /obj/item/coin/silver, /obj/item/coin/iron, /obj/item/coin/iron, /obj/item/coin/iron, /obj/item/coin/gold, /obj/item/coin/diamond, /obj/item/coin/plasma, /obj/item/coin/uranium) - new newcoin(src) + new /obj/effect/spawner/lootdrop/coin(src) if(65 to 66) new /obj/item/clothing/suit/ianshirt(src) new /obj/item/clothing/suit/hooded/ian_costume(src) diff --git a/code/modules/research/xenobiology/crossbreeding/regenerative.dm b/code/modules/research/xenobiology/crossbreeding/regenerative.dm index d230c22d2f..b33cee3a64 100644 --- a/code/modules/research/xenobiology/crossbreeding/regenerative.dm +++ b/code/modules/research/xenobiology/crossbreeding/regenerative.dm @@ -200,8 +200,7 @@ Regenerative extracts: colour = "gold" /obj/item/slimecross/regenerative/gold/core_effect(mob/living/target, mob/user) - var/newcoin = pick(/obj/item/coin/silver, /obj/item/coin/iron, /obj/item/coin/gold, /obj/item/coin/diamond, /obj/item/coin/plasma, /obj/item/coin/uranium) - var/obj/item/coin/C = new newcoin(target.loc) + var/obj/item/coin/C = new /obj/effect/spawner/lootdrop/coin(target.loc) playsound(C, 'sound/items/coinflip.ogg', 50, 1) target.put_in_hand(C)