Files
Aurora.3/code/game/objects/items/weapons/improvised_components.dm
T
FluffyandGitHub a3a4d46fa7 Hitby refactor (#19624)
Refactored hitby to be in line with TG's version.
Refactored item weight defines to a more clear naming scheme, also in
line with TG's version.
Refactored how the movement bumps are handled, ported signals to handle
them, in preparation for the movement update.
Fixed disposal hit bouncing the hitting atom on the wall.
Items do not push other items anymore if they are tiny.
2024-07-28 20:52:08 +00:00

193 lines
6.9 KiB
Plaintext

/obj/item/material/butterflyconstruction
name = "unfinished concealed knife"
desc = "An unfinished concealed knife, it looks like the screws need to be tightened."
icon = 'icons/obj/weapons_build.dmi'
icon_state = "butterflystep1"
force_divisor = 0.1
thrown_force_divisor = 0.1
/obj/item/material/butterflyconstruction/attackby(obj/item/attacking_item, mob/user)
if(attacking_item.isscrewdriver())
to_chat(user, "You finish the concealed blade weapon.")
new /obj/item/material/knife/butterfly(user.loc, material.name)
qdel(src)
return
/obj/item/material/butterflyblade
name = "knife blade"
desc = "A knife blade. Unusable as a weapon without a grip."
icon = 'icons/obj/weapons_build.dmi'
icon_state = "butterfly2"
force_divisor = 0.1
thrown_force_divisor = 0.1
/obj/item/material/butterflyhandle
name = "concealed knife grip"
desc = "A plasteel grip with screw fittings for a blade."
icon = 'icons/obj/weapons_build.dmi'
icon_state = "butterfly1"
force_divisor = 0.1
thrown_force_divisor = 0.1
/obj/item/material/butterflyhandle/attackby(obj/item/attacking_item, mob/user)
if(istype(attacking_item, /obj/item/material/butterflyblade))
var/obj/item/material/butterflyblade/B = attacking_item
to_chat(user, "You attach the two concealed blade parts.")
var/finished = new /obj/item/material/butterflyconstruction(user.loc, B.material.name)
qdel(attacking_item)
qdel(src)
user.put_in_hands(finished)
return
/obj/item/material/wirerod
name = "wired rod"
desc = "A rod with some wire wrapped around the top. It'd be easy to attach something to the top bit."
icon_state = "wiredrod"
item_state = "rods"
obj_flags = OBJ_FLAG_CONDUCTABLE
force = 18
throwforce = 10
w_class = WEIGHT_CLASS_NORMAL
attack_verb = list("hit", "bludgeoned", "whacked", "bonked")
force_divisor = 0.1
thrown_force_divisor = 0.1
applies_material_colour = FALSE
var/forward_cable_color = COLOR_RED
/obj/item/material/wirerod/Initialize(mapload, var/material_key, var/cable_color)
. = ..()
if(!cable_color)
cable_color = COLOR_RED
forward_cable_color = cable_color
var/image/I = image(icon, null, "wiredrod_cable")
I.appearance_flags = RESET_COLOR
I.color = cable_color
AddOverlays(I)
/obj/item/material/wirerod/attackby(obj/item/attacking_item, mob/user)
..()
var/obj/item/finished
if(istype(attacking_item, /obj/item/material/shard) || istype(attacking_item, /obj/item/material/spearhead))
var/obj/item/material/tmp_shard = attacking_item
finished = new /obj/item/material/twohanded/spear(get_turf(user), tmp_shard.material.name)
to_chat(user, SPAN_NOTICE("You fasten \the [attacking_item] to the top of the rod with the cable."))
else if(attacking_item.iswirecutter())
finished = new /obj/item/melee/baton/cattleprod(get_turf(user), forward_cable_color)
to_chat(user, SPAN_NOTICE("You fasten the wirecutters to the top of the rod with the cable, prongs outward."))
else if(istype(attacking_item, /obj/item/material/wirerod))
finished = new /obj/item/trap/tripwire(get_turf(user), forward_cable_color)
to_chat(user, SPAN_NOTICE("You attach the two wired rods together, spooling the cable between them."))
if(finished)
user.drop_from_inventory(src,finished)
user.drop_from_inventory(attacking_item,finished)
//TODO: Possible better animation here.
qdel(attacking_item)
qdel(src)
user.put_in_hands(finished)
update_icon(user)
/obj/item/material/shaft
name = "shaft"
desc = "A large stick, you could probably attach something to it."
icon = 'icons/obj/weapons_build.dmi'
icon_state = "shaft"
item_state = "rods"
force = 11
throwforce = 3
w_class = WEIGHT_CLASS_BULKY
attack_verb = list("hit", "bludgeoned", "whacked", "bonked")
force_divisor = 0.1
thrown_force_divisor = 0.1
default_material = "wood"
/obj/item/material/shaft/attackby(obj/item/attacking_item, mob/user)
..()
var/obj/item/finished
if(istype(attacking_item, /obj/item/material/spearhead))
var/obj/item/material/spearhead/tip = attacking_item
finished = new /obj/item/material/twohanded/pike(get_turf(user), tip.material.name)
to_chat(user, SPAN_NOTICE("You attach \the [attacking_item] to the top of \the [src]."))
if(finished)
user.drop_from_inventory(src,finished)
user.drop_from_inventory(attacking_item,finished)
qdel(attacking_item)
qdel(src)
//TODO: Possible better animation here.
user.put_in_hands(finished)
update_icon(user)
/obj/item/material/spearhead
name = "spearhead"
desc = "A pointy spearhead, not really useful without a shaft."
icon = 'icons/obj/weapons_build.dmi'
icon_state = "spearhead"
force = 11
throwforce = 5
w_class = WEIGHT_CLASS_SMALL
attack_verb = list("attacked", "poked")
force_divisor = 0.1
thrown_force_divisor = 0.1
default_material = "steel"
/obj/item/material/woodenshield
name = "shield donut"
desc = "A wooden disc. Unusable as a shield without metal. Don't eat this."
icon = 'icons/obj/square_shield.dmi'
icon_state = "shield_fitting_inner"
force_divisor = 0.1
thrown_force_divisor = 0.1
default_material = "wood"
/obj/item/material/woodenshield/attackby(obj/item/attacking_item, mob/user)
..()
var/obj/item/finished
if(istype(attacking_item, /obj/item/material/shieldbits))
var/obj/item/material/woodenshield/donut = attacking_item
finished = new /obj/item/shield/buckler(get_turf(user), donut.material.name)
to_chat(user, SPAN_NOTICE("You attach \the [attacking_item] to \the [src]."))
if(finished)
user.drop_from_inventory(src)
user.drop_from_inventory(attacking_item)
qdel(attacking_item)
qdel(src)
user.put_in_hands(finished)
update_icon(user)
/obj/item/material/shieldbits
name = "shield fittings"
desc = "A metal ring and boss, fitting for a buckler."
icon = 'icons/obj/square_shield.dmi'
icon_state = "shield_fitting_outer"
force_divisor = 0.1
thrown_force_divisor = 0.1
default_material = "steel"
/obj/item/woodcirclet
name = "wood circlet"
desc = "A small wood circlet for making a flower crown."
icon = 'icons/obj/weapons_build.dmi'
icon_state = "woodcirclet"
item_state = "woodcirclet"
w_class = WEIGHT_CLASS_SMALL
/obj/item/woodcirclet/attackby(obj/item/attacking_item, mob/user)
var/obj/item/complete = null
if(istype(attacking_item, /obj/item/seeds)) // Only allow seeds, since we rely on their structure
var/obj/item/seeds/S = attacking_item
if(istype(S.seed, /datum/seed/flower/poppy))
complete = new /obj/item/clothing/head/poppy_crown(get_turf(user))
else if(istype(S.seed, /datum/seed/flower/sunflower))
complete = new /obj/item/clothing/head/sunflower_crown(get_turf(user))
else if(istype(S.seed, /datum/seed/flower)) // Note: might be a problem if more flowers are added
complete = new /obj/item/clothing/head/lavender_crown(get_turf(user))
if(complete != null)
to_chat(user, SPAN_NOTICE("You attach the " + S.seed.seed_name + " to the circlet and create a beautiful flower crown."))
user.drop_from_inventory(attacking_item)
user.drop_from_inventory(src)
qdel(attacking_item)
qdel(src)
user.put_in_hands(complete)
return