mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-02 21:11:57 +00:00
* Mining MODsuit Rework (#64688) makes dropkey deactivate device modules fixes speed potion being fucky fixes doubled up balloon alerts makes some cell code better i think makes the gps module open the gps tgui for you, instead of putting a gps in your hand the loader suit can now hold mailbags Reworks the mining modsuit. The suit is no longer cold-proof (this can be mitigated by using module space for thermal regulators) The suit fits less modules than standard suits, but cant burn in lava. In suit storage it can carry ore bags, resonators and kinetic crushers. It features a storage, gps, ore bag, drill, clamp and by default comes with a plasma core, being recharged with plasma ore rather than by power cell. Features two new modules: Ash Accretion, it gathers dust from basalt (or snow) you walk on to create a layer of ash around the suit, acting as armor and a speed up that quickly drains when you walk on other terrain. Sphere Transform, turns you into a fast moving ball that can travel past lava, you cannot use your hands when in this form, but you can launch aoe mining bombs to attack or mine * Mining MODsuit Rework Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
283 lines
14 KiB
Plaintext
283 lines
14 KiB
Plaintext
/**********************Mining Equipment Vendor**************************/
|
|
|
|
/obj/machinery/mineral/equipment_vendor
|
|
name = "mining equipment vendor"
|
|
desc = "An equipment vendor for miners, points collected at an ore redemption machine can be spent here."
|
|
icon = 'icons/obj/machines/mining_machines.dmi' //ICON OVERRIDEN IN SKYRAT AESTHETICS - SEE MODULE
|
|
icon_state = "mining"
|
|
density = TRUE
|
|
circuit = /obj/item/circuitboard/machine/mining_equipment_vendor
|
|
var/icon_deny = "mining-deny"
|
|
var/obj/item/card/id/inserted_id
|
|
var/list/prize_list = list( //if you add something to this, please, for the love of god, sort it by price/type. use tabs and not spaces.
|
|
new /datum/data/mining_equipment("1 Marker Beacon", /obj/item/stack/marker_beacon, 10),
|
|
new /datum/data/mining_equipment("10 Marker Beacons", /obj/item/stack/marker_beacon/ten, 100),
|
|
new /datum/data/mining_equipment("30 Marker Beacons", /obj/item/stack/marker_beacon/thirty, 300),
|
|
new /datum/data/mining_equipment("Skeleton Key", /obj/item/skeleton_key, 777),
|
|
new /datum/data/mining_equipment("Whiskey", /obj/item/reagent_containers/food/drinks/bottle/whiskey, 100),
|
|
new /datum/data/mining_equipment("Absinthe", /obj/item/reagent_containers/food/drinks/bottle/absinthe/premium, 100),
|
|
new /datum/data/mining_equipment("Bubblegum Gum Packet", /obj/item/storage/box/gum/bubblegum, 100),
|
|
new /datum/data/mining_equipment("Cigar", /obj/item/clothing/mask/cigarette/cigar/havana, 150),
|
|
new /datum/data/mining_equipment("Soap", /obj/item/soap/nanotrasen, 200),
|
|
new /datum/data/mining_equipment("Laser Pointer", /obj/item/laser_pointer, 300),
|
|
new /datum/data/mining_equipment("Alien Toy", /obj/item/clothing/mask/facehugger/toy, 300),
|
|
new /datum/data/mining_equipment("Stabilizing Serum", /obj/item/hivelordstabilizer, 400),
|
|
new /datum/data/mining_equipment("Fulton Beacon", /obj/item/fulton_core, 400),
|
|
new /datum/data/mining_equipment("Shelter Capsule", /obj/item/survivalcapsule, 400),
|
|
new /datum/data/mining_equipment("Environment Proof Bodybag", /obj/item/bodybag/environmental, 500), //SKYRAT EDIT - ADDITION
|
|
new /datum/data/mining_equipment("GAR Meson Scanners", /obj/item/clothing/glasses/meson/gar, 500),
|
|
new /datum/data/mining_equipment("Explorer's Webbing", /obj/item/storage/belt/mining, 500),
|
|
new /datum/data/mining_equipment("Point Transfer Card", /obj/item/card/mining_point_card, 500),
|
|
new /datum/data/mining_equipment("Survival Medipen", /obj/item/reagent_containers/hypospray/medipen/survival, 500),
|
|
new /datum/data/mining_equipment("Brute First-Aid Kit", /obj/item/storage/firstaid/brute, 600),
|
|
new /datum/data/mining_equipment("Tracking Implant Kit", /obj/item/storage/box/minertracker, 600),
|
|
new /datum/data/mining_equipment("Jaunter", /obj/item/wormhole_jaunter, 750),
|
|
new /datum/data/mining_equipment("Kinetic Crusher", /obj/item/kinetic_crusher, 750),
|
|
new /datum/data/mining_equipment("Kinetic Accelerator", /obj/item/gun/energy/kinetic_accelerator, 750),
|
|
new /datum/data/mining_equipment("Advanced Scanner", /obj/item/t_scanner/adv_mining_scanner, 800),
|
|
new /datum/data/mining_equipment("Resonator", /obj/item/resonator, 800),
|
|
new /datum/data/mining_equipment("Luxury Medipen", /obj/item/reagent_containers/hypospray/medipen/survival/luxury, 1000),
|
|
new /datum/data/mining_equipment("Fulton Pack", /obj/item/extraction_pack, 1000),
|
|
new /datum/data/mining_equipment("Lazarus Injector", /obj/item/lazarus_injector, 1000),
|
|
new /datum/data/mining_equipment("Silver Pickaxe", /obj/item/pickaxe/silver, 1000),
|
|
new /datum/data/mining_equipment("Mining Conscription Kit", /obj/item/storage/backpack/duffelbag/mining_conscript, 1500),
|
|
new /datum/data/mining_equipment("Space Cash", /obj/item/stack/spacecash/c1000, 2000),
|
|
new /datum/data/mining_equipment("Diamond Pickaxe", /obj/item/pickaxe/diamond, 2000),
|
|
new /datum/data/mining_equipment("Super Resonator", /obj/item/resonator/upgraded, 2500),
|
|
new /datum/data/mining_equipment("Jump Boots", /obj/item/clothing/shoes/bhop, 2500),
|
|
new /datum/data/mining_equipment("Ice Hiking Boots", /obj/item/clothing/shoes/winterboots/ice_boots, 2500),
|
|
new /datum/data/mining_equipment("Mining MODsuit", /obj/item/mod/control/pre_equipped/mining, 2500),
|
|
new /datum/data/mining_equipment("Luxury Shelter Capsule", /obj/item/survivalcapsule/luxury, 3000),
|
|
new /datum/data/mining_equipment("Luxury Bar Capsule", /obj/item/survivalcapsule/luxuryelite, 10000),
|
|
new /datum/data/mining_equipment("Nanotrasen Minebot", /mob/living/simple_animal/hostile/mining_drone, 800),
|
|
new /datum/data/mining_equipment("Minebot Melee Upgrade", /obj/item/mine_bot_upgrade, 400),
|
|
new /datum/data/mining_equipment("Minebot Armor Upgrade", /obj/item/mine_bot_upgrade/health, 400),
|
|
new /datum/data/mining_equipment("Minebot Cooldown Upgrade", /obj/item/borg/upgrade/modkit/cooldown/minebot, 600),
|
|
new /datum/data/mining_equipment("Spare Suit Voucher", /obj/item/suit_voucher, 2000), //SKYRAT EDIT: ADDITION WITH SEVA SUIT
|
|
new /datum/data/mining_equipment("Minebot AI Upgrade", /obj/item/slimepotion/slime/sentience/mining, 1000),
|
|
new /datum/data/mining_equipment("KA Minebot Passthrough", /obj/item/borg/upgrade/modkit/minebot_passthrough, 100),
|
|
new /datum/data/mining_equipment("KA White Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer, 100),
|
|
new /datum/data/mining_equipment("KA Adjustable Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer/adjustable, 150),
|
|
new /datum/data/mining_equipment("KA Super Chassis", /obj/item/borg/upgrade/modkit/chassis_mod, 250),
|
|
new /datum/data/mining_equipment("KA Hyper Chassis", /obj/item/borg/upgrade/modkit/chassis_mod/orange, 300),
|
|
new /datum/data/mining_equipment("KA Range Increase", /obj/item/borg/upgrade/modkit/range, 1000),
|
|
new /datum/data/mining_equipment("KA Damage Increase", /obj/item/borg/upgrade/modkit/damage, 1000),
|
|
new /datum/data/mining_equipment("KA Cooldown Decrease", /obj/item/borg/upgrade/modkit/cooldown, 1000),
|
|
new /datum/data/mining_equipment("KA AoE Damage", /obj/item/borg/upgrade/modkit/aoe/mobs, 2000)
|
|
)
|
|
|
|
/datum/data/mining_equipment
|
|
var/equipment_name = "generic"
|
|
var/equipment_path = null
|
|
var/cost = 0
|
|
|
|
/datum/data/mining_equipment/New(name, path, cost)
|
|
src.equipment_name = name
|
|
src.equipment_path = path
|
|
src.cost = cost
|
|
|
|
/obj/machinery/mineral/equipment_vendor/Initialize(mapload)
|
|
. = ..()
|
|
build_inventory()
|
|
|
|
/obj/machinery/mineral/equipment_vendor/proc/build_inventory()
|
|
for(var/p in prize_list)
|
|
var/datum/data/mining_equipment/M = p
|
|
GLOB.vending_products[M.equipment_path] = 1
|
|
|
|
/obj/machinery/mineral/equipment_vendor/update_icon_state()
|
|
icon_state = "[initial(icon_state)][powered() ? null : "-off"]"
|
|
return ..()
|
|
|
|
/obj/machinery/mineral/equipment_vendor/ui_assets(mob/user)
|
|
return list(
|
|
get_asset_datum(/datum/asset/spritesheet/vending),
|
|
)
|
|
|
|
/obj/machinery/mineral/equipment_vendor/ui_interact(mob/user, datum/tgui/ui)
|
|
ui = SStgui.try_update_ui(user, src, ui)
|
|
if(!ui)
|
|
ui = new(user, src, "MiningVendor", name)
|
|
ui.open()
|
|
|
|
/obj/machinery/mineral/equipment_vendor/ui_static_data(mob/user)
|
|
. = list()
|
|
.["product_records"] = list()
|
|
for(var/datum/data/mining_equipment/prize in prize_list)
|
|
var/list/product_data = list(
|
|
path = replacetext(replacetext("[prize.equipment_path]", "/obj/item/", ""), "/", "-"),
|
|
name = prize.equipment_name,
|
|
price = prize.cost,
|
|
ref = REF(prize)
|
|
)
|
|
.["product_records"] += list(product_data)
|
|
|
|
/obj/machinery/mineral/equipment_vendor/ui_data(mob/user)
|
|
. = list()
|
|
var/obj/item/card/id/C
|
|
if(isliving(user))
|
|
var/mob/living/L = user
|
|
C = L.get_idcard(TRUE)
|
|
if(C)
|
|
.["user"] = list()
|
|
.["user"]["points"] = C.mining_points
|
|
if(C.registered_account)
|
|
.["user"]["name"] = C.registered_account.account_holder
|
|
if(C.registered_account.account_job)
|
|
.["user"]["job"] = C.registered_account.account_job.title
|
|
else
|
|
.["user"]["job"] = "No Job"
|
|
|
|
/obj/machinery/mineral/equipment_vendor/ui_act(action, params)
|
|
. = ..()
|
|
if(.)
|
|
return
|
|
|
|
switch(action)
|
|
if("purchase")
|
|
var/obj/item/card/id/I
|
|
if(isliving(usr))
|
|
var/mob/living/L = usr
|
|
I = L.get_idcard(TRUE)
|
|
if(!istype(I))
|
|
to_chat(usr, span_alert("Error: An ID is required!"))
|
|
flick(icon_deny, src)
|
|
return
|
|
var/datum/data/mining_equipment/prize = locate(params["ref"]) in prize_list
|
|
if(!prize || !(prize in prize_list))
|
|
to_chat(usr, span_alert("Error: Invalid choice!"))
|
|
flick(icon_deny, src)
|
|
return
|
|
if(prize.cost > I.mining_points)
|
|
to_chat(usr, span_alert("Error: Insufficient points for [prize.equipment_name] on [I]!"))
|
|
flick(icon_deny, src)
|
|
return
|
|
I.mining_points -= prize.cost
|
|
to_chat(usr, span_notice("[src] clanks to life briefly before vending [prize.equipment_name]!"))
|
|
new prize.equipment_path(loc)
|
|
SSblackbox.record_feedback("nested tally", "mining_equipment_bought", 1, list("[type]", "[prize.equipment_path]"))
|
|
. = TRUE
|
|
|
|
/obj/machinery/mineral/equipment_vendor/attackby(obj/item/I, mob/user, params)
|
|
if(istype(I, /obj/item/mining_voucher))
|
|
RedeemVoucher(I, user)
|
|
return
|
|
if(istype(I, /obj/item/suit_voucher)) //skyrat edit addition start
|
|
RedeemSVoucher(I, user) //addition
|
|
return //skyrat edit addition end
|
|
if(default_deconstruction_screwdriver(user, "mining-open", "mining", I))
|
|
return
|
|
if(default_deconstruction_crowbar(I))
|
|
return
|
|
return ..()
|
|
|
|
/obj/machinery/mineral/equipment_vendor/proc/RedeemVoucher(obj/item/mining_voucher/voucher, mob/redeemer)
|
|
var/items = list("Survival Capsule and Explorer's Webbing", "Resonator Kit", "Minebot Kit", "Extraction and Rescue Kit", "Crusher Kit", "Mining Conscription Kit")
|
|
|
|
var/selection = tgui_input_list(redeemer, "Pick your equipment", "Mining Voucher Redemption", sort_list(items))
|
|
if(isnull(selection))
|
|
return
|
|
if(!Adjacent(redeemer) || QDELETED(voucher) || voucher.loc != redeemer)
|
|
return
|
|
var/drop_location = drop_location()
|
|
switch(selection)
|
|
if("Survival Capsule and Explorer's Webbing")
|
|
new /obj/item/storage/belt/mining/vendor(drop_location)
|
|
if("Resonator Kit")
|
|
new /obj/item/extinguisher/mini(drop_location)
|
|
new /obj/item/resonator(drop_location)
|
|
if("Minebot Kit")
|
|
new /mob/living/simple_animal/hostile/mining_drone(drop_location)
|
|
new /obj/item/weldingtool/hugetank(drop_location)
|
|
new /obj/item/clothing/head/welding(drop_location)
|
|
new /obj/item/borg/upgrade/modkit/minebot_passthrough(drop_location)
|
|
if("Extraction and Rescue Kit")
|
|
new /obj/item/extraction_pack(drop_location)
|
|
new /obj/item/fulton_core(drop_location)
|
|
new /obj/item/stack/marker_beacon/thirty(drop_location)
|
|
if("Crusher Kit")
|
|
new /obj/item/extinguisher/mini(drop_location)
|
|
new /obj/item/kinetic_crusher(drop_location)
|
|
if("Mining Conscription Kit")
|
|
new /obj/item/storage/backpack/duffelbag/mining_conscript(drop_location)
|
|
|
|
SSblackbox.record_feedback("tally", "mining_voucher_redeemed", 1, selection)
|
|
qdel(voucher)
|
|
|
|
/obj/machinery/mineral/equipment_vendor/ex_act(severity, target)
|
|
do_sparks(5, TRUE, src)
|
|
if(severity > EXPLODE_LIGHT && prob(17 * severity))
|
|
qdel(src)
|
|
|
|
/****************Golem Point Vendor**************************/
|
|
|
|
/obj/machinery/mineral/equipment_vendor/golem
|
|
name = "golem ship equipment vendor"
|
|
circuit = /obj/item/circuitboard/machine/mining_equipment_vendor/golem
|
|
|
|
/obj/machinery/mineral/equipment_vendor/golem/Initialize(mapload)
|
|
desc += "\nIt seems a few selections have been added."
|
|
prize_list += list(
|
|
new /datum/data/mining_equipment("Extra Id", /obj/item/card/id/advanced/mining, 250),
|
|
new /datum/data/mining_equipment("Science Goggles", /obj/item/clothing/glasses/science, 250),
|
|
new /datum/data/mining_equipment("Monkey Cube", /obj/item/food/monkeycube, 300),
|
|
new /datum/data/mining_equipment("Toolbelt", /obj/item/storage/belt/utility, 350),
|
|
new /datum/data/mining_equipment("Royal Cape of the Liberator", /obj/item/bedsheet/rd/royal_cape, 500),
|
|
new /datum/data/mining_equipment("Grey Slime Extract", /obj/item/slime_extract/grey, 1000),
|
|
new /datum/data/mining_equipment("Modification Kit", /obj/item/borg/upgrade/modkit/trigger_guard, 1700),
|
|
new /datum/data/mining_equipment("The Liberator's Legacy", /obj/item/storage/box/rndboards, 2000)
|
|
)
|
|
return ..()
|
|
|
|
/**********************Mining Equipment Vendor Items**************************/
|
|
|
|
/**********************Mining Equipment Voucher**********************/
|
|
|
|
/obj/item/mining_voucher
|
|
name = "mining voucher"
|
|
desc = "A token to redeem a piece of equipment. Use it on a mining equipment vendor."
|
|
icon = 'icons/obj/mining.dmi'
|
|
icon_state = "mining_voucher"
|
|
w_class = WEIGHT_CLASS_TINY
|
|
|
|
/**********************Mining Point Card**********************/
|
|
|
|
/obj/item/card/mining_point_card
|
|
name = "mining points card"
|
|
desc = "A small card preloaded with mining points. Swipe your ID card over it to transfer the points, then discard."
|
|
icon_state = "data_1"
|
|
var/points = 500
|
|
|
|
/obj/item/card/mining_point_card/attackby(obj/item/I, mob/user, params)
|
|
if(istype(I, /obj/item/card/id))
|
|
if(points)
|
|
var/obj/item/card/id/C = I
|
|
C.mining_points += points
|
|
to_chat(user, span_info("You transfer [points] points to [C]."))
|
|
points = 0
|
|
else
|
|
to_chat(user, span_alert("There's no points left on [src]."))
|
|
..()
|
|
|
|
/obj/item/card/mining_point_card/examine(mob/user)
|
|
. = ..()
|
|
. += span_alert("There's [points] point\s on the card.")
|
|
|
|
/obj/item/storage/backpack/duffelbag/mining_conscript
|
|
name = "mining conscription kit"
|
|
desc = "A kit containing everything a crewmember needs to support a shaft miner in the field."
|
|
icon_state = "duffel-explorer"
|
|
inhand_icon_state = "duffel-explorer"
|
|
|
|
/obj/item/storage/backpack/duffelbag/mining_conscript/PopulateContents()
|
|
new /obj/item/clothing/glasses/meson(src)
|
|
new /obj/item/t_scanner/adv_mining_scanner/lesser(src)
|
|
new /obj/item/storage/bag/ore(src)
|
|
new /obj/item/clothing/suit/hooded/explorer(src)
|
|
new /obj/item/encryptionkey/headset_mining(src)
|
|
new /obj/item/clothing/mask/gas/explorer(src)
|
|
new /obj/item/card/id/advanced/mining(src)
|
|
new /obj/item/gun/energy/kinetic_accelerator(src)
|
|
new /obj/item/knife/combat/survival(src)
|
|
new /obj/item/flashlight/seclite(src)
|