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."