[ready] adds unit test for missing inhand icons. fixes a bunch of missing inhand icons (#70037)

fix: Fixed a bunch of missing inhand icons.
fix: Fixed cables in electrical toolboxes not randomizing their colors.
fix: Fixed the wrong colored icon showing when trying to make cable cuffs out of cables.
fix: The collectable SWAT helmet is now using the proper icon again!
refactor: Pipecleaners and power cables now share a unified color system, so they're once again available in ALL the same colors.
imageadd: Updated the screwdriver belt overlay to represent the newer sprite.
imageadd: Added a bunch of new inhand icons. Special thanks to Twaticus for doing the helmets! <3
fix: Wirecutters now have an icon when inside a belt again!
admin: Added a new omnitool subtype that allows you to spawn all items in a typepath!
fix: Explorer gaskmasks now properly reflect their adjusted state when held.
fix: Fixed balaclavas having the wrong icon when pulled up.
fix: Fixed the base energy sword (admin spawn only) being invisible.
fix: The rainbow energy sword is now a little bit more rainbowy!
fix: Fixed an tk exploit with orange handcuffed shoes.
fix: The traitor outfit in the select equipment panel is now actually functional!
This commit is contained in:
ShizCalev
2022-10-04 10:20:24 -07:00
committed by GitHub
parent b01e009ced
commit 1a32f60cf4
265 changed files with 1620 additions and 965 deletions
+3
View File
@@ -224,6 +224,9 @@ GLOBAL_DATUM_INIT(welding_sparks, /mutable_appearance, mutable_appearance('icons
if(sharpness && force > 5) //give sharp objects butchering functionality, for consistency
AddComponent(/datum/component/butchering, speed = 8 SECONDS * toolspeed)
if(!greyscale_config && greyscale_colors && (greyscale_config_worn || greyscale_config_belt || greyscale_config_inhand_right || greyscale_config_inhand_left))
update_greyscale()
. = ..()
// Handle adding item associated actions
+5 -5
View File
@@ -205,7 +205,7 @@
return //If we've run out, display message and exit
else
last = null
loaded.color = GLOB.pipe_cleaner_colors[colors[current_color_index]]
loaded.color = GLOB.cable_colors[colors[current_color_index]]
loaded.update_appearance()
last = loaded.place_turf(get_turf(src), user, turn(user.dir, 180))
is_empty(user) //If we've run out, display message
@@ -225,7 +225,7 @@
for(var/obj/structure/pipe_cleaner/C in T)
if(!C)
continue
if(C.color != GLOB.pipe_cleaner_colors[colors[current_color_index]])
if(C.color != GLOB.cable_colors[colors[current_color_index]])
continue
if(C.d1 == 0)
return C
@@ -243,7 +243,7 @@
if(fromdir == dirnum) //pipe_cleaners can't loop back on themselves
pipe_cleanersuffix = "invalid"
var/image/img = image(icon = 'icons/hud/radial.dmi', icon_state = "cable_[pipe_cleanersuffix]")
img.color = GLOB.pipe_cleaner_colors[colors[current_color_index]]
img.color = GLOB.cable_colors[colors[current_color_index]]
wiredirs[icondir] = img
return wiredirs
@@ -278,7 +278,7 @@
if(!T.can_have_cabling())
return
loaded.color = GLOB.pipe_cleaner_colors[colors[current_color_index]]
loaded.color = GLOB.cable_colors[colors[current_color_index]]
loaded.update_appearance()
var/obj/structure/pipe_cleaner/linkingCable = findLinkingCable(user)
@@ -312,7 +312,7 @@
var/cwname = colors[current_color_index]
to_chat(user, "Color changed to [cwname]!")
if(loaded)
loaded.color = GLOB.pipe_cleaner_colors[colors[current_color_index]]
loaded.color = GLOB.cable_colors[colors[current_color_index]]
loaded.update_appearance()
if(wiring_gui_menu)
wiringGuiUpdate(user)
+1 -1
View File
@@ -5,7 +5,7 @@
humankind. The jewelry he kept for himself."
icon = 'icons/obj/candle.dmi'
icon_state = "candle1"
inhand_icon_state = "candle1"
inhand_icon_state = null
w_class = WEIGHT_CLASS_TINY
light_color = LIGHT_COLOR_FIRE
heat = 1000
+2
View File
@@ -4,6 +4,8 @@
icon = 'icons/obj/device.dmi'
icon_state = "gangtool-blue"
inhand_icon_state = "radio"
lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
var/uses = 1
/obj/item/choice_beacon/attack_self(mob/user)
+3
View File
@@ -128,6 +128,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
name = "cigarette"
desc = "A roll of tobacco and nicotine."
icon_state = "cigoff"
inhand_icon_state = "cigon" //gets overriden during intialize(), just have it for unit test sanity.
throw_speed = 0.5
w_class = WEIGHT_CLASS_TINY
body_parts_covered = null
@@ -529,6 +530,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
icon_state = "cigaroff"
icon_on = "cigaron"
icon_off = "cigaroff" //make sure to add positional sprites in icons/obj/cigarettes.dmi if you add more.
inhand_icon_state = "cigaron" //gets overriden during intialize(), just have it for unit test sanity.
inhand_icon_on = "cigaron"
inhand_icon_off = "cigaroff"
type_butt = /obj/item/cigbutt/cigarbutt
@@ -580,6 +582,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
icon_state = "pipeoff"
icon_on = "pipeon" //Note - these are in masks.dmi
icon_off = "pipeoff"
inhand_icon_state = null
inhand_icon_on = null
inhand_icon_off = null
smoketime = 0
+31
View File
@@ -30,6 +30,8 @@
icon = 'icons/obj/device.dmi'
icon_state = "hypertool"
inhand_icon_state = "hypertool"
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
toolspeed = 0.1
tool_behaviour = null
@@ -44,6 +46,7 @@
return FALSE
return TRUE
/obj/item/debug/omnitool/attack_self(mob/user)
if(!user)
return
@@ -119,4 +122,32 @@
else
RemoveElement(/datum/element/eyestab)
/obj/item/debug/omnitool/item_spawner/attack_self(mob/user)
if(!user || !user.client)
return
var/path = text2path(tgui_input_text(user, "Insert an item typepath to spawn", "ADMINS ONLY. FUCK AROUND AND FIND OUT."))
if(!path)
return
var/choice = tgui_alert(user, "Subtypes only?",, list("Yes", "No"))
if(!choice)
return
if(!user.client.holder)
if(!isliving(user))
return
var/mob/living/living_user = user
to_chat(user, span_warning("As you try to use [src], you hear strange tearing sounds, as if the coder gods were attempting to reach out and choke you themselves."))
playsound(src, 'sound/effects/dimensional_rend.ogg')
sleep(4 SECONDS)
var/confirmation = tgui_alert(user, "Are you certain you want to do that?", "Admins Only. Last Chance.", list("Yes", "No"))
if(!confirmation || confirmation == ("No"))
return
if(!user.client.holder) //safety if the admin readmined to save their ass lol.
to_chat(user, span_reallybig("You shouldn't have done that..."))
playsound(src, 'sound/voice/borg_deathsound.ogg')
sleep(3 SECONDS)
living_user.gib()
return
var/turf/loc_turf = get_turf(src)
for(var/spawn_atom in (choice == "No" ? typesof(path) : subtypesof(path)))
new spawn_atom(loc_turf)
+3 -3
View File
@@ -268,7 +268,7 @@
name = "compact defibrillator"
desc = "A belt-equipped defibrillator that can be rapidly deployed."
icon_state = "defibcompact"
inhand_icon_state = "defibcompact"
inhand_icon_state = null
worn_icon_state = "defibcompact"
w_class = WEIGHT_CLASS_NORMAL
slot_flags = ITEM_SLOT_BELT
@@ -291,7 +291,7 @@
name = "combat defibrillator"
desc = "A belt-equipped blood-red defibrillator. Can revive through thick clothing, has an experimental self-recharging battery, and can be utilized in combat via applying the paddles in a disarming or aggressive manner."
icon_state = "defibcombat" //needs defib inhand sprites
inhand_icon_state = "defibcombat"
inhand_icon_state = null
worn_icon_state = "defibcombat"
combat = TRUE
safety = FALSE
@@ -315,7 +315,7 @@
name = "elite Nanotrasen defibrillator"
desc = "A belt-equipped state-of-the-art defibrillator. Can revive through thick clothing, has an experimental self-recharging battery, and can be utilized in combat via applying the paddles in a disarming or aggressive manner."
icon_state = "defibnt" //needs defib inhand sprites
inhand_icon_state = "defibnt"
inhand_icon_state = null
worn_icon_state = "defibnt"
paddle_type = /obj/item/shockpaddles/syndicate/nanotrasen
paddle_state = "defibnt-paddles"
@@ -261,7 +261,7 @@
name = "banana lamp"
desc = "Only a clown would think to make a ghetto banana-shaped lamp. Even has a goofy pullstring."
icon_state = "bananalamp"
inhand_icon_state = "bananalamp"
inhand_icon_state = null
// FLARES
@@ -369,7 +369,7 @@
name = "suspicious lantern"
desc = "A suspicious looking lantern."
icon_state = "syndilantern"
inhand_icon_state = "syndilantern"
inhand_icon_state = null
light_range = 10
/obj/item/flashlight/lantern/jade
@@ -384,7 +384,7 @@
desc = "Extract from a yellow slime. It emits a strong light when squeezed."
icon = 'icons/obj/lighting.dmi'
icon_state = "slime"
inhand_icon_state = "slime"
inhand_icon_state = null
w_class = WEIGHT_CLASS_SMALL
slot_flags = ITEM_SLOT_BELT
custom_materials = null
@@ -457,7 +457,7 @@
color = LIGHT_COLOR_GREEN
icon_state = "glowstick"
base_icon_state = "glowstick"
inhand_icon_state = "glowstick"
inhand_icon_state = null
worn_icon_state = "lightstick"
grind_results = list(/datum/reagent/phenol = 15, /datum/reagent/hydrogen = 10, /datum/reagent/oxygen = 5) //Meth-in-a-stick
/// How many seconds of fuel we have left
+2
View File
@@ -6,6 +6,8 @@
icon_state = "gps-c"
inhand_icon_state = "electronic"
worn_icon_state = "electronic"
lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
w_class = WEIGHT_CLASS_SMALL
slot_flags = ITEM_SLOT_BELT
obj_flags = UNIQUE_RENAME
@@ -3,7 +3,7 @@
desc = "Used for coloring pipes, unsurprisingly."
icon = 'icons/obj/bureaucracy.dmi'
icon_state = "labeler1"
inhand_icon_state = "flight"
inhand_icon_state = null
item_flags = NOBLUDGEON
var/paint_color = "grey"
@@ -2,7 +2,9 @@
name = "pressure plate"
desc = "An electronic device that triggers when stepped on. Ctrl-Click to toggle the pressure plate off and on."
icon = 'icons/obj/puzzle_small.dmi'
inhand_icon_state = "flash"
inhand_icon_state = "flashtool"
lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi'
icon_state = "pressureplate"
layer = LOW_OBJ_LAYER
var/trigger_mob = TRUE
@@ -19,6 +19,8 @@ GLOBAL_LIST_INIT(channel_tokens, list(
desc = "An updated, modular intercom that fits over the head. Takes encryption keys."
icon_state = "headset"
inhand_icon_state = "headset"
lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
righthand_file = 'icons/mob/inhands/items_righthand.dmi'
worn_icon_state = "headset"
custom_materials = list(/datum/material/iron=75)
subspace_transmission = TRUE
@@ -115,7 +117,6 @@ GLOBAL_LIST_INIT(channel_tokens, list(
name = "syndicate headset"
desc = "A syndicate headset that can be used to hear all radio frequencies. Protects ears from flashbangs."
icon_state = "syndie_headset"
inhand_icon_state = "syndie_headset"
/obj/item/radio/headset/syndicate/alt/Initialize(mapload)
. = ..()
@@ -138,7 +139,6 @@ GLOBAL_LIST_INIT(channel_tokens, list(
name = "security bowman headset"
desc = "This is used by your elite security force. Protects ears from flashbangs."
icon_state = "sec_headset_alt"
inhand_icon_state = "sec_headset_alt"
/obj/item/radio/headset/headset_sec/alt/Initialize(mapload)
. = ..()
@@ -205,7 +205,6 @@ GLOBAL_LIST_INIT(channel_tokens, list(
name = "\proper the captain's bowman headset"
desc = "The headset of the boss. Protects ears from flashbangs."
icon_state = "com_headset_alt"
inhand_icon_state = "com_headset_alt"
/obj/item/radio/headset/heads/captain/alt/Initialize(mapload)
. = ..()
@@ -227,7 +226,6 @@ GLOBAL_LIST_INIT(channel_tokens, list(
name = "\proper the head of security's bowman headset"
desc = "The headset of the man in charge of keeping order and protecting the station. Protects ears from flashbangs."
icon_state = "com_headset_alt"
inhand_icon_state = "com_headset_alt"
/obj/item/radio/headset/heads/hos/alt/Initialize(mapload)
. = ..()
@@ -293,7 +291,6 @@ GLOBAL_LIST_INIT(channel_tokens, list(
name = "\improper CentCom bowman headset"
desc = "A headset especially for emergency response personnel. Protects ears from flashbangs."
icon_state = "cent_headset_alt"
inhand_icon_state = "cent_headset_alt"
keyslot = null
/obj/item/radio/headset/headset_cent/alt/Initialize(mapload)
@@ -4,7 +4,9 @@
icon = 'icons/obj/radio.dmi'
name = "station bounced radio"
icon_state = "walkietalkie"
inhand_icon_state = "walkietalkie"
inhand_icon_state = "radio"
lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
worn_icon_state = "radio"
desc = "A basic handheld radio that communicates with local telecommunication networks."
dog_fashion = /datum/dog_fashion/back
@@ -5,6 +5,8 @@
icon_state = "scanner"
inhand_icon_state = "electronic"
worn_icon_state = "electronic"
lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
w_class = WEIGHT_CLASS_SMALL
slot_flags = ITEM_SLOT_BELT
custom_price = PAYCHECK_CREW * 5
@@ -207,6 +207,8 @@ effective or pretty fucking useless.
icon = 'icons/obj/clothing/belts.dmi'
icon_state = "utility"
inhand_icon_state = "utility"
lefthand_file = 'icons/mob/inhands/equipment/belt_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/belt_righthand.dmi'
worn_icon_state = "utility"
slot_flags = ITEM_SLOT_BELT
attack_verb_continuous = list("whips", "lashes", "disciplines")
+20 -2
View File
@@ -3,6 +3,7 @@
desc = "A cheap single use autoinjector that injects the user with DNA."
icon = 'icons/obj/medical/syringe.dmi'
icon_state = "dnainjector"
inhand_icon_state = "dnainjector"
worn_icon_state = "pen"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
@@ -17,6 +18,24 @@
var/used = FALSE
/obj/item/dnainjector/Initialize(mapload)
. = ..()
AddElement(/datum/element/update_icon_updates_onmob)
if(used)
update_appearance()
/obj/item/dnainjector/vv_edit_var(vname, vval)
. = ..()
if(vname == NAMEOF(src, used))
update_appearance()
/obj/item/dnainjector/update_icon_state()
. = ..()
icon_state = inhand_icon_state = "[initial(icon_state)][used ? "0" : null]"
/obj/item/dnainjector/update_desc(updates)
. = ..()
desc = "[initial(desc)][used ? "This one is used up." : null]"
/obj/item/dnainjector/attack_paw(mob/user, list/modifiers)
return attack_hand(user, modifiers)
@@ -77,8 +96,7 @@
to_chat(user, span_notice("It appears that [target] does not have compatible DNA."))
used = TRUE
icon_state = "dnainjector0"
desc += " This one is used up."
update_appearance()
/obj/item/dnainjector/timed
var/duration = 600
+2 -1
View File
@@ -4,6 +4,7 @@
/obj/item/dualsaber
icon = 'icons/obj/weapons/transforming_energy.dmi'
icon_state = "dualsaber0"
inhand_icon_state = "dualsaber0"
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
name = "double-bladed energy sword"
@@ -71,7 +72,7 @@
return HAS_TRAIT(src, TRAIT_WIELDED) && sharpness
/obj/item/dualsaber/update_icon_state()
icon_state = HAS_TRAIT(src, TRAIT_WIELDED) ? "dualsaber[saber_color][HAS_TRAIT(src, TRAIT_WIELDED)]" : "dualsaber0"
icon_state = inhand_icon_state = HAS_TRAIT(src, TRAIT_WIELDED) ? "dualsaber[saber_color][HAS_TRAIT(src, TRAIT_WIELDED)]" : "dualsaber0"
return ..()
/obj/item/dualsaber/suicide_act(mob/living/carbon/user)
+2 -2
View File
@@ -249,7 +249,7 @@
desc = "Bon appetit!"
icon = 'icons/obj/food/burgerbread.dmi'
icon_state = "baguette"
inhand_icon_state = "baguette"
inhand_icon_state = null
worn_icon_state = "baguette"
food_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 3)
bite_consumption = 3
@@ -332,7 +332,7 @@
desc = "Alas, it is limited."
icon = 'icons/obj/food/burgerbread.dmi'
icon_state = "garlicbread"
inhand_icon_state = "garlicbread"
inhand_icon_state = null
food_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 6, /datum/reagent/consumable/garlic = 2)
bite_consumption = 3
tastes = list("bread" = 1, "garlic" = 1, "butter" = 1)
+2 -2
View File
@@ -367,7 +367,7 @@
desc = "A delicious lollipop. Makes for a great Valentine's present."
icon = 'icons/obj/food/lollipop.dmi'
icon_state = "lollipop_stick"
inhand_icon_state = "lollipop_stick"
inhand_icon_state = null
food_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1, /datum/reagent/iron = 10, /datum/reagent/consumable/sugar = 5, /datum/reagent/medicine/omnizine = 2) //Honk
tastes = list("candy" = 1)
foodtypes = JUNKFOOD | SUGAR
@@ -402,7 +402,7 @@
name = "bubblegum"
desc = "A rubbery strip of gum. Not exactly filling, but it keeps you busy."
icon_state = "bubblegum"
inhand_icon_state = "bubblegum"
inhand_icon_state = null
color = "#E48AB5" // craftable custom gums someday?
food_reagents = list(/datum/reagent/consumable/sugar = 5)
tastes = list("candy" = 1)
+1 -4
View File
@@ -4,7 +4,7 @@
name = "pancake"
desc = "A fluffy pancake. The softer, superior relative of the waffle."
icon_state = "pancakes_1"
inhand_icon_state = "pancakes"
inhand_icon_state = null
food_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 2)
tastes = list("pancakes" = 1)
foodtypes = GRAIN | SUGAR | BREAKFAST
@@ -16,7 +16,6 @@
name = "goopy pancake"
desc = "A barely cooked mess that some may mistake for a pancake. It longs for the griddle."
icon_state = "rawpancakes_1"
inhand_icon_state = "rawpancakes"
food_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1)
tastes = list("milky batter" = 1)
burns_on_grill = FALSE
@@ -56,7 +55,6 @@
name = "blueberry pancake"
desc = "A fluffy and delicious blueberry pancake."
icon_state = "bbpancakes_1"
inhand_icon_state = "bbpancakes"
food_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 5)
tastes = list("pancakes" = 1, "blueberries" = 1)
@@ -64,7 +62,6 @@
name = "chocolate chip pancake"
desc = "A fluffy and delicious chocolate chip pancake."
icon_state = "ccpancakes_1"
inhand_icon_state = "ccpancakes"
food_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 5)
tastes = list("pancakes" = 1, "chocolate" = 1)
+1
View File
@@ -1,6 +1,7 @@
/obj/item/food/pie
icon = 'icons/obj/food/piecake.dmi'
bite_consumption = 3
w_class = WEIGHT_CLASS_NORMAL
max_volume = 80
@@ -54,7 +54,7 @@
name = "C.L.U.W.N.E."
desc = "A sleek device often given to clowns on their 10th birthdays for protection. You can hear faint scratching coming from within."
icon_state = "clown_ball"
inhand_icon_state = "clown_ball"
inhand_icon_state = null
spawner_type = list(/mob/living/simple_animal/hostile/retaliate/clown/fleshclown, /mob/living/simple_animal/hostile/retaliate/clown/clownhulk, /mob/living/simple_animal/hostile/retaliate/clown/longface, /mob/living/simple_animal/hostile/retaliate/clown/clownhulk/chlown, /mob/living/simple_animal/hostile/retaliate/clown/clownhulk/honcmunculus, /mob/living/simple_animal/hostile/retaliate/clown/mutant/glutton, /mob/living/simple_animal/hostile/retaliate/clown/banana, /mob/living/simple_animal/hostile/retaliate/clown/honkling, /mob/living/simple_animal/hostile/retaliate/clown/lube)
deliveryamt = 1
@@ -62,6 +62,6 @@
name = "stuffed C.L.U.W.N.E."
desc = "A sleek device often given to clowns on their 10th birthdays for protection. While a typical C.L.U.W.N.E only holds one creature, sometimes foolish young clowns try to cram more in, often to disasterous effect."
icon_state = "clown_broken"
inhand_icon_state = "clown_broken"
inhand_icon_state = null
spawner_type = /mob/living/simple_animal/hostile/retaliate/clown/mutant
deliveryamt = 5
+58 -14
View File
@@ -29,6 +29,7 @@
gender = PLURAL
icon_state = "handcuff"
worn_icon_state = "handcuff"
inhand_icon_state = "handcuff"
lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi'
flags_1 = CONDUCT_1
@@ -137,15 +138,17 @@
name = "cable restraints"
desc = "Looks like some cables tied together. Could be used to tie something up."
icon_state = "cuff"
inhand_icon_state = "coil"
color = "#ff0000"
inhand_icon_state = "coil_red"
color = CABLE_HEX_COLOR_RED
///for generating the correct icons based off the original cable's color.
var/cable_color = CABLE_COLOR_RED
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
custom_materials = list(/datum/material/iron=150, /datum/material/glass=75)
breakouttime = 30 SECONDS
cuffsound = 'sound/weapons/cablecuff.ogg'
/obj/item/restraints/handcuffs/cable/Initialize(mapload)
/obj/item/restraints/handcuffs/cable/Initialize(mapload, new_color)
. = ..()
var/static/list/hovering_item_typechecks = list(
@@ -159,6 +162,29 @@
)
AddElement(/datum/element/contextual_screentip_item_typechecks, hovering_item_typechecks)
AddElement(/datum/element/update_icon_updates_onmob, (slot_flags|ITEM_SLOT_HANDCUFFED))
if(new_color)
set_cable_color(new_color)
/obj/item/restraints/handcuffs/cable/proc/set_cable_color(new_color)
color = GLOB.cable_colors[new_color]
cable_color = new_color
update_appearance(UPDATE_ICON)
/obj/item/restraints/handcuffs/cable/vv_edit_var(vname, vval)
if(vname == NAMEOF(src, cable_color))
set_cable_color(vval)
datum_flags |= DF_VAR_EDITED
return TRUE
return ..()
/obj/item/restraints/handcuffs/cable/update_icon_state()
. = ..()
if(cable_color)
var/new_inhand_icon = "coil_[cable_color]"
if(new_inhand_icon != inhand_icon_state)
inhand_icon_state = new_inhand_icon //small memory optimization.
/**
* # Sinew restraints
@@ -171,7 +197,8 @@
name = "sinew restraints"
desc = "A pair of restraints fashioned from long strands of flesh."
icon_state = "sinewcuff"
inhand_icon_state = "sinewcuff"
inhand_icon_state = null
cable_color = null
custom_materials = null
color = null
@@ -179,49 +206,65 @@
* Red cable restraints
*/
/obj/item/restraints/handcuffs/cable/red
color = "#ff0000"
color = CABLE_HEX_COLOR_RED
cable_color = CABLE_COLOR_RED
inhand_icon_state = "coil_red"
/**
* Yellow cable restraints
*/
/obj/item/restraints/handcuffs/cable/yellow
color = "#ffff00"
color = CABLE_HEX_COLOR_YELLOW
cable_color = CABLE_COLOR_YELLOW
inhand_icon_state = "coil_yellow"
/**
* Blue cable restraints
*/
/obj/item/restraints/handcuffs/cable/blue
color = "#1919c8"
color =CABLE_HEX_COLOR_BLUE
cable_color = CABLE_COLOR_BLUE
inhand_icon_state = "coil_blue"
/**
* Green cable restraints
*/
/obj/item/restraints/handcuffs/cable/green
color = "#00aa00"
color = CABLE_HEX_COLOR_GREEN
cable_color = CABLE_COLOR_GREEN
inhand_icon_state = "coil_green"
/**
* Pink cable restraints
*/
/obj/item/restraints/handcuffs/cable/pink
color = "#ff3ccd"
color = CABLE_HEX_COLOR_PINK
cable_color = CABLE_COLOR_PINK
inhand_icon_state = "coil_pink"
/**
* Orange (the color) cable restraints
*/
/obj/item/restraints/handcuffs/cable/orange
color = "#ff8000"
color = CABLE_HEX_COLOR_ORANGE
cable_color = CABLE_COLOR_ORANGE
inhand_icon_state = "coil_orange"
/**
* Cyan cable restraints
*/
/obj/item/restraints/handcuffs/cable/cyan
color = "#00ffff"
color = CABLE_HEX_COLOR_CYAN
cable_color = CABLE_COLOR_CYAN
inhand_icon_state = "coil_cyan"
/**
* White cable restraints
*/
/obj/item/restraints/handcuffs/cable/white
color = null
color = CABLE_HEX_COLOR_WHITE
cable_color = CABLE_COLOR_WHITE
inhand_icon_state = "coil_white"
/obj/item/restraints/handcuffs/cable/attackby(obj/item/I, mob/user, params) //Slapcrafting
if(istype(I, /obj/item/stack/rods))
@@ -262,12 +305,14 @@
name = "zipties"
desc = "Plastic, disposable zipties that can be used to restrain temporarily but are destroyed after use."
icon_state = "cuff"
inhand_icon_state = "cuff_white"
lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi'
custom_materials = null
breakouttime = 45 SECONDS
trashtype = /obj/item/restraints/handcuffs/cable/zipties/used
color = null
cable_color = null
/**
* # Used zipties
@@ -277,7 +322,6 @@
/obj/item/restraints/handcuffs/cable/zipties/used
desc = "A pair of broken zipties."
icon_state = "cuff_used"
inhand_icon_state = "cuff"
/obj/item/restraints/handcuffs/cable/zipties/used/attack()
return
@@ -295,7 +339,6 @@
/obj/item/restraints/handcuffs/cable/zipties/fake/used
desc = "A pair of broken fake zipties."
icon_state = "cuff_used"
inhand_icon_state = "cuff"
/**
* # Generic leg cuffs
@@ -307,6 +350,7 @@
desc = "Use this to keep prisoners in line."
gender = PLURAL
icon_state = "handcuff"
inhand_icon_state = "handcuff"
lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi'
flags_1 = CONDUCT_1
+5 -1
View File
@@ -363,7 +363,9 @@
desc = "Used for absolutely hilarious sacrifices."
icon = 'icons/obj/wizard.dmi'
icon_state = "clownrender"
inhand_icon_state = "render"
inhand_icon_state = "cultdagger"
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
worn_icon_state = "render"
hitsound = 'sound/items/bikehorn.ogg'
sharpness = SHARP_EDGED
@@ -423,6 +425,8 @@
inhand_icon_state = "fedora"
slot_flags = ITEM_SLOT_HEAD
icon = 'icons/obj/clothing/hats.dmi'
lefthand_file = 'icons/mob/inhands/clothing/hats_lefthand.dmi'
righthand_file = 'icons/mob/inhands/clothing/hats_righthand.dmi'
force = 0
throw_speed = 4
throw_range = 7
+2
View File
@@ -10,6 +10,8 @@
icon_state = "inspector"
worn_icon_state = "salestagger"
inhand_icon_state = "electronic"
lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
throwforce = 0
w_class = WEIGHT_CLASS_TINY
throw_range = 1
+2
View File
@@ -103,6 +103,7 @@
desc = "Used to knock out the Bartender."
icon_state = "rolling_pin"
worn_icon_state = "rolling_pin"
inhand_icon_state = "rolling_pin"
force = 8
throwforce = 5
throw_speed = 3
@@ -118,6 +119,7 @@
name = "metal rolling pin"
desc = "A heavy metallic rolling pin used to bash in those annoying ingredients."
icon_state = "metal_rolling_pin"
inhand_icon_state = "metal_rolling_pin"
force = 12
flags_1 = CONDUCT_1
custom_materials = list(/datum/material/iron = MINERAL_MATERIAL_AMOUNT * 1.5, /datum/material/plastic = MINERAL_MATERIAL_AMOUNT * 1.5)
+8 -2
View File
@@ -2,7 +2,9 @@
name = "latex glove"
desc = "Sterile and airtight."
icon_state = "latexballon"
inhand_icon_state = "lgloves"
inhand_icon_state = "greyscale_gloves"
lefthand_file = 'icons/mob/inhands/clothing/gloves_righthand.dmi'
righthand_file = 'icons/mob/inhands/clothing/gloves_lefthand.dmi'
force = 0
throwforce = 0
w_class = WEIGHT_CLASS_TINY
@@ -19,6 +21,8 @@
if (icon_state == "latexballon_bursted")
return
icon_state = "latexballon_blow"
lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
righthand_file = 'icons/mob/inhands/items_righthand.dmi'
inhand_icon_state = "latexballon"
user.update_held_items()
to_chat(user, span_notice("You blow up [src] with [tank]."))
@@ -35,7 +39,9 @@
return
playsound(src, 'sound/weapons/gun/pistol/shot.ogg', 100, TRUE)
icon_state = "latexballon_bursted"
inhand_icon_state = "lgloves"
inhand_icon_state = initial(inhand_icon_state)
lefthand_file = initial(lefthand_file)
righthand_file = initial(righthand_file)
if(isliving(loc))
var/mob/living/user = src.loc
user.update_held_items()
+27 -7
View File
@@ -100,6 +100,10 @@
if(active)
if(sword_color_icon)
icon_state = "[icon_state]_[sword_color_icon]"
inhand_icon_state = "[inhand_icon_state]_[sword_color_icon]"
if(ismob(loc))
var/mob/loc_mob = loc
loc_mob.update_held_items()
if(embedding)
updateEmbedding()
heat = active_heat
@@ -111,7 +115,8 @@
STOP_PROCESSING(SSobj, src)
tool_behaviour = (active ? TOOL_SAW : NONE) //Lets energy weapons cut trees. Also lets them do bonecutting surgery, which is kinda metal!
balloon_alert(user, "[name] [active ? "enabled":"disabled"]")
if(user)
balloon_alert(user, "[name] [active ? "enabled":"disabled"]")
playsound(user ? user : src, active ? 'sound/weapons/saberon.ogg' : 'sound/weapons/saberoff.ogg', 35, TRUE)
set_light_on(active)
return COMPONENT_NO_DEFAULT_MESSAGE
@@ -121,6 +126,7 @@
name = "energy axe"
desc = "An energized battle axe."
icon_state = "axe"
inhand_icon_state = "axe"
lefthand_file = 'icons/mob/inhands/weapons/axes_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/axes_righthand.dmi'
hitsound = 'sound/weapons/bladeslice.ogg'
@@ -158,6 +164,7 @@
name = "energy sword"
desc = "May the force be within you."
icon_state = "e_sword"
inhand_icon_state = "e_sword"
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
hitsound = SFX_SWING_HIT
@@ -219,7 +226,7 @@
// The colored energy swords we all know and love.
/obj/item/melee/energy/sword/saber
/// Assoc list of all possible saber colors to color define.
var/list/possible_colors = list(
var/list/possible_sword_colors = list(
"red" = COLOR_SOFT_RED,
"blue" = LIGHT_COLOR_LIGHT_CYAN,
"green" = LIGHT_COLOR_GREEN,
@@ -227,19 +234,30 @@
)
/// Whether this saber has been multitooled.
var/hacked = FALSE
var/hacked_color
/obj/item/melee/energy/sword/saber/Initialize(mapload)
. = ..()
if(!sword_color_icon && LAZYLEN(possible_colors))
sword_color_icon = pick(possible_colors)
if(!sword_color_icon && LAZYLEN(possible_sword_colors))
sword_color_icon = pick(possible_sword_colors)
if(sword_color_icon)
set_light_color(possible_colors[sword_color_icon])
set_light_color(possible_sword_colors[sword_color_icon])
/obj/item/melee/energy/sword/saber/process()
. = ..()
if(hacked)
set_light_color(possible_colors[pick(possible_colors)])
if(blade_active && hacked)
if(!LAZYLEN(possible_sword_colors))
possible_sword_colors = list(
"red" = COLOR_SOFT_RED,
"blue" = LIGHT_COLOR_LIGHT_CYAN,
"green" = LIGHT_COLOR_GREEN,
"purple" = LIGHT_COLOR_LAVENDER,
)
possible_sword_colors -= hacked_color
hacked_color = pick(possible_sword_colors)
set_light_color(possible_sword_colors[hacked_color])
possible_sword_colors -= hacked_color
/obj/item/melee/energy/sword/saber/red
sword_color_icon = "red"
@@ -262,12 +280,14 @@
to_chat(user, span_warning("RNBW_ENGAGE"))
if(force >= active_force)
icon_state = "[initial(icon_state)]_on_rainbow"
inhand_icon_state = "[initial(inhand_icon_state)]_on_rainbow"
user.update_held_items()
/obj/item/melee/energy/sword/pirate
name = "energy cutlass"
desc = "Arrrr matey."
icon_state = "e_cutlass"
inhand_icon_state = "e_cutlass"
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
light_color = COLOR_RED
+1 -1
View File
@@ -3,6 +3,7 @@
name = "mop"
icon = 'icons/obj/janitor.dmi'
icon_state = "mop"
inhand_icon_state = "mop"
lefthand_file = 'icons/mob/inhands/equipment/custodial_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi'
force = 8
@@ -72,7 +73,6 @@
name = "advanced mop"
max_reagent_volume = 10
icon_state = "advmop"
inhand_icon_state = "mop"
lefthand_file = 'icons/mob/inhands/equipment/custodial_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi'
force = 12
+12 -13
View File
@@ -533,7 +533,7 @@
name = "space lizard plushie"
desc = "An adorable stuffed toy that resembles a very determined spacefaring lizardperson. To infinity and beyond, little guy."
icon_state = "plushie_spacelizard"
inhand_icon_state = "plushie_spacelizard"
inhand_icon_state = null
// space lizards can't hit people with their tail, it's stuck in their suit
attack_verb_continuous = list("claws", "hisses", "bops")
attack_verb_simple = list("claw", "hiss", "bops")
@@ -543,7 +543,7 @@
name = "snake plushie"
desc = "An adorable stuffed toy that resembles a snake. Not to be mistaken for the real thing."
icon_state = "plushie_snake"
inhand_icon_state = "plushie_snake"
inhand_icon_state = null
attack_verb_continuous = list("bites", "hisses", "tail slaps")
attack_verb_simple = list("bite", "hiss", "tail slap")
squeak_override = list('sound/weapons/bite.ogg' = 1)
@@ -552,7 +552,7 @@
name = "operative plushie"
desc = "A stuffed toy that resembles a syndicate nuclear operative. The tag claims operatives to be purely fictitious."
icon_state = "plushie_nuke"
inhand_icon_state = "plushie_nuke"
inhand_icon_state = null
attack_verb_continuous = list("shoots", "nukes", "detonates")
attack_verb_simple = list("shoot", "nuke", "detonate")
squeak_override = list('sound/effects/hit_punch.ogg' = 1)
@@ -561,7 +561,7 @@
name = "plasmaman plushie"
desc = "A stuffed toy that resembles your purple coworkers. Mmm, yeah, in true plasmaman fashion, it's not cute at all despite the designer's best efforts."
icon_state = "plushie_pman"
inhand_icon_state = "plushie_pman"
inhand_icon_state = null
attack_verb_continuous = list("burns", "space beasts", "fwooshes")
attack_verb_simple = list("burn", "space beast", "fwoosh")
squeak_override = list('sound/effects/extinguish.ogg' = 1)
@@ -570,7 +570,7 @@
name = "slime plushie"
desc = "An adorable stuffed toy that resembles a slime. It is practically just a hacky sack."
icon_state = "plushie_slime"
inhand_icon_state = "plushie_slime"
inhand_icon_state = null
attack_verb_continuous = list("blorbles", "slimes", "absorbs")
attack_verb_simple = list("blorble", "slime", "absorb")
squeak_override = list('sound/effects/blobattack.ogg' = 1)
@@ -580,7 +580,7 @@
name = "awakened plushie"
desc = "An ancient plushie that has grown enlightened to the true nature of reality."
icon_state = "plushie_awake"
inhand_icon_state = "plushie_awake"
inhand_icon_state = null
/obj/item/toy/plush/awakenedplushie/Initialize(mapload)
. = ..()
@@ -590,7 +590,7 @@
name = "bee plushie"
desc = "A cute toy that resembles an even cuter bee."
icon_state = "plushie_h"
inhand_icon_state = "plushie_h"
inhand_icon_state = null
attack_verb_continuous = list("stings")
attack_verb_simple = list("sting")
gender = FEMALE
@@ -658,7 +658,7 @@
name = "moth plushie"
desc = "A plushie depicting an adorable mothperson. It's a huggable bug!"
icon_state = "moffplush"
inhand_icon_state = "moffplush"
inhand_icon_state = null
attack_verb_continuous = list("flutters", "flaps")
attack_verb_simple = list("flutter", "flap")
squeak_override = list('sound/voice/moth/scream_moth.ogg'=1)
@@ -686,7 +686,6 @@
name = "peacekeeper plushie"
desc = "A plushie depicting a peacekeeper cyborg. Only you can prevent human harm!"
icon_state = "pkplush"
inhand_icon_state = "pkplush"
attack_verb_continuous = list("hugs", "squeezes")
attack_verb_simple = list("hug", "squeeze")
squeak_override = list('sound/weapons/thudswoosh.ogg'=1)
@@ -695,7 +694,7 @@
name = "runner plushie"
desc = "A plushie depicting a xenomorph runner, made to commemorate the centenary of the Battle of LV-426. Much cuddlier than the real thing."
icon_state = "rouny"
inhand_icon_state = "rouny"
inhand_icon_state = null
attack_verb_continuous = list("slashes", "bites", "charges")
attack_verb_simple = list("slash", "bite", "charge")
squeak_override = list('sound/items/intents/Help.ogg' = 1)
@@ -704,7 +703,7 @@
name = "abductor plushie"
desc = "A plushie depicting an alien abductor. The tag on it is in an indecipherable language."
icon_state = "abductor"
inhand_icon_state = "abductor"
inhand_icon_state = null
attack_verb_continuous = list("abducts", "probes")
attack_verb_continuous = list("abduct", "probe")
squeak_override = list('sound/weather/ashstorm/inside/weak_end.ogg' = 1) //very faint sound since abductors are silent as far as "speaking" is concerned.
@@ -713,7 +712,7 @@
name = "abductor agent plushie"
desc = "A plushie depicting an alien abductor agent. The stun baton is attached to the hand of the plushie, and appears to be inert. I wouldn't stay alone with it."
icon_state = "abductor_agent"
inhand_icon_state = "abductor_agent"
inhand_icon_state = null
attack_verb_continuous = list("abducts", "probes", "stuns")
attack_verb_continuous = list("abduct", "probe", "stun")
squeak_override = list(
@@ -725,7 +724,7 @@
name = "cucumber greek"
desc = "A plushie depicting a large cucumber with eyes, it seems that according to the manufacturer of the toy, the human race will look like in the future."
icon_state = "cucumber"
inhand_icon_state = "cucumber"
inhand_icon_state = null
attack_verb_continuous = list("squishуы", "creakes", "crunches")
attack_verb_simple = list("squish", "creak", "crunch")
squeak_override = list(
+6
View File
@@ -272,30 +272,36 @@
name = "Crusader's Hood"
desc = "A brownish hood."
icon_state = "crusader"
inhand_icon_state = null
w_class = WEIGHT_CLASS_NORMAL
flags_inv = HIDEHAIR|HIDEEARS|HIDEFACE
armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 50, BOMB = 60, BIO = 0, FIRE = 60, ACID = 60)
/obj/item/clothing/head/helmet/plate/crusader/blue
icon_state = "crusader-blue"
inhand_icon_state = null
/obj/item/clothing/head/helmet/plate/crusader/red
icon_state = "crusader-red"
inhand_icon_state = null
//Prophet helmet
/obj/item/clothing/head/helmet/plate/crusader/prophet
name = "Prophet's Hat"
desc = "A religious-looking hat."
icon_state = null
inhand_icon_state = null
flags_1 = 0
armor = list(MELEE = 60, BULLET = 60, LASER = 60, ENERGY = 60, BOMB = 70, BIO = 50, FIRE = 60, ACID = 60) //religion protects you from disease, honk.
worn_y_offset = 6
/obj/item/clothing/head/helmet/plate/crusader/prophet/red
icon_state = "prophet-red"
inhand_icon_state = null
/obj/item/clothing/head/helmet/plate/crusader/prophet/blue
icon_state = "prophet-blue"
inhand_icon_state = null
//Structure conversion staff
/obj/item/godstaff
+1 -1
View File
@@ -66,7 +66,7 @@
name = "bluespace polycrystal"
icon = 'icons/obj/telescience.dmi'
icon_state = "polycrystal"
inhand_icon_state = "sheet-polycrystal"
inhand_icon_state = null
singular_name = "bluespace polycrystal"
desc = "A stable polycrystal, made of fused-together bluespace crystals. You could probably break one off."
mats_per_unit = list(/datum/material/bluespace=MINERAL_MATERIAL_AMOUNT)
@@ -368,6 +368,7 @@
icon = 'icons/obj/medical/surgery_tools.dmi'
icon_state = "bone-gel"
inhand_icon_state = "bone-gel"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
@@ -1,7 +1,7 @@
/obj/item/stack/sheet/hot_ice
name = "hot ice"
icon_state = "hot-ice"
inhand_icon_state = "hot-ice"
inhand_icon_state = null
singular_name = "hot ice piece"
icon = 'icons/obj/stack_objects.dmi'
mats_per_unit = list(/datum/material/hot_ice=MINERAL_MATERIAL_AMOUNT)
@@ -2,7 +2,7 @@
name = "hide"
desc = "Something went wrong."
icon_state = "sheet-hide"
inhand_icon_state = "sheet-hide"
inhand_icon_state = null
novariants = TRUE
merge_type = /obj/item/stack/sheet/animalhide
@@ -34,7 +34,7 @@ GLOBAL_LIST_INIT(human_recipes, list( \
desc = "The by-product of corgi farming."
singular_name = "corgi hide piece"
icon_state = "sheet-corgi"
inhand_icon_state = "sheet-corgi"
inhand_icon_state = null
merge_type = /obj/item/stack/sheet/animalhide/corgi
GLOBAL_LIST_INIT(gondola_recipes, list ( \
@@ -47,7 +47,7 @@ GLOBAL_LIST_INIT(gondola_recipes, list ( \
desc = "A thin layer of mothroach hide."
singular_name = "mothroach hide piece"
icon_state = "sheet-mothroach"
inhand_icon_state = "sheet-mothroach"
inhand_icon_state = null
merge_type = /obj/item/stack/sheet/animalhide/mothroach
/obj/item/stack/sheet/animalhide/gondola
@@ -55,7 +55,7 @@ GLOBAL_LIST_INIT(gondola_recipes, list ( \
desc = "The extremely valuable product of gondola hunting."
singular_name = "gondola hide piece"
icon_state = "sheet-gondola"
inhand_icon_state = "sheet-gondola"
inhand_icon_state = null
merge_type = /obj/item/stack/sheet/animalhide/gondola
/obj/item/stack/sheet/animalhide/gondola/get_main_recipes()
@@ -75,7 +75,7 @@ GLOBAL_LIST_INIT(corgi_recipes, list ( \
desc = "The by-product of cat farming."
singular_name = "cat hide piece"
icon_state = "sheet-cat"
inhand_icon_state = "sheet-cat"
inhand_icon_state = null
merge_type = /obj/item/stack/sheet/animalhide/cat
/obj/item/stack/sheet/animalhide/monkey
@@ -83,7 +83,7 @@ GLOBAL_LIST_INIT(corgi_recipes, list ( \
desc = "The by-product of monkey farming."
singular_name = "monkey hide piece"
icon_state = "sheet-monkey"
inhand_icon_state = "sheet-monkey"
inhand_icon_state = null
merge_type = /obj/item/stack/sheet/animalhide/monkey
GLOBAL_LIST_INIT(monkey_recipes, list ( \
@@ -100,7 +100,7 @@ GLOBAL_LIST_INIT(monkey_recipes, list ( \
desc = "Sssssss..."
singular_name = "lizard skin piece"
icon_state = "sheet-lizard"
inhand_icon_state = "sheet-lizard"
inhand_icon_state = null
merge_type = /obj/item/stack/sheet/animalhide/lizard
/obj/item/stack/sheet/animalhide/xeno
@@ -108,7 +108,7 @@ GLOBAL_LIST_INIT(monkey_recipes, list ( \
desc = "The skin of a terrible creature."
singular_name = "alien hide piece"
icon_state = "sheet-xeno"
inhand_icon_state = "sheet-xeno"
inhand_icon_state = null
merge_type = /obj/item/stack/sheet/animalhide/xeno
GLOBAL_LIST_INIT(xeno_recipes, list ( \
@@ -147,7 +147,7 @@ GLOBAL_LIST_INIT(xeno_recipes, list ( \
desc = "This hide was stripped of its hair, but still needs washing and tanning."
singular_name = "hairless hide piece"
icon_state = "sheet-hairlesshide"
inhand_icon_state = "sheet-hairlesshide"
inhand_icon_state = null
merge_type = /obj/item/stack/sheet/hairlesshide
/obj/item/stack/sheet/wethide
@@ -155,7 +155,7 @@ GLOBAL_LIST_INIT(xeno_recipes, list ( \
desc = "This hide has been cleaned but still needs to be dried."
singular_name = "wet hide piece"
icon_state = "sheet-wetleather"
inhand_icon_state = "sheet-wetleather"
inhand_icon_state = null
merge_type = /obj/item/stack/sheet/wethide
/// Reduced when exposed to high temperatures
var/wetness = 30
@@ -182,7 +182,7 @@ GLOBAL_LIST_INIT(xeno_recipes, list ( \
desc = "The by-product of mob grinding."
singular_name = "leather piece"
icon_state = "sheet-leather"
inhand_icon_state = "sheet-leather"
inhand_icon_state = null
merge_type = /obj/item/stack/sheet/leather
GLOBAL_LIST_INIT(leather_recipes, list ( \
@@ -307,7 +307,7 @@ GLOBAL_LIST_INIT(sinew_recipes, list ( \
desc = "The scaly skin of a space carp. It looks quite beatiful when detached from the foul creature who once wore it."
singular_name = "carp scale"
icon_state = "sheet-carp"
inhand_icon_state = "sheet-carp"
inhand_icon_state = null
merge_type = /obj/item/stack/sheet/animalhide/carp
GLOBAL_LIST_INIT(carp_recipes, list ( \
@@ -34,7 +34,7 @@ GLOBAL_LIST_INIT(sandstone_recipes, list ( \
desc = "This appears to be a combination of both sand and stone."
singular_name = "sandstone brick"
icon_state = "sheet-sandstone"
inhand_icon_state = "sheet-sandstone"
inhand_icon_state = null
throw_speed = 3
throw_range = 5
mats_per_unit = list(/datum/material/sandstone=MINERAL_MATERIAL_AMOUNT)
@@ -240,7 +240,7 @@ GLOBAL_LIST_INIT(silver_recipes, list ( \
/obj/item/stack/sheet/mineral/bananium
name = "bananium"
icon_state = "sheet-bananium"
inhand_icon_state = "sheet-bananium"
inhand_icon_state = null
singular_name = "bananium sheet"
sheettype = "bananium"
mats_per_unit = list(/datum/material/bananium=MINERAL_MATERIAL_AMOUNT)
@@ -331,7 +331,7 @@ GLOBAL_LIST_INIT(plastitanium_recipes, list ( \
/obj/item/stack/sheet/mineral/snow
name = "snow"
icon_state = "sheet-snow"
inhand_icon_state = "sheet-snow"
inhand_icon_state = null
mats_per_unit = list(/datum/material/snow = MINERAL_MATERIAL_AMOUNT)
singular_name = "snow block"
force = 1
@@ -475,7 +475,7 @@ GLOBAL_LIST_INIT(metalhydrogen_recipes, list(
/obj/item/stack/sheet/mineral/metal_hydrogen
name = "metal hydrogen"
icon_state = "sheet-metalhydrogen"
inhand_icon_state = "sheet-metalhydrogen"
inhand_icon_state = null
singular_name = "metal hydrogen sheet"
w_class = WEIGHT_CLASS_NORMAL
resistance_flags = FIRE_PROOF | LAVA_PROOF | ACID_PROOF | INDESTRUCTIBLE
@@ -434,7 +434,7 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \
desc = "Is it cotton? Linen? Denim? Burlap? Canvas? You can't tell."
singular_name = "cloth roll"
icon_state = "sheet-cloth"
inhand_icon_state = "sheet-cloth"
inhand_icon_state = null
resistance_flags = FLAMMABLE
force = 0
throwforce = 0
@@ -465,7 +465,7 @@ GLOBAL_LIST_INIT(durathread_recipes, list ( \
desc = "A fabric sown from incredibly durable threads, known for its usefulness in armor production."
singular_name = "durathread roll"
icon_state = "sheet-durathread"
inhand_icon_state = "sheet-cloth"
inhand_icon_state = null
resistance_flags = FLAMMABLE
force = 0
throwforce = 0
@@ -674,7 +674,7 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \
desc = "Rare kind of gems which are only gained by blood sacrifice to minor deities. They are needed in crafting powerful objects."
singular_name = "lesser gem"
icon_state = "sheet-lessergem"
inhand_icon_state = "sheet-lessergem"
inhand_icon_state = null
novariants = TRUE
merge_type = /obj/item/stack/sheet/lessergem
@@ -683,7 +683,7 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \
desc = "Rare kind of gems which are only gained by blood sacrifice to minor deities. They are needed in crafting powerful objects."
singular_name = "greater gem"
icon_state = "sheet-greatergem"
inhand_icon_state = "sheet-greatergem"
inhand_icon_state = null
novariants = TRUE
merge_type = /obj/item/stack/sheet/greatergem
@@ -694,7 +694,7 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \
name = "bones"
icon = 'icons/obj/stack_objects.dmi'
icon_state = "bone"
inhand_icon_state = "sheet-bone"
inhand_icon_state = null
mats_per_unit = list(/datum/material/bone = MINERAL_MATERIAL_AMOUNT)
singular_name = "bone"
desc = "Someone's been drinking their milk."
@@ -119,7 +119,7 @@
singular_name = "fairygrass floor tile"
desc = "A patch of odd, glowing blue grass."
icon_state = "tile_fairygrass"
inhand_icon_state = "tile-fairygrass"
inhand_icon_state = null
turf_type = /turf/open/floor/grass/fairy
resistance_flags = FLAMMABLE
merge_type = /obj/item/stack/tile/fairygrass
+1 -1
View File
@@ -671,7 +671,7 @@
name = "wings"
desc = "Granted to the henchmen who deserve it. This probably doesn't include you."
icon_state = "henchmen"
inhand_icon_state = "henchmen"
inhand_icon_state = null
/obj/item/storage/backpack/duffelbag/cops
name = "police bag"
+1 -1
View File
@@ -511,7 +511,7 @@
name = "harpoon quiver"
desc = "A quiver for holding harpoons."
icon_state = "quiver"
inhand_icon_state = "quiver"
inhand_icon_state = null
worn_icon_state = "harpoon_quiver"
/obj/item/storage/bag/harpoon_quiver/Initialize(mapload)
+4 -14
View File
@@ -475,7 +475,7 @@
name = "cummerbund"
desc = "A pleated sash that pairs well with a suit jacket."
icon_state = "cummerbund"
inhand_icon_state = "cummerbund"
inhand_icon_state = null
worn_icon_state = "cummerbund"
/obj/item/storage/belt/military
@@ -699,7 +699,7 @@
name = "fannypack"
desc = "A dorky fannypack for keeping small items in."
icon_state = "fannypack_leather"
inhand_icon_state = "fannypack_leather"
inhand_icon_state = null
worn_icon_state = "fannypack_leather"
dying_key = DYE_REGISTRY_FANNYPACK
custom_price = PAYCHECK_CREW * 2
@@ -712,68 +712,58 @@
/obj/item/storage/belt/fannypack/black
name = "black fannypack"
icon_state = "fannypack_black"
inhand_icon_state = "fannypack_black"
worn_icon_state = "fannypack_black"
/obj/item/storage/belt/fannypack/red
name = "red fannypack"
icon_state = "fannypack_red"
inhand_icon_state = "fannypack_red"
worn_icon_state = "fannypack_red"
/obj/item/storage/belt/fannypack/purple
name = "purple fannypack"
icon_state = "fannypack_purple"
inhand_icon_state = "fannypack_purple"
worn_icon_state = "fannypack_purple"
/obj/item/storage/belt/fannypack/blue
name = "blue fannypack"
icon_state = "fannypack_blue"
inhand_icon_state = "fannypack_blue"
worn_icon_state = "fannypack_blue"
/obj/item/storage/belt/fannypack/orange
name = "orange fannypack"
icon_state = "fannypack_orange"
inhand_icon_state = "fannypack_orange"
worn_icon_state = "fannypack_orange"
/obj/item/storage/belt/fannypack/white
name = "white fannypack"
icon_state = "fannypack_white"
inhand_icon_state = "fannypack_white"
worn_icon_state = "fannypack_white"
/obj/item/storage/belt/fannypack/green
name = "green fannypack"
icon_state = "fannypack_green"
inhand_icon_state = "fannypack_green"
worn_icon_state = "fannypack_green"
/obj/item/storage/belt/fannypack/pink
name = "pink fannypack"
icon_state = "fannypack_pink"
inhand_icon_state = "fannypack_pink"
worn_icon_state = "fannypack_pink"
/obj/item/storage/belt/fannypack/cyan
name = "cyan fannypack"
icon_state = "fannypack_cyan"
inhand_icon_state = "fannypack_cyan"
worn_icon_state = "fannypack_cyan"
/obj/item/storage/belt/fannypack/yellow
name = "yellow fannypack"
icon_state = "fannypack_yellow"
inhand_icon_state = "fannypack_yellow"
worn_icon_state = "fannypack_yellow"
/obj/item/storage/belt/sabre
name = "sabre sheath"
desc = "An ornate sheath designed to hold an officer's blade."
icon_state = "sheath"
inhand_icon_state = "sheath"
inhand_icon_state = null
worn_icon_state = "sheath"
w_class = WEIGHT_CLASS_BULKY
@@ -824,7 +814,7 @@
name = "botanical belt"
desc = "A belt used to hold most hydroponics supplies. Suprisingly, not green."
icon_state = "plantbelt"
inhand_icon_state = "plantbelt"
inhand_icon_state = "championbelt"
worn_icon_state = "plantbelt"
content_overlays = TRUE
@@ -50,7 +50,7 @@
name = "paper sack"
desc = "A sack neatly crafted out of paper."
icon_state = "paperbag_None"
inhand_icon_state = "paperbag_None"
inhand_icon_state = null
illustration = null
resistance_flags = FLAMMABLE
foldable = null
@@ -76,6 +76,8 @@
icon = 'icons/obj/cigarettes.dmi'
icon_state = "matchbox"
inhand_icon_state = "zippo"
lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
righthand_file = 'icons/mob/inhands/items_righthand.dmi'
worn_icon_state = "lighter"
w_class = WEIGHT_CLASS_TINY
slot_flags = ITEM_SLOT_BELT
+4 -4
View File
@@ -154,7 +154,7 @@
icon = 'icons/obj/candle.dmi'
icon_state = "candlebox5"
base_icon_state = "candlebox"
inhand_icon_state = "candlebox5"
inhand_icon_state = null
worn_icon_state = "cigpack"
throwforce = 2
slot_flags = ITEM_SLOT_BELT
@@ -480,11 +480,11 @@
SHOULD_CALL_PARENT(FALSE)
if(!contents.len)
icon_state = "[base_icon_state]_empty"
else
else
if(contents.len < 5)
icon_state = "[base_icon_state]_[contents.len]"
else
else
icon_state = base_icon_state
return
+2 -2
View File
@@ -4,8 +4,8 @@
icon = 'icons/obj/storage/storage.dmi'
icon_state = "canholder"
inhand_icon_state = "cola"
lefthand_file = 'icons/mob/inhands/items/food_lefthand.dmi'
righthand_file = 'icons/mob/inhands/items/food_righthand.dmi'
lefthand_file = 'icons/mob/inhands/items/drinks_lefthand.dmi'
righthand_file = 'icons/mob/inhands/items/drinks_righthand.dmi'
custom_materials = list(/datum/material/plastic = 1200)
max_integrity = 500
+9 -5
View File
@@ -146,17 +146,20 @@
material_flags = NONE
/obj/item/storage/toolbox/electrical/PopulateContents()
var/pickedcolor = pick("red","yellow","green","blue","pink","orange","cyan","white")
var/pickedcolor = pick(GLOB.cable_colors)
new /obj/item/screwdriver(src)
new /obj/item/wirecutters(src)
new /obj/item/t_scanner(src)
new /obj/item/crowbar(src)
new /obj/item/stack/cable_coil(src,MAXCOIL,pickedcolor)
new /obj/item/stack/cable_coil(src,MAXCOIL,pickedcolor)
var/obj/item/stack/cable_coil/new_cable_one = new(src, MAXCOIL)
new_cable_one.set_cable_color(pickedcolor)
var/obj/item/stack/cable_coil/new_cable_two = new(src, MAXCOIL)
new_cable_two.set_cable_color(pickedcolor)
if(prob(5))
new /obj/item/clothing/gloves/color/yellow(src)
else
new /obj/item/stack/cable_coil(src,MAXCOIL,pickedcolor)
var/obj/item/stack/cable_coil/new_cable_three = new(src, MAXCOIL)
new_cable_three.set_cable_color(pickedcolor)
/obj/item/storage/toolbox/syndicate
name = "suspicious looking toolbox"
@@ -206,7 +209,7 @@
/obj/item/storage/toolbox/artistic/Initialize(mapload)
. = ..()
atom_storage.max_total_storage = 20
atom_storage.max_slots = 10
atom_storage.max_slots = 11
/obj/item/storage/toolbox/artistic/PopulateContents()
new /obj/item/storage/crayons(src)
@@ -219,6 +222,7 @@
new /obj/item/stack/pipe_cleaner_coil/orange(src)
new /obj/item/stack/pipe_cleaner_coil/cyan(src)
new /obj/item/stack/pipe_cleaner_coil/white(src)
new /obj/item/stack/pipe_cleaner_coil/brown(src)
/obj/item/storage/toolbox/ammo
name = "ammo box"
+1 -1
View File
@@ -166,7 +166,7 @@
name = "jet harness (oxygen)"
desc = "A lightweight tactical harness, used by those who don't want to be weighed down by traditional jetpacks."
icon_state = "jetpack-mini"
inhand_icon_state = "jetpack-mini"
inhand_icon_state = "jetpack-black"
volume = 40
throw_range = 7
w_class = WEIGHT_CLASS_NORMAL
+1 -1
View File
@@ -161,7 +161,7 @@
name = "supermatter sliver"
desc = "A tiny, highly volatile sliver of a supermatter crystal. Do not handle without protection!"
icon_state = "supermatter_sliver"
inhand_icon_state = "supermattersliver"
inhand_icon_state = null //touching it dusts you, so no need for an inhand icon.
pulseicon = "supermatter_sliver_pulse"
layer = ABOVE_MOB_LAYER
plane = GAME_PLANE_UPPER
+2
View File
@@ -3,6 +3,7 @@
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'
icon_state = "crowbar"
inhand_icon_state = "crowbar"
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
usesound = 'sound/items/crowbar.ogg'
@@ -30,6 +31,7 @@
/obj/item/crowbar/red
icon_state = "crowbar_red"
inhand_icon_state = "crowbar_red"
force = 8
/obj/item/crowbar/abductor
@@ -9,6 +9,9 @@
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
greyscale_config = /datum/greyscale_config/wirecutters
greyscale_config_belt = /datum/greyscale_config/wirecutters_belt_overlay
greyscale_config_inhand_left = /datum/greyscale_config/wirecutter_inhand_left
greyscale_config_inhand_right = /datum/greyscale_config/wirecutter_inhand_right
flags_1 = CONDUCT_1
slot_flags = ITEM_SLOT_BELT
+3 -1
View File
@@ -3,6 +3,7 @@
desc = "A wrench with common uses. Can be found in your hand."
icon = 'icons/obj/tools.dmi'
icon_state = "wrench"
inhand_icon_state = "wrench"
worn_icon_state = "wrench"
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
@@ -32,7 +33,6 @@
name = "alien wrench"
desc = "A polarized wrench. It causes anything placed between the jaws to turn."
icon = 'icons/obj/abductor.dmi'
icon_state = "wrench"
belt_icon_state = "wrench_alien"
custom_materials = list(/datum/material/iron = 5000, /datum/material/silver = 2500, /datum/material/plasma = 1000, /datum/material/titanium = 2000, /datum/material/diamond = 2000)
usesound = 'sound/effects/empulse.ogg'
@@ -43,6 +43,7 @@
name = "medical wrench"
desc = "A medical wrench with common(medical?) uses. Can be found in your hand."
icon_state = "wrench_medical"
inhand_icon_state = "wrench_medical"
force = 2 //MEDICAL
throwforce = 4
attack_verb_continuous = list("heals", "medicals", "taps", "pokes", "analyzes") //"cobbyed"
@@ -85,6 +86,7 @@
name = "combat wrench"
desc = "It's like a normal wrench but edgier. Can be found on the battlefield."
icon_state = "wrench_combat"
inhand_icon_state = "wrench_combat"
belt_icon_state = "wrench_combat"
attack_verb_continuous = list("devastates", "brutalizes", "commits a war crime against", "obliterates", "humiliates")
attack_verb_simple = list("devastate", "brutalize", "commit a war crime against", "obliterate", "humiliate")
+4 -2
View File
@@ -223,11 +223,13 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
if(10)
user.visible_message(span_warning("[user]'s eyes light up with a vengeful fire!"), \
span_userdanger("YOU FEEL THE POWER OF VALHALLA FLOWING THROUGH YOU! <i>THERE CAN BE ONLY ONE!!!</i>"))
user.update_icons()
new_name = "GORE-DRENCHED CLAYMORE OF [pick("THE WHIMSICAL SLAUGHTER", "A THOUSAND SLAUGHTERED CATTLE", "GLORY AND VALHALLA", "ANNIHILATION", "OBLITERATION")]"
icon_state = "claymore_gold"
inhand_icon_state = "cultblade"
lefthand_file = 'icons/mob/inhands/64x64_lefthand.dmi'
righthand_file = 'icons/mob/inhands/64x64_righthand.dmi'
remove_atom_colour(ADMIN_COLOUR_PRIORITY)
user.update_held_items()
name = new_name
playsound(user, 'sound/items/screwdriver2.ogg', 50, TRUE)
@@ -342,7 +344,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
name = "throwing star"
desc = "An ancient weapon still used to this day, due to its ease of lodging itself into its victim's body parts."
icon_state = "throwingstar"
inhand_icon_state = "eshield0"
inhand_icon_state = "eshield"
lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi'
force = 2
@@ -841,6 +841,7 @@
desc = "Parts of a rack."
icon = 'icons/obj/weapons/items_and_weapons.dmi'
icon_state = "rack_parts"
inhand_icon_state = "rack_parts"
flags_1 = CONDUCT_1
custom_materials = list(/datum/material/iron=2000)
var/building = FALSE
@@ -248,6 +248,8 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/urinal, 32)
icon = 'icons/obj/watercloset.dmi'
icon_state = "rubberducky"
inhand_icon_state = "rubberducky"
lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
righthand_file = 'icons/mob/inhands/items_righthand.dmi'
worn_icon_state = "duck"
/obj/structure/sink