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