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