diff --git a/code/game/asteroid.dm b/code/game/asteroid.dm index 48dfe916303..87e3ac87e67 100644 --- a/code/game/asteroid.dm +++ b/code/game/asteroid.dm @@ -88,8 +88,8 @@ var/global/max_secret_rooms = 6 theme = "cavein" walltypes = list(/turf/simulated/mineral/random/high_chance=1) floortypes = list(/turf/simulated/floor/plating/airless/asteroid, /turf/simulated/floor/beach/sand) - treasureitems = list(/obj/mecha/working/ripley/mining=1, /obj/item/weapon/pickaxe/drill/diamonddrill=2,/obj/item/weapon/gun/energy/kinetic_accelerator=1, - /obj/item/weapon/resonator=1, /obj/item/weapon/pickaxe/drill/jackhammer=5) + treasureitems = list(/obj/mecha/working/ripley/mining=1, /obj/item/weapon/pickaxe/drill/diamonddrill=2,/obj/item/weapon/gun/energy/kinetic_accelerator/hyper=1, + /obj/item/weapon/resonator/upgraded=1, /obj/item/weapon/pickaxe/drill/jackhammer=5) fluffitems = list(/obj/effect/decal/cleanable/blood=3,/obj/effect/decal/remains/human=1,/obj/item/clothing/under/overalls=1, /obj/item/weapon/reagent_containers/food/snacks/grown/chili=1,/obj/item/weapon/tank/oxygen/red=2) @@ -165,6 +165,10 @@ var/global/max_secret_rooms = 6 valid = 0 continue + if(locate(/area/mine/abandoned) in surroundings) + valid = 0 + continue + if(locate(/turf/space) in surroundings) valid = 0 continue diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 87560b65d20..a7703f651ab 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -584,7 +584,7 @@ obj/item/weapon/circuitboard/rdserver origin_tech = "programming=3;engineering=5;bluespace=5;materials=4" frame_desc = "Requires 3 Bluespace Crystals and 1 Matter Bin." req_components = list( - /obj/item/bluespace_crystal = 3, + /obj/item/weapon/ore/bluespace_crystal = 3, /obj/item/weapon/stock_parts/matter_bin = 1) /obj/item/weapon/circuitboard/teleporter_station @@ -594,7 +594,7 @@ obj/item/weapon/circuitboard/rdserver origin_tech = "programming=4;engineering=4;bluespace=4" frame_desc = "Requires 2 Bluespace Crystals, 2 Capacitors and 1 Console Screen." req_components = list( - /obj/item/bluespace_crystal = 2, + /obj/item/weapon/ore/bluespace_crystal = 2, /obj/item/weapon/stock_parts/capacitor = 2, /obj/item/weapon/stock_parts/console_screen = 1) @@ -605,7 +605,7 @@ obj/item/weapon/circuitboard/rdserver origin_tech = "programming=4;engineering=3;materials=3;bluespace=4" frame_desc = "Requires 2 Bluespace Crystals, 1 Capacitor, 1 piece of cable and 1 Console Screen." req_components = list( - /obj/item/bluespace_crystal = 2, + /obj/item/weapon/ore/bluespace_crystal = 2, /obj/item/weapon/stock_parts/capacitor = 1, /obj/item/stack/cable_coil = 1, /obj/item/weapon/stock_parts/console_screen = 1) diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index 2df044d7e8a..6a4dbe224d7 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -276,9 +276,9 @@ link_power_station() component_parts = list() component_parts += new /obj/item/weapon/circuitboard/teleporter_hub(null) - component_parts += new /obj/item/bluespace_crystal/artificial(null) - component_parts += new /obj/item/bluespace_crystal/artificial(null) - component_parts += new /obj/item/bluespace_crystal/artificial(null) + component_parts += new /obj/item/weapon/ore/bluespace_crystal/artificial(null) + component_parts += new /obj/item/weapon/ore/bluespace_crystal/artificial(null) + component_parts += new /obj/item/weapon/ore/bluespace_crystal/artificial(null) component_parts += new /obj/item/weapon/stock_parts/matter_bin(null) RefreshParts() @@ -286,9 +286,9 @@ ..() component_parts = list() component_parts += new /obj/item/weapon/circuitboard/teleporter_hub(null) - component_parts += new /obj/item/bluespace_crystal/artificial(null) - component_parts += new /obj/item/bluespace_crystal/artificial(null) - component_parts += new /obj/item/bluespace_crystal/artificial(null) + component_parts += new /obj/item/weapon/ore/bluespace_crystal/artificial(null) + component_parts += new /obj/item/weapon/ore/bluespace_crystal/artificial(null) + component_parts += new /obj/item/weapon/ore/bluespace_crystal/artificial(null) component_parts += new /obj/item/weapon/stock_parts/matter_bin/super(null) RefreshParts() @@ -385,8 +385,8 @@ ..() component_parts = list() component_parts += new /obj/item/weapon/circuitboard/teleporter_station(null) - component_parts += new /obj/item/bluespace_crystal/artificial(null) - component_parts += new /obj/item/bluespace_crystal/artificial(null) + component_parts += new /obj/item/weapon/ore/bluespace_crystal/artificial(null) + component_parts += new /obj/item/weapon/ore/bluespace_crystal/artificial(null) component_parts += new /obj/item/weapon/stock_parts/capacitor(null) component_parts += new /obj/item/weapon/stock_parts/capacitor(null) component_parts += new /obj/item/weapon/stock_parts/console_screen(null) diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index 12a64dc01bb..41b6b99fb87 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -1090,7 +1090,9 @@ return var/list/occupant = list() occupant |= mecha.occupant + mecha.occupant.sight |= SEE_TURFS scanning = 1 mineral_scan_pulse(occupant,get_turf(loc)) spawn(equip_cooldown) scanning = 0 + mecha.occupant.sight -= SEE_TURFS diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index 5e684b9ddef..844ccd978eb 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -1204,7 +1204,7 @@ "backkey"=/obj/item/weapon/crowbar, "desc"="The bluespace crystal is installed."), //10 - list("key"=/obj/item/bluespace_crystal, + list("key"=/obj/item/weapon/ore/bluespace_crystal, "backkey"=/obj/item/weapon/screwdriver, "desc"="Super capacitor is secured."), //11 @@ -1394,7 +1394,7 @@ holder.icon_state = "phazon16" else user.visible_message("[user] removes the bluespace crystal from the [holder].", "You remove the bluespace crystal from the [holder].") - new /obj/item/bluespace_crystal(get_turf(holder)) + new /obj/item/weapon/ore/bluespace_crystal(get_turf(holder)) holder.icon_state = "phazon14" if(8) if(diff==FORWARD) diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index 3eba9cc2132..0666f6472af 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -20,6 +20,10 @@ return */ +/obj/mecha/working/ripley/Move() + . = ..() + update_pressure() + /obj/mecha/working/ripley/Destroy() while(src.damage_absorption.["brute"] < 0.6) new /obj/item/asteroid/goliath_hide(src.loc) @@ -165,4 +169,18 @@ if(T) T.Entered(A) step_rand(A) - return ..() \ No newline at end of file + return ..() + +/obj/mecha/working/ripley/proc/update_pressure() + var/turf/T = get_turf(loc) + var/datum/gas_mixture/environment = T.return_air() + var/pressure = environment.return_pressure() + + if(pressure < 20) + step_in = 3 + for(var/obj/item/mecha_parts/mecha_equipment/tool/drill/drill in equipment) + drill.equip_cooldown = initial(drill.equip_cooldown)/2 + else + step_in = 5 + for(var/obj/item/mecha_parts/mecha_equipment/tool/drill/drill in equipment) + drill.equip_cooldown = initial(drill.equip_cooldown) \ No newline at end of file diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index eaf73f5cd61..632914cd92f 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -69,6 +69,19 @@ /obj/item/clothing/glasses/meson/prescription prescription = 1 +/obj/item/clothing/glasses/meson/gar + name = "gar mesons" + icon_state = "garm" + item_state = "garm" + desc = "Do the impossible, see the invisible!" + force = 10 + throwforce = 10 + throw_speed = 4 + attack_verb = list("sliced") + hitsound = 'sound/weapons/bladeslice.ogg' + sharp = 1 + edge = 1 + /obj/item/clothing/glasses/meson/cyber name = "Eye Replacement Implant" desc = "An implanted replacement for a left eye with meson vision capabilities." diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm index d410bf2fd97..9383a78588c 100644 --- a/code/modules/mining/equipment_locker.dm +++ b/code/modules/mining/equipment_locker.dm @@ -19,7 +19,7 @@ var/ore_pickup_rate = 15 var/sheet_per_ore = 1 var/point_upgrade = 1 - var/list/ore_values = list(("sand" = 1), ("iron" = 1), ("gold" = 20), ("silver" = 20), ("uranium" = 20), ("bananium" = 30), ("diamond" = 40), ("plasma" = 40)) + var/list/ore_values = list(("sand" = 1), ("iron" = 1), ("plasma" = 15), ("silver" = 16), ("gold" = 18), ("uranium" = 30), ("diamond" = 50), ("bananium" = 60)) var/list/supply_consoles = list("Science", "Robotics", "Research Director's Desk", "Mechanic", "Engineering" = list("metal", "glass", "plasma"), "Chief Engineer's Desk" = list("metal", "glass", "plasma"), "Atmospherics" = list("metal", "glass", "plasma"), "Bar" = list("uranium", "plasma")) /obj/machinery/mineral/ore_redemption/New() @@ -79,28 +79,33 @@ qdel(O) //... garbage collect /obj/machinery/mineral/ore_redemption/process() - if(!panel_open) //If the machine is partially dissassembled, it should not process minerals - var/turf/T = get_turf(get_step(src, input_dir)) - var/i + if(!panel_open && powered()) //If the machine is partially disassembled and/or depowered, it should not process minerals + var/turf/T = get_step(src, input_dir) + var/i = 0 if(T) - if(locate(/obj/item/weapon/ore) in T) - for (i = 0; i < ore_pickup_rate; i++) - var/obj/item/weapon/ore/O = locate() in T - if(O) - process_sheet(O) - else + for(var/obj/item/weapon/ore/O in T) + if (i >= ore_pickup_rate) + break + else if (!O || !O.refined_type) + continue + else + process_sheet(O) + i++ + else + var/obj/structure/ore_box/B = locate() in T + if(B) + for(var/obj/item/weapon/ore/O in B.contents) + if (i >= ore_pickup_rate) break - else - var/obj/structure/ore_box/B = locate() in T - if(B) - for (i = 0; i < ore_pickup_rate; i++) - var/obj/item/weapon/ore/O = locate() in B.contents - if(O) - process_sheet(O) - else - break + else if (!O || !O.refined_type) + continue + else + process_sheet(O) + i++ /obj/machinery/mineral/ore_redemption/attackby(var/obj/item/weapon/W, var/mob/user, params) + if (!powered()) + return if(istype(W,/obj/item/weapon/card/id)) var/obj/item/weapon/card/id/I = usr.get_active_hand() if(istype(I) && !istype(inserted_id)) @@ -249,7 +254,7 @@ if(!(/obj/item/stack/sheet/mineral/plasma in stack_list)) return var/obj/item/stack/sheet/glassstack = stack_list[/obj/item/stack/sheet/glass] var/obj/item/stack/sheet/plasmastack = stack_list[/obj/item/stack/sheet/mineral/plasma] - + var/desired = input("How much?", "How much would you like to smelt?", 1) as num var/obj/item/stack/sheet/plasmaglass/plasglassout = new plasglassout.amount = min(desired, 50, glassstack.amount, plasmastack.amount) @@ -287,6 +292,17 @@ s.forceMove(loc) s.layer = initial(s.layer) +/obj/machinery/mineral/ore_redemption/power_change() + ..() + update_icon() + +/obj/machinery/mineral/ore_redemption/update_icon() + if(powered()) + icon_state = initial(icon_state) + else + icon_state = "[initial(icon_state)]-off" + return + /**********************Mining Equipment Locker**************************/ /obj/machinery/mineral/equipment_vendor @@ -304,17 +320,23 @@ new /datum/data/mining_equipment("Whiskey", /obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey, 100), new /datum/data/mining_equipment("Cigar", /obj/item/clothing/mask/cigarette/cigar/havana, 150), new /datum/data/mining_equipment("Soap", /obj/item/weapon/soap/nanotrasen, 200), - new /datum/data/mining_equipment("Jaunter", /obj/item/device/wormhole_jaunter, 250), new /datum/data/mining_equipment("Laser Pointer", /obj/item/device/laser_pointer, 300), new /datum/data/mining_equipment("Alien Toy", /obj/item/clothing/mask/facehugger/toy, 300), new /datum/data/mining_equipment("Advanced Scanner", /obj/item/device/t_scanner/adv_mining_scanner, 400), - new /datum/data/mining_equipment("Mining Drone", /mob/living/simple_animal/hostile/mining_drone, 500), + new /datum/data/mining_equipment("Hivelord Stabilizer", /obj/item/weapon/hivelordstabilizer, 400), + new /datum/data/mining_equipment("Mining Drone", /obj/item/weapon/mining_drone_cube, 500), + new /datum/data/mining_equipment("GAR mesons", /obj/item/clothing/glasses/meson/gar, 500), + new /datum/data/mining_equipment("Brute First-Aid Kit", /obj/item/weapon/storage/firstaid/brute, 600), + new /datum/data/mining_equipment("Jaunter", /obj/item/device/wormhole_jaunter, 600), new /datum/data/mining_equipment("Kinetic Accelerator", /obj/item/weapon/gun/energy/kinetic_accelerator, 750), new /datum/data/mining_equipment("Resonator", /obj/item/weapon/resonator, 800), new /datum/data/mining_equipment("Lazarus Injector", /obj/item/weapon/lazarus_injector, 1000), - new /datum/data/mining_equipment("Diamond Pickaxe", /obj/item/weapon/pickaxe/diamond, 1200), - new /datum/data/mining_equipment("Jetpack", /obj/item/weapon/tank/jetpack/carbondioxide/mining, 1500), + new /datum/data/mining_equipment("Silver Pickaxe", /obj/item/weapon/pickaxe/silver, 1000), + new /datum/data/mining_equipment("Jetpack", /obj/item/weapon/tank/jetpack/carbondioxide/mining, 2000), new /datum/data/mining_equipment("Space Cash", /obj/item/weapon/spacecash/c1000, 2000), + new /datum/data/mining_equipment("Diamond Pickaxe", /obj/item/weapon/pickaxe/diamond, 2000), + new /datum/data/mining_equipment("Super Resonator", /obj/item/weapon/resonator/upgraded, 2500), + new /datum/data/mining_equipment("Super Accelerator", /obj/item/weapon/gun/energy/kinetic_accelerator/super, 3000), new /datum/data/mining_equipment("Point Transfer Card", /obj/item/weapon/card/mining_point_card, 500), ) @@ -339,6 +361,17 @@ component_parts += new /obj/item/weapon/stock_parts/console_screen(null) RefreshParts() +/obj/machinery/mineral/equipment_vendor/power_change() + ..() + update_icon() + +/obj/machinery/mineral/equipment_vendor/update_icon() + if(powered()) + icon_state = initial(icon_state) + else + icon_state = "[initial(icon_state)]-off" + return + /obj/machinery/mineral/equipment_vendor/attack_hand(user as mob) if(..()) return @@ -424,8 +457,7 @@ if("Resonator") new /obj/item/weapon/resonator(src.loc) if("Mining Drone") - new /mob/living/simple_animal/hostile/mining_drone(src.loc) - new /obj/item/weapon/weldingtool/hugetank(src.loc) + new /obj/item/weapon/storage/box/drone_kit(src.loc) if("Advanced Scanner") new /obj/item/device/t_scanner/adv_mining_scanner(src.loc) qdel(voucher) @@ -548,6 +580,13 @@ var/burst_time = 50 var/fieldlimit = 3 +/obj/item/weapon/resonator/upgraded + name = "upgraded resonator" + desc = "An upgraded version of the resonator that can produce more fields at once." + icon_state = "resonator_u" + origin_tech = "magnets=3;combat=3" + fieldlimit = 5 + /obj/item/weapon/resonator/proc/CreateResonance(var/target, var/creator) var/turf/T = get_turf(target) if(locate(/obj/effect/resonance) in T) @@ -623,6 +662,22 @@ return +/**********************Mining drone cube**********************/ + +/obj/item/weapon/mining_drone_cube + name = "mining drone cube" + desc = "Compressed mining drone, ready for deployment. Just press the button to activate!" + w_class = 2.0 + icon = 'icons/obj/aibots.dmi' + icon_state = "minedronecube" + item_state = "electronic" + +/obj/item/weapon/mining_drone_cube/attack_self(mob/user) + user.visible_message("\The [src] suddenly expands into a fully functional mining drone!", \ + "You press center button on \the [src]. The device suddenly expands into a fully functional mining drone!") + new /mob/living/simple_animal/hostile/mining_drone(get_turf(src)) + qdel(src) + /**********************Mining drone**********************/ /mob/living/simple_animal/hostile/mining_drone @@ -757,6 +812,22 @@ SetOffenseBehavior() ..() + +/**********************Mining drone kit**********************/ + +/obj/item/weapon/storage/box/drone_kit + name = "Drone Kit" + desc = "A boxed kit that includes one mining drone cube and a welding tool with an increased capacity." + icon_state = "implant" + max_w_class = 3 + storage_slots = 2 + can_hold = list("/obj/item/weapon/mining_drone_cube","/obj/item/weapon/weldingtool/hugetank") + +/obj/item/weapon/storage/box/drone_kit/New() + ..() + new /obj/item/weapon/mining_drone_cube(src) + new /obj/item/weapon/weldingtool/hugetank(src) + /**********************Lazarus Injector**********************/ /obj/item/weapon/lazarus_injector @@ -904,3 +975,22 @@ volume = 40 throw_range = 7 w_class = 3 //same as syndie harness + +/*********************Hivelord stabilizer****************/ + +/obj/item/weapon/hivelordstabilizer + name = "hivelord stabilizer" + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle19" + desc = "Inject a hivelord core with this stabilizer to preserve its healing powers indefinitely." + w_class = 1 + origin_tech = "biotech=1" + +/obj/item/weapon/hivelordstabilizer/afterattack(obj/item/M, mob/user) + var/obj/item/asteroid/hivelord_core/C = M + if(!istype(C, /obj/item/asteroid/hivelord_core)) + user << "The stabilizer only works on hivelord cores." + return ..() + C.preserved = 1 + user << "You inject the hivelord core with the stabilizer. It will no longer go inert." + qdel(src) diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index e9e925983b8..5b96c543a60 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -71,6 +71,14 @@ /obj/item/weapon/pickaxe/proc/playDigSound() playsound(src, pick(digsound),20,1) +/obj/item/weapon/pickaxe/silver + name = "silver-plated pickaxe" + icon_state = "spickaxe" + item_state = "spickaxe" + digspeed = 30 //mines faster than a normal pickaxe, bought from mining vendor + origin_tech = "materials=3;engineering=2" + desc = "A silver-plated pickaxe that mines slightly faster than standard-issue." + /obj/item/weapon/pickaxe/diamond name = "diamond-tipped pickaxe" icon_state = "dpickaxe" diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index a2a7cbc706a..6e4defb9477 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -89,6 +89,7 @@ var/global/list/rockTurfEdgeCache /turf/simulated/mineral/proc/HideRock() if(hidden) + name = "rock" icon_state = "rock" return @@ -135,6 +136,7 @@ var/global/list/rockTurfEdgeCache if("BScrystal") M = new/turf/simulated/mineral/bscrystal(src) if(M) + M.mineralAmt = rand(1, 5) src = M M.levelupdate() return @@ -240,7 +242,7 @@ var/global/list/rockTurfEdgeCache /turf/simulated/mineral/bscrystal name = "bluespace crystal deposit" icon_state = "rock_BScrystal" - mineralType = /obj/item/bluespace_crystal + mineralType = /obj/item/weapon/ore/bluespace_crystal mineralName = "Bluespace crystal" mineralAmt = 1 spreadChance = 0 diff --git a/code/modules/mining/ore.dm b/code/modules/mining/ore.dm index 8f520427b0c..f1def2e0270 100644 --- a/code/modules/mining/ore.dm +++ b/code/modules/mining/ore.dm @@ -9,7 +9,7 @@ /obj/item/weapon/ore/attackby(obj/item/I as obj, mob/user as mob, params) if(istype(I, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/W = I - if(W.remove_fuel(15)) + if(W.remove_fuel(15) && refined_type) new refined_type(get_turf(src.loc)) qdel(src) else if(W.isOn()) @@ -20,7 +20,7 @@ name = "uranium ore" icon_state = "Uranium ore" origin_tech = "materials=5" - points = 18 + points = 30 refined_type = /obj/item/stack/sheet/mineral/uranium materials = list(MAT_URANIUM=MINERAL_MATERIAL_AMOUNT) @@ -63,7 +63,7 @@ name = "plasma ore" icon_state = "Plasma ore" origin_tech = "plasmatech=2;materials=2" - points = 36 + points = 15 refined_type = /obj/item/stack/sheet/mineral/plasma materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT) @@ -79,7 +79,7 @@ name = "silver ore" icon_state = "Silver ore" origin_tech = "materials=3" - points = 18 + points = 16 refined_type = /obj/item/stack/sheet/mineral/silver materials = list(MAT_SILVER=MINERAL_MATERIAL_AMOUNT) @@ -95,7 +95,7 @@ name = "diamond ore" icon_state = "Diamond ore" origin_tech = "materials=6" - points = 36 + points = 50 refined_type = /obj/item/stack/sheet/mineral/diamond materials = list(MAT_DIAMOND=MINERAL_MATERIAL_AMOUNT) @@ -103,7 +103,7 @@ name = "bananium ore" icon_state = "Clown ore" origin_tech = "materials=4" - points = 27 + points = 60 refined_type = /obj/item/stack/sheet/mineral/bananium materials = list(MAT_BANANIUM=MINERAL_MATERIAL_AMOUNT) diff --git a/code/modules/mining/satchel_ore_boxdm.dm b/code/modules/mining/satchel_ore_boxdm.dm index ec69fb3d910..0cd4e62e4d7 100644 --- a/code/modules/mining/satchel_ore_boxdm.dm +++ b/code/modules/mining/satchel_ore_boxdm.dm @@ -31,6 +31,7 @@ var/amt_plasma = 0 var/amt_uranium = 0 var/amt_clown = 0 + var/amt_bluespace = 0 for (var/obj/item/weapon/ore/C in contents) if (istype(C,/obj/item/weapon/ore/diamond)) @@ -49,6 +50,8 @@ amt_uranium++; if (istype(C,/obj/item/weapon/ore/bananium)) amt_clown++; + if (istype(C,/obj/item/weapon/ore/bluespace_crystal)) + amt_bluespace++ var/dat = text("The contents of the ore box reveal...
") if (amt_gold) @@ -67,6 +70,8 @@ dat += text("Uranium ore: [amt_uranium]
") if (amt_clown) dat += text("Bananium ore: [amt_clown]
") + if (amt_bluespace) + dat += text("Bluespace crystals: [amt_bluespace]
") dat += text("

Empty box") user << browse("[dat]", "window=orebox") diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm index da8dda44a3e..7b8b7617431 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm @@ -153,6 +153,11 @@ var/ore_eaten = 1 var/chase_time = 100 +/mob/living/simple_animal/hostile/asteroid/goldgrub/New() + ..() + ore_types_eaten += pick(/obj/item/weapon/ore/silver, /obj/item/weapon/ore/gold, /obj/item/weapon/ore/uranium, /obj/item/weapon/ore/diamond) + ore_eaten = rand(1,3) + /mob/living/simple_animal/hostile/asteroid/goldgrub/GiveTarget(var/new_target) target = new_target if(target != null) @@ -182,8 +187,8 @@ if(!(O.type in ore_types_eaten)) ore_types_eaten += O.type qdel(O) - if(ore_eaten > 5)//Limit the scope of the reward you can get, or else things might get silly - ore_eaten = 5 + if(ore_eaten > 10)//Limit the scope of the reward you can get, or else things might get silly + ore_eaten = 10 visible_message("The ore was swallowed whole!") /mob/living/simple_animal/hostile/asteroid/goldgrub/proc/Burrow()//Begin the chase to kill the goldgrub in time @@ -272,11 +277,13 @@ icon = 'icons/obj/food/food.dmi' icon_state = "boiledrorocore" var/inert = 0 + var/preserved = 0 /obj/item/asteroid/hivelord_core/New() - spawn(1200) - inert = 1 - desc = "The remains of a hivelord that have become useless, having been left alone too long after being harvested." + spawn(2400) + if(!preserved) + inert = 1 + desc = "The remains of a hivelord that have become useless, having been left alone too long after being harvested." /obj/item/asteroid/hivelord_core/attack(mob/living/M as mob, mob/living/user as mob) if(ishuman(M)) diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 917171351b3..3d765d7e1da 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -207,6 +207,24 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. var/overheat_time = 16 var/recent_reload = 1 +/obj/item/weapon/gun/energy/kinetic_accelerator/super + name = "super-kinetic accelerator" + desc = "An upgraded, superior version of the proto-kinetic accelerator." + icon_state = "kineticgun_u" + projectile_type = "/obj/item/projectile/kinetic/super" + overheat_time = 15 + fire_delay = 15 + origin_tech = "combat=3;powerstorage=2" + +/obj/item/weapon/gun/energy/kinetic_accelerator/hyper + name = "hyper-kinetic accelerator" + desc = "An upgraded, even more superior version of the proto-kinetic accelerator." + icon_state = "kineticgun_h" + projectile_type = "/obj/item/projectile/kinetic/hyper" + overheat_time = 13 + fire_delay = 13 + origin_tech = "combat=4;powerstorage=3" + /obj/item/weapon/gun/energy/kinetic_accelerator/cyborg flags = NODROP diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index 38fa2f06fdb..ac9cb8f0ac8 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -218,6 +218,16 @@ damage_type = BRUTE flag = "bomb" range = 3 + var/splash = 0 + +/obj/item/projectile/kinetic/super + damage = 11 + range = 4 + +/obj/item/projectile/kinetic/hyper + damage = 12 + range = 5 + splash = 1 obj/item/projectile/kinetic/New() var/turf/proj_turf = get_turf(src) @@ -243,6 +253,11 @@ obj/item/projectile/kinetic/New() var/turf/simulated/mineral/M = target_turf M.gets_drilled(firer) new /obj/item/effect/kinetic_blast(target_turf) + if(src.splash) + for(var/turf/T in range(splash, target_turf)) + if(istype(T, /turf/simulated/mineral)) + var/turf/simulated/mineral/M = T + M.gets_drilled(firer) /obj/item/effect/kinetic_blast name = "kinetic explosion" diff --git a/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_slime.dm b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_slime.dm index b44ffa066c4..e4726c4779c 100644 --- a/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_slime.dm +++ b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_slime.dm @@ -461,7 +461,7 @@ on_reaction(var/datum/reagents/holder, var/created_volume) feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") if(holder.my_atom) - var/obj/item/bluespace_crystal/BC = new(get_turf(holder.my_atom)) + var/obj/item/weapon/ore/bluespace_crystal/BC = new(get_turf(holder.my_atom)) BC.visible_message("The [BC.name] appears out of thin air!") //Cerulean slimepsteroid2 diff --git a/code/modules/research/designs/bluespace_designs.dm b/code/modules/research/designs/bluespace_designs.dm index 06e6d3cd257..e15fe544f1a 100644 --- a/code/modules/research/designs/bluespace_designs.dm +++ b/code/modules/research/designs/bluespace_designs.dm @@ -9,7 +9,7 @@ build_type = PROTOLATHE materials = list(MAT_DIAMOND = 1500, MAT_PLASMA = 1500) reliability = 100 - build_path = /obj/item/bluespace_crystal/artificial + build_path = /obj/item/weapon/ore/bluespace_crystal/artificial category = list("Bluespace") /datum/design/bag_holding diff --git a/code/modules/research/designs/mining_designs.dm b/code/modules/research/designs/mining_designs.dm index 9bf221cb5d5..2b7d911f2b1 100644 --- a/code/modules/research/designs/mining_designs.dm +++ b/code/modules/research/designs/mining_designs.dm @@ -60,6 +60,36 @@ id = "jackhammer" req_tech = list("materials" = 6, "powerstorage" = 6, "engineering" = 5, "magnets" = 6) build_type = PROTOLATHE - materials = list(MAT_METAL = 8000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_DIAMOND = 6000) + materials = list(MAT_METAL = 6000, MAT_GLASS = 2000, MAT_SILVER = 2000, MAT_DIAMOND = 6000) build_path = /obj/item/weapon/pickaxe/drill/jackhammer category = list("Mining") + +/datum/design/superaccelerator + name = "Super-Kinetic Accelerator" + desc = "An upgraded version of the proto-kinetic accelerator, with superior damage, speed and range." + id = "superaccelerator" + req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3) + build_type = PROTOLATHE + materials = list(MAT_METAL = 8000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_URANIUM = 2000) + build_path = /obj/item/weapon/gun/energy/kinetic_accelerator/super + category = list("Mining") + +/datum/design/hyperaccelerator + name = "Hyper-Kinetic Accelerator" + desc = "An upgraded version of the proto-kinetic accelerator, with even more superior damage, speed and range." + id = "hyperaccelerator" + req_tech = list("materials" = 6, "powerstorage" = 6, "engineering" = 5, "magnets" = 6, "combat" = 4) + build_type = PROTOLATHE + materials = list(MAT_METAL = 8000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_GOLD = 2000, MAT_DIAMOND = 2000) + build_path = /obj/item/weapon/gun/energy/kinetic_accelerator/hyper + category = list("Mining") + +/datum/design/superresonator + name = "Upgraded Resonator" + desc = "An upgraded version of the resonator that allows more fields to be active at once." + id = "superresonator" + req_tech = list("materials" = 4, "powerstorage" = 3, "engineering" = 3, "magnets" = 3) + build_type = PROTOLATHE + materials = list(MAT_METAL = 4000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_URANIUM = 2000) + build_path = /obj/item/weapon/resonator/upgraded + category = list("Mining") \ No newline at end of file diff --git a/code/modules/telesci/bscrystal.dm b/code/modules/telesci/bscrystal.dm index b554c244ba7..2c6185d0d3c 100644 --- a/code/modules/telesci/bscrystal.dm +++ b/code/modules/telesci/bscrystal.dm @@ -1,39 +1,40 @@ // Bluespace crystals, used in telescience and when crushed it will blink you to a random turf. -/obj/item/bluespace_crystal +/obj/item/weapon/ore/bluespace_crystal name = "bluespace crystal" desc = "A glowing bluespace crystal, not much is known about how they work. It looks very delicate." icon = 'icons/obj/telescience.dmi' icon_state = "bluespace_crystal" w_class = 1 origin_tech = "bluespace=4;materials=3" + points = 50 var/blink_range = 8 // The teleport range when crushed/thrown at someone. -/obj/item/bluespace_crystal/New() +/obj/item/weapon/ore/bluespace_crystal/New() ..() pixel_x = rand(-5, 5) pixel_y = rand(-5, 5) -/obj/item/bluespace_crystal/attack_self(var/mob/user) +/obj/item/weapon/ore/bluespace_crystal/attack_self(var/mob/user) blink_mob(user) user.drop_item() user.visible_message("[user] crushes the [src]!") qdel(src) -/obj/item/bluespace_crystal/proc/blink_mob(var/mob/living/L) +/obj/item/weapon/ore/bluespace_crystal/proc/blink_mob(var/mob/living/L) if(L.z in config.admin_levels) src.visible_message("[src]'s fragments begin rapidly vibrating and blink out of existence.") qdel(src) return do_teleport(L, get_turf(L), blink_range, asoundin = 'sound/effects/phasein.ogg') -/obj/item/bluespace_crystal/throw_impact(atom/hit_atom) +/obj/item/weapon/ore/bluespace_crystal/throw_impact(atom/hit_atom) ..() if(isliving(hit_atom)) blink_mob(hit_atom) qdel(src) // Artifical bluespace crystal, doesn't give you much research. -/obj/item/bluespace_crystal/artificial +/obj/item/weapon/ore/bluespace_crystal/artificial name = "artificial bluespace crystal" desc = "An artificially made bluespace crystal, it looks delicate." origin_tech = "bluespace=2" diff --git a/code/modules/telesci/telepad.dm b/code/modules/telesci/telepad.dm index 1fe42e91ede..ee4e9a790a6 100644 --- a/code/modules/telesci/telepad.dm +++ b/code/modules/telesci/telepad.dm @@ -14,8 +14,8 @@ ..() component_parts = list() component_parts += new /obj/item/weapon/circuitboard/telesci_pad(null) - component_parts += new /obj/item/bluespace_crystal/artificial(null) - component_parts += new /obj/item/bluespace_crystal/artificial(null) + component_parts += new /obj/item/weapon/ore/bluespace_crystal/artificial(null) + component_parts += new /obj/item/weapon/ore/bluespace_crystal/artificial(null) component_parts += new /obj/item/weapon/stock_parts/capacitor(null) component_parts += new /obj/item/weapon/stock_parts/console_screen(null) component_parts += new /obj/item/stack/cable_coil(null, 1) @@ -25,8 +25,8 @@ ..() component_parts = list() component_parts += new /obj/item/weapon/circuitboard/telesci_pad(null) - component_parts += new /obj/item/bluespace_crystal/artificial(null) - component_parts += new /obj/item/bluespace_crystal/artificial(null) + component_parts += new /obj/item/weapon/ore/bluespace_crystal/artificial(null) + component_parts += new /obj/item/weapon/ore/bluespace_crystal/artificial(null) component_parts += new /obj/item/weapon/stock_parts/capacitor/super(null) component_parts += new /obj/item/weapon/stock_parts/console_screen(null) component_parts += new /obj/item/stack/cable_coil(null, 1) diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm index a060b0619d4..15edeec20a2 100644 --- a/code/modules/telesci/telesci_computer.dm +++ b/code/modules/telesci/telesci_computer.dm @@ -49,10 +49,10 @@ /obj/machinery/computer/telescience/initialize() ..() for(var/i = 1; i <= starting_crystals; i++) - crystals += new /obj/item/bluespace_crystal/artificial(null) // starting crystals + crystals += new /obj/item/weapon/ore/bluespace_crystal/artificial(null) // starting crystals /obj/machinery/computer/telescience/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/bluespace_crystal)) + if(istype(W, /obj/item/weapon/ore/bluespace_crystal)) if(crystals.len >= max_crystals) user << "There are not enough crystal slots." return diff --git a/icons/mob/eyes.dmi b/icons/mob/eyes.dmi index fb089d6455f..75d3a2d077e 100644 Binary files a/icons/mob/eyes.dmi and b/icons/mob/eyes.dmi differ diff --git a/icons/obj/aibots.dmi b/icons/obj/aibots.dmi index 3c6ecf0c776..1a0d4960abe 100644 Binary files a/icons/obj/aibots.dmi and b/icons/obj/aibots.dmi differ diff --git a/icons/obj/clothing/glasses.dmi b/icons/obj/clothing/glasses.dmi index c41b8e60053..a63f9af50bc 100644 Binary files a/icons/obj/clothing/glasses.dmi and b/icons/obj/clothing/glasses.dmi differ diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi index cb002637bb7..ee60d654a48 100644 Binary files a/icons/obj/gun.dmi and b/icons/obj/gun.dmi differ diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index 9130736fbc2..6ef95efd7e8 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ diff --git a/icons/obj/machines/mining_machines.dmi b/icons/obj/machines/mining_machines.dmi index 25114f60032..83c12986772 100644 Binary files a/icons/obj/machines/mining_machines.dmi and b/icons/obj/machines/mining_machines.dmi differ