mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-05-22 14:47:16 +01:00
b0f0f4685f
* First pass * fixes * more fixes * num2hex length changes * pass 2 * fixed warning * looc log fix * . * update tgui * . * . * . * . * perttier * cleanup * . * . * fix token * no * . * . * . * , * modsay eventsay * . --------- Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
89 lines
2.6 KiB
Plaintext
89 lines
2.6 KiB
Plaintext
/obj/item/mecha_parts/mecha_equipment/combat_shield
|
|
name = "linear combat shield"
|
|
desc = "A shield generator that forms a rectangular, unidirectionally projectile-blocking wall in front of the exosuit."
|
|
icon_state = "shield"
|
|
origin_tech = list(TECH_PHORON = 3, TECH_MAGNET = 6, TECH_ILLEGAL = 4)
|
|
equip_cooldown = 5
|
|
energy_drain = 20
|
|
range = 0
|
|
|
|
step_delay = 0.2
|
|
|
|
var/obj/item/shield_projector/line/exosuit/my_shield = null
|
|
var/my_shield_type = /obj/item/shield_projector/line/exosuit
|
|
var/icon/drone_overlay
|
|
|
|
equip_type = EQUIP_HULL
|
|
|
|
/obj/item/mecha_parts/mecha_equipment/combat_shield/Initialize(mapload)
|
|
. = ..()
|
|
my_shield = new my_shield_type
|
|
my_shield.shield_regen_delay = equip_cooldown
|
|
my_shield.my_tool = src
|
|
|
|
/obj/item/mecha_parts/mecha_equipment/combat_shield/critfail()
|
|
..()
|
|
my_shield.adjust_health(-200)
|
|
return
|
|
|
|
/obj/item/mecha_parts/mecha_equipment/combat_shield/Destroy()
|
|
chassis.cut_overlay(drone_overlay)
|
|
my_shield.forceMove(src)
|
|
my_shield.destroy_shields()
|
|
my_shield.my_tool = null
|
|
my_shield.my_mecha = null
|
|
qdel(my_shield)
|
|
my_shield = null
|
|
. = ..()
|
|
|
|
/obj/item/mecha_parts/mecha_equipment/combat_shield/add_equip_overlay(obj/mecha/M as obj)
|
|
..()
|
|
if(!drone_overlay)
|
|
drone_overlay = new(src.icon, icon_state = "shield_droid")
|
|
M.add_overlay(drone_overlay)
|
|
return
|
|
|
|
/obj/item/mecha_parts/mecha_equipment/combat_shield/attach(obj/mecha/M as obj)
|
|
..()
|
|
if(chassis)
|
|
my_shield.shield_health = 0
|
|
my_shield.my_mecha = chassis
|
|
my_shield.forceMove(chassis)
|
|
return
|
|
|
|
/obj/item/mecha_parts/mecha_equipment/combat_shield/detach()
|
|
chassis.cut_overlay(drone_overlay)
|
|
..()
|
|
my_shield.destroy_shields()
|
|
my_shield.my_mecha = null
|
|
my_shield.shield_health = my_shield.max_shield_health
|
|
my_shield.forceMove(src)
|
|
return
|
|
|
|
/obj/item/mecha_parts/mecha_equipment/combat_shield/handle_movement_action()
|
|
if(chassis)
|
|
my_shield.update_shield_positions()
|
|
return
|
|
|
|
/obj/item/mecha_parts/mecha_equipment/combat_shield/proc/toggle_shield()
|
|
if(chassis)
|
|
my_shield.attack_self(chassis.occupant)
|
|
if(my_shield.active)
|
|
set_ready_state(FALSE)
|
|
step_delay = 4
|
|
src.mecha_log_message("Activated.")
|
|
else
|
|
set_ready_state(TRUE)
|
|
step_delay = 1
|
|
src.mecha_log_message("Deactivated.")
|
|
|
|
/obj/item/mecha_parts/mecha_equipment/combat_shield/Topic(href, href_list)
|
|
..()
|
|
if(href_list["toggle_shield"])
|
|
toggle_shield()
|
|
return
|
|
|
|
/obj/item/mecha_parts/mecha_equipment/combat_shield/get_equip_info()
|
|
if(!chassis) return
|
|
return (equip_ready ? span_green("*") : span_red("*")) + " [src.name] - <a href='byond://?src=\ref[src];toggle_shield=1'>[my_shield.active?"Dea":"A"]ctivate</a>"
|