Files
Batrachophreno 8111a8489b Restore many missing inhand sprites for items, add/port others (#21831)
Many, many, many items have inhand sprites in their .dmis but for
whatever reasons do not display them in-game. This PR:

1. Updates many item definitions to point to their already-existing
inhands correctly. This consists largely of held tools, but also gas
tanks and jetpacks mounted in the suit storage slot.

2. Adds a few codersprites made by me for objects with either missing
inhands or poorly matching mishands (IE, the tape recorder, which has a
black case, reused the white inhand sprites of the health analyzer). The
new sprites are modified or recolored variations of other inhand sprites
from our repo, except for circuitboards which are new.
<img width="444" height="400" alt="image"
src="https://github.com/user-attachments/assets/7f107b9a-fe24-4e31-8f16-4d34768ee117"
/>


3. Adds inhand sprites for Inflatables and Inflatable Boxes made by
Tomixcomics.
<img width="424" height="101" alt="image"
src="https://github.com/user-attachments/assets/434107c4-8577-49a2-a58e-d6b014c03933"
/>

4. Ports inhand sprites for the Hydraulic Rescue Tool from tg's Jaws of
Life.
<img width="224" height="94" alt="Screenshot 2026-02-07 172931"
src="https://github.com/user-attachments/assets/070c7956-f6a8-4fb5-870f-10c64afcc8b3"
/>

5. Some additional cleanup while in the area. The 'analyzer' has been
renamed the 'gas analyzer' to be consistent with the other analyzer
objects, standardized icon_state naming conventions where I saw
oddballs, updated code docs to use DMDocs when in the area, etc.

### Asset Licenses
The following assets that **have not** been created by myself are
included in this PR:

| Path | Original Author | License |
| --- | --- | --- |
| icons/obj/item/hydraulic_rescue_tool.dmi | [SomeAngryMiner (bee
station)](https://github.com/BeeStation/BeeStation-Hornet/pull/2487),
[maxymax
(/tg/station)](https://github.com/tgstation/tgstation/pull/58616) |
CC-BY-SA |
| icons/obj/item/inflatables.dmi |
[Tomixcomics](https://github.com/tomixcomics) | CC-BY-SA |
2026-02-17 17:51:22 +00:00

84 lines
3.0 KiB
Plaintext

/obj/item/crowbar
name = "pocket crowbar"
desc = "A small crowbar. This handy tool is useful for lots of things, such as prying floor tiles or opening unpowered doors."
icon = 'icons/obj/tools.dmi'
item_icons = list(
slot_l_hand_str = 'icons/mob/items/lefthand_tools.dmi',
slot_r_hand_str = 'icons/mob/items/righthand_tools.dmi',
)
icon_state = "crowbar"
item_state = "crowbar"
obj_flags = OBJ_FLAG_CONDUCTABLE
slot_flags = SLOT_BELT
force = 18
throwforce = 7
w_class = WEIGHT_CLASS_NORMAL
drop_sound = 'sound/items/drop/crowbar.ogg'
pickup_sound = 'sound/items/pickup/crowbar.ogg'
usesound = SFX_CROWBAR
surgerysound = 'sound/items/surgery/retractor.ogg'
origin_tech = list(TECH_ENGINEERING = 1)
matter = list(DEFAULT_WALL_MATERIAL = 50)
attack_verb = list("attacked", "bashed", "battered", "bludgeoned", "whacked")
tool_behaviour = TOOL_CROWBAR
toolspeed = 1
var/force_opens = FALSE
/obj/item/crowbar/red
icon = 'icons/obj/tools.dmi'
icon_state = "crowbar_red"
item_state = "crowbar_red"
/// Imagine something like a crash axe found on airplanes or forcing tools used by emergency services. This is a tool first and foremost.
/obj/item/crowbar/rescue_axe
name = "rescue axe"
desc = "A short lightweight emergency tool meant to chop, pry and pierce. Most of the handle is insulated excepting the wedge at the very bottom. The axe head atop the tool has a short pick opposite of the blade."
icon_state = "rescue_axe"
item_state = "rescue_axe"
w_class = WEIGHT_CLASS_NORMAL
force = 18
throwforce = 12
obj_flags = null // Handle is insulated, so this means it won't conduct electricity and hurt you.
sharp = TRUE
edge = TRUE
origin_tech = list(TECH_ENGINEERING = 2)
/// In practice this means it just does full damage to reinforced windows, which halve the force of attacks done against it already. That's just fine.
/obj/item/crowbar/rescue_axe/resolve_attackby(atom/A)
if(istype(A, /obj/structure/window))
force = initial(force) * 2
else
force = initial(force)
. = ..()
/obj/item/crowbar/rescue_axe/can_woodcut()
return TRUE
/obj/item/crowbar/rescue_axe/red
icon_state = "rescue_axe_red"
item_state = "rescue_axe_red"
/obj/item/crowbar/hydraulic_rescue_tool
name = "hydraulic rescue tool"
desc = "A hydraulic rescue tool that functions like a crowbar by applying strong amounts of hydraulic pressure to force open different things. Also known as jaws of life."
icon = 'icons/obj/item/hydraulic_rescue_tool.dmi'
icon_state = "jawspry"
item_state = "jawspry"
contained_sprite = TRUE
// Really do not want to deal with reconciling sprite implementations between parent and child for now.
item_icons = null
force = 15
throwforce = 1
w_class = WEIGHT_CLASS_NORMAL
drop_sound = 'sound/items/drop/crowbar.ogg'
pickup_sound = 'sound/items/pickup/crowbar.ogg'
origin_tech = list(TECH_ENGINEERING = 1)
matter = list(DEFAULT_WALL_MATERIAL = 50)
attack_verb = list("attacked", "rammed", "battered", "bludgeoned")
toolspeed = 0.7
force_opens = TRUE
/obj/item/crowbar/robotic
icon = 'icons/obj/robot_items.dmi'
toolspeed = 0.5