* maps - none of our changes included yet i'll get them in after i finish up the rest of the sync * sync part 1 - underscore folders in code * controllers folder * datums folder * game folder * cmon, work * modules - admin to awaymissions * cargo to events * fields to lighting * mapping > ruins * rest of the code folder * rest of the folders in the root directory * DME * fixes compiling errors. it compiles so it works * readds map changes * fixes dogborg module select * fixes typo in moduleselect_alternate_icon filepath
98 lines
3.6 KiB
Plaintext
98 lines
3.6 KiB
Plaintext
/**********************Jaunter**********************/
|
|
/obj/item/wormhole_jaunter
|
|
name = "wormhole jaunter"
|
|
desc = "A single use device harnessing outdated wormhole technology, Nanotrasen has since turned its eyes to blue space for more accurate teleportation. The wormholes it creates are unpleasant to travel through, to say the least.\nThanks to modifications provided by the Free Golems, this jaunter can be worn on the belt to provide protection from chasms."
|
|
icon = 'icons/obj/mining.dmi'
|
|
icon_state = "Jaunter"
|
|
item_state = "electronic"
|
|
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
|
|
throwforce = 0
|
|
w_class = WEIGHT_CLASS_SMALL
|
|
throw_speed = 3
|
|
throw_range = 5
|
|
slot_flags = ITEM_SLOT_BELT
|
|
|
|
/obj/item/wormhole_jaunter/attack_self(mob/user)
|
|
user.visible_message("<span class='notice'>[user.name] activates the [src.name]!</span>")
|
|
SSblackbox.record_feedback("tally", "jaunter", 1, "User") // user activated
|
|
activate(user, TRUE)
|
|
|
|
/obj/item/wormhole_jaunter/proc/turf_check(mob/user)
|
|
var/turf/device_turf = get_turf(user)
|
|
if(!device_turf || is_centcom_level(device_turf.z) || is_transit_level(device_turf.z))
|
|
to_chat(user, "<span class='notice'>You're having difficulties getting the [src.name] to work.</span>")
|
|
return FALSE
|
|
return TRUE
|
|
|
|
/obj/item/wormhole_jaunter/proc/get_destinations(mob/user)
|
|
var/list/destinations = list()
|
|
|
|
for(var/obj/item/beacon/B in GLOB.teleportbeacons)
|
|
var/turf/T = get_turf(B)
|
|
if(is_station_level(T.z))
|
|
destinations += B
|
|
|
|
return destinations
|
|
|
|
/obj/item/wormhole_jaunter/proc/activate(mob/user, adjacent)
|
|
if(!turf_check(user))
|
|
return
|
|
|
|
var/list/L = get_destinations(user)
|
|
if(!L.len)
|
|
to_chat(user, "<span class='notice'>The [src.name] found no beacons in the world to anchor a wormhole to.</span>")
|
|
return
|
|
var/chosen_beacon = pick(L)
|
|
var/obj/effect/portal/jaunt_tunnel/J = new (get_turf(src), src, 100, null, FALSE, get_turf(chosen_beacon))
|
|
if(adjacent)
|
|
try_move_adjacent(J)
|
|
playsound(src,'sound/effects/sparks4.ogg',50,1)
|
|
qdel(src)
|
|
|
|
/obj/item/wormhole_jaunter/emp_act(power)
|
|
. = ..()
|
|
if(. & EMP_PROTECT_SELF)
|
|
return
|
|
var/triggered = FALSE
|
|
|
|
if(usr.get_item_by_slot(SLOT_BELT) == src)
|
|
if(power == 1)
|
|
triggered = TRUE
|
|
else if(power == 2 && prob(50))
|
|
triggered = TRUE
|
|
|
|
if(triggered)
|
|
usr.visible_message("<span class='warning'>[src] overloads and activates!</span>")
|
|
SSblackbox.record_feedback("tally", "jaunter", 1, "EMP") // EMP accidental activation
|
|
activate(usr)
|
|
|
|
/obj/item/wormhole_jaunter/proc/chasm_react(mob/user)
|
|
if(user.get_item_by_slot(SLOT_BELT) == src)
|
|
to_chat(user, "Your [name] activates, saving you from the chasm!</span>")
|
|
SSblackbox.record_feedback("tally", "jaunter", 1, "Chasm") // chasm automatic activation
|
|
activate(user, FALSE)
|
|
else
|
|
to_chat(user, "[src] is not attached to your belt, preventing it from saving you from the chasm. RIP.</span>")
|
|
|
|
//jaunter tunnel
|
|
/obj/effect/portal/jaunt_tunnel
|
|
name = "jaunt tunnel"
|
|
icon = 'icons/effects/effects.dmi'
|
|
icon_state = "bhole3"
|
|
desc = "A stable hole in the universe made by a wormhole jaunter. Turbulent doesn't even begin to describe how rough passage through one of these is, but at least it will always get you somewhere near a beacon."
|
|
mech_sized = TRUE //save your ripley
|
|
innate_accuracy_penalty = 6
|
|
|
|
/obj/effect/portal/jaunt_tunnel/teleport(atom/movable/M)
|
|
. = ..()
|
|
if(.)
|
|
// KERPLUNK
|
|
playsound(M,'sound/weapons/resonator_blast.ogg',50,1)
|
|
if(iscarbon(M))
|
|
var/mob/living/carbon/L = M
|
|
L.Knockdown(60)
|
|
if(ishuman(L))
|
|
shake_camera(L, 20, 1)
|
|
addtimer(CALLBACK(L, /mob/living/carbon.proc/vomit), 20)
|