Merge pull request #1869 from lolman360/phoronbore2

If the Phoron Bore is so good, why isn't there a Phoron Bore 2?
This commit is contained in:
nik707
2020-04-18 00:34:15 -05:00
committed by GitHub
8 changed files with 129 additions and 2 deletions

View File

@@ -0,0 +1,91 @@
/obj/item/vertibore
name = "portable shaft excavation device"
desc = "A heavily modified shaft bore utilizing phorogenic blasts to tunnel vertically through rock. Much faster than a large industrial drill unit, but is very resource- and power-intensive."
description_fluff = "A phoron bore used for rapidly digging through rock that has been modified to allow it to fire straight down at a much higher power. However, this has resulted in a loss of power and resource efficiency, compactness, and modularity as the proprietary capacitor and manipulator cannot be swapped."
w_class = ITEMSIZE_NO_CONTAINER //haha harold can't powergame itemsize with BoHs if it doesn't even fit in a BoH
//he's just going to locker it isn't he
slowdown = 1 //chonker bore is heavy boy
icon = 'icons/obj/mining.dmi'
icon_state = "vertibore"
item_state = "vertibore"
var/obj/item/cell/cell //loaded cell
var/power_cost = 1000 //10 shots off a highcap
var/load_type = /obj/item/stack/material
var/mat_storage = 0 // How much material is stored inside? Input in multiples of 2000 as per auto/protolathe.
var/max_mat_storage = 50000 // 25 sheets
var/mat_cost = 1000 // 100 shots off of a full stack.
var/ammo_material = MAT_PHORON
var/loading = FALSE
/obj/item/vertibore/examine(mob/user)
. = ..()
to_chat(user, "<span class='notice'>The shaft excavator has [mat_storage]cm^3 of phoron inside, and can hold a maximum of [max_mat_storage].</span>")
if(cell)
to_chat(user, "<span class='notice'>The installed [cell.name] has a charge level of [round((cell.charge/cell.maxcharge)*100)]%.</span>")
/obj/item/vertibore/attackby(var/obj/item/thing, var/mob/user)
if(istype(thing, /obj/item/cell))
if(cell)
to_chat(user, "<span class='warning'>\The [src] already has \a [cell] installed.</span>")
return
cell = thing
user.drop_from_inventory(cell)
cell.forceMove(src)
playsound(loc, 'sound/machines/click.ogg', 10, 1)
user.visible_message("<span class='notice'>\The [user] slots \the [cell] into \the [src].</span>")
update_icon()
return
if(thing.is_screwdriver())
if(!cell)
to_chat(user, "<span class='warning'>\The [src] has no cell installed.</span>")
return
cell.forceMove(get_turf(src))
user.put_in_hands(cell)
user.visible_message("<span class='notice'>\The [user] unscrews \the [cell.name] from \the [src].</span>")
playsound(loc, 'sound/items/Screwdriver.ogg', 50, 1)
cell = null
update_icon()
return
if(istype(thing, load_type))
loading = TRUE
var/obj/item/stack/material/M = thing
if(!M.material || M.material.name != ammo_material)
return
if(mat_storage + 2000 > max_mat_storage)
to_chat(user, "<span class='warning'>\The [src] cannot hold more [ammo_material].</span>")
return
var/can_hold_val = 0
while(can_hold_val < round(max_mat_storage / 2000))
if(mat_storage + 2000 <= max_mat_storage && do_after(user,1.5 SECONDS))
can_hold_val ++
mat_storage += 2000
playsound(loc, 'sound/effects/phasein.ogg', 15, 1)
else
loading = FALSE
break
M.use(can_hold_val)
user.visible_message("<span class='notice'>\The [user] loads \the [src] with \the [M].</span>")
playsound(loc, 'sound/weapons/flipblade.ogg', 50, 1)
update_icon()
return
. = ..()
/obj/item/vertibore/attack_self(mob/user)
if(mat_cost > mat_storage)
to_chat(user, "<span class='notice'>The [src] shudders, the phoron feeding mechanism attempting to move things that aren't there.</span>")
return
if(power_cost > cell.charge)
to_chat(user, "<span class='notice'>The [src] flashes a warning light, it doesn't have enough charge to dig.</span>")
return
if(cell.use(power_cost) && do_after(user, 2.5 SECONDS))
var/turf/T = get_turf(user)
T.ex_act(1)
/obj/item/vertibore/update_icon()
var/list/overlays_to_add = list()
if(cell)
overlays_to_add += image(icon, "[icon_state]_cell")
..()

View File

@@ -202,7 +202,7 @@
charge /= 2 charge /= 2
maxcharge /= 2 maxcharge /= 2
if (prob(10)) if (prob(10))
rigged = 1 //broken batterys are dangerous rigged = 1 //broken batteries are dangerous
/obj/item/cell/emp_act(severity) /obj/item/cell/emp_act(severity)
//remove this once emp changes on dev are merged in //remove this once emp changes on dev are merged in

View File

@@ -5,6 +5,7 @@
description_antag = "This device is exceptional at breaking down walls, though it is incredibly loud when doing so." description_antag = "This device is exceptional at breaking down walls, though it is incredibly loud when doing so."
description_info = "The projectile of this tool will travel six tiles before dissipating, excavating mineral walls as it does so. It can be reloaded with phoron sheets." description_info = "The projectile of this tool will travel six tiles before dissipating, excavating mineral walls as it does so. It can be reloaded with phoron sheets."
icon_state = "bore" icon_state = "bore"
item_state = "bore" item_state = "bore"
wielded_item_state = "bore-wielded" wielded_item_state = "bore-wielded"
@@ -163,3 +164,13 @@
update_icon() update_icon()
return return
. = ..() . = ..()
//phoron bore 2
/obj/item/gun/magnetic/matfed/advanced
name = "advanced phoron bore"
description_fluff = "A revision of an ageing Grayson design, the NanoTrasen Man-Portable Phorogenic Tunneler, or NT-MPPT is capable of drilling through longer swathes of rock, at the cost of slightly worse power efficiency than the Grayson design."
description_antag = "This device is exceptional at breaking down walls, though it is incredibly loud when doing so."
description_info = "The projectile of this tool will travel twelve tiles before dissipating, excavating mineral walls as it does so. It can be reloaded with phoron sheets, and can hold a maximum of ten sheets."
projectile_type = /obj/item/projectile/bullet/magnetic/bore/powerful
power_cost = 1000
max_mat_storage = 20000 // How much material can be stored inside?

View File

@@ -164,3 +164,14 @@
return 1 return 1
else else
..() ..()
/obj/item/projectile/bullet/magnetic/bore/powerful
name = "energetic phorogenic blast"
icon_state = "purpleemitter"
damage = 30
incendiary = 2
armor_penetration = 20
penetrating = 0
check_armour = "melee"
irradiate = 20
range = 12

View File

@@ -38,6 +38,19 @@
materials = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 1000, "diamond" = 2000) materials = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 1000, "diamond" = 2000)
build_path = /obj/item/pickaxe/diamonddrill build_path = /obj/item/pickaxe/diamonddrill
/datum/design/item/weapon/mining/advbore
id = "adv_bore"
req_tech = list(TECH_MATERIAL = 5, TECH_PHORON = 5, TECH_ENGINEERING = 4, TECH_POWER = 4) //phoron 5 needs materials to get
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 2500, "gold" = 2500, "phoron" = 2500)
build_path = /obj/item/gun/magnetic/matfed/advanced
/datum/design/item/weapon/mining/vertibore
id = "vertibore"
req_tech = list(TECH_MATERIAL = 5, TECH_PHORON = 5, TECH_ENGINEERING = 6, TECH_POWER = 7)
materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 5000, "gold" = 5000, "phoron" = 5000, "diamond" = 100, "uranium" = 1000)
build_path = /obj/item/vertibore
// Mining other equipment
/datum/design/item/device/mining_scanner /datum/design/item/device/mining_scanner
id = "mining_scanner" id = "mining_scanner"
req_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 1) req_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 1)
@@ -53,7 +66,7 @@
sort_string = "KAAAG" sort_string = "KAAAG"
sort_string = "FAAAE" sort_string = "FAAAE"
// Mining other equipment
/datum/design/item/weapon/mining/depth_scanner /datum/design/item/weapon/mining/depth_scanner
desc = "Used to check spatial depth and density of rock outcroppings." desc = "Used to check spatial depth and density of rock outcroppings."

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

View File

@@ -2186,6 +2186,7 @@
#include "code\modules\mining\satchel_ore_boxdm.dm" #include "code\modules\mining\satchel_ore_boxdm.dm"
#include "code\modules\mining\shelter_atoms.dm" #include "code\modules\mining\shelter_atoms.dm"
#include "code\modules\mining\shelters.dm" #include "code\modules\mining\shelters.dm"
#include "code\modules\mining\vertibore.dm"
#include "code\modules\mining\drilling\drill.dm" #include "code\modules\mining\drilling\drill.dm"
#include "code\modules\mining\drilling\scanner.dm" #include "code\modules\mining\drilling\scanner.dm"
#include "code\modules\mining\ore_redemption_machine\construction.dm" #include "code\modules\mining\ore_redemption_machine\construction.dm"