From 2b294588aa0f7ad5ee6f8599e64129ccb3072e65 Mon Sep 17 00:00:00 2001 From: Matt Atlas Date: Fri, 3 Sep 2021 18:07:02 +0200 Subject: [PATCH] Technomancer tesla armor adjustments, blink removal. (#12410) --- aurorastation.dme | 1 - .../technomancer/devices/tesla_armor.dm | 14 +-- .../gamemodes/technomancer/instability.dm | 30 ++++++ .../gamemodes/technomancer/spells/blink.dm | 98 ------------------- .../spells/projectile/lightning.dm | 12 ++- html/changelogs/mattatlas-teslaarmor.yml | 44 +++++++++ 6 files changed, 91 insertions(+), 108 deletions(-) delete mode 100644 code/game/gamemodes/technomancer/spells/blink.dm create mode 100644 html/changelogs/mattatlas-teslaarmor.yml diff --git a/aurorastation.dme b/aurorastation.dme index 16fd217ed76..881dee24b50 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -599,7 +599,6 @@ #include "code\game\gamemodes\technomancer\spells\abjuration.dm" #include "code\game\gamemodes\technomancer\spells\apportation.dm" #include "code\game\gamemodes\technomancer\spells\audible_deception.dm" -#include "code\game\gamemodes\technomancer\spells\blink.dm" #include "code\game\gamemodes\technomancer\spells\chroma.dm" #include "code\game\gamemodes\technomancer\spells\condensation.dm" #include "code\game\gamemodes\technomancer\spells\dispel.dm" diff --git a/code/game/gamemodes/technomancer/devices/tesla_armor.dm b/code/game/gamemodes/technomancer/devices/tesla_armor.dm index 95fda406d08..9f74ce0368e 100644 --- a/code/game/gamemodes/technomancer/devices/tesla_armor.dm +++ b/code/game/gamemodes/technomancer/devices/tesla_armor.dm @@ -19,7 +19,7 @@ var/ready = 1 //Determines if the next attack will be blocked, as well if a strong lightning bolt is sent out at the attacker. var/ready_icon_state = "tesla_armor_1" //also wip var/normal_icon_state = "tesla_armor_0" - var/cooldown_to_charge = 15 SECONDS + var/cooldown_to_charge = 20 SECONDS /obj/item/clothing/suit/armor/tesla/handle_shield(mob/user, var/on_back, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack") //First, some retaliation. @@ -28,17 +28,17 @@ var/obj/item/projectile/P = damage_source if(P.firer && get_dist(user, P.firer) <= 3) if(ready) - shoot_lightning(P.firer, 40) + shoot_lightning(P.firer, 2000) else - shoot_lightning(P.firer, 15) + shoot_lightning(P.firer, 1000, /obj/item/projectile/beam/lightning/small) else if(attacker && attacker != user) if(get_dist(user, attacker) <= 3) //Anyone farther away than three tiles is too far to shoot lightning at. if(ready) - shoot_lightning(attacker, 40) + shoot_lightning(attacker, 2000) else - shoot_lightning(attacker, 15) + shoot_lightning(attacker, 1000, /obj/item/projectile/beam/lightning/small) //Deal with protecting our wearer now. if(ready) @@ -77,8 +77,8 @@ H.update_action_buttons() ..() -/obj/item/clothing/suit/armor/tesla/proc/shoot_lightning(mob/target, power) - var/obj/item/projectile/beam/lightning/lightning = new(get_turf(src)) +/obj/item/clothing/suit/armor/tesla/proc/shoot_lightning(mob/target, power, lightning_type = /obj/item/projectile/beam/lightning) + var/obj/item/projectile/beam/lightning/lightning = new lightning_type(get_turf(src)) lightning.power = power lightning.old_style_target(target) lightning.fire() diff --git a/code/game/gamemodes/technomancer/instability.dm b/code/game/gamemodes/technomancer/instability.dm index caf48d062fa..3436ee96795 100644 --- a/code/game/gamemodes/technomancer/instability.dm +++ b/code/game/gamemodes/technomancer/instability.dm @@ -95,6 +95,36 @@ overlays.Remove(instability_flash) qdel(instability_flash) +/proc/safe_blink(atom/movable/AM, var/range = 3) + if(AM.anchored || !AM.loc) + return + var/list/targets = list() + + for(var/turf/simulated/T in range(AM, range)) + if(T.density || istype(T, /turf/simulated/mineral)) //Don't blink to vacuum or a wall + continue + for(var/atom/movable/stuff in T.contents) + if(stuff.density) + continue + targets.Add(T) + + if(!targets.len) + return + var/turf/simulated/destination = null + + destination = pick(targets) + + if(destination) + if(ismob(AM)) + var/mob/living/L = AM + if(L.buckled_to) + L.buckled_to.unbuckle() + spark(AM, 5, 2) + AM.forceMove(destination) + AM.visible_message("\The [AM] vanishes!") + to_chat(AM, "You suddenly appear somewhere else!") + return + /mob/living/silicon/instability_effects() if(instability) var/rng = 0 diff --git a/code/game/gamemodes/technomancer/spells/blink.dm b/code/game/gamemodes/technomancer/spells/blink.dm deleted file mode 100644 index aeab617a7f3..00000000000 --- a/code/game/gamemodes/technomancer/spells/blink.dm +++ /dev/null @@ -1,98 +0,0 @@ -/datum/technomancer/spell/blink - name = "Blink" - desc = "Force the target to teleport a short distance away. This target could be anything from something lying on the ground, \ - to someone trying to fight you, or even yourself. Using this on someone next to you makes their potential distance after \ - teleportation greater. Self casting has the greatest potential for distance, as well as the cheapest cost." - enhancement_desc = "Blink distance is increased greatly." - spell_power_desc = "Blink distance is scaled up with more spell power." - cost = 50 - obj_path = /obj/item/spell/blink - ability_icon_state = "tech_blink" - category = UTILITY_SPELLS - -/obj/item/spell/blink - name = "blink" - desc = "Teleports you or someone else a short distance away." - icon_state = "blink" - cast_methods = CAST_RANGED | CAST_MELEE | CAST_USE - aspect = ASPECT_TELE - -/proc/safe_blink(atom/movable/AM, var/range = 3) - if(AM.anchored || !AM.loc) - return - var/list/targets = list() - - for(var/turf/simulated/T in range(AM, range)) - if(T.density || istype(T, /turf/simulated/mineral)) //Don't blink to vacuum or a wall - continue - for(var/atom/movable/stuff in T.contents) - if(stuff.density) - continue - targets.Add(T) - - if(!targets.len) - return - var/turf/simulated/destination = null - - destination = pick(targets) - - if(destination) - if(ismob(AM)) - var/mob/living/L = AM - if(L.buckled_to) - L.buckled_to.unbuckle() - spark(AM, 5, 2) - AM.forceMove(destination) - AM.visible_message("\The [AM] vanishes!") - to_chat(AM, "You suddenly appear somewhere else!") - return - -/obj/item/spell/blink/on_ranged_cast(atom/hit_atom, mob/user) - if(istype(hit_atom, /atom/movable)) - var/atom/movable/AM = hit_atom - if(!within_range(AM)) - to_chat(user, "\The [AM] is too far away to blink.") - return - if(!allowed_to_teleport()) - to_chat(user, "Teleportation doesn't seem to work here.") - return - if(pay_energy(400)) - if(check_for_scepter()) - safe_blink(AM, calculate_spell_power(6)) - else - safe_blink(AM, calculate_spell_power(3)) - adjust_instability(3) - log_and_message_admins("has blinked [AM] away.") - else - to_chat(user, "You need more energy to blink [AM] away!") - -/obj/item/spell/blink/on_use_cast(mob/user) - if(!allowed_to_teleport()) - to_chat(user, "Teleportation doesn't seem to work here.") - return - if(pay_energy(200)) - if(check_for_scepter()) - safe_blink(user, calculate_spell_power(10)) - else - safe_blink(user, calculate_spell_power(6)) - adjust_instability(1) - log_and_message_admins("has blinked themselves away.") - else - to_chat(user, "You need more energy to blink yourself away!") - -/obj/item/spell/blink/on_melee_cast(atom/hit_atom, mob/living/user, def_zone) - if(istype(hit_atom, /atom/movable)) - var/atom/movable/AM = hit_atom - if(!allowed_to_teleport()) - to_chat(user, "Teleportation doesn't seem to work here.") - return - if(pay_energy(300)) - visible_message("\The [user] reaches out towards \the [AM] with a glowing hand.") - if(check_for_scepter()) - safe_blink(AM, 10) - else - safe_blink(AM, 6) - adjust_instability(2) - log_and_message_admins("has blinked [AM] away.") - else - to_chat(user, "You need more energy to blink [AM] away!") \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/projectile/lightning.dm b/code/game/gamemodes/technomancer/spells/projectile/lightning.dm index a9252bf1091..8a526492d11 100644 --- a/code/game/gamemodes/technomancer/spells/projectile/lightning.dm +++ b/code/game/gamemodes/technomancer/spells/projectile/lightning.dm @@ -24,8 +24,8 @@ /obj/item/projectile/beam/lightning name = "lightning" icon_state = "lightning" - damage = 40 - armor_penetration = 10 + damage = 25 + armor_penetration = 25 damage_type = BURN muzzle_type = /obj/effect/projectile/muzzle/tesla @@ -34,6 +34,14 @@ var/power = 6000 +/obj/item/projectile/beam/lightning/small + name = "shock" + damage = 15 + armor_penetration = 15 + + power = 1000 + + /obj/item/projectile/beam/lightning/attack_mob(var/mob/living/target_mob, var/distance, var/miss_modifier=0) ..() tesla_zap(target_mob, 3, power) diff --git a/html/changelogs/mattatlas-teslaarmor.yml b/html/changelogs/mattatlas-teslaarmor.yml new file mode 100644 index 00000000000..6f70b04e4e9 --- /dev/null +++ b/html/changelogs/mattatlas-teslaarmor.yml @@ -0,0 +1,44 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +# balance +# admin +# backend +# security +# refactor +################################# + +# Your name. +author: MattAtlas + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscdel: "Removed Blink from the Technomancer spells." + - tweak: "The Tesla armor now uses lower power lightning shocks if the armor isn't ready for another shock instead of using full power shocks." + - tweak: "Increased the Tesla armor recharge time by 5 seconds." + - bugfix: "Fixed the Tesla armor lightning shocks not doing the tesla zap."