diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm
index bddb01b42e1..fa1d696a067 100644
--- a/code/_onclick/click.dm
+++ b/code/_onclick/click.dm
@@ -167,7 +167,8 @@
animals lunging, etc.
*/
/mob/proc/RangedAttack(var/atom/A, var/params)
- if(!mutations.len) return
+ if(!mutations.len)
+ return
if((LASER in mutations) && a_intent == I_HARM)
LaserEyes(A) // moved into a proc below
return
diff --git a/code/_onclick/click_override.dm b/code/_onclick/click_override.dm
index 092398ee174..d37b7368b8f 100644
--- a/code/_onclick/click_override.dm
+++ b/code/_onclick/click_override.dm
@@ -40,4 +40,29 @@
newObject.loc = get_turf(A)
to_chat(user, "You release the power you had stored up, summoning \a [newObject.name]! ")
usr.loc.visible_message("[user] waves \his hand and summons \a [newObject.name]")
- ..()
\ No newline at end of file
+ ..()
+
+/datum/middleClickOverride/power_gloves
+ var/last_shocked = 0
+ var/shock_delay = 120
+
+/datum/middleClickOverride/power_gloves/onClick(var/atom/A, var/mob/living/user)
+ if(user.incapacitated())
+ return
+ if(world.time < last_shocked + shock_delay)
+ to_chat(user, "The gloves are still recharging.")
+ return
+ if(!isliving(A))
+ to_chat(user, "Shocking an inanimate object would be pointless.")
+ return
+ var/mob/living/L = A
+ var/turf/T = get_turf(user)
+ var/obj/structure/cable/C = locate() in T
+ if(!C || !istype(C))
+ to_chat(user, "There is no cable here to power the gloves.")
+ return
+ user.visible_message("[user.name] fires an arc of electricity at [L]!", "You fire an arc of electricity at [L]!", "You hear the loud crackle of electricity!")
+ var/datum/powernet/PN = C.get_powernet()
+ user.Beam(L,icon_state="lightning[rand(1,12)]",icon='icons/effects/effects.dmi',time=5)
+ electrocute_mob(L, PN, user)
+ last_shocked = world.time
diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm
index fda074ec119..ae5595d69e5 100644
--- a/code/game/mecha/equipment/weapons/weapons.dm
+++ b/code/game/mecha/equipment/weapons/weapons.dm
@@ -55,7 +55,7 @@
sleep(max(0, projectile_delay))
set_ready_state(0)
- log_message("Fired from [src.name], targeting [target].")
+ log_message("Fired from [name], targeting [target].")
var/turf/T = get_turf(src)
msg_admin_attack("[key_name_admin(chassis.occupant)] fired a [src] in ([T.x], [T.y], [T.z] - JMP)")
log_game("[key_name(chassis.occupant)] fired a [src] in [T.x], [T.y], [T.z]")
@@ -107,7 +107,7 @@
/obj/item/projectile/beam/pulse/heavy/Bump(atom/A)
A.bullet_act(src, def_zone)
- src.life -= 10
+ life -= 10
if(ismob(A))
var/mob/M = A
if(istype(firer, /mob))
@@ -188,7 +188,7 @@
R.use_power(R.get_charge() / 4)
chassis.use_power(energy_drain)
- log_message("Honked from [src.name]. HONK!")
+ log_message("Honked from [name]. HONK!")
var/turf/T = get_turf(src)
msg_admin_attack("[key_name_admin(chassis.occupant)] used a Mecha Honker in ([T.x], [T.y], [T.z] - JMP)")
log_game("[key_name(chassis.occupant)] used a Mecha Honker in [T.x], [T.y], [T.z]")
@@ -207,7 +207,7 @@
return 0
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/get_equip_info()
- return "[..()]\[[src.projectiles]\][(src.projectiles < initial(src.projectiles))?" - Rearm":null]"
+ return "[..()]\[[projectiles]\][(projectiles < initial(projectiles))?" - Rearm":null]"
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/proc/rearm()
if(projectiles < initial(projectiles))
@@ -216,14 +216,14 @@
projectiles++
projectiles_to_add--
chassis.use_power(projectile_energy_cost)
- send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info())
- log_message("Rearmed [src.name].")
+ send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",get_equip_info())
+ log_message("Rearmed [name].")
return
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/Topic(href, href_list)
..()
if (href_list["rearm"])
- src.rearm()
+ rearm()
return
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/carbine
@@ -293,7 +293,7 @@
playsound(chassis, fire_sound, 50, 1)
M.throw_at(target, missile_range, missile_speed, chassis)
projectiles--
- log_message("Fired from [src.name], targeting [target].")
+ log_message("Fired from [name], targeting [target].")
var/turf/T = get_turf(src)
msg_admin_attack("[key_name_admin(chassis.occupant)] fired a [src] in ([T.x], [T.y], [T.z] - JMP)")
log_game("[key_name(chassis.occupant)] fired a [src] in [T.x], [T.y], [T.z]")
@@ -334,7 +334,7 @@
playsound(chassis, fire_sound, 50, 1)
F.throw_at(target, missile_range, missile_speed, chassis)
projectiles--
- log_message("Fired from [src.name], targeting [target].")
+ log_message("Fired from [name], targeting [target].")
spawn(det_time)
F.prime()
do_after_cooldown()
@@ -350,7 +350,7 @@
size=1
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang/limited/get_equip_info()//Limited version of the clusterbang launcher that can't reload
- return "* [chassis.selected==src?"":""][src.name][chassis.selected==src?"":""]\[[src.projectiles]\]"
+ return "* [chassis.selected==src?"":""][name][chassis.selected==src?"":""]\[[projectiles]\]"
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang/limited/rearm()
return//Extra bit of security
@@ -379,7 +379,7 @@
playsound(chassis, fire_sound, 60, 1)
B.throw_at(target, missile_range, missile_speed, chassis)
projectiles--
- log_message("Bananed from [src.name], targeting [target]. HONK!")
+ log_message("Bananed from [name], targeting [target]. HONK!")
do_after_cooldown()
return
@@ -409,7 +409,7 @@
playsound(chassis, fire_sound, 60, 1)
M.throw_at(target, missile_range, missile_speed, chassis)
projectiles--
- log_message("Launched a mouse-trap from [src.name], targeting [target]. HONK!")
+ log_message("Launched a mouse-trap from [name], targeting [target]. HONK!")
do_after_cooldown()
return
@@ -439,7 +439,7 @@
M.thrown_from = src
M.throw_at(target, missile_range, missile_speed)
projectiles--
- log_message("Fired from [src.name], targeting [target].")
+ log_message("Fired from [name], targeting [target].")
do_after_cooldown()
return
diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm
index db163ad3e59..a50e56382a1 100644
--- a/code/modules/clothing/gloves/color.dm
+++ b/code/modules/clothing/gloves/color.dm
@@ -6,8 +6,32 @@
siemens_coefficient = 0
permeability_coefficient = 0.05
item_color="yellow"
- power
- var/next_shock = 0
+
+/obj/item/clothing/gloves/color/yellow/power
+ description_antag = "These are a pair of power gloves, and can be used to fire bolts of electricity while standing over powered power cables."
+ var/old_mclick_override
+ var/datum/middleClickOverride/power_gloves/mclick_override = new /datum/middleClickOverride/power_gloves
+
+/obj/item/clothing/gloves/color/yellow/power/equipped(mob/user, slot)
+ if(!ishuman(user))
+ return
+ var/mob/living/carbon/human/H = user
+ if(slot == slot_gloves)
+ if(H.middleClickOverride)
+ old_mclick_override = H.middleClickOverride
+ H.middleClickOverride = mclick_override
+ to_chat(H, "You feel electricity begin to build up in [src].")
+
+/obj/item/clothing/gloves/color/yellow/power/dropped(mob/user, slot)
+ if(!ishuman(user))
+ return
+ var/mob/living/carbon/human/H = user
+ if(H.get_item_by_slot(slot_gloves) == src && H.middleClickOverride == mclick_override)
+ if(old_mclick_override)
+ H.middleClickOverride = old_mclick_override
+ old_mclick_override = null
+ else
+ H.middleClickOverride = null
/obj/item/clothing/gloves/color/yellow/fake
desc = "These gloves will protect the wearer from electric shock. They don't feel like rubber..."
@@ -167,4 +191,4 @@
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
heat_protection = HANDS
max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
- strip_delay = 60
\ No newline at end of file
+ strip_delay = 60
diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm
index ba752754b42..03519770eee 100644
--- a/code/modules/projectiles/guns/projectile.dm
+++ b/code/modules/projectiles/guns/projectile.dm
@@ -167,7 +167,7 @@
if(sawn_state == SAWN_OFF)
return
user.visible_message("[user] shortens \the [src]!", "You shorten \the [src].")
- name = "sawn-off [src.name]"
+ name = "sawn-off [name]"
desc = sawn_desc
w_class = 3
item_state = "gun"//phil235 is it different with different skin?