diff --git a/code/_onclick/hud/radial.dm b/code/_onclick/hud/radial.dm index 1ead41d513..929e01c6d9 100644 --- a/code/_onclick/hud/radial.dm +++ b/code/_onclick/hud/radial.dm @@ -318,4 +318,4 @@ GLOBAL_LIST_EMPTY(radial_menus) if(istype(custom_check)) if(!custom_check.Invoke()) return - return answer \ No newline at end of file + return answer diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index 484901990a..4777796331 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -4,7 +4,7 @@ /obj/item/defibrillator name = "defibrillator" desc = "A device that delivers powerful shocks to detachable paddles that resuscitate incapacitated patients." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/defibrillators.dmi' icon_state = "defibunit" item_state = "defibunit" lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' @@ -23,8 +23,8 @@ var/obj/item/stock_parts/cell/cell var/combat = FALSE //can we revive through space suits? var/grab_ghost = FALSE // Do we pull the ghost back into their body? - var/healdisk = FALSE // Will we shock people dragging the body? - var/pullshocksafely = FALSE //Dose the unit have the healdisk upgrade? + var/healdisk = FALSE // Does the unit have the healdisk upgrade? + var/pullshocksafely = FALSE // Will we shock people dragging the body? var/primetime = 0 // is the defib faster var/timedeath = 10 var/disarm_shock_time = 10 @@ -261,7 +261,7 @@ /obj/item/shockpaddles name = "defibrillator paddles" desc = "A pair of plastic-gripped paddles with flat metal surfaces that are used to deliver powerful electric shocks." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/defibrillators.dmi' icon_state = "defibpaddles0" item_state = "defibpaddles0" lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' @@ -682,7 +682,7 @@ /obj/item/shockpaddles/cyborg name = "cyborg defibrillator paddles" - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/defibrillators.dmi' icon_state = "defibpaddles0" item_state = "defibpaddles0" req_defib = FALSE @@ -703,7 +703,7 @@ name = "syndicate defibrillator paddles" desc = "A pair of paddles used to revive deceased operatives. It possesses both the ability to penetrate armor and to deliver powerful shocks offensively." combat = TRUE - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/defibrillators.dmi' icon_state = "defibpaddles0" item_state = "defibpaddles0" req_defib = FALSE diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm index 679491aeb6..8af4c67fa4 100644 --- a/code/game/objects/items/melee/energy.dm +++ b/code/game/objects/items/melee/energy.dm @@ -190,12 +190,53 @@ /obj/item/melee/transforming/energy/sword/saber possible_colors = list("red" = LIGHT_COLOR_RED, "blue" = LIGHT_COLOR_LIGHT_CYAN, "green" = LIGHT_COLOR_GREEN, "purple" = LIGHT_COLOR_LAVENDER) + unique_reskin = list("Sword" = "sword0", "Sabre" = "esabre0") var/hacked = FALSE + var/saber = FALSE -/obj/item/melee/transforming/energy/sword/saber/set_sword_color() - if(LAZYLEN(possible_colors)) +/obj/item/melee/transforming/energy/sword/saber/transform_weapon(mob/living/user, supress_message_text) + . = ..() + if(.) + if(active) + if(sword_color) + if(saber) + icon_state = "esabre[sword_color]" + else + icon_state = "sword[sword_color]" + START_PROCESSING(SSobj, src) + set_light(brightness_on) + else + STOP_PROCESSING(SSobj, src) + set_light(0) + +/obj/item/melee/transforming/energy/sword/saber/reskin_obj(mob/M) + . = ..() + if(icon_state == "sabre0") + saber = TRUE + if(active) + if(saber) + icon_state = "esabre[sword_color]" + else + icon_state = "sword[sword_color]" + +/obj/item/melee/transforming/energy/sword/saber/set_sword_color(var/color_forced) + if(color_forced) // wow i really do not like this at fucking all holy SHIT + if(color_forced == "red") + sword_color = "red" + light_color = LIGHT_COLOR_RED + else if(color_forced == "blue") + sword_color = "blue" + light_color = LIGHT_COLOR_LIGHT_CYAN + else if(color_forced == "green") + sword_color = "green" + light_color = LIGHT_COLOR_GREEN + else if(color_forced == "purple") + sword_color = "purple" + light_color = LIGHT_COLOR_LAVENDER + else if(LAZYLEN(possible_colors)) sword_color = pick(possible_colors) light_color = possible_colors[sword_color] + return /obj/item/melee/transforming/energy/sword/saber/process() . = ..() @@ -204,30 +245,59 @@ light_color = possible_colors[set_color] update_light() -/obj/item/melee/transforming/energy/sword/saber/red - possible_colors = list("red" = LIGHT_COLOR_RED) +/obj/item/melee/transforming/energy/sword/saber/red/Initialize(mapload) + . = ..() + set_sword_color("red") -/obj/item/melee/transforming/energy/sword/saber/blue - possible_colors = list("blue" = LIGHT_COLOR_LIGHT_CYAN) +/obj/item/melee/transforming/energy/sword/saber/blue/Initialize(mapload) + . = ..() + set_sword_color("blue") -/obj/item/melee/transforming/energy/sword/saber/green - possible_colors = list("green" = LIGHT_COLOR_GREEN) +/obj/item/melee/transforming/energy/sword/saber/green/Initialize(mapload) + . = ..() + set_sword_color("green") -/obj/item/melee/transforming/energy/sword/saber/purple - possible_colors = list("purple" = LIGHT_COLOR_LAVENDER) +/obj/item/melee/transforming/energy/sword/saber/purple/Initialize(mapload) + . = ..() + set_sword_color("purple") + +/obj/item/melee/transforming/energy/sword/saber/proc/select_sword_color(mob/user) /// this is for the radial + if(!istype(user) || user.incapacitated()) + return + + var/static/list/options = list( + "red" = image(icon = 'icons/obj/items_and_weapons.dmi', icon_state = "swordred-blade"), + "blue" = image(icon = 'icons/obj/items_and_weapons.dmi', icon_state = "swordblue-blade"), + "green" = image(icon = 'icons/obj/items_and_weapons.dmi', icon_state = "swordgreen-blade"), + "purple" = image(icon = 'icons/obj/items_and_weapons.dmi', icon_state = "swordpurple-blade") + ) + + var/choice = show_radial_menu(user, src, options, custom_check = FALSE, radius = 36, require_near = TRUE) + + if(src && choice && !user.incapacitated() && in_range(user,src)) + set_sword_color(choice) + to_chat(user, "[src] is now [choice].") /obj/item/melee/transforming/energy/sword/saber/attackby(obj/item/W, mob/living/user, params) if(istype(W, /obj/item/multitool)) + if(user.a_intent == INTENT_DISARM) + if(!active) + to_chat(user, "COLOR_SET") + hacked = FALSE + select_sword_color(user) + return + else + to_chat(user, "Turn it off first - getting that close to an active sword is not a great idea.") + return if(!hacked) hacked = TRUE sword_color = "rainbow" to_chat(user, "RNBW_ENGAGE") - if(active) icon_state = "swordrainbow" user.update_inv_hands() else - to_chat(user, "It's already fabulous!") + to_chat(user, "It's already fabulous! If you wanted to reset the color, though, try a disarming intent while it's off.") else return ..() diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index 11df38cfdd..5dd35788f1 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -355,7 +355,7 @@ /obj/item/clothing/mask/paper/Initialize(mapload) - .=..() + . = ..() papermask_designs = list( "Blank" = image(icon = src.icon, icon_state = "plainmask"), "Neutral" = image(icon = src.icon, icon_state = "neutralmask"), @@ -384,7 +384,7 @@ "Vertical" = "verticalmask", "Horizontal" = "horizontalmask", "X" ="xmask", "Bugeyes" = "bugmask", "Double" = "doublemask", "Mark" = "markmask") - var/choice = show_radial_menu(user,src, papermask_designs, custom_check = FALSE, radius = 36, require_near = TRUE) + var/choice = show_radial_menu(user, src, papermask_designs, custom_check = FALSE, radius = 36, require_near = TRUE) if(src && choice && !user.incapacitated() && in_range(user,src)) icon_state = options[choice] diff --git a/icons/obj/defibrillators.dmi b/icons/obj/defibrillators.dmi new file mode 100644 index 0000000000..f838f40030 Binary files /dev/null and b/icons/obj/defibrillators.dmi differ diff --git a/icons/obj/items_and_weapons.dmi b/icons/obj/items_and_weapons.dmi index c5aca2394f..b5e0081799 100644 Binary files a/icons/obj/items_and_weapons.dmi and b/icons/obj/items_and_weapons.dmi differ