mirror of
https://github.com/Citadel-Station-13/Citadel-Station-13-RP.git
synced 2026-01-02 11:11:00 +00:00
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:
91
code/modules/mining/vertibore.dm
Normal file
91
code/modules/mining/vertibore.dm
Normal 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")
|
||||||
|
..()
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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?
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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 |
@@ -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"
|
||||||
|
|||||||
Reference in New Issue
Block a user