[MIRROR] Big Slappy | Giant Weapon DLC [MERGE READY!!!] [MDB IGNORE] (#23082)

* Big Slappy | Giant Weapon DLC [MERGE READY!!!] (#77273)

## About The Pull Request
Big Slappy is a new illegal shovel/wrench which can be obtained through
illegals means. Parts you need to craft it can be found on the black
market uplink for a low price, but if it is not there you can find it on
the imports page on your hacked cargo console for 4400 credits usually.
Big Slappy makes you slow and you will get 10 recoil damage everytime
you hit someone and you will knock down your opponent for two seconds
while throwing people back like a baseball bat. It deals 30 damage and
is the fastest shovel/wrench out there. It can be folded into its wrench
form which will change its typing and makes it look like a wrench. It
also deals more damage in the wrench state, but also deals more recoil
damage and your target will not get knocked down. This weapon will
probably only appear in a few rounds since it has recoil damage, is slow
and costs a lot to obtain. It also has a longer meele attack cooldown.

To craft it you need 4 wrenches, 1 drill, 5 plasteel, 10 rods and 1 big
slappy parts using tools.

![promo](https://github.com/tgstation/tgstation/assets/25363960/4d619283-832c-4ce0-b3b2-e6ddb3dbd988)
## Why It's Good For The Game
Cool new weapon.
## Changelog
🆑
add: Added big slappy
image: Added big slappy parts and big slappy sprites
/🆑

* Big Slappy | Giant Weapon DLC [MERGE READY!!!]

---------

Co-authored-by: Comxy <tijntensen@gmail.com>
This commit is contained in:
SkyratBot
2023-08-15 01:27:01 +02:00
committed by GitHub
parent 304e341b06
commit d0a892d19c
9 changed files with 124 additions and 0 deletions
@@ -283,3 +283,90 @@
if(user.incapacitated() || !user.Adjacent(src))
return FALSE
return TRUE
/obj/item/shovel/giant_wrench
name = "Big Slappy"
desc = "A gigantic wrench made illegal because of its many incidents involving this tool."
icon_state = "giant_wrench"
icon = 'icons/obj/weapons/giant_wrench.dmi'
inhand_icon_state = null
lefthand_file = 'icons/mob/inhands/64x64_lefthand.dmi'
righthand_file = 'icons/mob/inhands/64x64_righthand.dmi'
inhand_x_dimension = 64
inhand_y_dimension = 64
w_class = WEIGHT_CLASS_HUGE
slot_flags = NONE
toolspeed = 0.1
force = 30
throwforce = 20
block_chance = 30
throw_range = 2
demolition_mod = 2
armor_type = /datum/armor/giant_wrench
resistance_flags = FIRE_PROOF
wound_bonus = -10
attack_verb_continuous = list("bonks", "bludgeons", "pounds")
attack_verb_simple = list("bonk", "bludgeon", "pound")
drop_sound = 'sound/weapons/sonic_jackhammer.ogg'
pickup_sound = 'sound/items/handling/crowbar_pickup.ogg'
hitsound = 'sound/weapons/sonic_jackhammer.ogg'
block_sound = 'sound/weapons/sonic_jackhammer.ogg'
item_flags = SLOWS_WHILE_IN_HAND
slowdown = 3
attack_speed = 1.2 SECONDS
/// The factor at which the recoil becomes less.
var/recoil_factor = 3
/// Wether we knock down and launch away out enemies when we attack.
var/do_launch = TRUE
/datum/armor/giant_wrench
acid = 30
bomb = 100
bullet = 30
fire = 100
laser = 30
melee = 30
/obj/item/shovel/giant_wrench/Initialize(mapload)
. = ..()
transform = transform.Translate(-16, -16)
AddComponent(/datum/component/two_handed, require_twohands=TRUE)
AddComponent( \
/datum/component/transforming, \
force_on = 40, \
throwforce_on = throwforce, \
hitsound_on = hitsound, \
w_class_on = w_class, \
sharpness_on = SHARP_POINTY, \
clumsy_check = TRUE, \
inhand_icon_change = TRUE, \
)
RegisterSignal(src, COMSIG_TRANSFORMING_ON_TRANSFORM, PROC_REF(on_transform))
/// Used when the tool is transformed through the transforming component.
/obj/item/shovel/giant_wrench/proc/on_transform(obj/item/source, mob/user, active)
SIGNAL_HANDLER
usesound = (active ? 'sound/items/ratchet.ogg' : initial(usesound))
block_chance = (active ? 0 : initial(block_chance))
recoil_factor = (active ? 2 : initial(recoil_factor))
do_launch = (active ? FALSE : initial(do_launch))
tool_behaviour = (active ? TOOL_WRENCH : initial(tool_behaviour))
armour_penetration = (active ? 30 : initial(armour_penetration))
if(user)
balloon_alert(user, "folded Big Slappy [active ? "open" : "closed"]")
playsound(src, 'sound/items/ratchet.ogg', 50, TRUE)
return COMPONENT_NO_DEFAULT_MESSAGE
/obj/item/shovel/giant_wrench/attack(mob/living/target_mob, mob/living/user)
..()
if(QDELETED(target_mob))
return
if(do_launch)
var/atom/throw_target = get_edge_target_turf(target_mob, get_dir(user, get_step_away(target_mob, user)))
target_mob.throw_at(throw_target, 2, 2, user, gentle = TRUE)
target_mob.Knockdown(2 SECONDS)
var/body_zone = pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG)
user.apply_damage(force / recoil_factor, BRUTE, body_zone, user.run_armor_check(body_zone, MELEE))
to_chat(user, span_danger("The weight of the Big Slappy recoils!"))
log_combat(user, user, "recoiled Big Slappy into")