mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-23 04:51:32 +01:00
Revert "Fixes energy shield bugs and adds colour change as they take damage" (#22805)
Breaks humans taking damage
This commit is contained in:
@@ -140,58 +140,27 @@
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
origin_tech = list(TECH_MATERIAL = 4, TECH_MAGNET = 3, TECH_ILLEGAL = 4)
|
||||
attack_verb = list("shoved", "bashed")
|
||||
var/shield_power = 100
|
||||
var/shield_power_max = 100
|
||||
var/shield_power = 150
|
||||
var/active = FALSE
|
||||
var/next_action
|
||||
var/sound_token
|
||||
var/sound_id
|
||||
var/shield_color = "#64a5ff"
|
||||
|
||||
/obj/item/shield/energy/Destroy()
|
||||
QDEL_NULL(sound_token)
|
||||
STOP_PROCESSING(SSprocessing, src)
|
||||
return ..()
|
||||
|
||||
/obj/item/shield/energy/Initialize()
|
||||
. = ..()
|
||||
sound_id = "[sequential_id(/obj/item/shield/energy)]"
|
||||
|
||||
/obj/item/shield/energy/get_examine_text(mob/user, distance, is_adjacent, infix, suffix, get_extended)
|
||||
. = ..()
|
||||
if(is_adjacent)
|
||||
. += SPAN_NOTICE("Shield power is at [round(shield_power/shield_power_max * 100)]%.")
|
||||
|
||||
/obj/item/shield/energy/update_icon(atom/loc)
|
||||
/obj/item/shield/energy/update_icon()
|
||||
icon_state = "eshield[active]"
|
||||
|
||||
if(active)
|
||||
shield_color = rgb(Interpolate(255, 100, shield_power / shield_power_max), Interpolate(0, 160, shield_power / shield_power_max), Interpolate(100, 255, shield_power / shield_power_max))
|
||||
set_light(1.5, 1.5, shield_color)
|
||||
set_light(1.5, 1.5, "#006AFF")
|
||||
else
|
||||
shield_color = "#ffffff"
|
||||
set_light(0)
|
||||
|
||||
color = shield_color
|
||||
|
||||
if(istype(loc, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = loc
|
||||
get_mob_overlay(H)
|
||||
H.update_inv_l_hand()
|
||||
H.update_inv_r_hand()
|
||||
|
||||
/obj/item/shield/energy/get_mob_overlay(mob/living/carbon/human/H, mob_icon, mob_state, slot, main_call)
|
||||
var/image/I = ..() //this will be the base icon
|
||||
animate(I, color = shield_color, time = 10, easing = EASE_IN)
|
||||
return I
|
||||
|
||||
/obj/item/shield/energy/process(seconds_per_tick)
|
||||
shield_power = max(0, min(shield_power += 1, shield_power_max))
|
||||
if(active)
|
||||
update_icon(loc)
|
||||
if (shield_power >= shield_power_max)
|
||||
STOP_PROCESSING(SSprocessing, src)
|
||||
|
||||
/obj/item/shield/energy/attack_self(mob/living/user)
|
||||
var/time = world.time
|
||||
if(time < next_action)
|
||||
@@ -199,12 +168,15 @@
|
||||
next_action = time + 3 SECONDS
|
||||
active = !active
|
||||
if(active)
|
||||
HandleTurnOn(user)
|
||||
HandleTurnOn()
|
||||
else
|
||||
HandleShutOff(user)
|
||||
HandleShutOff()
|
||||
add_fingerprint(user)
|
||||
update_icon()
|
||||
user.update_inv_l_hand()
|
||||
user.update_inv_r_hand()
|
||||
|
||||
/obj/item/shield/energy/handle_shield(mob/living/user, on_back, damage, atom/damage_source = null, mob/attacker = null, def_zone = null, attack_text = "the attack")
|
||||
/obj/item/shield/energy/handle_shield(mob/user, on_back, damage, atom/damage_source = null, mob/attacker = null, def_zone = null, attack_text = "the attack")
|
||||
var/shield_dir = on_back ? user.dir : REVERSE_DIR(user.dir)
|
||||
|
||||
if(!active || user.incapacitated() || !(check_shield_arc(user, shield_dir, damage_source, attacker)))
|
||||
@@ -213,13 +185,11 @@
|
||||
if(prob(get_block_chance(user, damage, damage_source, attacker)))
|
||||
spark(user.loc, 5)
|
||||
shield_power -= round(damage/4)
|
||||
update_icon(user)
|
||||
START_PROCESSING(SSprocessing, src)
|
||||
|
||||
if(shield_power <= 0)
|
||||
visible_message(SPAN_WARNING("\The [user]'s [src.name] overloads!"))
|
||||
visible_message(SPAN_DANGER("\The [user]'s [src.name] overloads!"))
|
||||
active = FALSE
|
||||
HandleShutOff(user)
|
||||
HandleShutOff()
|
||||
|
||||
if(isenergy(damage_source) || isbeam(damage_source))
|
||||
var/obj/projectile/P = damage_source
|
||||
@@ -260,20 +230,17 @@
|
||||
return (base_block_chance - round(damage / 3))
|
||||
return base_block_chance
|
||||
|
||||
/obj/item/shield/energy/proc/HandleTurnOn(mob/living/user)
|
||||
/obj/item/shield/energy/proc/HandleTurnOn()
|
||||
addtimer(CALLBACK(src, /obj/item/shield/energy/proc/UpdateSoundLoop), 0.25 SECONDS)
|
||||
playsound(src, 'sound/items/shield/energy/shield-start.ogg', 40)
|
||||
force = 15
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
update_icon(user)
|
||||
START_PROCESSING(SSprocessing, src)
|
||||
|
||||
/obj/item/shield/energy/proc/HandleShutOff(mob/living/user)
|
||||
/obj/item/shield/energy/proc/HandleShutOff()
|
||||
addtimer(CALLBACK(src, /obj/item/shield/energy/proc/UpdateSoundLoop), 0.1 SECONDS)
|
||||
playsound(src, 'sound/items/shield/energy/shield-stop.ogg', 40)
|
||||
force = initial(force)
|
||||
w_class = initial(w_class)
|
||||
update_icon(user)
|
||||
|
||||
/obj/item/shield/energy/proc/UpdateSoundLoop()
|
||||
if (!active)
|
||||
@@ -286,12 +253,11 @@
|
||||
desc = "A Zkrehk-Guild manufactured energy shield capable of protecting the wielder from both material and energy attack."
|
||||
icon_state = "hegemony-eshield0"
|
||||
base_block_chance = 60
|
||||
shield_color = "#e68917"
|
||||
|
||||
/obj/item/shield/energy/hegemony/update_icon()
|
||||
icon_state = "hegemony-eshield[active]"
|
||||
if(active)
|
||||
set_light(1.5, 1.5, shield_color)
|
||||
set_light(1.5, 1.5, "#e68917")
|
||||
else
|
||||
set_light(0)
|
||||
|
||||
@@ -313,12 +279,11 @@
|
||||
desc = "A large deployable energy shield meant to provide excellent protection against ranged attacks."
|
||||
icon_state = "ebarrier0"
|
||||
base_block_chance = 55
|
||||
shield_color = "#33FFFF"
|
||||
|
||||
/obj/item/shield/energy/tcaf/update_icon()
|
||||
icon_state = "ebarrier[active]"
|
||||
if(active)
|
||||
set_light(1.5, 1.5, shield_color)
|
||||
set_light(1.5, 1.5, "#33FFFF")
|
||||
else
|
||||
set_light(0)
|
||||
|
||||
@@ -327,12 +292,11 @@
|
||||
desc = "A hardlight energy shield meant to provide excellent protection in melee engagements."
|
||||
icon_state = "dominian-eshield0"
|
||||
base_block_chance = 60
|
||||
shield_color = "#ff5132"
|
||||
|
||||
/obj/item/shield/energy/dominia/update_icon()
|
||||
icon_state = "dominian-eshield[active]"
|
||||
if(active)
|
||||
set_light(1.5, 1.5, shield_color)
|
||||
set_light(1.5, 1.5, "#ff5132")
|
||||
else
|
||||
set_light(0)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user