Phoron bore utility improvements (#7680)

* More phoron bore utility

* Path update

* Fix concerns

* Update bore.dm
This commit is contained in:
Cyantime
2020-10-11 23:59:14 -04:00
committed by GitHub
parent 37d7360423
commit 9898fa373e
13 changed files with 181 additions and 94 deletions

View File

@@ -27,3 +27,19 @@
/datum/looping_sound/geiger/stop() /datum/looping_sound/geiger/stop()
. = ..() . = ..()
last_radiation = 0 last_radiation = 0
/datum/looping_sound/small_motor
start_sound = 'sound/items/small_motor/motor_start_nopull.ogg'
start_length = 2 SECONDS
mid_sounds = list(
'sound/items/small_motor/motor_idle.ogg',
'sound/items/small_motor/motor_fast.ogg',
'sound/items/small_motor/motor_faster.ogg'
)
mid_length = 1.9 SECONDS //someone make this loop better please, i'm no good at sound. the clips should be 2 seconds exact but there's a gap if it's set to 2
end_sound = 'sound/items/small_motor/motor_end.ogg'
var/speed = 1
/datum/looping_sound/small_motor/get_sound(starttime)
speed = clamp(speed, 1, 3)
return ..(starttime, mid_sounds[speed])

View File

@@ -39,7 +39,7 @@
new /datum/data/mining_equipment("Industrial Hardsuit - Maneuvering Jets", /obj/item/rig_module/maneuvering_jets, 1250), new /datum/data/mining_equipment("Industrial Hardsuit - Maneuvering Jets", /obj/item/rig_module/maneuvering_jets, 1250),
new /datum/data/mining_equipment("Hardsuit - Intelligence Storage", /obj/item/rig_module/ai_container, 2500), new /datum/data/mining_equipment("Hardsuit - Intelligence Storage", /obj/item/rig_module/ai_container, 2500),
new /datum/data/mining_equipment("Hardsuit - Smoke Bomb Deployer", /obj/item/rig_module/grenade_launcher/smoke, 2000), new /datum/data/mining_equipment("Hardsuit - Smoke Bomb Deployer", /obj/item/rig_module/grenade_launcher/smoke, 2000),
new /datum/data/mining_equipment("Industrial Equipment - Phoron Bore", /obj/item/weapon/gun/magnetic/matfed, 3000), new /datum/data/mining_equipment("Industrial Equipment - Phoron Bore", /obj/item/weapon/gun/magnetic/matfed/phoronbore/loaded, 3000),
new /datum/data/mining_equipment("Industrial Equipment - Sheet-Snatcher",/obj/item/weapon/storage/bag/sheetsnatcher, 500), new /datum/data/mining_equipment("Digital Tablet - Standard", /obj/item/modular_computer/tablet/preset/custom_loadout/standard, 500), new /datum/data/mining_equipment("Industrial Equipment - Sheet-Snatcher",/obj/item/weapon/storage/bag/sheetsnatcher, 500), new /datum/data/mining_equipment("Digital Tablet - Standard", /obj/item/modular_computer/tablet/preset/custom_loadout/standard, 500),
new /datum/data/mining_equipment("Digital Tablet - Advanced", /obj/item/modular_computer/tablet/preset/custom_loadout/advanced, 1000), new /datum/data/mining_equipment("Digital Tablet - Advanced", /obj/item/modular_computer/tablet/preset/custom_loadout/advanced, 1000),
new /datum/data/mining_equipment("Fine Excavation Kit - Chisels",/obj/item/weapon/storage/excavation, 500), new /datum/data/mining_equipment("Fine Excavation Kit - Chisels",/obj/item/weapon/storage/excavation, 500),

View File

@@ -25,7 +25,7 @@
new /datum/data/mining_equipment("Fishing Net", /obj/item/weapon/material/fishing_net, 50), new /datum/data/mining_equipment("Fishing Net", /obj/item/weapon/material/fishing_net, 50),
new /datum/data/mining_equipment("Titanium Fishing Rod", /obj/item/weapon/material/fishing_rod/modern, 50), new /datum/data/mining_equipment("Titanium Fishing Rod", /obj/item/weapon/material/fishing_rod/modern, 50),
new /datum/data/mining_equipment("Direct Payment - 1000", /obj/item/weapon/spacecash/c1000, 500), new /datum/data/mining_equipment("Direct Payment - 1000", /obj/item/weapon/spacecash/c1000, 500),
new /datum/data/mining_equipment("Industrial Equipment - Phoron Bore", /obj/item/weapon/gun/magnetic/matfed, 500), new /datum/data/mining_equipment("Industrial Equipment - Phoron Bore", /obj/item/weapon/gun/magnetic/matfed/phoronbore/loaded, 500),
new /datum/data/mining_equipment("Survey Tools - Shovel", /obj/item/weapon/shovel, 20), new /datum/data/mining_equipment("Survey Tools - Shovel", /obj/item/weapon/shovel, 20),
new /datum/data/mining_equipment("Survey Tools - Mechanical Trap", /obj/item/weapon/beartrap, 30), new /datum/data/mining_equipment("Survey Tools - Mechanical Trap", /obj/item/weapon/beartrap, 30),
new /datum/data/mining_equipment("Digital Tablet - Standard", /obj/item/modular_computer/tablet/preset/custom_loadout/standard, 100), new /datum/data/mining_equipment("Digital Tablet - Standard", /obj/item/modular_computer/tablet/preset/custom_loadout/standard, 100),

View File

@@ -1,27 +1,24 @@
/obj/item/weapon/gun/magnetic/matfed /obj/item/weapon/gun/magnetic/matfed
name = "portable phoron bore"
desc = "A large man-portable tunnel bore, using phorogenic plasma blasts. Point away from user."
description_fluff = "An aging Grayson Manufactories mining tool used for rapidly digging through rock. Mass production was discontinued when many of the devices were stolen and used to break into a high security facility by Boiling Point drones."
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."
icon_state = "bore"
item_state = "bore"
wielded_item_state = "bore-wielded"
one_handed_penalty = 5
projectile_type = /obj/item/projectile/bullet/magnetic/bore
gun_unreliable = 0
power_cost = 750 power_cost = 750
load_type = /obj/item/stack/material load_type = list(/obj/item/stack/material, /obj/item/weapon/ore)
var/mat_storage = 0 // How much material is stored inside? Input in multiples of 2000 as per auto/protolathe. var/mat_storage = 0 // How much material is stored inside? Input in multiples of 2000 as per auto/protolathe.
var/max_mat_storage = 8000 // How much material can be stored inside? var/max_mat_storage = 8000 // How much material can be stored inside?
var/mat_cost = 500 // How much material is used per-shot? var/mat_cost = 500 // How much material is used per-shot?
var/ammo_material = MAT_PHORON var/ammo_material
var/obj/item/weapon/stock_parts/manipulator/manipulator // Installed manipulator. Mostly for Phoron Bore, higher rating == less mats consumed upon firing. Set to a path to spawn with one of that type.
var/loading = FALSE var/loading = FALSE
/obj/item/weapon/gun/magnetic/matfed/Initialize()
. = ..()
if(ispath(manipulator))
manipulator = new manipulator(src)
if(manipulator)
mat_cost = initial(mat_cost) / (2*manipulator.rating)
/obj/item/weapon/gun/magnetic/matfed/Destroy()
QDEL_NULL(manipulator)
. = ..()
/obj/item/weapon/gun/magnetic/matfed/examine(mob/user) /obj/item/weapon/gun/magnetic/matfed/examine(mob/user)
. = ..() . = ..()
var/ammotext = show_ammo() var/ammotext = show_ammo()
@@ -46,6 +43,7 @@
overlays = overlays_to_add overlays = overlays_to_add
..() ..()
/obj/item/weapon/gun/magnetic/matfed/attack_hand(var/mob/user) // It doesn't keep a loaded item inside. /obj/item/weapon/gun/magnetic/matfed/attack_hand(var/mob/user) // It doesn't keep a loaded item inside.
if(user.get_inactive_hand() == src) if(user.get_inactive_hand() == src)
var/obj/item/removing var/obj/item/removing
@@ -55,7 +53,6 @@
cell = null cell = null
if(removing) if(removing)
removing.forceMove(get_turf(src))
user.put_in_hands(removing) user.put_in_hands(removing)
user.visible_message("<span class='notice'>\The [user] removes \the [removing] from \the [src].</span>") user.visible_message("<span class='notice'>\The [user] removes \the [removing] from \the [src].</span>")
playsound(src, 'sound/machines/click.ogg', 10, 1) playsound(src, 'sound/machines/click.ogg', 10, 1)
@@ -77,91 +74,170 @@
/obj/item/weapon/gun/magnetic/matfed/attackby(var/obj/item/thing, var/mob/user) /obj/item/weapon/gun/magnetic/matfed/attackby(var/obj/item/thing, var/mob/user)
if(removable_components) if(removable_components)
if(istype(thing, /obj/item/weapon/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(src, '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_crowbar()) if(thing.is_crowbar())
if(!manipulator) if(!manipulator)
to_chat(user, "<span class='warning'>\The [src] has no manipulator installed.</span>") to_chat(user, "<span class='warning'>\The [src] has no manipulator installed.</span>")
return return
manipulator.forceMove(get_turf(src))
user.put_in_hands(manipulator) user.put_in_hands(manipulator)
user.visible_message("<span class='notice'>\The [user] levers \the [manipulator] from \the [src].</span>") user.visible_message("<span class='notice'>\The [user] levers \the [manipulator] from \the [src].</span>")
playsound(src, 'sound/items/Crowbar.ogg', 50, 1) playsound(src, thing.usesound, 50, 1)
mat_cost = initial(mat_cost)
manipulator = null manipulator = null
update_icon() update_icon()
return return
if(thing.is_screwdriver())
if(!capacitor)
to_chat(user, "<span class='warning'>\The [src] has no capacitor installed.</span>")
return
capacitor.forceMove(get_turf(src))
user.put_in_hands(capacitor)
user.visible_message("<span class='notice'>\The [user] unscrews \the [capacitor] from \the [src].</span>")
playsound(src, 'sound/items/Screwdriver.ogg', 50, 1)
capacitor = null
update_icon()
return
if(istype(thing, /obj/item/weapon/stock_parts/capacitor))
if(capacitor)
to_chat(user, "<span class='warning'>\The [src] already has \a [capacitor] installed.</span>")
return
capacitor = thing
user.drop_from_inventory(capacitor)
capacitor.forceMove(src)
playsound(src, 'sound/machines/click.ogg', 10, 1)
power_per_tick = (power_cost*0.15) * capacitor.rating
user.visible_message("<span class='notice'>\The [user] slots \the [capacitor] into \the [src].</span>")
update_icon()
return
if(istype(thing, /obj/item/weapon/stock_parts/manipulator)) if(istype(thing, /obj/item/weapon/stock_parts/manipulator))
if(manipulator) if(manipulator)
to_chat(user, "<span class='warning'>\The [src] already has \a [manipulator] installed.</span>") to_chat(user, "<span class='warning'>\The [src] already has \a [manipulator] installed.</span>")
return return
manipulator = thing manipulator = thing
user.drop_from_inventory(manipulator) user.drop_from_inventory(manipulator, src)
manipulator.forceMove(src)
playsound(src, 'sound/machines/click.ogg', 10,1) playsound(src, 'sound/machines/click.ogg', 10,1)
mat_cost = initial(mat_cost) % (2*manipulator.rating) mat_cost = initial(mat_cost) / (2*manipulator.rating)
user.visible_message("<span class='notice'>\The [user] slots \the [manipulator] into \the [src].</span>") user.visible_message("<span class='notice'>\The [user] slots \the [manipulator] into \the [src].</span>")
update_icon() update_icon()
return return
if(istype(thing, load_type)) if(is_type_in_list(thing, load_type))
loading = TRUE
var/obj/item/stack/material/M = thing var/obj/item/stack/material/M = thing
if(!M.material || M.material.name != ammo_material) if(istype(M)) //stack
return if(!M.material || M.material.name != ammo_material || loading)
return
if(mat_storage + 2000 > max_mat_storage) if(mat_storage + SHEET_MATERIAL_AMOUNT > max_mat_storage)
to_chat(user, "<span class='warning'>\The [src] cannot hold more [ammo_material].</span>") to_chat(user, "<span class='warning'>\The [src] cannot hold more [ammo_material].</span>")
return return
var/can_hold_val = 0 var/can_hold_val = 0
while(can_hold_val < round(max_mat_storage / 2000)) loading = TRUE
if(mat_storage + 2000 <= max_mat_storage && do_after(user,1.5 SECONDS)) while(mat_storage + SHEET_MATERIAL_AMOUNT <= max_mat_storage && do_after(user,1.5 SECONDS))
can_hold_val ++ can_hold_val ++
mat_storage += 2000 mat_storage += SHEET_MATERIAL_AMOUNT
playsound(src, 'sound/effects/phasein.ogg', 15, 1) playsound(src, 'sound/effects/phasein.ogg', 15, 1)
else M.use(can_hold_val)
loading = FALSE loading = FALSE
break
M.use(can_hold_val) else //ore
if(M.material != ammo_material)
return
if(mat_storage + (SHEET_MATERIAL_AMOUNT/2*0.8) > max_mat_storage)
to_chat(user, "<span class='warning'>\The [src] cannot hold more [ammo_material].</span>")
return
qdel(M)
mat_storage += (SHEET_MATERIAL_AMOUNT/2*0.8) //two plasma ores needed per sheet, some inefficiency for not using refined product
user.visible_message("<span class='notice'>\The [user] loads \the [src] with \the [M].</span>") user.visible_message("<span class='notice'>\The [user] loads \the [src] with \the [M].</span>")
playsound(src, 'sound/weapons/flipblade.ogg', 50, 1) playsound(src, 'sound/weapons/flipblade.ogg', 50, 1)
update_icon() update_icon()
return return
. = ..() . = ..()
#define GEN_STARTING -1
#define GEN_OFF 0
#define GEN_IDLE 1
#define GEN_ACTIVE 2
/obj/item/weapon/gun/magnetic/matfed/phoronbore
name = "portable phoron bore"
desc = "A large man-portable tunnel bore, using phorogenic plasma blasts. Point away from user."
description_fluff = "An aging Grayson Manufactories mining tool used for rapidly digging through rock. Mass production was discontinued when many of the devices were stolen and used to break into a high security facility by Boiling Point drones."
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 or ore, and has a togglable generator that can recharge the power cell using stored phoron."
icon_state = "bore"
item_state = "bore"
wielded_item_state = "bore-wielded"
one_handed_penalty = 5
projectile_type = /obj/item/projectile/bullet/magnetic/bore
gun_unreliable = 0
power_cost = 100
ammo_material = MAT_PHORON
action_button_name = "Toggle internal generator"
var/generator_state = GEN_OFF
var/datum/looping_sound/small_motor/soundloop
var/time_started //to keep the soundloop from being "stopped" too soon and playing indefinitely
/obj/item/weapon/gun/magnetic/matfed/phoronbore/Initialize()
. = ..()
soundloop = new(list(src), 0)
/obj/item/weapon/gun/magnetic/matfed/phoronbore/Destroy()
QDEL_NULL(soundloop)
. = ..()
/obj/item/weapon/gun/magnetic/matfed/phoronbore/ui_action_click()
toggle_generator(usr)
/obj/item/weapon/gun/magnetic/matfed/phoronbore/process()
if(generator_state && !mat_storage)
audible_message(SPAN_NOTICE("\The [src] goes quiet."),SPAN_NOTICE("A motor noise cuts out."))
soundloop.stop()
generator_state = GEN_OFF
else if(generator_state > GEN_OFF)
if(generator_state == GEN_IDLE && (cell?.percent() < 80 || (!cell && capacitor && capacitor.charge/capacitor.max_charge < 0.8)))
generator_state = GEN_ACTIVE
else if(generator_state == GEN_ACTIVE && (!cell || cell.fully_charged()) && (!capacitor || capacitor.charge == capacitor.max_charge))
generator_state = GEN_IDLE
soundloop.speed = generator_state
generator_generate()
if(capacitor)
if(cell)
if(capacitor.charge < capacitor.max_charge && cell.checked_use(power_per_tick))
capacitor.charge(power_per_tick)
else if(!generator_state)
capacitor.use(capacitor.charge * 0.05)
update_state()
/obj/item/weapon/gun/magnetic/matfed/phoronbore/proc/generator_generate()
var/fuel_used = generator_state == GEN_IDLE ? 5 : 25
var/power_made = fuel_used * 800 * CELLRATE //20kW when active, same power as a pacman on setting one, but less efficient because compact and portable
if(cell)
cell.give(power_made)
else if(capacitor)
capacitor.charge(power_made)
mat_storage = max(mat_storage - fuel_used, 0)
var/turf/T = get_turf(src)
if(T)
T.assume_gas("carbon_dioxide", fuel_used * 0.01, T0C+200)
/obj/item/weapon/gun/magnetic/matfed/phoronbore/proc/toggle_generator(mob/living/user)
if(!generator_state && !mat_storage)
to_chat(user, SPAN_NOTICE("\The [src] has no fuel!"))
return
else if(!generator_state)
generator_state = GEN_STARTING
var/pull = (!cell || cell.charge < 100) ? rand(1,4) : 0
while(pull)
playsound(src, 'sound/items/small_motor/motor_pull_attempt.ogg', 100)
if(!do_after(user, 2 SECONDS, src))
generator_state = GEN_OFF
return
pull--
soundloop.start()
time_started = world.time
cell?.use(100)
audible_message(SPAN_NOTICE("\The [src] starts chugging."),SPAN_NOTICE("A motor noise starts up."))
generator_state = GEN_IDLE
else if(generator_state > GEN_OFF && time_started + 3 SECONDS < world.time)
soundloop.stop()
audible_message(SPAN_NOTICE("\The [src] goes quiet."),SPAN_NOTICE("A motor noise cuts out."))
generator_state = GEN_OFF
/obj/item/weapon/gun/magnetic/matfed/phoronbore/loaded
cell = /obj/item/weapon/cell/apc
capacitor = /obj/item/weapon/stock_parts/capacitor

View File

@@ -17,7 +17,6 @@
var/obj/item/weapon/cell/cell // Currently installed powercell. var/obj/item/weapon/cell/cell // Currently installed powercell.
var/obj/item/weapon/stock_parts/capacitor/capacitor // Installed capacitor. Higher rating == faster charge between shots. Set to a path to spawn with one of that type. var/obj/item/weapon/stock_parts/capacitor/capacitor // Installed capacitor. Higher rating == faster charge between shots. Set to a path to spawn with one of that type.
var/obj/item/weapon/stock_parts/manipulator/manipulator // Installed manipulator. Mostly for Phoron Bore, higher rating == less mats consumed upon firing. Set to a path to spawn with one of that type.
var/removable_components = TRUE // Whether or not the gun can be dismantled. var/removable_components = TRUE // Whether or not the gun can be dismantled.
var/gun_unreliable = 15 // Percentage chance of detonating in your hands. var/gun_unreliable = 15 // Percentage chance of detonating in your hands.
@@ -38,16 +37,14 @@
if(ispath(capacitor)) if(ispath(capacitor))
capacitor = new capacitor(src) capacitor = new capacitor(src)
capacitor.charge = capacitor.max_charge capacitor.charge = capacitor.max_charge
if(ispath(manipulator))
manipulator = new manipulator(src)
if(ispath(loaded)) if(ispath(loaded))
loaded = new loaded(src) loaded = new loaded(src)
START_PROCESSING(SSobj, src) START_PROCESSING(SSobj, src)
if(capacitor) if(capacitor)
power_per_tick = (power_cost*0.15) * capacitor.rating power_per_tick = (power_cost*0.15) * capacitor.rating
update_icon() update_icon()
/obj/item/weapon/gun/magnetic/Destroy() /obj/item/weapon/gun/magnetic/Destroy()
@@ -55,7 +52,6 @@
QDEL_NULL(cell) QDEL_NULL(cell)
QDEL_NULL(loaded) QDEL_NULL(loaded)
QDEL_NULL(capacitor) QDEL_NULL(capacitor)
QDEL_NULL(manipulator)
. = ..() . = ..()
/obj/item/weapon/gun/magnetic/get_cell() /obj/item/weapon/gun/magnetic/get_cell()
@@ -68,7 +64,7 @@
capacitor.charge(power_per_tick) capacitor.charge(power_per_tick)
else else
capacitor.use(capacitor.charge * 0.05) capacitor.use(capacitor.charge * 0.05)
update_state() // May update icon, only if things changed. update_state() // May update icon, only if things changed.
/obj/item/weapon/gun/magnetic/proc/update_state() /obj/item/weapon/gun/magnetic/proc/update_state()
@@ -80,7 +76,7 @@
newstate |= ICON_CELL newstate |= ICON_CELL
if(capacitor) if(capacitor)
newstate |= ICON_CAP newstate |= ICON_CAP
// Functional state // Functional state
if(!cell || !capacitor) if(!cell || !capacitor)
newstate |= ICON_BAD newstate |= ICON_BAD
@@ -88,7 +84,7 @@
newstate |= ICON_CHARGE newstate |= ICON_CHARGE
else else
newstate |= ICON_READY newstate |= ICON_READY
// Ammo indicator // Ammo indicator
if(loaded) if(loaded)
newstate |= ICON_LOADED newstate |= ICON_LOADED
@@ -99,7 +95,7 @@
needs_update = TRUE needs_update = TRUE
state = newstate state = newstate
if(needs_update) if(needs_update)
update_icon() update_icon()
@@ -153,8 +149,7 @@
to_chat(user, "<span class='warning'>\The [src] already has \a [cell] installed.</span>") to_chat(user, "<span class='warning'>\The [src] already has \a [cell] installed.</span>")
return return
cell = thing cell = thing
user.drop_from_inventory(cell) user.drop_from_inventory(cell, src)
cell.forceMove(src)
playsound(src, 'sound/machines/click.ogg', 10, 1) playsound(src, 'sound/machines/click.ogg', 10, 1)
user.visible_message("<span class='notice'>\The [user] slots \the [cell] into \the [src].</span>") user.visible_message("<span class='notice'>\The [user] slots \the [cell] into \the [src].</span>")
update_icon() update_icon()
@@ -164,10 +159,9 @@
if(!capacitor) if(!capacitor)
to_chat(user, "<span class='warning'>\The [src] has no capacitor installed.</span>") to_chat(user, "<span class='warning'>\The [src] has no capacitor installed.</span>")
return return
capacitor.forceMove(get_turf(src))
user.put_in_hands(capacitor) user.put_in_hands(capacitor)
user.visible_message("<span class='notice'>\The [user] unscrews \the [capacitor] from \the [src].</span>") user.visible_message("<span class='notice'>\The [user] unscrews \the [capacitor] from \the [src].</span>")
playsound(src, 'sound/items/Screwdriver.ogg', 50, 1) playsound(src, thing.usesound, 50, 1)
capacitor = null capacitor = null
update_icon() update_icon()
return return
@@ -177,8 +171,7 @@
to_chat(user, "<span class='warning'>\The [src] already has \a [capacitor] installed.</span>") to_chat(user, "<span class='warning'>\The [src] already has \a [capacitor] installed.</span>")
return return
capacitor = thing capacitor = thing
user.drop_from_inventory(capacitor) user.drop_from_inventory(capacitor, src)
capacitor.forceMove(src)
playsound(src, 'sound/machines/click.ogg', 10, 1) playsound(src, 'sound/machines/click.ogg', 10, 1)
power_per_tick = (power_cost*0.15) * capacitor.rating power_per_tick = (power_cost*0.15) * capacitor.rating
user.visible_message("<span class='notice'>\The [user] slots \the [capacitor] into \the [src].</span>") user.visible_message("<span class='notice'>\The [user] slots \the [capacitor] into \the [src].</span>")

View File

@@ -161,6 +161,9 @@
irradiate = 20 irradiate = 20
range = 6 range = 6
/obj/item/projectile/bullet/magnetic/bore/get_structure_damage()
return damage * 3 //made for boring holes
/obj/item/projectile/bullet/magnetic/bore/Bump(atom/A, forced=0) /obj/item/projectile/bullet/magnetic/bore/Bump(atom/A, forced=0)
if(istype(A, /turf/simulated/mineral)) if(istype(A, /turf/simulated/mineral))
var/turf/simulated/mineral/MI = A var/turf/simulated/mineral/MI = A
@@ -170,7 +173,6 @@
return 0 return 0
else if(istype(A, /turf/simulated/wall) || istype(A, /turf/simulated/shuttle/wall)) // Cause a loud, but relatively minor explosion on the wall it hits. else if(istype(A, /turf/simulated/wall) || istype(A, /turf/simulated/shuttle/wall)) // Cause a loud, but relatively minor explosion on the wall it hits.
explosion(A, -1, -1, 1, 3) explosion(A, -1, -1, 1, 3)
qdel(src) return ..()
return 1
else else
..() ..()

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.