From 3d11717d134655a177e313fa8fb5a12ebec94ffd Mon Sep 17 00:00:00 2001 From: Neerti Date: Sun, 31 Jul 2016 20:08:10 -0400 Subject: [PATCH] Technomancer Fixes Unstable Aura will no longer do a hundred times its intended damage. Gambit should no longer give base spell templates. Wards should die properly now. Track will no longer list the user as a valid option. Shields should now stop projectile effects like stunning, if blocked. --- .../technomancer/spells/aura/unstable_aura.dm | 3 ++- code/game/gamemodes/technomancer/spells/gambit.dm | 4 +++- .../technomancer/spells/summon/summon_ward.dm | 2 ++ code/game/gamemodes/technomancer/spells/track.dm | 2 ++ code/modules/mob/living/carbon/human/human_defense.dm | 11 +++++------ 5 files changed, 14 insertions(+), 8 deletions(-) diff --git a/code/game/gamemodes/technomancer/spells/aura/unstable_aura.dm b/code/game/gamemodes/technomancer/spells/aura/unstable_aura.dm index d7e2d2a7b6..56e53cd500 100644 --- a/code/game/gamemodes/technomancer/spells/aura/unstable_aura.dm +++ b/code/game/gamemodes/technomancer/spells/aura/unstable_aura.dm @@ -15,7 +15,7 @@ glow_color = "#0000FF" //TODO /obj/item/weapon/spell/aura/unstable/process() - if(!pay_energy(500)) + if(!pay_energy(200)) qdel(src) var/list/nearby_mobs = range(14,owner) for(var/mob/living/L in nearby_mobs) @@ -25,6 +25,7 @@ var/damage_to_inflict = max(L.health / L.maxHealth, 0) // Otherwise, those in crit would actually be healed. var/armor_factor = abs(L.getarmor(null, "energy") - 100) + armor_factor = round(armor_factor / 100) damage_to_inflict = damage_to_inflict * armor_factor diff --git a/code/game/gamemodes/technomancer/spells/gambit.dm b/code/game/gamemodes/technomancer/spells/gambit.dm index 6a0b29d117..797536cc45 100644 --- a/code/game/gamemodes/technomancer/spells/gambit.dm +++ b/code/game/gamemodes/technomancer/spells/gambit.dm @@ -6,11 +6,13 @@ obj_path = /obj/item/weapon/spell/gambit /var/global/list/all_technomancer_gambit_spells = typesof(/obj/item/weapon/spell) - list( + /obj/item/weapon/spell, /obj/item/weapon/spell/gambit, /obj/item/weapon/spell/projectile, /obj/item/weapon/spell/aura, /obj/item/weapon/spell/insert, - /obj/item/weapon/spell/spawner) + /obj/item/weapon/spell/spawner, + /obj/item/weapon/spell/summon) /obj/item/weapon/spell/gambit name = "gambit" diff --git a/code/game/gamemodes/technomancer/spells/summon/summon_ward.dm b/code/game/gamemodes/technomancer/spells/summon/summon_ward.dm index a9be662cf3..1bbab4d299 100644 --- a/code/game/gamemodes/technomancer/spells/summon/summon_ward.dm +++ b/code/game/gamemodes/technomancer/spells/summon/summon_ward.dm @@ -43,6 +43,8 @@ /mob/living/simple_animal/ward/death() if(creator) creator << "Your ward inside [get_area(src)] was killed!" + ..() + qdel(src) /mob/living/simple_animal/ward/proc/expire() if(creator && src) diff --git a/code/game/gamemodes/technomancer/spells/track.dm b/code/game/gamemodes/technomancer/spells/track.dm index a6249c5eed..8307eb750d 100644 --- a/code/game/gamemodes/technomancer/spells/track.dm +++ b/code/game/gamemodes/technomancer/spells/track.dm @@ -39,6 +39,8 @@ var/list/technomancer_belongings = list() for(var/mob/living/L in mob_list) if(!is_ally(L) && !can_track_non_allies) continue + if(L == user) + continue mob_choices += L var/choice = input(user,"Decide what or who to track.","Tracking") as null|anything in object_choices + mob_choices if(choice) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 3185d25c40..b2c0236b5d 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -18,12 +18,11 @@ emp_act //Shields var/shield_check = check_shields(P.damage, P, null, def_zone, "the [P.name]") - if(shield_check) - if(shield_check < 0) - return shield_check - else - P.on_hit(src, 2, def_zone) - return 2 + if(shield_check) // If the block roll succeeded, this is true. + if(shield_check < 0) // The shield did something weird and the bullet needs to keep doing things (e.g. it was reflected). + return shield_check // Likely equal to PROJECTILE_FORCE_MISS or PROJECTILE_CONTINUE. + else // Otherwise we blocked normally and stopped all the damage. + return 0 //Shrapnel if(P.can_embed())