diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index 2f14ced27d..e29860dc2c 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -8,6 +8,7 @@ flags = FPRINT | TABLEPASS | NOBLOODY /obj/item/weapon/melee/energy/proc/activate(mob/living/user) + anchored = 1 active = 1 force = active_force throwforce = active_throwforce @@ -17,6 +18,7 @@ playsound(user, 'sound/weapons/saberon.ogg', 50, 1) /obj/item/weapon/melee/energy/proc/deactivate(mob/living/user) + anchored = 0 active = 0 force = initial(force) throwforce = initial(throwforce) @@ -28,7 +30,8 @@ /obj/item/weapon/melee/energy/attack_self(mob/living/user as mob) if (active) if ((CLUMSY in user.mutations) && prob(50)) - user.visible_message("\red [user] accidentally cuts \himself with \the [src].", "\red You accidentally cut yourself with \the [src].") + user.visible_message("[user] accidentally cuts \himself with \the [src].",\ + "You accidentally cut yourself with \the [src].") user.take_organ_damage(5,5) deactivate(user) else @@ -44,8 +47,8 @@ /obj/item/weapon/melee/energy/suicide_act(mob/user) if (active) - viewers(user) << pick("\red [user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.", \ - "\red [user] is falling on the [src.name]! It looks like \he's trying to commit suicide.") + viewers(user) << pick("[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.", \ + "[user] is falling on the [src.name]! It looks like \he's trying to commit suicide.") return (BRUTELOSS|FIRELOSS) /* @@ -105,6 +108,11 @@ flags = FPRINT | TABLEPASS | NOSHIELD | NOBLOODY origin_tech = "magnets=3;syndicate=4" +/obj/item/weapon/melee/energy/sword/dropped(var/mob/user) + ..() + if(!istype(loc,/mob)) + deactivate(user) + /obj/item/weapon/melee/energy/sword/New() item_color = pick("red","blue","green","purple") @@ -121,16 +129,18 @@ item_color = "purple" /obj/item/weapon/melee/energy/sword/activate(mob/living/user) + if(!active) + user << "\The [src] is now energised." ..() attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") icon_state = "sword[item_color]" - user << "\blue \The [src] is now energised." /obj/item/weapon/melee/energy/sword/deactivate(mob/living/user) + if(active) + user << "\The [src] deactivates!" ..() attack_verb = list() icon_state = initial(icon_state) - user << "\blue It can now be concealed." /obj/item/weapon/melee/energy/sword/IsShield() if(active) @@ -158,7 +168,8 @@ force = 70.0//Normal attacks deal very high damage. sharp = 1 edge = 1 - throwforce = 1//Throwing or dropping the item deletes it. + anchored = 1 // Never spawned outside of inventory, should be fine. + throwforce = 1 //Throwing or dropping the item deletes it. throw_speed = 1 throw_range = 1 w_class = 4.0//So you can't hide it in your pocket or some such. diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 3cefdc836d..34774530ca 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -282,7 +282,7 @@ emp_act forcesay(hit_appends) //forcesay checks stat already //Melee weapon embedded object code. - if (I && I.damtype == BRUTE && !I.is_robot_module()) + if (I && I.damtype == BRUTE && !I.anchored && !I.is_robot_module()) var/damage = I.force if (armor) damage /= armor+1