From dd326096c93ec284ca68686f34353f48c007324b Mon Sep 17 00:00:00 2001
From: SabreML <57483089+SabreML@users.noreply.github.com>
Date: Wed, 16 Sep 2020 15:13:32 +0100
Subject: [PATCH] Allows toy E-Swords to reflect Laser Tag lasers (#14191)
* Allows toy eswords to reflect laser tag lasers
---
code/game/objects/items/toys.dm | 5 +++--
.../mob/living/carbon/human/human_defense.dm | 21 ++++++++++++++-----
2 files changed, 19 insertions(+), 7 deletions(-)
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index cd1b91388d7..4581061f339 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -214,8 +214,9 @@
/obj/item/twohanded/dualsaber/toy/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
return 0
-/obj/item/twohanded/dualsaber/toy/IsReflect()//Stops Toy Dualsabers from reflecting energy projectiles
- return 0
+/obj/item/twohanded/dualsaber/toy/IsReflect()
+ if(wielded)
+ return 2
/obj/item/toy/katana
name = "replica katana"
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index c7798a51a08..958afaaef94 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -13,13 +13,20 @@ emp_act
if(!dna.species.bullet_act(P, src))
return FALSE
if(P.is_reflectable)
- if(check_reflect(def_zone)) // Checks if you've passed a reflection% check
- visible_message("The [P.name] gets reflected by [src]!", \
- "The [P.name] gets reflected by [src]!")
+ var/can_reflect = check_reflect(def_zone)
+ if(!can_reflect)
+ return (..(P , def_zone)) //Bad luck
+ else
+ if(can_reflect == 2) //If target is holding a toy sword
+ var/list/safe_list = list(/obj/item/projectile/beam/lasertag, /obj/item/projectile/beam/practice)
+ if(!is_type_in_list(P, safe_list)) //And it's not safe
+ return (..(P , def_zone)) //Bad luck
+ visible_message("The [P.name] gets reflected by [src]!", \
+ "The [P.name] gets reflected by [src]!")
- P.reflect_back(src)
+ P.reflect_back(src)
- return -1 // complete projectile permutation
+ return -1 // complete projectile permutation
//Shields
if(check_shields(P, P.damage, "the [P.name]", PROJECTILE_ATTACK, P.armour_penetration))
@@ -172,10 +179,14 @@ emp_act
var/obj/item/I = l_hand
if(I.IsReflect(def_zone) == 1)
return 1
+ if(I.IsReflect(def_zone) == 2) //Toy swords
+ return 2
if(r_hand && istype(r_hand, /obj/item/))
var/obj/item/I = r_hand
if(I.IsReflect(def_zone) == 1)
return 1
+ if(I.IsReflect(def_zone) == 2) //Toy swords
+ return 2
return 0