diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm index 9ded7947202..abc267d3a34 100644 --- a/code/game/objects/items/weapons/tanks/tanks.dm +++ b/code/game/objects/items/weapons/tanks/tanks.dm @@ -43,35 +43,31 @@ /obj/item/tank/proc/toggle_internals(mob/user, silent = FALSE) var/mob/living/carbon/C = user if(!istype(C)) - return 0 + return FALSE if(C.internal == src) to_chat(C, "You close \the [src] valve.") C.internal = null else - var/can_open_valve = 0 - if(C.get_organ_slot("breathing_tube")) - can_open_valve = 1 - else if(C.wear_mask && C.wear_mask.flags & AIRTIGHT) - can_open_valve = 1 - else if(ishuman(C)) - var/mob/living/carbon/human/H = C - if(H.head && H.head.flags & AIRTIGHT) - can_open_valve = 1 + if(!C.get_organ_slot("breathing_tube")) // Breathing tubes can always use internals, if they have one, skip ahead and turn internals on/off + if(!C.wear_mask) // Do we have a mask equipped? + return FALSE - if(can_open_valve) + var/obj/item/clothing/mask/M = C.wear_mask + // If the "mask" isn't actually a mask OR That mask isn't internals compatible AND Their headgear isn't internals compatible + if(!istype(M) || (!(initial(M.flags) & AIRTIGHT) && !(C.head.flags & AIRTIGHT))) + if(!silent) + to_chat(C, "You are not wearing a suitable mask or helmet.") + return FALSE + if(M.mask_adjusted) // If the mask is equipped but pushed down + M.adjustmask(C) // Adjust it back + + if(!silent) if(C.internal) - if(!silent) - to_chat(C, "You switch your internals to [src].") + to_chat(C, "You switch your internals to [src].") else - if(!silent) - to_chat(C, "You open \the [src] valve.") - C.internal = src - else - if(!silent) - to_chat(C, "You are not wearing a suitable mask or helmet.") - return 0 - + to_chat(C, "You open \the [src] valve.") + C.internal = src C.update_action_buttons_icon() diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm index fd67afcf797..311bc4a38c7 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm @@ -45,8 +45,6 @@ new /obj/item/clothing/suit/storage/labcoat(src) new /obj/item/radio/headset/headset_sci(src) new /obj/item/radio/headset/headset_sci(src) - new /obj/item/reagent_containers/food/drinks/oilcan(src) - new /obj/item/reagent_containers/food/drinks/oilcan(src) /obj/structure/closet/secure_closet/RD name = "research director's locker" diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index fd675bac32c..058b64d3c18 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -1,104 +1,21 @@ -/**********************Mining Equipment Locker**************************/ +// Use this define to register something as a purchasable! +// * n — The proper name of the purchasable +// * o — The object type path of the purchasable to spawn +// * p — The price of the purchasable in mining points +#define EQUIPMENT(n, o, p) n = new /datum/data/mining_equipment(n, o, p) + +/**********************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_state = "mining" - density = 1 - anchored = 1.0 + density = TRUE + anchored = TRUE 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("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("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("Space Cash", /obj/item/stack/spacecash/c1000, 2000), - new /datum/data/mining_equipment("Point Transfer Card", /obj/item/card/mining_point_card, 500), - 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("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("Survival Medipen", /obj/item/reagent_containers/hypospray/autoinjector/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/twohanded/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("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/duffel/mining_conscript/full, 1500), - new /datum/data/mining_equipment("Jetpack Upgrade", /obj/item/tank/jetpack/suit, 2000), - new /datum/data/mining_equipment("Mining Hardsuit", /obj/item/clothing/suit/space/hardsuit/mining, 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("Luxury Shelter Capsule", /obj/item/survivalcapsule/luxury, 3000), - new /datum/data/mining_equipment("Nanotrasen Minebot", /obj/item/mining_drone_cube, 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("Minebot AI Upgrade", /obj/item/slimepotion/sentience/mining, 1000), - new /datum/data/mining_equipment("KA Minebot Passthrough", /obj/item/borg/upgrade/modkit/minebot_passthrough, 100), - new /datum/data/mining_equipment("Lazarus Capsule", /obj/item/mobcapsule, 800), - new /datum/data/mining_equipment("Lazarus Capsule belt", /obj/item/storage/belt/lazarus, 200), - 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) - ) - -/obj/machinery/mineral/equipment_vendor/golem - name = "golem ship equipment vendor" - -/obj/machinery/mineral/equipment_vendor/golem/New() - ..() - component_parts = list() - component_parts += new /obj/item/circuitboard/mining_equipment_vendor/golem(null) - component_parts += new /obj/item/stock_parts/matter_bin(null) - component_parts += new /obj/item/stock_parts/matter_bin(null) - component_parts += new /obj/item/stock_parts/matter_bin(null) - component_parts += new /obj/item/stack/sheet/glass(null) - RefreshParts() - -/obj/machinery/mineral/equipment_vendor/golem/Initialize() - . = ..() - desc += "\nIt seems a few selections have been added." - prize_list += list( - new /datum/data/mining_equipment("Extra Id", /obj/item/card/id/golem, 250), - new /datum/data/mining_equipment("Science Backpack", /obj/item/storage/backpack/science, 250), - new /datum/data/mining_equipment("Full Toolbelt", /obj/item/storage/belt/utility/full/multitool, 250), - new /datum/data/mining_equipment("Monkey Cube", /obj/item/reagent_containers/food/snacks/monkeycube, 250), - 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("KA Trigger Modification Kit", /obj/item/borg/upgrade/modkit/trigger_guard, 1000), - new /datum/data/mining_equipment("Shuttle Console Board", /obj/item/circuitboard/shuttle/golem_ship, 2000), - new /datum/data/mining_equipment("The Liberator's Legacy", /obj/item/storage/box/rndboards, 2000) - - ) - -/datum/data/mining_equipment - var/equipment_name = "generic" - var/equipment_path = null - var/cost = 0 - -/datum/data/mining_equipment/New(name, path, equipment_cost) - equipment_name = name - equipment_path = path - cost = equipment_cost + var/list/prize_list // Initialized just below! (if you're wondering why - check CONTRIBUTING.md, look for: "hidden" init proc) + var/dirty_items = FALSE // Used to refresh the static/redundant data in case the machine gets VV'd /obj/machinery/mineral/equipment_vendor/New() ..() @@ -110,6 +27,72 @@ component_parts += new /obj/item/stack/sheet/glass(null) RefreshParts() +/obj/machinery/mineral/equipment_vendor/Initialize(mapload) + . = ..() + prize_list = list() + prize_list["Gear"] = list( + EQUIPMENT("Advanced Scanner", /obj/item/t_scanner/adv_mining_scanner, 800), + EQUIPMENT("Explorer's Webbing", /obj/item/storage/belt/mining, 500), + EQUIPMENT("Fulton Beacon", /obj/item/fulton_core, 400), + EQUIPMENT("Mining Conscription Kit", /obj/item/storage/backpack/duffel/mining_conscript, 1500), + EQUIPMENT("Jetpack Upgrade", /obj/item/tank/jetpack/suit, 2000), + EQUIPMENT("Jump Boots", /obj/item/clothing/shoes/bhop, 2500), + EQUIPMENT("Lazarus Capsule", /obj/item/mobcapsule, 800), + EQUIPMENT("Lazarus Capsule belt", /obj/item/storage/belt/lazarus, 200), + EQUIPMENT("Mining Hardsuit", /obj/item/clothing/suit/space/hardsuit/mining, 2000), + EQUIPMENT("Tracking Implant Kit", /obj/item/storage/box/minertracker, 600), + ) + prize_list["Consumables"] = list( + EQUIPMENT("10 Marker Beacons", /obj/item/stack/marker_beacon/ten, 100), + EQUIPMENT("Brute First-Aid Kit", /obj/item/storage/firstaid/brute, 600), + EQUIPMENT("Fulton Pack", /obj/item/extraction_pack, 1000), + EQUIPMENT("Jaunter", /obj/item/wormhole_jaunter, 750), + EQUIPMENT("Lazarus Injector", /obj/item/lazarus_injector, 1000), + EQUIPMENT("Point Transfer Card", /obj/item/card/mining_point_card, 500), + EQUIPMENT("Shelter Capsule", /obj/item/survivalcapsule, 400), + EQUIPMENT("Stabilizing Serum", /obj/item/hivelordstabilizer, 400), + EQUIPMENT("Survival Medipen", /obj/item/reagent_containers/hypospray/autoinjector/survival, 500), + ) + prize_list["Kinetic Accelerator"] = list( + EQUIPMENT("Kinetic Accelerator", /obj/item/gun/energy/kinetic_accelerator, 750), + EQUIPMENT("KA Adjustable Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer/adjustable, 150), + EQUIPMENT("KA AoE Damage", /obj/item/borg/upgrade/modkit/aoe/mobs, 2000), + EQUIPMENT("KA Cooldown Decrease", /obj/item/borg/upgrade/modkit/cooldown, 1000), + EQUIPMENT("KA Damage Increase", /obj/item/borg/upgrade/modkit/damage, 1000), + EQUIPMENT("KA Hyper Chassis", /obj/item/borg/upgrade/modkit/chassis_mod/orange, 300), + EQUIPMENT("KA Minebot Passthrough", /obj/item/borg/upgrade/modkit/minebot_passthrough, 100), + EQUIPMENT("KA Range Increase", /obj/item/borg/upgrade/modkit/range, 1000), + EQUIPMENT("KA Super Chassis", /obj/item/borg/upgrade/modkit/chassis_mod, 250), + EQUIPMENT("KA White Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer, 100), + ) + prize_list["Digging Tools"] = list( + EQUIPMENT("Diamond Pickaxe", /obj/item/pickaxe/diamond, 2000), + EQUIPMENT("Kinetic Accelerator", /obj/item/gun/energy/kinetic_accelerator, 750), + EQUIPMENT("Kinetic Crusher", /obj/item/twohanded/kinetic_crusher, 750), + EQUIPMENT("Resonator", /obj/item/resonator, 800), + EQUIPMENT("Silver Pickaxe", /obj/item/pickaxe/silver, 1000), + EQUIPMENT("Super Resonator", /obj/item/resonator/upgraded, 2500), + ) + prize_list["Minebot"] = list( + EQUIPMENT("Nanotrasen Minebot", /obj/item/mining_drone_cube, 800), + EQUIPMENT("Minebot AI Upgrade", /obj/item/slimepotion/sentience/mining, 1000), + EQUIPMENT("Minebot Armor Upgrade", /obj/item/mine_bot_upgrade/health, 400), + EQUIPMENT("Minebot Cooldown Upgrade", /obj/item/borg/upgrade/modkit/cooldown/minebot, 600), + EQUIPMENT("Minebot Melee Upgrade", /obj/item/mine_bot_upgrade, 400), + ) + prize_list["Miscellaneous"] = list( + EQUIPMENT("Absinthe", /obj/item/reagent_containers/food/drinks/bottle/absinthe/premium, 100), + EQUIPMENT("Alien Toy", /obj/item/clothing/mask/facehugger/toy, 300), + EQUIPMENT("Cigar", /obj/item/clothing/mask/cigarette/cigar/havana, 150), + EQUIPMENT("GAR Meson Scanners", /obj/item/clothing/glasses/meson/gar, 500), + EQUIPMENT("Laser Pointer", /obj/item/laser_pointer, 300), + EQUIPMENT("Luxury Shelter Capsule", /obj/item/survivalcapsule/luxury, 3000), + EQUIPMENT("Soap", /obj/item/soap/nanotrasen, 200), + EQUIPMENT("Space Cash", /obj/item/stack/spacecash/c1000, 2000), + EQUIPMENT("Whiskey", /obj/item/reagent_containers/food/drinks/bottle/whiskey, 100), + ) + prize_list["Extra"] = list() // Used in child vendors + /obj/machinery/mineral/equipment_vendor/power_change() ..() update_icon() @@ -126,90 +109,126 @@ /obj/machinery/mineral/equipment_vendor/attack_hand(mob/user) if(..()) return - interact(user) + tgui_interact(user) /obj/machinery/mineral/equipment_vendor/attack_ghost(mob/user) - interact(user) + tgui_interact(user) -/obj/machinery/mineral/equipment_vendor/interact(mob/user) - user.set_machine(src) +/obj/machinery/mineral/equipment_vendor/tgui_data(mob/user) + var/list/data[0] - var/dat - dat +="
| [prize.equipment_name] | [prize.cost] | Purchase |