mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-20 10:37:17 +01:00
* Part 1
* Testing 1
* Revert "Testing 1"
This reverts commit fc06554b28.
* Part 1.1
* Part 2 - UI Style List
* Preferences lists
* Preferences lists - DONE
* More inputs
* MOOOOOORE
* UI style else
* Last ones
* Double name fix
* Pre-selected Search
* Return Pick Darkness
* Return Pick Darkness
* Missing users
* Some review changes
* Revert MULE lists
* I just hate MERGE CONFLICT label
* List window tweaks
* I think there it is
* why i am stopid
* Update tgui.bundle.js
97 lines
3.1 KiB
Plaintext
97 lines
3.1 KiB
Plaintext
/* Teleportation devices.
|
|
* Contains:
|
|
* Hand-tele
|
|
*/
|
|
|
|
|
|
/*
|
|
* Hand-tele
|
|
*/
|
|
/obj/item/hand_tele
|
|
name = "hand tele"
|
|
desc = "A portable item using bluespace technology."
|
|
icon = 'icons/obj/device.dmi'
|
|
icon_state = "hand_tele"
|
|
item_state = "electronic"
|
|
throwforce = 0
|
|
w_class = WEIGHT_CLASS_SMALL
|
|
throw_speed = 3
|
|
throw_range = 5
|
|
materials = list(MAT_METAL=10000)
|
|
origin_tech = "magnets=3;bluespace=4"
|
|
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 30, RAD = 0, FIRE = 100, ACID = 100)
|
|
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
|
var/icon_state_inactive = "hand_tele_inactive"
|
|
var/active_portals = 0
|
|
/// Variable contains next time hand tele can be used to make it not EMP proof
|
|
var/emp_timer = 0
|
|
|
|
/obj/item/hand_tele/Initialize(mapload)
|
|
. = ..()
|
|
RegisterSignal(src, COMSIG_PARENT_QDELETING, PROC_REF(alert_admins_on_destroy))
|
|
|
|
/obj/item/hand_tele/attack_self(mob/user)
|
|
var/turf/current_location = get_turf(user)//What turf is the user on?
|
|
if(emp_timer > world.time)
|
|
do_sparks(5, 0, loc)
|
|
to_chat(user, "<span class='warning'>[src] attempts to create a portal, but abruptly shuts off.</span>")
|
|
return
|
|
if(!current_location||!is_teleport_allowed(current_location.z))//If turf was not found or they're somewhere teleproof
|
|
to_chat(user, "<span class='notice'>\The [src] is malfunctioning.</span>")
|
|
return
|
|
var/list/L = list( )
|
|
for(var/obj/machinery/computer/teleporter/com in GLOB.machines)
|
|
if(com.target)
|
|
if(com.power_station && com.power_station.teleporter_hub && com.power_station.engaged)
|
|
L["[com.id] (Active)"] = com.target
|
|
else
|
|
L["[com.id] (Inactive)"] = com.target
|
|
var/list/turfs = list( )
|
|
var/area/A
|
|
for(var/turf/T in orange(10))
|
|
if(T.x>world.maxx-8 || T.x<8)
|
|
continue //putting them at the edge is dumb
|
|
if(T.y>world.maxy-8 || T.y<8)
|
|
continue
|
|
A = get_area(T)
|
|
if(A.tele_proof)
|
|
continue // Telescience-proofed areas require a beacon.
|
|
turfs += T
|
|
if(turfs.len)
|
|
L["None (Dangerous)"] = pick(turfs)
|
|
var/t1 = tgui_input_list(user, "Please select a teleporter to lock in on.", "Hand Teleporter", L)
|
|
if(!t1 || (!user.is_in_active_hand(src) || user.stat || user.restrained()))
|
|
return
|
|
if(active_portals >= 3)
|
|
user.show_message("<span class='notice'>\The [src] is recharging!</span>")
|
|
return
|
|
var/T = L[t1]
|
|
user.show_message("<span class='notice'>Locked In.</span>", 2)
|
|
var/obj/effect/portal/P = new /obj/effect/portal/hand_tele(get_turf(src), T, src, creation_mob = user)
|
|
try_move_adjacent(P)
|
|
active_portals++
|
|
add_fingerprint(user)
|
|
|
|
/obj/item/hand_tele/emp_act(severity)
|
|
make_inactive(severity)
|
|
return ..()
|
|
|
|
/obj/item/hand_tele/proc/make_inactive(severity)
|
|
icon_state = icon_state_inactive
|
|
var/time = rand(25 SECONDS, 30 SECONDS) * severity
|
|
emp_timer = world.time + time
|
|
addtimer(CALLBACK(src, PROC_REF(check_inactive), emp_timer), time)
|
|
|
|
/obj/item/hand_tele/proc/check_inactive(current_emp_timer)
|
|
if(emp_timer != current_emp_timer)
|
|
return
|
|
icon_state = initial(icon_state)
|
|
|
|
/obj/item/hand_tele/examine(mob/user)
|
|
. = ..()
|
|
if(emp_timer > world.time)
|
|
. += "<span class='warning'>It looks inactive.</span>"
|
|
|
|
/obj/item/hand_tele/portal_destroyed(obj/effect/portal/P)
|
|
active_portals--
|