diff --git a/code/modules/clothing/spacesuits/rig/modules/combat.dm b/code/modules/clothing/spacesuits/rig/modules/combat.dm index 1be87880272..05d3ae5fffa 100644 --- a/code/modules/clothing/spacesuits/rig/modules/combat.dm +++ b/code/modules/clothing/spacesuits/rig/modules/combat.dm @@ -269,7 +269,7 @@ interface_name = "thermal drill" interface_desc = "A potent drill that can pierce rock walls over long distances." - gun_type = /obj/item/gun/energy/vaurca/mountedthermaldrill + gun_type = /obj/item/gun/energy/vaurca/thermaldrill/mounted category = MODULE_UTILITY diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 3f26328e2e5..9edd7c56b86 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -29,6 +29,8 @@ var/self_recharge = 0 //if set, the weapon will recharge itself var/use_external_power = 0 //if set, the weapon will look for an external power source to draw from, otherwise it recharges magically var/recharge_time = 4 + /// Multiplies by charge cost to determine how much charge should be returned + var/recharge_multiplier = 1 var/charge_tick = 0 //vars passed to turrets @@ -92,7 +94,7 @@ if(!external || !external.use(charge_cost)) //Take power from the borg... return 0 - power_supply.give(charge_cost) //... to recharge the shot + power_supply.give(charge_cost * recharge_multiplier) //... to recharge the shot update_maptext() update_icon() diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 2099cb2783b..22167482a34 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -385,7 +385,8 @@ /obj/item/gun/energy/vaurca/thermaldrill name = "thermal drill" - desc = "Pierce the heavens? Son, there won't be any heavens when you're through with it." + desc = "A rare and immensely potent drill produced by the K'lax Hive, possessing a self-charging isotropic phoron-accelerated core." + desc_extended = "The latest iteration of the infamous K'laxan Thermal Drill, the original design dating back millennia. Produced on Tret and sold primarily to Hephaestus Industries, each of these drills has a self-charging isotropic phoron-accelerated core and is far more expensive than its traditional counterpart as a result. This is a price many seem willing to tolerate when accounting for the potency of the Thermal Drill and the increased yields facilities equipped with one begin to see. A burst of concentrated energy from the Thermal Drill tears through rock and xenoflaura alike as if both were mere paper. The few independent miners that have obtained this tool almost invariably treat it as a prized possession." icon = 'icons/obj/vaurca_items.dmi' icon_state = "thermaldrill" item_state = "thermaldrill" @@ -394,37 +395,40 @@ fire_sound = 'sound/magic/lightningbolt.ogg' slot_flags = SLOT_BACK w_class = ITEMSIZE_LARGE - accuracy = 0 // Overwrite just in case. force = 15 projectile_type = /obj/item/projectile/beam/thermaldrill max_shots = 90 - sel_mode = 1 burst = 10 burst_delay = 1 fire_delay = 20 - self_recharge = 1 + self_recharge = TRUE recharge_time = 1 - charge_meter = 1 + recharge_multiplier = 5 charge_cost = 50 - can_turret = 1 + can_turret = TRUE turret_sprite_set = "thermaldrill" + var/needs_wielding = TRUE is_wieldable = TRUE firemodes = list( list(mode_name="2 second burst", burst=10, burst_delay = 1, fire_delay = 20, fire_delay_wielded = 20), list(mode_name="4 second burst", burst=20, burst_delay = 1, fire_delay = 40, fire_delay_wielded = 40), list(mode_name="6 second burst", burst=30, burst_delay = 1, fire_delay = 60, fire_delay_wielded = 60), - list(mode_name="point-burst auto", can_autofire = TRUE, burst = 1, fire_delay = 1, fire_delay_wielded = 1, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(1.0, 1.0, 1.0, 1.0, 1.2)) - ) + list(mode_name="point-burst auto", can_autofire = TRUE, burst = 3, fire_delay = 3, fire_delay_wielded = 3, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(1.0, 1.0, 1.0, 1.0, 1.2)) + ) needspin = FALSE /obj/item/gun/energy/vaurca/thermaldrill/special_check(var/mob/user) + var/turf/current_turf = get_turf(user) + if(isStationLevel(current_turf.z)) + to_chat(user, SPAN_DANGER("\The [src] cannot be used on the ship!")) + return FALSE if(is_charging) to_chat(user, SPAN_DANGER("\The [src] is already charging!")) return FALSE - if(!wielded) + if(needs_wielding && !wielded) to_chat(user, SPAN_DANGER("You cannot fire this weapon with just one hand!")) return FALSE if(can_autofire) @@ -435,48 +439,17 @@ is_charging = FALSE return FALSE is_charging = FALSE - if(user.get_active_hand() != src) + if(needs_wielding && user.get_active_hand() != src) return msg_admin_attack("[key_name_admin(user)] shot with \a [src.type] [key_name_admin(src)]'s target (JMP)") return ..() -/obj/item/gun/energy/vaurca/mountedthermaldrill +/obj/item/gun/energy/vaurca/thermaldrill/mounted name = "mounted thermal drill" - desc = "Pierce the heavens? Son, there won't be any heavens when you're through with it." - icon = 'icons/obj/vaurca_items.dmi' - icon_state = "thermaldrill" - item_state = "thermaldrill" - has_item_ratio = FALSE - origin_tech = list(TECH_COMBAT = 6, TECH_PHORON = 8) - fire_sound = 'sound/magic/lightningbolt.ogg' - slot_flags = SLOT_BACK - w_class = ITEMSIZE_LARGE - force = 15 - projectile_type = /obj/item/projectile/beam/thermaldrill - max_shots = 90 - sel_mode = 1 - burst = 30 - burst_delay = 1 - fire_delay = 20 - self_recharge = 1 - recharge_time = 1 - charge_meter = 1 - use_external_power = 1 + needs_wielding = FALSE + use_external_power = TRUE charge_cost = 25 -/obj/item/gun/energy/vaurca/mountedthermaldrill/special_check(var/mob/user) - if(is_charging) - to_chat(user, SPAN_WARNING("\The [src] is already charging!")) - return FALSE - user.visible_message(SPAN_DANGER("\The [user] begins charging \the [src]!"), SPAN_DANGER("You begin charging \the [src]!"), SPAN_DANGER("You hear a low pulsing roar!")) - is_charging = TRUE - if(!do_after(user, 2 SECONDS)) - is_charging = FALSE - return FALSE - is_charging = FALSE - msg_admin_attack("[key_name_admin(user)] shot with \a [src.type] [key_name_admin(src)]'s target (JMP)",ckey=key_name(user),ckey_target=key_name(src)) - return ..() - /obj/item/gun/energy/vaurca/tachyon name = "tachyon carbine" desc = "A Vaurcan carbine that fires a beam of concentrated faster than light particles, capable of passing through most forms of matter." diff --git a/code/modules/projectiles/pins.dm b/code/modules/projectiles/pins.dm index 0124d3af927..77c84be5674 100644 --- a/code/modules/projectiles/pins.dm +++ b/code/modules/projectiles/pins.dm @@ -229,8 +229,8 @@ Pins Below. /obj/item/device/firing_pin/away_site name = "away site firing pin" - desc = "This access locked firing pin allows weapons to be fired only when the user is not on-station." - fail_message = "USER ON STATION LEVEL." + desc = "This access locked firing pin allows weapons to be fired only when the user is not on-ship." + fail_message = "USER ON SHIP LEVEL." /obj/item/device/firing_pin/away_site/pin_auth(mob/living/user) var/turf/T = get_turf(src) diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index d6a96280d28..3a254cc8741 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -364,25 +364,18 @@ /obj/item/projectile/beam/thermaldrill name = "thermal drill" icon_state = "gauss" - damage = 2 + damage = 15 no_attack_log = TRUE muzzle_type = /obj/effect/projectile/muzzle/solar tracer_type = /obj/effect/projectile/tracer/solar impact_type = /obj/effect/projectile/impact/solar -/obj/item/projectile/beam/thermaldrill/on_impact(var/atom/A) - if(isturf(A)) - if(istype(A, /turf/simulated/mineral)) - if(prob(75)) //likely because its a mining tool - var/turf/simulated/mineral/M = A - if(prob(33)) - M.GetDrilled(1) - else if(!M.emitter_blasts_taken) - M.emitter_blasts_taken += 2 - else if(prob(66)) - M.emitter_blasts_taken += 2 - ..() +/obj/item/projectile/beam/thermaldrill/on_impact(var/atom/hit_atom) + if(istype(hit_atom, /turf/simulated/mineral)) + var/turf/simulated/mineral/mineral = hit_atom + mineral.GetDrilled(TRUE) + return ..() diff --git a/html/changelogs/geeves-thermal_drill_buff.yml b/html/changelogs/geeves-thermal_drill_buff.yml new file mode 100644 index 00000000000..06e377c2035 --- /dev/null +++ b/html/changelogs/geeves-thermal_drill_buff.yml @@ -0,0 +1,7 @@ +author: Geeves, Connorjg1 + +delete-after: True + +changes: + - tweak: "Buffed the vaurcaesian hand-held thermal drill to fire more shots in auto mode, deal more damage, destroy mineral walls in one blast, but it can only be used on non-ship Z-levels." + - tweak: "Gave the vaurcaesian hand-held thermal drill a new description."