diff --git a/code/game/objects/items/theft_tools.dm b/code/game/objects/items/theft_tools.dm index 3bb88046a2..26a4094ced 100644 --- a/code/game/objects/items/theft_tools.dm +++ b/code/game/objects/items/theft_tools.dm @@ -82,6 +82,7 @@ desc = "A screwdriver with an ultra thin tip." icon = 'icons/obj/nuke_tools.dmi' icon_state = "screwdriver_nuke" + item_state = "screwdriver_nuke" toolspeed = 0.5 /obj/item/weapon/paper/nuke_instructions diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 06a090cc53..2c190d6191 100755 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -127,7 +127,8 @@ name = "screwdriver" desc = "You can be totally screwy with this." icon = 'icons/obj/tools.dmi' - icon_state = null + icon_state = "screwdriver" + item_state = "screwdriver" flags = CONDUCT slot_flags = SLOT_BELT force = 5 @@ -141,21 +142,44 @@ usesound = 'sound/items/screwdriver.ogg' toolspeed = 1 armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 30) + var/random_color = TRUE //if the screwdriver uses random coloring + var/static/list/screwdriver_colors = list(\ + "blue" = rgb(24, 97, 213), \ + "red" = rgb(149, 23, 16), \ + "pink" = rgb(213, 24, 141), \ + "brown" = rgb(160, 82, 18), \ + "green" = rgb(14, 127, 27), \ + "cyan" = rgb(24, 162, 213), \ + "yellow" = rgb(213, 140, 24), \ + ) /obj/item/weapon/screwdriver/suicide_act(mob/user) user.visible_message("[user] is stabbing [src] into [user.p_their()] [pick("temple", "heart")]! It looks like [user.p_theyre()] trying to commit suicide!") return(BRUTELOSS) -/obj/item/weapon/screwdriver/New(loc, var/param_color = null) - ..() - if(!icon_state) - if(!param_color) - param_color = pick("red","blue","pink","brown","green","cyan","yellow") - icon_state = "screwdriver_[param_color]" +/obj/item/weapon/screwdriver/Initialize() + . = ..() + if(random_color) //random colors! + var/our_color = pick(screwdriver_colors) + add_atom_colour(screwdriver_colors[our_color], FIXED_COLOUR_PRIORITY) + update_icon() + if(prob(75)) + pixel_y = rand(0, 16) - if (prob(75)) - src.pixel_y = rand(0, 16) - return +/obj/item/weapon/screwdriver/update_icon() + if(!random_color) //icon override + return + cut_overlays() + var/mutable_appearance/base_overlay = mutable_appearance(icon, "screwdriver_screwybits") + base_overlay.appearance_flags = RESET_COLOR + add_overlay(base_overlay) + +/obj/item/weapon/screwdriver/worn_overlays(isinhands = FALSE, icon_file) + . = list() + if(isinhands && random_color) + var/mutable_appearance/M = mutable_appearance(icon_file, "screwdriver_head") + M.appearance_flags = RESET_COLOR + . += M /obj/item/weapon/screwdriver/attack(mob/living/carbon/M, mob/living/carbon/user) if(!istype(M)) @@ -171,15 +195,19 @@ desc = "A screwdriver made of brass. The handle feels freezing cold." resistance_flags = FIRE_PROOF | ACID_PROOF icon_state = "screwdriver_brass" + item_state = "screwdriver_brass" toolspeed = 0.5 + random_color = FALSE /obj/item/weapon/screwdriver/abductor name = "alien screwdriver" desc = "An ultrasonic screwdriver." icon = 'icons/obj/abductor.dmi' icon_state = "screwdriver" + item_state = "screwdriver_nuke" usesound = 'sound/items/pshoom.ogg' toolspeed = 0.1 + random_color = FALSE /obj/item/weapon/screwdriver/power name = "hand drill" @@ -197,6 +225,7 @@ hitsound = 'sound/items/drill_hit.ogg' usesound = 'sound/items/drill_use.ogg' toolspeed = 0.25 + random_color = FALSE /obj/item/weapon/screwdriver/power/suicide_act(mob/user) user.visible_message("[user] is putting [src] to [user.p_their()] temple. It looks like [user.p_theyre()] trying to commit suicide!") diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index f8e6270451..baea9a07a6 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -472,7 +472,7 @@ generate/load female uniform sprites matching all previously decided variables //Get the overlays for this item when it's being worn //eg: ammo counters, primed grenade flashes, etc. - var/list/worn_overlays = worn_overlays(isinhands) + var/list/worn_overlays = worn_overlays(isinhands, file2use) if(worn_overlays && worn_overlays.len) standing.overlays.Add(worn_overlays) diff --git a/code/modules/mob/living/carbon/update_icons.dm b/code/modules/mob/living/carbon/update_icons.dm index 762ebd56cc..46f9efad07 100644 --- a/code/modules/mob/living/carbon/update_icons.dm +++ b/code/modules/mob/living/carbon/update_icons.dm @@ -209,7 +209,8 @@ //Overlays for the worn overlay so you can overlay while you overlay //eg: ammo counters, primed grenade flashing, etc. -/obj/item/proc/worn_overlays(isinhands = FALSE) +//"icon_file" is used automatically for inhands etc. to make sure it gets the right inhand file +/obj/item/proc/worn_overlays(isinhands = FALSE, icon_file) . = list() diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi index d2b49b0511..5feb604e3f 100644 Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi index 9d8663cdd2..efd567f13a 100644 Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ diff --git a/icons/obj/tools.dmi b/icons/obj/tools.dmi index 3ab2087cd9..18a80c1a89 100644 Binary files a/icons/obj/tools.dmi and b/icons/obj/tools.dmi differ