From 4800514be4386b2e97e563515a04be0cb96c17e6 Mon Sep 17 00:00:00 2001 From: "DESKTOP-4BUBN9N\\Mike" Date: Mon, 21 Nov 2022 21:56:16 +0000 Subject: [PATCH] Makes lootboxes a hell of a lot more random --- code/modules/mining/abandonedcrates.dm | 5 + code/modules/mining/abandonedcrates_vr.dm | 119 +++++++++++++++++++++- 2 files changed, 123 insertions(+), 1 deletion(-) diff --git a/code/modules/mining/abandonedcrates.dm b/code/modules/mining/abandonedcrates.dm index 3d2df063b5d..f0ac7c002e2 100644 --- a/code/modules/mining/abandonedcrates.dm +++ b/code/modules/mining/abandonedcrates.dm @@ -18,6 +18,8 @@ generate_loot() +/* Vorestation edit - see abandonedcrates_vr.dm for virgo version. Keeping legacy proc in comments for reference. + /obj/structure/closet/crate/secure/loot/proc/generate_loot() var/loot = rand(1, 100) switch(loot) @@ -143,6 +145,9 @@ if(100) new/obj/item/device/personal_shield_generator/belt/mining/loaded(src) +vorestation edit end */ + + /obj/structure/closet/crate/secure/loot/togglelock(mob/user as mob) if(!locked) return diff --git a/code/modules/mining/abandonedcrates_vr.dm b/code/modules/mining/abandonedcrates_vr.dm index 66bde0b4ffb..28979fd46cc 100644 --- a/code/modules/mining/abandonedcrates_vr.dm +++ b/code/modules/mining/abandonedcrates_vr.dm @@ -1,2 +1,119 @@ /obj/structure/closet/crate/secure/loot - tamper_proof = 2 \ No newline at end of file + tamper_proof = 2 + +/obj/structure/closet/crate/secure/loot/proc/generate_loot() + var/lootvalue = 0 + while(lootvalue <= 10) //if the initial generation gives you less than 10 points of stuff, add more stuff + //decide how valuable the thing should be + var/choice = list() + choice = pickweight(list( + list(/obj/item/weapon/storage/backpack/dufflebag/cratebooze,5) = 5, + list(/obj/item/weapon/storage/backpack/dufflebag/cratedrills, 5) = 5, + list(/obj/item/weapon/reagent_containers/glass/beaker/bluespace, 3) = 5, + list(/obj/item/weapon/ore/diamond, 1) = 10, + list(/obj/item/weapon/ore/osmium, 1) = 10, + list(/obj/item/weapon/ore/hydrogen, 1) = 10, + list(/obj/item/weapon/ore/verdantium, 1) = 10, + list(/obj/item/weapon/ore/uranium, 1) = 10, + list(/obj/item/weapon/reagent_containers/glass/beaker/noreact, 3) = 5, + list(/obj/item/weapon/spacecash/c500, 4) = 5, + list(/obj/item/weapon/spacecash/c200, 2) = 10, + list(/obj/item/weapon/spacecash/c100, 1) = 10, + list(/obj/item/weapon/spacecash/c50, 1) = 10, + list(/obj/item/weapon/spacecash/c20, 1) = 10, + list(/obj/item/weapon/melee/baton, 5) = 5, + list(/obj/item/clothing/under/shorts/red, 1) = 2, + list(/obj/item/clothing/under/shorts/blue, 1) = 2, + list(/obj/item/clothing/accessory/tie/horrible, 1) = 2, + list(/obj/item/clothing/under/chameleon, 5) = 2, + list(/obj/item/weapon/melee/classic_baton, 6) = 2, + list(/obj/item/latexballon, 2) = 2, + list(pick(subtypesof(/obj/item/toy/mecha)), 4) = 2, + list(/obj/item/toy/syndicateballoon, 3) = 2, + list(/obj/item/weapon/rig/industrial, 6) = 2, + list(/obj/item/clothing/head/kitty, 1) = 2, + list(/obj/item/weapon/coin/silver, 2) = 2, + list(/obj/item/weapon/coin/iron, 2) = 2, + list(/obj/item/weapon/coin/gold, 2) = 2, + list(/obj/item/weapon/coin/diamond, 2) = 2, + list(/obj/item/weapon/coin/phoron, 2) = 2, + list(/obj/item/weapon/coin/uranium, 2) = 2, + list(/obj/item/weapon/coin/platinum, 2) = 2, + list(/obj/item/clothing/suit/ianshirt, 3) = 2, + list(pick(subtypesof(/obj/item/weapon/stock_parts) - /obj/item/weapon/stock_parts/subspace), 2) = 2, + list(/obj/item/weapon/pickaxe/silver, 3) = 2, + list(/obj/item/weapon/pickaxe/drill, 3) = 2, + list(/obj/item/weapon/pickaxe/jackhammer, 4) = 2, + list(/obj/item/weapon/pickaxe/gold, 4) = 2, + list(/obj/item/weapon/pickaxe/diamond, 5) = 2, + list(/obj/item/weapon/pickaxe/diamonddrill, 6) = 2, + list(/obj/item/weapon/pickaxe/plasmacutter, 5) = 2, + list(/obj/item/toy/katana, 1) = 2, + list(/obj/item/seeds/random, 2) = 2, + list(/obj/item/weed_extract, 2) = 1, + list(/obj/item/xenos_claw, 1) = 1, + list(/obj/item/clothing/head/bearpelt, 4) = 1, + list(/obj/item/organ/internal/heart, 1) = 1, + list(/obj/item/device/soulstone, 5) = 1, + list(/obj/item/weapon/material/sword/katana, 5) = 1, + list(/obj/item/weapon/dnainjector/xraymut, 6) = 1, + list(/obj/item/weapon/storage/backpack/clown/loaded, 5) = 1, + list(/obj/item/weapon/storage/backpack/mime/loaded, 5) = 1, + list(/obj/item/weapon/vampiric, 2) = 1, + list(/obj/item/weapon/archaeological_find, 3) = 1, + list(/obj/item/weapon/melee/energy/sword, 6) = 1, + list(/obj/item/weapon/storage/backpack/luchador/loaded, 3) = 1, + list(/obj/item/device/personal_shield_generator/belt/mining/loaded, 6) = 1 + )) + var/path = choice[1] + var/value = choice[2] + visible_message("Filling crate with [path] for [value] points!") + contents += new path() + lootvalue += value + +//putting the multi-object loot items as their own things + +/obj/item/weapon/storage/backpack/dufflebag/cratebooze + starts_with = list( + /obj/item/weapon/reagent_containers/food/drinks/bottle/rum, + /obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey, + /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus + ) + +/obj/item/weapon/storage/backpack/dufflebag/cratedrills + starts_with = list( + /obj/item/weapon/pickaxe/advdrill, + /obj/item/device/taperecorder, + /obj/item/clothing/suit/space, + /obj/item/clothing/head/helmet/space + ) + +/obj/item/weapon/storage/backpack/clown/loaded + starts_with = list( + /obj/item/clothing/under/rank/clown, + /obj/item/clothing/shoes/clown_shoes, + /obj/item/device/pda/clown, + /obj/item/clothing/mask/gas/clown_hat, + /obj/item/weapon/bikehorn, + /obj/item/weapon/pen/crayon/rainbow, + /obj/item/weapon/reagent_containers/spray/waterflower + ) + +/obj/item/weapon/storage/backpack/mime/loaded + starts_with = list( + /obj/item/clothing/under/mime, + /obj/item/clothing/shoes/black, + /obj/item/device/pda/mime, + /obj/item/clothing/gloves/white, + /obj/item/clothing/mask/gas/mime, + /obj/item/clothing/head/beret, + /obj/item/clothing/suit/suspenders, + /obj/item/weapon/pen/crayon/mime, + /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing + ) + +/obj/item/weapon/storage/backpack/luchador/loaded + starts_with = list( + /obj/item/weapon/storage/belt/champion, + /obj/item/clothing/mask/luchador + ) \ No newline at end of file