Adds the proto-kinetic glaive as a crusher retool kit (#89451)

## About The Pull Request

![image](https://github.com/user-attachments/assets/68eba2d3-d7fc-4678-9d83-87f3ad4d6382)

Adds a glaive retool kit to the mining vendor, for decoratively
converting kinetic crushers into a glaive-like model. Because polearms
are neat.

Also allows retool kits to use different icon files other than the
hammer_lefthand and hammer_righthand .dmis, along with support for
changing inhand dimensions as appropriate.

Item sprites and original inhands (since modified) with credit to
@zeroisthebiggay (see:
https://github.com/Citadel-Station-13/Citadel-Station-13/pull/15773).

## Why It's Good For The Game

Cool alternate knife-stick sprite for the crusher.
Also support for alternate inhand files for retool kits, in case someone
else decides to make other long crusher variants.

## Changelog

🆑
add: Glaive retool kits for proto-kinetic crushers are now in mining
vendors' ordering lists.
code: Proto-kinetic crusher retool kits now have support for alternate
inhand icon files with alternate dimensions.
/🆑

---------

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
This commit is contained in:
Hatterhat
2025-02-23 10:16:01 +01:00
committed by GitHub
co-authored by Hatterhat
parent 96cec1aa4c
commit daf96c5703
7 changed files with 40 additions and 13 deletions
@@ -10,12 +10,22 @@
icon = 'icons/obj/mining.dmi'
icon_state = "retool_kit"
denied_type = /obj/item/crusher_trophy/retool_kit
/// Specifies the icon file in which the crusher's new state is stored.
var/retool_icon = 'icons/obj/mining.dmi'
///Specifies the sprite/icon state which the crusher is changed to as an item. Should appear in the icons/obj/mining.dmi file with accompanying "lit" and "recharging" sprites
var/retool_icon = "crusher_sword"
///Specifies the icon state for the crusher's appearance in hand. Should appear in both icons/mob/inhands/weapons/hammers_lefthand.dmi and icons/mob/inhands/weapons/hammers_righthand.dmi
var/retool_icon_state = "crusher_sword"
///Specifies the icon state for the crusher's appearance in hand. Should appear in both retool_lefthand_file and retool_righthand_file, which are icons/mob/inhands/weapons/hammers_lefthand.dmi and icons/mob/inhands/weapons/hammers_righthand.dmi by default.
var/retool_inhand_icon = "crusher_sword"
///For if the retool kit changes the projectile's appearance. The sprite should be in icons/obj/weapons/guns/projectiles.dmi
var/retool_projectile_icon = "pulse1"
/// Specifies the left hand inhand icon file. If both this and retool_righthand_file are set, changes the inhand files and dimensions as appropriate.
var/retool_lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi'
/// Specifies the right hand inhand icon file. If both this and retool_lefthand_file are set, changes the inhand files and dimensions as appropriate.
var/retool_righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi'
/// Specifies the X dimensions of the new inhand, only relevant with different inhand files.
var/retool_inhand_X = 32
/// Specifies the Y dimensions of the new inhand, only relevant with different inhand files.
var/retool_inhand_Y = 32
/obj/item/crusher_trophy/retool_kit/effect_desc()
return "the crusher to have the appearance of a sword"
@@ -23,34 +33,39 @@
/obj/item/crusher_trophy/retool_kit/add_to(obj/item/kinetic_crusher/pkc, mob/user)
. = ..()
if(.)
pkc.icon_state = retool_icon
pkc.icon = retool_icon
pkc.icon_state = retool_icon_state
pkc.current_inhand_icon_state = retool_inhand_icon
pkc.projectile_icon = retool_projectile_icon
pkc.inhand_x_dimension = retool_inhand_X
pkc.inhand_y_dimension = retool_inhand_Y
pkc.update_appearance()
if(iscarbon(pkc.loc))
var/mob/living/carbon/holder = pkc.loc
holder.update_worn_back()
holder.update_suit_storage()
holder.update_held_items()
pkc.update_appearance()
/obj/item/crusher_trophy/retool_kit/remove_from(obj/item/kinetic_crusher/pkc)
pkc.icon = initial(pkc.icon)
pkc.icon_state = initial(pkc.icon_state)
pkc.current_inhand_icon_state = initial(pkc.current_inhand_icon_state)
pkc.projectile_icon = initial(pkc.projectile_icon)
pkc.lefthand_file = initial(pkc.lefthand_file)
pkc.righthand_file = initial(pkc.righthand_file)
pkc.inhand_x_dimension = initial(pkc.inhand_x_dimension)
pkc.inhand_y_dimension = initial(pkc.inhand_y_dimension)
pkc.update_appearance()
if(iscarbon(pkc.loc))
var/mob/living/carbon/holder = pkc.loc
holder.update_worn_back()
holder.update_suit_storage()
holder.update_held_items()
pkc.update_appearance()
..()
/obj/item/crusher_trophy/retool_kit/harpoon
name = "crusher harpoon retool kit"
desc = "A toolkit for changing the crusher's appearance without affecting the device's function. This one will make it look like a harpoon."
icon = 'icons/obj/mining.dmi'
icon_state = "retool_kit"
denied_type = /obj/item/crusher_trophy/retool_kit
retool_icon = "crusher_harpoon"
retool_inhand_icon = "crusher_harpoon"
retool_projectile_icon = "pulse_harpoon"
@@ -61,21 +76,29 @@
/obj/item/crusher_trophy/retool_kit/dagger
name = "crusher dagger retool kit"
desc = "A toolkit for changing the crusher's appearance without affecting the device's function. This one will make it look like a dual dagger and mini-blaster on a chain."
icon = 'icons/obj/mining.dmi'
icon_state = "retool_kit"
denied_type = /obj/item/crusher_trophy/retool_kit
retool_icon = "crusher_dagger"
retool_inhand_icon = "crusher_dagger"
/obj/item/crusher_trophy/retool_kit/dagger/effect_desc()
return "the crusher to have the appearance of a dual dagger and blaster"
/obj/item/crusher_trophy/retool_kit/glaive
name = "crusher glaive retool kit"
desc = "A toolkit for changing the crusher's appearance without affecting the device's function. This one will make it look like a glaive, with a longer, thinner blade."
retool_icon = "crusher_glaive"
retool_inhand_icon = "crusher_glaive"
retool_lefthand_file = 'icons/mob/inhands/64x64_lefthand.dmi'
retool_righthand_file = 'icons/mob/inhands/64x64_righthand.dmi'
retool_inhand_X = 64
retool_inhand_Y = 64
/obj/item/crusher_trophy/retool_kit/glaive/effect_desc()
return "the crusher to have the appearance of a glaive"
/obj/item/crusher_trophy/retool_kit/ashenskull
name = "ashen skull"
desc = "It burns with the flame of the necropolis, whispering in your ear. It demands to be bound to a suitable weapon."
icon = 'icons/obj/mining.dmi'
icon_state = "retool_kit_skull"
denied_type = /obj/item/crusher_trophy/retool_kit
retool_icon = "crusher_skull"
retool_inhand_icon = "crusher_skull"
retool_projectile_icon = "pulse_skull"