[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-14 19:27:01 -04:00
committed by GitHub
co-authored by Comxy
parent 304e341b06
commit d0a892d19c
9 changed files with 124 additions and 0 deletions
@@ -16,6 +16,12 @@
icon = 'icons/obj/weapons/improvised.dmi'
icon_state = "riflestock"
/obj/item/weaponcrafting/giant_wrench
name = "Big Slappy parts kit"
desc = "Illegal parts to make a giant like wrench commonly known as a Big Slappy."
icon = 'icons/obj/weapons/improvised.dmi'
icon_state = "weaponkit_gw"
///These gun kits are printed from the security protolathe to then be used in making new weapons
// GUN PART KIT //
@@ -142,3 +142,17 @@
)
time = 10 SECONDS
category = CAT_WEAPON_MELEE
/datum/crafting_recipe/giant_wrench
name = "Big Slappy"
result = /obj/item/shovel/giant_wrench
tool_behaviors = list(TOOL_CROWBAR, TOOL_SCREWDRIVER, TOOL_WELDER)
reqs = list(
/obj/item/wrench = 4,
/obj/item/weaponcrafting/giant_wrench = 1,
/obj/item/stack/sheet/plasteel = 5,
/obj/item/stack/rods = 10,
/obj/item/pickaxe/drill = 1,
)
time = 10 SECONDS
category = CAT_WEAPON_MELEE
@@ -121,3 +121,12 @@
stock_min = 3
stock_max = 8
availability_prob = 90
/datum/market_item/misc/giant_wrench_parts
name = "Big Slappy parts"
desc = "Cheap illegal Big Slappy parts. The fastest and statistically most dangerous wrench."
item = /obj/item/weaponcrafting/giant_wrench
price_min = CARGO_CRATE_VALUE * 2
price_max = CARGO_CRATE_VALUE * 5
stock_max = 1
availability_prob = 25
+8
View File
@@ -291,3 +291,11 @@
cost = CARGO_CRATE_VALUE * 5
contains = list(/obj/item/reagent_containers/cup/glass/bottle/juice/dreadnog = 3)
crate_name = "dreadnog crate"
/datum/supply_pack/imports/giant_wrench_parts
name = "Big Slappy parts"
desc = "Illegal Big Slappy parts. The fastest and statistically most dangerous wrench."
cost = CARGO_CRATE_VALUE * 22
contraband = TRUE
contains = list(/obj/item/weaponcrafting/giant_wrench)
crate_name = "unknown parts crate"
@@ -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")
Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 792 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 787 B

After

Width:  |  Height:  |  Size: 928 B