UBEY UBEY UBEY (#20640)
* sledgehammer * oops * readjust damage numbers * Update sledgehammer.dm * slowdown is now only on self * map changes * Fix whitespace This partially reverts commit014b85e4db. * Revert "Fix whitespace" This reverts commit38f62ec680. * fix whitespace real * Update DonutStation.dmm * icemeta
@@ -439,6 +439,8 @@
|
||||
/obj/item/pipe_dispenser,
|
||||
/obj/item/pipe_dispenser,
|
||||
/obj/item/pipe_dispenser,
|
||||
/obj/item/melee/sledgehammer,
|
||||
/obj/item/melee/sledgehammer,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/engineering)
|
||||
"mm" = (
|
||||
|
||||
@@ -361,6 +361,8 @@
|
||||
/obj/item/clothing/glasses/meson/engine,
|
||||
/obj/item/clothing/glasses/meson/engine,
|
||||
/obj/item/clothing/glasses/meson/engine,
|
||||
/obj/item/melee/sledgehammer,
|
||||
/obj/item/melee/sledgehammer,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/engineering)
|
||||
"sm" = (
|
||||
|
||||
@@ -356,6 +356,8 @@
|
||||
/obj/item/pipe_dispenser,
|
||||
/obj/item/pipe_dispenser,
|
||||
/obj/item/pipe_dispenser,
|
||||
/obj/item/melee/sledgehammer,
|
||||
/obj/item/melee/sledgehammer,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/engineering)
|
||||
"mC" = (
|
||||
|
||||
@@ -73081,6 +73081,8 @@
|
||||
/obj/structure/sign/warning/electricshock{
|
||||
pixel_x = 32
|
||||
},
|
||||
/obj/item/melee/sledgehammer,
|
||||
/obj/item/melee/sledgehammer,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/engineering)
|
||||
"wjC" = (
|
||||
|
||||
@@ -16794,6 +16794,8 @@
|
||||
/obj/item/pipe_dispenser,
|
||||
/obj/item/pipe_dispenser,
|
||||
/obj/item/pipe_dispenser,
|
||||
/obj/item/melee/sledgehammer,
|
||||
/obj/item/melee/sledgehammer,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/engineering)
|
||||
"hnb" = (
|
||||
|
||||
@@ -18237,6 +18237,8 @@
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2,
|
||||
/obj/structure/table,
|
||||
/obj/item/storage/belt/utility,
|
||||
/obj/item/melee/sledgehammer,
|
||||
/obj/item/melee/sledgehammer,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/engineering)
|
||||
"iNL" = (
|
||||
|
||||
@@ -12288,6 +12288,8 @@
|
||||
/obj/structure/table,
|
||||
/obj/item/stack/sheet/glass/fifty,
|
||||
/obj/item/stack/sheet/metal/fifty,
|
||||
/obj/item/melee/sledgehammer,
|
||||
/obj/item/melee/sledgehammer,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/engineering)
|
||||
"bRu" = (
|
||||
|
||||
@@ -138,7 +138,7 @@
|
||||
name = "Makeshift Bow"
|
||||
result = /obj/item/gun/ballistic/bow/maint
|
||||
reqs = list(/obj/item/pipe = 5,
|
||||
/obj/item/stack/tape = 3,
|
||||
/obj/item/stack/tape = 3,
|
||||
/obj/item/stack/cable_coil = 10)
|
||||
time = 10 SECONDS
|
||||
category = CAT_WEAPON_RANGED
|
||||
@@ -188,6 +188,17 @@
|
||||
time = 12
|
||||
category = CAT_WEAPON_RANGED
|
||||
|
||||
/datum/crafting_recipe/sledgehammer
|
||||
name = "Sledgehammer"
|
||||
result = /obj/item/melee/sledgehammer
|
||||
reqs = list(/obj/item/stack/sheet/mineral/wood = 4,
|
||||
/obj/item/stack/sheet/plasteel = 3,
|
||||
/obj/item/stack/sheet/metal = 1)
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WELDER)
|
||||
result = /obj/item/melee/sledgehammer
|
||||
time = 8 SECONDS
|
||||
category = CAT_WEAPON_MELEE
|
||||
|
||||
/datum/crafting_recipe/chainsaw
|
||||
name = "Chainsaw"
|
||||
result = /obj/item/melee/chainsaw
|
||||
@@ -487,8 +498,8 @@
|
||||
name = "Glass Arrow"
|
||||
result = /obj/item/ammo_casing/reusable/arrow/glass
|
||||
time = 1.5 SECONDS
|
||||
reqs = list(/obj/item/shard = 1,
|
||||
/obj/item/stack/rods = 1,
|
||||
reqs = list(/obj/item/shard = 1,
|
||||
/obj/item/stack/rods = 1,
|
||||
/obj/item/stack/cable_coil = 3)
|
||||
category = CAT_WEAPON_AMMO
|
||||
|
||||
@@ -497,6 +508,6 @@
|
||||
result = /obj/item/ammo_casing/reusable/arrow/glass/plasma
|
||||
time = 1.5 SECONDS
|
||||
reqs = list(/obj/item/shard/plasma = 1,
|
||||
/obj/item/stack/rods = 1,
|
||||
/obj/item/stack/rods = 1,
|
||||
/obj/item/stack/cable_coil = 3)
|
||||
category = CAT_WEAPON_AMMO
|
||||
|
||||
@@ -194,7 +194,11 @@
|
||||
if(try_clean(W, user, T) || try_wallmount(W, user, T) || try_decon(W, user, T))
|
||||
return
|
||||
|
||||
return ..()
|
||||
. = ..()
|
||||
|
||||
if(!.)
|
||||
to_chat(user, span_notice("You hit the wall with \the [W] but nothing happens!"))
|
||||
playsound(src, 'sound/weapons/genhit.ogg', 25, 1)
|
||||
|
||||
/turf/closed/wall/proc/try_clean(obj/item/W, mob/user, turf/T)
|
||||
if((user.a_intent != INTENT_HELP) || !LAZYLEN(dent_decals))
|
||||
|
||||
|
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 6.4 KiB |
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 7.1 KiB |
@@ -3927,6 +3927,7 @@
|
||||
#include "yogstation\code\game\objects\items\storage\toolbox.dm"
|
||||
#include "yogstation\code\game\objects\items\storage\uplink_kits.dm"
|
||||
#include "yogstation\code\game\objects\items\wielded\big_spoon.dm"
|
||||
#include "yogstation\code\game\objects\items\wielded\sledgehammer.dm"
|
||||
#include "yogstation\code\game\objects\items\wielded\vxtvulhammer.dm"
|
||||
#include "yogstation\code\game\objects\structures\bedsheet_bin.dm"
|
||||
#include "yogstation\code\game\objects\structures\fireaxe.dm"
|
||||
|
||||
68
yogstation/code/game/objects/items/wielded/sledgehammer.dm
Normal file
@@ -0,0 +1,68 @@
|
||||
#define SLEDGEHAMMER_THROWN_STAGGER "sledgehammer_throw"
|
||||
#define SLEDGEHAMMER_HIT_STAGGER "sledgehammer_hit"
|
||||
|
||||
/obj/item/melee/sledgehammer
|
||||
name = "sledgehammer"
|
||||
desc = "An archaic tool used to drive nails and break down hollow walls."
|
||||
icon = 'icons/obj/weapons/misc.dmi'
|
||||
mob_overlay_icon = 'yogstation/icons/mob/clothing/back.dmi'
|
||||
icon_state = "sledgehammer"
|
||||
item_state = "sledgehammer"
|
||||
lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi'
|
||||
force = 3 /// The weapon requires two hands
|
||||
throwforce = 18
|
||||
throw_range = 3 /// Doesn't throw very far
|
||||
sharpness = SHARP_NONE
|
||||
armour_penetration = -20
|
||||
hitsound = 'sound/weapons/smash.ogg' /// Hitsound when thrown at someone
|
||||
attack_verb = list("attacked", "hit", "struck", "bludgeoned", "bashed", "smashed")
|
||||
materials = list(/datum/material/iron=6000)
|
||||
w_class = WEIGHT_CLASS_HUGE
|
||||
slot_flags = ITEM_SLOT_BACK
|
||||
wound_bonus = -15
|
||||
bare_wound_bonus = 15
|
||||
|
||||
/obj/item/melee/sledgehammer/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/two_handed, \
|
||||
force_unwielded = 3, \
|
||||
force_wielded = 18, \
|
||||
wield_callback = CALLBACK(src, PROC_REF(on_wield)), \
|
||||
unwield_callback = CALLBACK(src, PROC_REF(on_unwield)), \
|
||||
require_twohands = TRUE, \
|
||||
wielded_stats = list(SWING_SPEED = 1.5, ENCUMBRANCE = 0.5, ENCUMBRANCE_TIME = 1 SECONDS, REACH = 1, DAMAGE_LOW = 0, DAMAGE_HIGH = 0), \
|
||||
)
|
||||
|
||||
/obj/item/melee/sledgehammer/proc/on_wield(atom/source, mob/living/user)
|
||||
hitsound = "swing_hit"
|
||||
|
||||
/obj/item/melee/sledgehammer/proc/on_unwield(atom/source, mob/living/user)
|
||||
hitsound = initial(hitsound)
|
||||
|
||||
/obj/item/melee/sledgehammer/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
|
||||
. = ..()
|
||||
if(!HAS_TRAIT(src, TRAIT_WIELDED) && user)
|
||||
/// This will already do low damage, so it doesn't need to be intercepted earlier
|
||||
to_chat(user, span_danger("\The [src] is too heavy to attack effectively without being wielded!"))
|
||||
return
|
||||
|
||||
if(!proximity_flag)
|
||||
return
|
||||
|
||||
if(isstructure(target) || ismachinery(target))
|
||||
if(!QDELETED(target))
|
||||
var/obj/structure/S = target
|
||||
if(istype(S, /obj/structure/window)) // Sledgehammer really good at smashing windows. 2-7 hits to kill a window
|
||||
S.take_damage(S.max_integrity/2, BRUTE, MELEE, FALSE, null, armour_penetration)
|
||||
else // Sledgehammer can kill airlocks in 17-23 hits, against most other things it's almost as good as a fireaxe
|
||||
S.take_damage(force*2, BRUTE, MELEE, FALSE, null, armour_penetration)
|
||||
playsound(src, 'sound/effects/bang.ogg', 50, 1)
|
||||
|
||||
/obj/item/melee/sledgehammer/throw_at(atom/target, range, speed, mob/thrower, spin, diagonals_first, datum/callback/callback, force, quickstart)
|
||||
. = ..()
|
||||
if(iscarbon(thrower))
|
||||
var/mob/living/carbon/C = thrower
|
||||
C.add_movespeed_modifier(SLEDGEHAMMER_THROWN_STAGGER, update=TRUE, priority=101, multiplicative_slowdown=1)
|
||||
addtimer(CALLBACK(C, TYPE_PROC_REF(/mob, remove_movespeed_modifier), SLEDGEHAMMER_THROWN_STAGGER), 2 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE)
|
||||
to_chat(target, span_danger("You are staggered from throwing such a heavy object!"))
|
||||
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.8 KiB |