diff --git a/code/game/machinery/computer/orders/order_items/mining/order_mining.dm b/code/game/machinery/computer/orders/order_items/mining/order_mining.dm index e0630e4ef4b..41c52d9b0a0 100644 --- a/code/game/machinery/computer/orders/order_items/mining/order_mining.dm +++ b/code/game/machinery/computer/orders/order_items/mining/order_mining.dm @@ -34,6 +34,10 @@ purchase_path = /obj/item/kinetic_crusher cost_per_order = 650 +/datum/orderable_item/mining/punching_mitts + purchase_path = /obj/item/clothing/gloves/fingerless/punch_mitts + cost_per_order = 1000 + /datum/orderable_item/mining/crusher_retool_kit purchase_path = /obj/item/crusher_trophy/retool_kit cost_per_order = 150 diff --git a/code/game/objects/effects/spawners/random/mining_loot.dm b/code/game/objects/effects/spawners/random/mining_loot.dm new file mode 100644 index 00000000000..682c6e4ad23 --- /dev/null +++ b/code/game/objects/effects/spawners/random/mining_loot.dm @@ -0,0 +1,66 @@ + +/// For spawning loot from necropolis chests or other sources, this randomly chooses one of the following entries to spawn. +/obj/effect/spawner/random/mining_loot + name = "random mining loot" + desc = "Spawns one random mining loot." + icon = 'icons/obj/storage/crates.dmi' + icon_state = "necrocrate" + loot = list( + /obj/item/shared_storage/red = 1, + /obj/item/soulstone/anybody/mining = 1, + /obj/item/clothing/glasses/godeye = 1, + /obj/item/reagent_containers/cup/bottle/potion/flight = 1, + /obj/item/clothing/gloves/gauntlets = 1, + /obj/effect/spawner/random/mining_loot/pka_mod = 1, + /obj/item/rod_of_asclepius = 1, + /obj/item/organ/heart/cursed/wizard = 1, + /obj/item/ship_in_a_bottle = 1, + /obj/item/clothing/suit/hooded/berserker = 1, + /obj/item/jacobs_ladder = 1, + /obj/item/guardian_creator/miner = 1, + /obj/item/warp_cube/red = 1, + /obj/item/wisp_lantern = 1, + /obj/item/immortality_talisman = 1, + /obj/item/book/granter/action/spell/summonitem = 1, + /obj/item/book_of_babel = 1, + /obj/item/clothing/neck/necklace/memento_mori = 1, + ) + +/obj/effect/spawner/random/mining_loot/demonic + name = "random demonic mining loot" + desc = "Spawns one random mining loot from the demonic list." + icon = 'icons/obj/storage/crates.dmi' + icon_state = "necrocrate" + loot = list( + /obj/item/shared_storage/red = 1, + /obj/item/clothing/neck/cloak/wolf_coat = 1, + /obj/item/soulstone/anybody/mining = 1, + /obj/item/clothing/glasses/godeye = 1, + /obj/item/reagent_containers/cup/bottle/potion/flight = 1, + /obj/item/clothing/gloves/gauntlets = 1, + /obj/effect/spawner/random/mining_loot/pka_mod = 1, + /obj/item/rod_of_asclepius = 1, + /obj/item/organ/heart/cursed/wizard = 1, + /obj/item/jacobs_ladder = 1, + /obj/item/guardian_creator/miner = 1, + /obj/item/weldingtool/abductor = 1, + /obj/item/warp_cube/red = 1, + /obj/item/immortality_talisman = 1, + /obj/item/book/granter/action/spell/summonitem = 1, + /obj/item/clothing/neck/necklace/memento_mori = 1, + /obj/item/book/granter/action/spell/sacredflame = 1, + ) + +/// For spawning a rare PKA modkit +/obj/effect/spawner/random/mining_loot/pka_mod + name = "random rare PKA modkits" + desc = "Spawns one random rare PKA modkits." + icon = 'icons/obj/mining.dmi' + icon_state = "modkit" + loot = list( + /obj/item/borg/upgrade/modkit/aoe/mobs/andturfs = 1, + /obj/item/borg/upgrade/modkit/cooldown/repeater = 1, + /obj/item/borg/upgrade/modkit/resonator_blasts = 1, + /obj/item/borg/upgrade/modkit/bounty = 1, + /obj/item/borg/upgrade/modkit/lifesteal = 1, + ) diff --git a/code/game/objects/structures/icemoon/cave_entrance.dm b/code/game/objects/structures/icemoon/cave_entrance.dm index 31936c4caf5..775551193e2 100644 --- a/code/game/objects/structures/icemoon/cave_entrance.dm +++ b/code/game/objects/structures/icemoon/cave_entrance.dm @@ -141,62 +141,11 @@ GLOBAL_LIST_INIT(ore_probability, list( */ /obj/effect/collapsing_demonic_portal/proc/drop_loot() visible_message(span_warning("Something slips out of [src]!")) - var/loot = rand(1, 27) + var/loot = rand(1, 100) switch(loot) - if(1) - new /obj/item/clothing/neck/cloak/wolf_coat(loc) - if(2) - new /obj/item/clothing/glasses/godeye(loc) - if(3) - new /obj/item/reagent_containers/cup/bottle/potion/flight(loc) - if(4) - new /obj/item/organ/heart/cursed/wizard(loc) - if(5) - new /obj/item/jacobs_ladder(loc) - if(6) - new /obj/item/rod_of_asclepius(loc) - if(7) - new /obj/item/warp_cube/red(loc) - if(8) - new /obj/item/wisp_lantern(loc) - if(9) - new /obj/item/immortality_talisman(loc) - if(10) - new /obj/item/book/granter/action/spell/summonitem(loc) - if(11) - new /obj/item/clothing/neck/necklace/memento_mori(loc) - if(12) - new /obj/item/borg/upgrade/modkit/lifesteal(loc) - new /obj/item/bedsheet/cult(loc) - if(13) - new /obj/item/disk/design_disk/modkit_disc/mob_and_turf_aoe(loc) - if(14) - new /obj/item/disk/design_disk/modkit_disc/bounty(loc) - if(15) - new /obj/item/ship_in_a_bottle(loc) - new /obj/item/oar(loc) - if(16) + if(1 to 80) + new /obj/structure/closet/crate/necropolis/tendril/demonic(loc) + if(81 to 90) new /mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/doom(loc) - if(17) - new /obj/item/clothing/gloves/fingerless/punch_mitts(loc) - new /obj/item/clothing/head/cowboy(loc) - if(18) - new /obj/item/soulstone/anybody(loc) - if(19) - new /obj/item/disk/design_disk/modkit_disc/resonator_blast(loc) - if(20) - new /obj/item/disk/design_disk/modkit_disc/rapid_repeater(loc) - if(21) - new /obj/item/slimepotion/transference(loc) - if(22) - new /obj/item/slime_extract/adamantine(loc) - if(23) - new /obj/item/weldingtool/abductor(loc) - if(24) + if(91 to INFINITY) new /obj/structure/elite_tumor(loc) - if(25) - new /mob/living/basic/clown/clownhulk(loc) - if(26) - new /obj/item/clothing/shoes/winterboots/ice_boots(loc) - if(27) - new /obj/item/book/granter/action/spell/sacredflame(loc) diff --git a/code/modules/clothing/gloves/punch_mitts.dm b/code/modules/clothing/gloves/punch_mitts.dm index 36d085c289c..28ffb67d59d 100644 --- a/code/modules/clothing/gloves/punch_mitts.dm +++ b/code/modules/clothing/gloves/punch_mitts.dm @@ -1,9 +1,7 @@ /obj/item/clothing/gloves/fingerless/punch_mitts name = "punching mitts" desc = "Fingerless gloves with nasty spikes attached. Allows the wearer to utilize the ill-reputed fighting technique known as Hunter Boxing. The style \ - allows the user to punch wildlife rapidly to death. Supposedly, this is an incredible workout, but few people are insane enough to attempt to \ - punch every dangerous creature they encounter in the wild to death with their bare hands. Also kinda works against humanoids as well. \ - Not that you would... right?" + allows the user to rapidly punch wildlife and rock into smithereens. Great workout. Extremely ill-advised for ensuring your own personal survival." icon_state = "punch_mitts" body_parts_covered = HANDS|ARMS resistance_flags = LAVA_PROOF | FIRE_PROOF diff --git a/code/modules/mining/lavaland/mining_loot/clothing.dm b/code/modules/mining/lavaland/mining_loot/clothing.dm index 8918e638688..620c93a8391 100644 --- a/code/modules/mining/lavaland/mining_loot/clothing.dm +++ b/code/modules/mining/lavaland/mining_loot/clothing.dm @@ -114,6 +114,10 @@ fire = 100 acid = 30 +/obj/item/clothing/gloves/gauntlets/Initialize(mapload) + . = ..() + AddComponent(/datum/component/martial_art_giver, /datum/martial_art/boxing/hunter) + /obj/item/clothing/gloves/gauntlets/equipped(mob/user, slot) . = ..() if(!(slot & ITEM_SLOT_GLOVES)) diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index ab885043695..cd3d4b9e936 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -15,69 +15,14 @@ integrity_failure = 0 //prevents bust_open from firing /// var to check if it got opened by a key var/spawned_loot = FALSE + /// What random loot spawner our chest uses + var/loot_to_spawn = /obj/effect/spawner/random/mining_loot /obj/structure/closet/crate/necropolis/tendril/attackby(obj/item/item, mob/user, list/modifiers, list/attack_modifiers) if(!istype(item, /obj/item/skeleton_key) || spawned_loot) return ..() - var/loot = rand(1,21) - var/mod - switch(loot) - if(1) - new /obj/item/shared_storage/red(src) - if(2) - new /obj/item/soulstone/anybody/mining(src) - if(3) - new /obj/item/organ/cyberimp/arm/toolkit/shard/katana(src) - if(4) - new /obj/item/clothing/glasses/godeye(src) - if(5) - new /obj/item/reagent_containers/cup/bottle/potion/flight(src) - if(6) - new /obj/item/clothing/gloves/gauntlets(src) - if(7) - mod = rand(1,4) - switch(mod) - if(1) - new /obj/item/disk/design_disk/modkit_disc/resonator_blast(src) - if(2) - new /obj/item/disk/design_disk/modkit_disc/rapid_repeater(src) - if(3) - new /obj/item/disk/design_disk/modkit_disc/mob_and_turf_aoe(src) - if(4) - new /obj/item/disk/design_disk/modkit_disc/bounty(src) - if(8) - new /obj/item/rod_of_asclepius(src) - if(9) - new /obj/item/organ/heart/cursed/wizard(src) - if(10) - new /obj/item/ship_in_a_bottle(src) - if(11) - new /obj/item/clothing/suit/hooded/berserker(src) - if(12) - new /obj/item/jacobs_ladder(src) - if(13) - new /obj/item/guardian_creator/miner(src) - if(14) - new /obj/item/warp_cube/red(src) - if(15) - new /obj/item/wisp_lantern(src) - if(16) - new /obj/item/immortality_talisman(src) - if(17) - new /obj/item/book/granter/action/spell/summonitem(src) - if(18) - new /obj/item/book_of_babel(src) - if(19) - new /obj/item/borg/upgrade/modkit/lifesteal(src) - new /obj/item/bedsheet/cult(src) - if(20) - new /obj/item/clothing/neck/necklace/memento_mori(src) - if(21) - new /obj/item/clothing/gloves/fingerless/punch_mitts(src) - new /obj/item/clothing/head/cowboy(src) - if(!contents.len) - to_chat(user, span_warning("[src] makes a clunking sound as you try to open it. You feel compelled to let the gods know! (Please open an adminhelp and try again!)")) - CRASH("Failed to generate loot. loot number: [loot][mod ? "subloot: [mod]" : null]") + new loot_to_spawn(src) + spawned_loot = TRUE qdel(item) to_chat(user, span_notice("You disable the magic lock, revealing the loot.")) @@ -95,6 +40,10 @@ //Megafauna chests +/obj/structure/closet/crate/necropolis/tendril/demonic + name = "demonic chest" + loot_to_spawn = /obj/effect/spawner/random/mining_loot/demonic + /obj/structure/closet/crate/necropolis/dragon name = "dragon chest" diff --git a/code/modules/mining/voucher_sets.dm b/code/modules/mining/voucher_sets.dm index b5190b2686d..ee083ebdaff 100644 --- a/code/modules/mining/voucher_sets.dm +++ b/code/modules/mining/voucher_sets.dm @@ -98,3 +98,13 @@ set_items = list( /obj/item/storage/backpack/duffelbag/mining_conscript, ) + +/datum/voucher_set/mining/punching_mitts + name = "Punching Mitts" + description = "Contains a pair of punching mitts for turning the local wilderness into the local gravel pit with your BARE HANDS." + icon = 'icons/obj/clothing/gloves.dmi' + icon_state = "punch_mitts" + set_items = list( + /obj/item/clothing/gloves/fingerless/punch_mitts, + /obj/item/clothing/head/cowboy, + ) diff --git a/tgstation.dme b/tgstation.dme index 6464a108686..bf04ddd8f9c 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -2442,6 +2442,7 @@ #include "code\game\objects\effects\spawners\random\lavaland_mobs.dm" #include "code\game\objects\effects\spawners\random\maintenance.dm" #include "code\game\objects\effects\spawners\random\medical.dm" +#include "code\game\objects\effects\spawners\random\mining_loot.dm" #include "code\game\objects\effects\spawners\random\mod.dm" #include "code\game\objects\effects\spawners\random\random.dm" #include "code\game\objects\effects\spawners\random\russian_rifle_spawner.dm"