diff --git a/_maps/map_files/DreamStation/dreamstation04.dmm b/_maps/map_files/DreamStation/dreamstation04.dmm index 0297cfafba2..65eb8d03ab3 100644 --- a/_maps/map_files/DreamStation/dreamstation04.dmm +++ b/_maps/map_files/DreamStation/dreamstation04.dmm @@ -3694,7 +3694,7 @@ "btb" = (/obj/structure/table,/obj/item/weapon/folder/blue,/obj/item/weapon/stamp/hop,/obj/machinery/newscaster{hitstaken = 0; pixel_x = 0; pixel_y = -32; tag = "s"},/turf/simulated/floor/plasteel{tag = "icon-darkbluecorners (WEST)"; icon_state = "darkbluecorners"; dir = 8},/area/crew_quarters/heads) "btc" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7; tag = "every single paper bin is edited to this"},/obj/item/weapon/pen,/turf/simulated/floor/plasteel/black,/area/crew_quarters/heads) "btd" = (/obj/item/device/assembly/mousetrap/armed,/turf/simulated/floor/plating{burnt = 1; icon_state = "panelscorched"},/area/maintenance/atmos_control) -"bte" = (/obj/item/bluespace_crystal,/turf/simulated/floor/plating,/area/maintenance/maintcentral) +"bte" = (/obj/item/weapon/ore/bluespace_crystal,/turf/simulated/floor/plating,/area/maintenance/maintcentral) "btf" = (/obj/machinery/hydroponics/constructable,/obj/machinery/camera{c_tag = "Hydroponics"; dir = 1; icon_state = "camera"; network = list("SS13"); tag = ""},/turf/simulated/floor/plasteel/black,/area/hydroponics) "btg" = (/obj/machinery/door/airlock/external{name = "Cargo Escape Airlock"},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"},/area/hallway/secondary/exit) "bth" = (/obj/machinery/newscaster{hitstaken = 0; pixel_x = -32; pixel_y = 0; tag = "w"},/turf/simulated/floor/plasteel/brown/corner{tag = "icon-browncorner (NORTH)"; icon_state = "browncorner"; dir = 1},/area/hallway/secondary/exit) diff --git a/code/game/asteroid.dm b/code/game/asteroid.dm index 3d8a6667603..8b47043461f 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/asteroid/airless, /turf/simulated/floor/plating/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/internals/oxygen/red=2) @@ -123,7 +123,7 @@ var/global/max_secret_rooms = 6 theme = "plantlab" treasureitems = list(/obj/item/weapon/gun/energy/floragun=1,/obj/item/seeds/novaflowerseed=2,/obj/item/seeds/bluespacetomatoseed=2,/obj/item/seeds/bluetomatoseed=2, /obj/item/seeds/coffee_robusta_seed=2, /obj/item/seeds/cashseed=2) - fluffitems = list(/obj/structure/flora/kirbyplants=1,/obj/structure/table/reinforced=2,/obj/machinery/hydroponics=1, + fluffitems = list(/obj/structure/flora/kirbyplants=1,/obj/structure/table/reinforced=2,/obj/machinery/hydroponics/constructable=1, /obj/effect/glowshroom/single=2,/obj/item/weapon/reagent_containers/syringe/charcoal=2, /obj/item/weapon/reagent_containers/glass/bottle/diethylamine=3,/obj/item/weapon/reagent_containers/glass/bottle/ammonia=3) @@ -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 6c3ea2b3b4b..e781f80f81c 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -315,7 +315,7 @@ to destroy them and players will be able to make replacements. board_type = "machine" origin_tech = "programming=3;engineering=5;bluespace=5;materials=4" 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 @@ -324,7 +324,7 @@ to destroy them and players will be able to make replacements. board_type = "machine" origin_tech = "programming=4;engineering=4;bluespace=4" 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) @@ -334,7 +334,7 @@ to destroy them and players will be able to make replacements. board_type = "machine" origin_tech = "programming=4;engineering=3;materials=3;bluespace=4" 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 8758e299501..b88cc1e0923 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -256,9 +256,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() @@ -352,8 +352,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/mining_tools.dm b/code/game/mecha/equipment/tools/mining_tools.dm index 0e1393d374c..8d94ed2e15e 100644 --- a/code/game/mecha/equipment/tools/mining_tools.dm +++ b/code/game/mecha/equipment/tools/mining_tools.dm @@ -120,8 +120,10 @@ 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 bc22e27404c..ff479550831 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -1221,7 +1221,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."), //12 @@ -1417,7 +1417,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/modules/mining/abandoned_crates.dm b/code/modules/mining/abandoned_crates.dm index 129a0c0cc53..044ce578d40 100644 --- a/code/modules/mining/abandoned_crates.dm +++ b/code/modules/mining/abandoned_crates.dm @@ -68,13 +68,13 @@ if(57 to 58) new /obj/item/toy/syndicateballoon(src) if(59 to 60) - new /obj/item/weapon/pickaxe/drill(src) - new /obj/item/device/taperecorder(src) + new /obj/item/weapon/gun/energy/kinetic_accelerator/hyper(src) new /obj/item/clothing/suit/space(src) new /obj/item/clothing/head/helmet/space(src) if(61 to 62) - for(var/i = 0, i < 12, ++i) + for(var/i = 0, i < 5, ++i) new /obj/item/clothing/head/kitty(src) + new /obj/item/clothing/tie/petcollar(src) if(63 to 64) var/t = rand(4,7) for(var/i = 0, i < t, ++i) @@ -82,6 +82,7 @@ new newcoin(src) if(65 to 66) new /obj/item/clothing/suit/ianshirt(src) + new /obj/item/clothing/suit/hooded/ian_costume(src) if(67 to 68) var/t = rand(4,7) for(var/i = 0, i < t, ++i) @@ -89,7 +90,7 @@ new newitem(src) if(69 to 70) for(var/i = 0, i < 5, ++i) - new /obj/item/bluespace_crystal(src) + new /obj/item/weapon/ore/bluespace_crystal(src) if(71 to 72) new /obj/item/weapon/pickaxe/drill(src) if(73 to 74) diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm index b3794a4644e..c95813103ce 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)) /obj/machinery/mineral/ore_redemption/New() ..() @@ -64,14 +64,14 @@ qdel(O) //... garbage collect /obj/machinery/mineral/ore_redemption/process() - if(!panel_open) //If the machine is partially dissassembled, it should not process minerals + if(!panel_open && powered()) //If the machine is partially disassembled and/or depowered, it should not process minerals var/turf/T = get_turf(get_step(src, input_dir)) var/i 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) + if(O && O.refined_type) process_sheet(O) else break @@ -86,6 +86,8 @@ break /obj/machinery/mineral/ore_redemption/attackby(obj/item/weapon/W, 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)) @@ -248,6 +250,17 @@ s.loc = 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 Vendor**************************/ @@ -265,18 +278,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("Hivelord Stabilizer", /obj/item/weapon/hivelordstabilizer , 400), new /datum/data/mining_equipment("Mining Drone", /mob/living/simple_animal/hostile/mining_drone, 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, 1200), + new /datum/data/mining_equipment("Jetpack", /obj/item/weapon/tank/jetpack/carbondioxide/mining, 2000), new /datum/data/mining_equipment("Space Cash", /obj/item/stack/spacecash/c1000, 2000), + new /datum/data/mining_equipment("Super Resonator", /obj/item/weapon/resonator/upgraded, 2400), + new /datum/data/mining_equipment("Diamond Pickaxe", /obj/item/weapon/pickaxe/diamond, 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), ) @@ -300,6 +318,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(mob/user) if(..()) return @@ -504,6 +533,14 @@ var/fieldlimit = 3 origin_tech = "magnets=2;combat=2" +/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" + item_state = "resonator_u" + origin_tech = "magnets=3;combat=3" + fieldlimit = 5 + /obj/item/weapon/resonator/proc/CreateResonance(target, creator) var/turf/T = get_turf(target) if(locate(/obj/effect/resonance) in T) @@ -852,4 +889,23 @@ desc = "A tank of compressed carbon dioxide for miners to use as propulsion in local space. The compact size allows for easy storage at the cost of capacity." volume = 40 throw_range = 7 - w_class = 3 //same as syndie harness \ No newline at end of file + w_class = 3 //same as syndie harness + +/*********************Hivelord stabilizer****************/ + +/obj/item/weapon/hivelordstabilizer + name = "hivelord stabilizer" + icon_state = "hivestabilizer" + item_state = "hivestabilizer" + 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/attack(obj/item/organ/internal/M, mob/user) + var/obj/item/organ/internal/hivelord_core/C = M + if(!istype(C, /obj/item/organ/internal/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) \ No newline at end of file diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index f7009a2573c..228b29c22d7 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -74,11 +74,19 @@ /obj/item/weapon/pickaxe/proc/playDigSound() playsound(src, pick(digsound),50,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" item_state = "dpickaxe" - digspeed = 20 //mines twice as fast as a normal pickaxe, bought from mining vendor + digspeed = 20 origin_tech = "materials=4;engineering=3" desc = "A pickaxe with a diamond pick head. Extremely robust at cracking rock walls and digging up dirt." diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 5afa1a5ef80..130f64e8d4c 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -78,6 +78,7 @@ var/global/list/rockTurfEdgeCache /turf/simulated/mineral/proc/HideRock() if(hidden) + name = "rock" icon_state = "rock" return @@ -126,6 +127,7 @@ var/global/list/rockTurfEdgeCache /*if("Adamantine") M = new/turf/simulated/mineral/adamantine(src)*/ if(M) + M.mineralAmt = rand(1, 5) src = M M.levelupdate() return @@ -215,7 +217,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 mineralAmt = 1 spreadChance = 0 spread = 0 diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index 0f3e08a9e17..d7302441fad 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -10,7 +10,7 @@ /obj/item/weapon/ore/attackby(obj/item/I, mob/user, 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()) @@ -21,7 +21,7 @@ name = "uranium ore" icon_state = "Uranium ore" origin_tech = "materials=5" - points = 18 + points = 30 materials = list(MAT_URANIUM=MINERAL_MATERIAL_AMOUNT) refined_type = /obj/item/stack/sheet/mineral/uranium @@ -64,7 +64,7 @@ name = "plasma ore" icon_state = "Plasma ore" origin_tech = "plasmatech=2;materials=2" - points = 36 + points = 15 materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT) refined_type = /obj/item/stack/sheet/mineral/plasma @@ -81,7 +81,7 @@ name = "silver ore" icon_state = "Silver ore" origin_tech = "materials=3" - points = 18 + points = 16 materials = list(MAT_SILVER=MINERAL_MATERIAL_AMOUNT) refined_type = /obj/item/stack/sheet/mineral/silver @@ -97,7 +97,7 @@ name = "diamond ore" icon_state = "Diamond ore" origin_tech = "materials=6" - points = 36 + points = 50 materials = list(MAT_DIAMOND=MINERAL_MATERIAL_AMOUNT) refined_type = /obj/item/stack/sheet/mineral/diamond @@ -105,7 +105,7 @@ name = "bananium ore" icon_state = "Clown ore" origin_tech = "materials=4" - points = 27 + points = 60 materials = list(MAT_BANANIUM=MINERAL_MATERIAL_AMOUNT) refined_type = /obj/item/stack/sheet/mineral/bananium diff --git a/code/modules/mining/satchel_ore_boxdm.dm b/code/modules/mining/satchel_ore_boxdm.dm index 7daf6f2adf2..5c1279b2831 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 0be7a54e261..3c7c7ee306b 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm @@ -264,11 +264,12 @@ slot = "hivecore" force = 0 var/inert = 0 + var/preserved = 0 /obj/item/organ/internal/hivelord_core/New() ..() spawn(2400) - if(!owner) + if(!owner && !preserved) inert = 1 desc = "The remains of a hivelord that have become useless, having been left alone too long after being harvested." @@ -633,4 +634,4 @@ A.transform *= 2 A.environment_smash += 2 user << "You increase the size of [A], giving it a surge of strength!" - qdel(src) + qdel(src) \ No newline at end of file diff --git a/code/modules/projectiles/ammunition/energy.dm b/code/modules/projectiles/ammunition/energy.dm index 2715b268421..bc8bdb6f428 100644 --- a/code/modules/projectiles/ammunition/energy.dm +++ b/code/modules/projectiles/ammunition/energy.dm @@ -110,7 +110,13 @@ projectile_type = /obj/item/projectile/kinetic select_name = "kinetic" e_cost = 500 - fire_sound = 'sound/weapons/Kenetic_accel.ogg' + fire_sound = 'sound/weapons/Kenetic_accel.ogg' // fine spelling there chap + +/obj/item/ammo_casing/energy/kinetic/super + projectile_type = /obj/item/projectile/kinetic/super + +/obj/item/ammo_casing/energy/kinetic/hyper + projectile_type = /obj/item/projectile/kinetic/hyper /obj/item/ammo_casing/energy/disabler projectile_type = /obj/item/projectile/beam/disabler diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 901badc27c6..29b5e1c6db0 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -142,6 +142,24 @@ unique_rename = 1 origin_tech = "combat=2;powerstorage=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" + item_state = "kineticgun_u" + ammo_type = list(/obj/item/ammo_casing/energy/kinetic/super) + overheat_time = 14 + 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" + item_state = "kineticgun_h" + ammo_type = list(/obj/item/ammo_casing/energy/kinetic/hyper) + overheat_time = 12 + origin_tech = "combat=4;powerstorage=3" + /obj/item/weapon/gun/energy/kinetic_accelerator/shoot_live_shot() overheat = 1 spawn(overheat_time) @@ -195,6 +213,13 @@ ammo_type = list(/obj/item/ammo_casing/energy/bolt/large) pin = null +/obj/item/weapon/gun/energy/kinetic_accelerator/suicide_act(mob/user) + if(!suppressed) + playsound(src.loc, 'sound/weapons/kenetic_reload.ogg', 60, 1) + user.visible_message("[user] cocks the [src.name] and pretends to blow \his brains out! It looks like \he's trying to commit suicide!") + shoot_live_shot() + return (OXYLOSS) + /obj/item/weapon/gun/energy/plasmacutter name = "plasma cutter" desc = "A mining tool capable of expelling concentrated plasma bursts. You could use it to cut limbs off of xenos! Or, you know, mine stuff." diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index 3d3c0b62c70..44c828ddc86 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -118,8 +118,18 @@ damage_type = BRUTE flag = "bomb" range = 3 + var/splash = 0 -obj/item/projectile/kinetic/New() +/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) if(!istype(proj_turf, /turf)) return @@ -141,7 +151,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 diff --git a/code/modules/reagents/Chemistry-Recipes/Slime_extracts.dm b/code/modules/reagents/Chemistry-Recipes/Slime_extracts.dm index 29169f232fe..aa84460deb4 100644 --- a/code/modules/reagents/Chemistry-Recipes/Slime_extracts.dm +++ b/code/modules/reagents/Chemistry-Recipes/Slime_extracts.dm @@ -564,7 +564,7 @@ /datum/chemical_reaction/slimecrystal/on_reaction(datum/reagents/holder, created_volume) feedback_add_details("slime_cores_used","[type]") 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 diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index b1ae42ee573..ed4d6bb3054 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -175,10 +175,40 @@ other types of metals and chemistry for reagents). 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 Designs") +/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 Designs") + +/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 Designs") + +/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 Designs") + ///////////////////////////////////////// //////////////Blue Space///////////////// ///////////////////////////////////////// @@ -212,7 +242,7 @@ other types of metals and chemistry for reagents). 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 Designs") /datum/design/telesci_gps diff --git a/code/modules/telesci/bscrystal.dm b/code/modules/telesci/bscrystal.dm index dae04b42b5b..b4f1e9ff465 100644 --- a/code/modules/telesci/bscrystal.dm +++ b/code/modules/telesci/bscrystal.dm @@ -1,22 +1,23 @@ // 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(mob/user) +/obj/item/weapon/ore/bluespace_crystal/attack_self(mob/user) user.visible_message("[user] crushes [src]!", "You crush [src]!") PoolOrNew(/obj/effect/particle_effect/sparks, loc) playsound(src.loc, "sparks", 50, 1) @@ -24,10 +25,10 @@ user.unEquip(src) qdel(src) -/obj/item/bluespace_crystal/proc/blink_mob(mob/living/L) +/obj/item/weapon/ore/bluespace_crystal/proc/blink_mob(mob/living/L) 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(!..()) // not caught in mid-air visible_message("[src] fizzles and disappears upon impact!") var/turf/T = get_turf(hit_atom) @@ -39,8 +40,9 @@ // 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" - blink_range = 4 // Not as good as the organic stuff! \ No newline at end of file + blink_range = 4 // Not as good as the organic stuff! + points = 0 // nice try \ No newline at end of file diff --git a/code/modules/telesci/telepad.dm b/code/modules/telesci/telepad.dm index 1fc0a9dd1ac..26eb84d64f5 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) diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm index f0b3dea8f4c..8ae4d09cac5 100644 --- a/code/modules/telesci/telesci_computer.dm +++ b/code/modules/telesci/telesci_computer.dm @@ -48,14 +48,14 @@ /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/attack_paw(mob/user) user << "You are too primitive to use this computer!" return /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/obj/guns/energy.dmi b/icons/obj/guns/energy.dmi index 1ad374037d0..dbfe5a67b89 100644 Binary files a/icons/obj/guns/energy.dmi and b/icons/obj/guns/energy.dmi differ diff --git a/icons/obj/machines/mining_machines.dmi b/icons/obj/machines/mining_machines.dmi index c5f64a3487e..6e77127dab0 100644 Binary files a/icons/obj/machines/mining_machines.dmi and b/icons/obj/machines/mining_machines.dmi differ diff --git a/icons/obj/mining.dmi b/icons/obj/mining.dmi index d3218a2825b..d9da6d5a718 100644 Binary files a/icons/obj/mining.dmi and b/icons/obj/mining.dmi differ