mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-25 22:12:58 +01:00
Technomancer tesla armor adjustments, blink removal. (#12410)
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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("<span class='notice'>\The [AM] vanishes!</span>")
|
||||
to_chat(AM, "<span class='notice'>You suddenly appear somewhere else!</span>")
|
||||
return
|
||||
|
||||
/mob/living/silicon/instability_effects()
|
||||
if(instability)
|
||||
var/rng = 0
|
||||
|
||||
@@ -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("<span class='notice'>\The [AM] vanishes!</span>")
|
||||
to_chat(AM, "<span class='notice'>You suddenly appear somewhere else!</span>")
|
||||
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, "<span class='warning'>\The [AM] is too far away to blink.</span>")
|
||||
return
|
||||
if(!allowed_to_teleport())
|
||||
to_chat(user, "<span class='warning'>Teleportation doesn't seem to work here.</span>")
|
||||
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, "<span class='warning'>You need more energy to blink [AM] away!</span>")
|
||||
|
||||
/obj/item/spell/blink/on_use_cast(mob/user)
|
||||
if(!allowed_to_teleport())
|
||||
to_chat(user, "<span class='warning'>Teleportation doesn't seem to work here.</span>")
|
||||
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, "<span class='warning'>You need more energy to blink yourself away!</span>")
|
||||
|
||||
/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, "<span class='warning'>Teleportation doesn't seem to work here.</span>")
|
||||
return
|
||||
if(pay_energy(300))
|
||||
visible_message("<span class='danger'>\The [user] reaches out towards \the [AM] with a glowing hand.</span>")
|
||||
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, "<span class='warning'>You need more energy to blink [AM] away!</span>")
|
||||
@@ -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)
|
||||
|
||||
@@ -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."
|
||||
Reference in New Issue
Block a user