diff --git a/code/game/objects/items/weapons/id cards/station_ids.dm b/code/game/objects/items/weapons/id cards/station_ids.dm index a0760ac61e..7536d41253 100644 --- a/code/game/objects/items/weapons/id cards/station_ids.dm +++ b/code/game/objects/items/weapons/id cards/station_ids.dm @@ -8,6 +8,7 @@ SPECIES_TESHARI = 'icons/mob/species/seromi/id.dmi' ) + var/mining_points = 0 // VOREStation Edit - For redeeming at mining equipment lockers var/access = list() var/registered_name = "Unknown" // The name registered_name on the card slot_flags = SLOT_ID | SLOT_EARS diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index 03568205c8..ca03098f55 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -6,11 +6,12 @@ /obj/machinery/mineral/processing_unit_console name = "production machine console" - icon = 'icons/obj/machines/mining_machines.dmi' + icon = 'icons/obj/machines/mining_machines_vr.dmi' // VOREStation Edit icon_state = "console" density = TRUE anchored = TRUE + var/obj/item/weapon/card/id/inserted_id // VOREStation Edit - Inserted Id card var/obj/machinery/mineral/processing_unit/machine = null var/show_all_ores = FALSE @@ -23,6 +24,24 @@ log_debug("Ore processing machine console at [src.x], [src.y], [src.z] could not find its machine!") qdel(src) +// VOREStation Add Start +/obj/machinery/mineral/processing_unit_console/Destroy() + if(inserted_id) + inserted_id.forceMove(loc) //Prevents deconstructing from deleting whatever ID was inside it. + . = ..() + +/obj/machinery/mineral/processing_unit_console/attackby(var/obj/item/I, var/mob/user) + if(istype(I, /obj/item/weapon/card/id)) + if(!powered()) + return + if(!inserted_id && user.unEquip(I)) + I.forceMove(src) + inserted_id = I + interact(user) + return + ..() +// VOREStation Add End + /obj/machinery/mineral/processing_unit_console/attack_hand(mob/user) if(..()) return @@ -39,6 +58,14 @@ user.set_machine(src) var/dat = "

Ore processor console

" + // VOREStation Add Start + dat += "Current unclaimed points: [machine.points]
" + if(istype(inserted_id)) + dat += "You have [inserted_id.mining_points] mining points collected. Eject ID.
" + dat += "Claim points.
" + else + dat += "No ID inserted. Insert ID.
" + // VOREStation Add End dat += "
" @@ -96,6 +123,29 @@ show_all_ores = !show_all_ores + // VOREStation Add Start + if(href_list["choice"]) + if(istype(inserted_id)) + if(href_list["choice"] == "eject") + usr.put_in_hands(inserted_id) + inserted_id = null + if(href_list["choice"] == "claim") + if(access_mining_station in inserted_id.access) + inserted_id.mining_points += machine.points + machine.points = 0 + else + to_chat(usr, "Required access not found.") + else if(href_list["choice"] == "insert") + var/obj/item/weapon/card/id/I = usr.get_active_hand() + if(istype(I)) + if(!usr.drop_item()) + return 1 + I.forceMove(src) + inserted_id = I + else + to_chat(usr, "No valid ID.") + // VOREStation Add End + src.updateUsrDialog() return @@ -104,7 +154,7 @@ /obj/machinery/mineral/processing_unit name = "material processor" //This isn't actually a goddamn furnace, we're in space and it's processing platinum and flammable phoron... - icon = 'icons/obj/machines/mining_machines.dmi' + icon = 'icons/obj/machines/mining_machines_vr.dmi' // VOREStation Edit icon_state = "furnace" density = TRUE anchored = TRUE @@ -117,6 +167,20 @@ var/list/ores_stored[0] var/static/list/alloy_data var/active = FALSE + // VOREStation Add Start + var/points = 0 + var/static/list/ore_values = list( + "sand" = 1, + "hematite" = 1, + "carbon" = 1, + "phoron" = 15, + "silver" = 16, + "gold" = 18, + "uranium" = 30, + "diamond" = 50, + "platinum" = 40, + "mhydrogen" = 40) + // VOREStation Add End /obj/machinery/mineral/processing_unit/New() ..() @@ -147,8 +211,8 @@ return /obj/machinery/mineral/processing_unit/process() - - if (!src.output || !src.input) return + if(!src.output || !src.input) return + if(panel_open || !powered()) return // VOREStation Edit - Don't work when unpowered var/list/tick_alloys = list() @@ -158,6 +222,7 @@ if(!O) break if(!isnull(ores_stored[O.material])) ores_stored[O.material]++ + points += ore_values[O.material] // VOREStation Edit - Give Points! qdel(O) diff --git a/code/modules/mining/machine_stacking.dm b/code/modules/mining/machine_stacking.dm index f6db90bac5..68c5a31c25 100644 --- a/code/modules/mining/machine_stacking.dm +++ b/code/modules/mining/machine_stacking.dm @@ -2,7 +2,7 @@ /obj/machinery/mineral/stacking_unit_console name = "stacking machine console" - icon = 'icons/obj/machines/mining_machines.dmi' + icon = 'icons/obj/machines/mining_machines_vr.dmi' // VOREStation Edit icon_state = "console" density = 1 anchored = 1 @@ -71,7 +71,7 @@ /obj/machinery/mineral/stacking_machine name = "stacking machine" - icon = 'icons/obj/machines/mining_machines.dmi' + icon = 'icons/obj/machines/mining_machines_vr.dmi' // VOREStation Edit icon_state = "stacker" density = 1 anchored = 1.0 diff --git a/code/modules/mining/machine_unloading.dm b/code/modules/mining/machine_unloading.dm index 1bbf7706ec..d54aa01761 100644 --- a/code/modules/mining/machine_unloading.dm +++ b/code/modules/mining/machine_unloading.dm @@ -3,7 +3,7 @@ /obj/machinery/mineral/unloading_machine name = "unloading machine" - icon = 'icons/obj/machines/mining_machines.dmi' + icon = 'icons/obj/machines/mining_machines_vr.dmi' // VOREStation Edit icon_state = "unloader" density = 1 anchored = 1.0 diff --git a/code/modules/mining/orm_vr/construction.dm b/code/modules/mining/orm_vr/construction.dm new file mode 100644 index 0000000000..dbf8a96ffb --- /dev/null +++ b/code/modules/mining/orm_vr/construction.dm @@ -0,0 +1,12 @@ +#ifndef T_BOARD +#error T_BOARD macro is not defined but we need it! +#endif + +/obj/item/weapon/circuitboard/mining_equipment_vendor + name = T_BOARD("Mining Equipment Vendor") + board_type = new /datum/frame/frame_types/machine + build_path = /obj/machinery/mineral/equipment_vendor + origin_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 3) + req_components = list( + /obj/item/weapon/stock_parts/console_screen = 1, + /obj/item/weapon/stock_parts/matter_bin = 3) diff --git a/code/modules/mining/orm_vr/equipment_vendor.dm b/code/modules/mining/orm_vr/equipment_vendor.dm new file mode 100644 index 0000000000..7b1f2e7e12 --- /dev/null +++ b/code/modules/mining/orm_vr/equipment_vendor.dm @@ -0,0 +1,205 @@ +/**********************Mining Equipment Locker**************************/ + +/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_vr.dmi' + icon_state = "mining" + density = TRUE + anchored = TRUE + circuit = /obj/item/weapon/circuitboard/mining_equipment_vendor + var/icon_deny = "mining-deny" + var/obj/item/weapon/card/id/inserted_id + var/list/prize_list = list( + 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("Whiskey", /obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey, 125), + new /datum/data/mining_equipment("Absinthe", /obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe, 125), + new /datum/data/mining_equipment("Cigar", /obj/item/clothing/mask/smokable/cigarette/cigar/havana, 150), + new /datum/data/mining_equipment("Soap", /obj/item/weapon/soap/nanotrasen, 200), + new /datum/data/mining_equipment("Laser Pointer", /obj/item/device/laser_pointer, 900), + new /datum/data/mining_equipment("Plush Toy", /obj/random/plushie, 300), + // TODO new /datum/data/mining_equipment("Advanced Scanner", /obj/item/device/t_scanner/adv_mining_scanner, 800), + new /datum/data/mining_equipment("Fulton Beacon", /obj/item/fulton_core, 500), + new /datum/data/mining_equipment("Shelter Capsule", /obj/item/device/survivalcapsule, 500), + // TODO new /datum/data/mining_equipment("Explorer's Webbing", /obj/item/storage/belt/mining, 500), + new /datum/data/mining_equipment("Point Transfer Card", /obj/item/weapon/card/mining_point_card, 500), + new /datum/data/mining_equipment("Survival Medipen", /obj/item/weapon/reagent_containers/hypospray/autoinjector/miner, 500), + new /datum/data/mining_equipment("Mini-Translocator", /obj/item/device/perfect_tele/one_beacon, 1200), + // new /datum/data/mining_equipment("Kinetic Crusher", /obj/item/twohanded/required/kinetic_crusher, 750), + new /datum/data/mining_equipment("Kinetic Accelerator", /obj/item/weapon/gun/energy/kinetic_accelerator, 900), + new /datum/data/mining_equipment("Resonator", /obj/item/resonator, 900), + new /datum/data/mining_equipment("Fulton Pack", /obj/item/extraction_pack, 1200), + new /datum/data/mining_equipment("Silver Pickaxe", /obj/item/weapon/pickaxe/silver, 1200), + //new /datum/data/mining_equipment("Mining Conscription Kit", /obj/item/storage/backpack/duffelbag/mining_conscript, 1000), + new /datum/data/mining_equipment("Space Cash", /obj/item/weapon/spacecash/c1000, 2000), + new /datum/data/mining_equipment("Industrial Hardsuit - Control Module", /obj/item/weapon/rig/industrial, 2000), + new /datum/data/mining_equipment("Industrial Hardsuit - Plasma Cutter", /obj/item/rig_module/device/plasmacutter, 800), + new /datum/data/mining_equipment("Industrial Hardsuit - Drill", /obj/item/rig_module/device/drill, 2000), + new /datum/data/mining_equipment("Industrial Hardsuit - Ore Scanner", /obj/item/rig_module/device/orescanner, 1000), + new /datum/data/mining_equipment("Industrial Hardsuit - Material Scanner", /obj/item/rig_module/vision/material, 500), + new /datum/data/mining_equipment("Industrial Hardsuit - Maneuvering Jets", /obj/item/rig_module/maneuvering_jets, 1250), + new /datum/data/mining_equipment("Diamond Pickaxe", /obj/item/weapon/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("Luxury Shelter Capsule", /obj/item/device/survivalcapsule/luxury, 3100), + new /datum/data/mining_equipment("KA White Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer, 125), + new /datum/data/mining_equipment("KA Adjustable Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer/adjustable, 175), + 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 Efficiency Increase", /obj/item/borg/upgrade/modkit/efficiency, 1200), + 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/power/quantumpad/initialize() + . = ..() + default_apply_parts() + +/obj/machinery/mineral/equipment_vendor/power_change() + var/old_stat = stat + ..() + if(old_stat != stat) + update_icon() + if(inserted_id && !powered()) + visible_message("The ID slot indicator light flickers on \the [src] as it spits out a card before powering down.") + inserted_id.forceMove(get_turf(src)) + +/obj/machinery/mineral/equipment_vendor/update_icon() + if(panel_open) + icon_state = "[initial(icon_state)]-open" + else if(powered()) + icon_state = initial(icon_state) + else + icon_state = "[initial(icon_state)]-off" + +/obj/machinery/mineral/equipment_vendor/attack_hand(mob/user) + if(..()) + return + interact(user) + +/obj/machinery/mineral/equipment_vendor/attack_ghost(mob/user) + interact(user) + +/obj/machinery/mineral/equipment_vendor/interact(mob/user) + user.set_machine(src) + + var/dat + dat +="
" + if(istype(inserted_id)) + dat += "You have [inserted_id.mining_points] mining points collected. Eject ID.
" + else + dat += "No ID inserted. Insert ID.
" + dat += "
" + dat += "
Equipment point cost list:
" + for(var/datum/data/mining_equipment/prize in prize_list) + dat += "" + dat += "
[prize.equipment_name][prize.cost]Purchase
" + var/datum/browser/popup = new(user, "miningvendor", "Mining Equipment Vendor", 400, 600) + popup.set_content(dat) + popup.open() + +/obj/machinery/mineral/equipment_vendor/Topic(href, href_list) + if(..()) + return 1 + + if(href_list["choice"]) + if(istype(inserted_id)) + if(href_list["choice"] == "eject") + to_chat(usr, "You eject the ID from [src]'s card slot.") + usr.put_in_hands(inserted_id) + inserted_id = null + else if(href_list["choice"] == "insert") + var/obj/item/weapon/card/id/I = usr.get_active_hand() + if(istype(I) && !inserted_id && usr.unEquip(I)) + I.forceMove(src) + inserted_id = I + interact(usr) + to_chat(usr, "You insert the ID into [src]'s card slot.") + else + to_chat(usr, "No valid ID.") + flick(icon_deny, src) + + if(href_list["purchase"]) + if(istype(inserted_id)) + var/datum/data/mining_equipment/prize = locate(href_list["purchase"]) + if (!prize || !(prize in prize_list)) + to_chat(usr, "Error: Invalid choice!") + flick(icon_deny, src) + return + if(prize.cost > inserted_id.mining_points) + to_chat(usr, "Error: Insufficent points for [prize.equipment_name]!") + flick(icon_deny, src) + else + inserted_id.mining_points -= prize.cost + to_chat(usr, "[src] clanks to life briefly before vending [prize.equipment_name]!") + new prize.equipment_path(drop_location()) + else + to_chat(usr, "Error: Please insert a valid ID!") + flick(icon_deny, src) + updateUsrDialog() + +/obj/machinery/mineral/equipment_vendor/attackby(obj/item/I, mob/user, params) + if(default_deconstruction_screwdriver(user, I)) + updateUsrDialog() + return + if(default_part_replacement(user, I)) + return + if(default_deconstruction_crowbar(user, I)) + return + if(istype(I, /obj/item/mining_voucher)) + if(!powered()) + return + RedeemVoucher(I, user) + return + if(istype(I,/obj/item/weapon/card/id)) + if(!powered()) + return + else if(!inserted_id && user.unEquip(I)) + I.forceMove(src) + inserted_id = I + interact(user) + return + ..() + +/obj/machinery/mineral/equipment_vendor/dismantle() + if(inserted_id) + inserted_id.forceMove(loc) //Prevents deconstructing the ORM from deleting whatever ID was inside it. + . = ..() + +/obj/machinery/mineral/equipment_vendor/proc/RedeemVoucher(obj/item/mining_voucher/voucher, mob/redeemer) + var/selection = input(redeemer, "Pick your equipment", "Mining Voucher Redemption") as null|anything in list("Kinetic Accelerator", "Resonator", "Mining Drone", "Advanced Scanner", "Crusher") + if(!selection || !Adjacent(redeemer) || voucher.loc != redeemer) + return + var/drop_location = drop_location() + switch(selection) + if("Kinetic Accelerator") + new /obj/item/weapon/gun/energy/kinetic_accelerator(drop_location) + if("Resonator") + new /obj/item/resonator(drop_location) + // if("Mining Drone") + // new /obj/item/storage/box/drone_kit(drop_location) + // if("Advanced Scanner") + // new /obj/item/device/t_scanner/adv_mining_scanner(drop_location) + // if("Crusher") + // new /obj/item/twohanded/required/mining_hammer(drop_location) + qdel(voucher) + +/obj/machinery/mineral/equipment_vendor/ex_act(severity, target) + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(5, 1, src) + s.start() + if(prob(50 / severity) && severity < 3) + qdel(src) diff --git a/code/modules/mining/orm_vr/mine_point_items.dm b/code/modules/mining/orm_vr/mine_point_items.dm new file mode 100644 index 0000000000..1994e77001 --- /dev/null +++ b/code/modules/mining/orm_vr/mine_point_items.dm @@ -0,0 +1,33 @@ +/**********************Mining Equipment Locker 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_vr.dmi' + icon_state = "mining_voucher" + w_class = ITEMSIZE_TINY + +/**********************Mining Point Card**********************/ + +/obj/item/weapon/card/mining_point_card + name = "mining point card" + desc = "A small card preloaded with mining points. Swipe your ID card over it to transfer the points, then discard." + icon_state = "data" + var/points = 500 + +/obj/item/weapon/card/mining_point_card/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/weapon/card/id)) + if(points) + var/obj/item/weapon/card/id/C = I + C.mining_points += points + to_chat(user, "You transfer [points] points to [C].") + points = 0 + else + to_chat(user, "There's no points left on [src].") + ..() + +/obj/item/weapon/card/mining_point_card/examine(mob/user) + ..(user) + to_chat(user, "There's [points] points on the card.") diff --git a/code/modules/reagents/reagent_containers/hypospray_vr.dm b/code/modules/reagents/reagent_containers/hypospray_vr.dm index 238bfdb269..9f52d9f699 100644 --- a/code/modules/reagents/reagent_containers/hypospray_vr.dm +++ b/code/modules/reagents/reagent_containers/hypospray_vr.dm @@ -1,4 +1,4 @@ -/obj/item/weapon/reagent_containers/hypospray/autoinjector/beltminer +/obj/item/weapon/reagent_containers/hypospray/autoinjector/miner name = "Emergency trauma injector" desc = "A rapid injector for emergency treatment of injuries. The warning label advises that it is not a substitute for proper medical treatment." icon_state = "autoinjector" @@ -6,7 +6,7 @@ amount_per_transfer_from_this = 10 volume = 10 -/obj/item/weapon/reagent_containers/hypospray/autoinjector/beltminer/New() +/obj/item/weapon/reagent_containers/hypospray/autoinjector/miner/New() ..() reagents.add_reagent("bicaridine", 5) reagents.add_reagent("tricordrazine", 3) @@ -21,4 +21,4 @@ /obj/item/weapon/storage/box/traumainjectors/New() ..() for (var/i = 1 to 7) - new /obj/item/weapon/reagent_containers/hypospray/autoinjector/beltminer(src) + new /obj/item/weapon/reagent_containers/hypospray/autoinjector/miner(src) diff --git a/icons/obj/machines/mining_machines_vr.dmi b/icons/obj/machines/mining_machines_vr.dmi new file mode 100644 index 0000000000..28d608125d Binary files /dev/null and b/icons/obj/machines/mining_machines_vr.dmi differ diff --git a/icons/obj/mining_vr.dmi b/icons/obj/mining_vr.dmi index 573f7de88e..070a2bf8da 100644 Binary files a/icons/obj/mining_vr.dmi and b/icons/obj/mining_vr.dmi differ diff --git a/vorestation.dme b/vorestation.dme index 751e07e391..30afc49bc6 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -1860,6 +1860,9 @@ #include "code\modules\mining\shelters.dm" #include "code\modules\mining\drilling\drill.dm" #include "code\modules\mining\drilling\scanner.dm" +#include "code\modules\mining\orm_vr\construction.dm" +#include "code\modules\mining\orm_vr\equipment_vendor.dm" +#include "code\modules\mining\orm_vr\mine_point_items.dm" #include "code\modules\mob\animations.dm" #include "code\modules\mob\death.dm" #include "code\modules\mob\emote.dm"