Files
VOREStation/code/game/objects/items/weapons/tools/transforming.dm
T
Cameron Lennox d5849910e5 Begin clickcode attack_self fix (#18797)
* Begin clickcode attack_self fix

Begins the work to make everything call back to parent for attack_self so that signals are sacred.

* Makes MORE things call the attack_self() parent

Yes, I could make special_handling a var on obj/item HOWEVER i want it to be specific so it can be tracked down later and ONLY the objects that use it can be refactored instead of sitting there literally forever and it just becoming 'a thing'.

* Finishes making the rest of attack_self call parent.

As mentioned, things such as 'specialty_goggles' 'special_handling' and the such are only there to help with attack_self until the attack_self is recoded for those items.

* begone foul demon

* some more cleanup

* These

* GOD this was annoying

* yeh

* Fix this

* fLARES

* Thesee too

* toys!

* Even more!

* More fixes

* Even more

* rest of em

* these too

* Update syndie.dm

* hardref clear

* Update code/game/gamemodes/nuclear/pinpointer.dm

* Update code/game/objects/effects/mines.dm

* Update code/game/objects/items/blueprints_vr.dm

* Update code/game/objects/items/blueprints_vr.dm

* Update code/game/objects/items/contraband_vr.dm

* Update code/game/objects/items/crayons.dm

* Update code/game/objects/items/crayons.dm

* Update code/game/objects/items/gunbox.dm

* Update code/game/objects/items/gunbox.dm

* Update code/game/objects/items/gunbox_vr.dm

* Update code/game/objects/items/gunbox_vr.dm

* Update code/game/objects/items/weapons/gift_wrappaper.dm

* Update code/game/objects/items/crayons.dm

* Update code/game/objects/items/crayons.dm

* Update code/game/objects/items/gunbox.dm

* these too

* Update maintpanel_stack.dm

* angry warning

* Fixes packaged snacks.

Fixes improper var default.

* Special handling for these

* proper poly types

* Fixes magclaws

Makes the 'features' it had just part  of base magboots that can be adjusted via varswap.

* Fixes jackets

Fixes https://github.com/VOREStation/VOREStation/issues/18941

* Small bugfix

Makes p_Theyre properly capitialize
Makes examine show proper wording

* Update gift_wrappaper.dm
2025-12-29 13:21:10 -05:00

188 lines
6.6 KiB
Plaintext

/obj/item/tool/transforming
name = "transforming tool"
desc = "You should never see this..."
var/list/possible_tooltypes = list()
var/current_tooltype = 1
var/obj/item/weldingtool/welder
var/weldertype = /obj/item/weldingtool/dummy
/obj/item/tool/transforming/Initialize(mapload, no_counterpart = TRUE)
. = ..()
if(TOOL_WELDER in possible_tooltypes)
welder = new weldertype(src)
on_tool_switch()
/obj/item/tool/transforming/Destroy()
if(welder)
QDEL_NULL(welder)
. = ..()
/obj/item/tool/transforming/get_welder()
return welder
/obj/item/tool/transforming/attack_self(mob/user)
. = ..(user)
if(.)
return TRUE
if(!possible_tooltypes.len || possible_tooltypes.len < 2)
return
if(current_tooltype == possible_tooltypes.len)
current_tooltype = 1
else
current_tooltype++
on_tool_switch(user)
/obj/item/tool/transforming/proc/on_tool_switch(var/mob/user)
return
/obj/item/tool/transforming/jawsoflife
name = "jaws of life"
desc = "A set of jaws of life, compressed through the magic of science."
icon = 'icons/obj/tools.dmi'
icon_state = "jaws_pry"
item_state = "jawsoflife"
origin_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
matter = list(MAT_METAL=150, MAT_SILVER=50)
usesound = 'sound/items/jaws_pry.ogg'
force = 15
toolspeed = 0.25
sharp = TRUE
edge = TRUE
attack_verb = list("attacked", "bashed", "battered", "bludgeoned", "whacked", "pinched", "nipped")
possible_tooltypes = list(TOOL_CROWBAR,TOOL_WIRECUTTER)
/obj/item/tool/transforming/jawsoflife/on_tool_switch(var/mob/user)
switch(possible_tooltypes[current_tooltype])
if(TOOL_CROWBAR)
desc = initial(desc) + " It's fitted with a prying head."
icon_state = "jaws_pry"
usesound = 'sound/items/jaws_pry.ogg'
pry = 1
tool_qualities = list(TOOL_CROWBAR)
if(user)
playsound(src, 'sound/items/change_jaws.ogg', 50, 1)
to_chat(user, span_notice("You attach the pry jaws to [src]."))
if(TOOL_WIRECUTTER)
desc = initial(desc) + " It's fitted with a cutting head."
icon_state = "jaws_cutter"
usesound = 'sound/items/jaws_cut.ogg'
pry = 0
tool_qualities = list(TOOL_WIRECUTTER)
if(user)
playsound(src, 'sound/items/change_jaws.ogg', 50, 1)
to_chat(user, span_notice("You attach the cutting jaws to [src]."))
/obj/item/tool/transforming/powerdrill
name = "hand drill"
desc = "A simple powered hand drill."
icon = 'icons/obj/tools.dmi'
icon_state = "drill_bolt"
item_state = "drill"
origin_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
matter = list(MAT_STEEL = 150, MAT_SILVER = 50)
hitsound = 'sound/items/drill_hit.ogg'
usesound = 'sound/items/drill_use.ogg'
force = 8
throwforce = 8
toolspeed = 0.25
sharp = FALSE
edge = FALSE
attack_verb = list("drilled", "screwed", "jabbed", "whacked")
possible_tooltypes = list(TOOL_WRENCH,TOOL_SCREWDRIVER)
/obj/item/tool/transforming/powerdrill/on_tool_switch(var/mob/user)
switch(possible_tooltypes[current_tooltype])
if(TOOL_WRENCH)
desc = initial(desc) + " It's fitted with a bolt driver."
icon_state = "drill_bolt"
sharp = FALSE
tool_qualities = list(TOOL_WRENCH)
if(user)
playsound(src,'sound/items/change_drill.ogg',50,1)
to_chat(user, span_notice("You attach the bolt driver to [src]."))
if(TOOL_SCREWDRIVER)
desc = initial(desc) + " It's fitted with a screw driver."
icon_state = "drill_screw"
sharp = TRUE
tool_qualities = list(TOOL_SCREWDRIVER)
if(user)
playsound(src,'sound/items/change_drill.ogg',50,1)
to_chat(user, span_notice("You attach the screw driver to [src]."))
/obj/item/tool/transforming/altevian
name = "Hull Systems Omni-Tool"
desc = "A big and bulky tool, used by Altevians for engineering duties. It's able to do the job of any regular tool while scaled up to a comically large size. It seems nanites are in play to help with adjusting the tip and handling some of the heavy lifting when in use."
icon = 'icons/obj/weapons_vr.dmi'
icon_state = "altevian-wrench"
item_icons = list(
slot_l_hand_str = 'icons/mob/items/lefthand_melee_vr.dmi',
slot_r_hand_str = 'icons/mob/items/righthand_melee_vr.dmi',
)
slot_flags = SLOT_BACK
w_class = ITEMSIZE_HUGE
force = 25
throwforce = 15
toolspeed = 0.25
sharp = FALSE
edge = FALSE
attack_verb = list("whacked", "slammed", "bashed", "wrenched", "fixed", "bolted", "clonked", "bonked")
hitsound = 'sound/weapons/smash.ogg'
possible_tooltypes = list(TOOL_WRENCH,TOOL_CROWBAR,TOOL_WIRECUTTER,TOOL_SCREWDRIVER,TOOL_MULTITOOL,TOOL_WELDER)
weldertype = /obj/item/weldingtool/dummy/altevian
/obj/item/tool/transforming/altevian/on_tool_switch(var/mob/user)
switch(possible_tooltypes[current_tooltype])
if(TOOL_WRENCH)
desc = initial(desc) + " It's currently in bolting mode."
icon_state = "altevian-wrench"
usesound = 'sound/items/ratchet.ogg'
tool_qualities = list(TOOL_WRENCH)
if(user)
playsound(src,'sound/items/ratchet.ogg',50,1)
to_chat(user, span_notice("You reconfigure [src] into bolting mode."))
if(TOOL_CROWBAR)
desc = initial(desc) + " It's currently in prying mode."
icon_state = "altevian-crowbar"
usesound = 'sound/items/crowbar.ogg'
tool_qualities = list(TOOL_CROWBAR)
if(user)
playsound(src,'sound/items/ratchet.ogg',50,1)
to_chat(user, span_notice("You reconfigure [src] into prying mode."))
if(TOOL_WIRECUTTER)
desc = initial(desc) + " It's currently in cutting mode."
icon_state = "altevian-wirecutter"
usesound = 'sound/items/wirecutter.ogg'
tool_qualities = list(TOOL_WIRECUTTER)
if(user)
playsound(src,'sound/items/ratchet.ogg',50,1)
to_chat(user, span_notice("You reconfigure [src] into cutting mode."))
if(TOOL_SCREWDRIVER)
desc = initial(desc) + " It's currently in screwing mode."
icon_state = "altevian-screwdriver"
usesound = 'sound/items/screwdriver.ogg'
tool_qualities = list(TOOL_SCREWDRIVER)
if(user)
playsound(src,'sound/items/ratchet.ogg',50,1)
to_chat(user, span_notice("You reconfigure [src] into screwing mode."))
if(TOOL_MULTITOOL)
desc = initial(desc) + " It's currently in pulsing mode."
icon_state = "altevian-pulser"
usesound = 'sound/items/screwdriver.ogg'
tool_qualities = list(TOOL_MULTITOOL)
if(user)
playsound(src,'sound/items/ratchet.ogg',50,1)
to_chat(user, span_notice("You reconfigure [src] into pulsing mode."))
if(TOOL_WELDER)
desc = initial(desc) + " It's currently in welding mode."
icon_state = "altevian-welder-on"
welder.usesound = 'sound/items/Welder2.ogg'
usesound = 'sound/items/Welder2.ogg'
tool_qualities = list(TOOL_WELDER)
if(user)
playsound(src,'sound/items/ratchet.ogg',50,1)
to_chat(user, span_notice("You reconfigure [src] into welding mode."))
/obj/item/weldingtool/dummy/altevian
toolspeed = 0.25