New Gateway Stuff!

Some new gateway things, it mostly works I just need to populate things and work out a couple kinks.
This commit is contained in:
VerySoft
2021-05-29 00:28:41 -04:00
parent 6dc1c76a74
commit fa6510f36c
42 changed files with 177974 additions and 14 deletions

View File

@@ -148,6 +148,13 @@ obj/machinery/gateway/centerstation/process()
if(dest)
M.forceMove(dest.loc)
M.set_dir(SOUTH)
//VOREStation Addition Start: Mcguffin time!
if(istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
if(!H.client)
awaygate.entrydetect()
//VOREStation Addition End: Mcguffin time!
//VOREStation Addition Start: Abduction!
if(istype(M, /mob/living) && dest.abductor)
var/mob/living/L = M
@@ -318,4 +325,4 @@ obj/machinery/gateway/centerstation/process()
else
to_chat(user, "<font color='blue'><b>Recalibration successful!</b>:</font><font color='black'> This gate's systems have been fine tuned. Travel to this gate will now be on target.</font>")
calibrated = 1
return
return

View File

@@ -0,0 +1,79 @@
//This gateway type takes a special item that you will have to find on the map to activate, instead of using a multitool//
/obj/machinery/gateway/centeraway/mcguffin
icon = 'icons/obj/machines/gateway_vr.dmi'
calibrated = 0
var/mcguffin_type = /obj/item/device/mcguffin/brass //you should be able to change the var to be whatever kind of path you like, so maybe you can use other things on it sometimes
var/key //holds a ref to the key we spawned
/obj/machinery/gateway/centeraway/mcguffin/attackby(obj/item/device/W as obj, mob/user as mob)
if(calibrated && stationgate)
to_chat(user, "<span class='info'>The gate is already configured, you should be able to activate it.</span>")
return
else if(!stationgate)
to_chat(user, "<span class='danger'>Error: Configuration failed. No destination found... That can't be good.</span>")
return
if(istype(W,mcguffin_type) && !calibrated)
to_chat(user, "<span class='emote'>As the device nears the gateway, mechanical clunks and whirrs can be heard. <br><font color='blue'><b>Configuration successful! </b></font><br>This gate's systems have been fine tuned. Travel to this gate will now be on target.</span>")
calibrated = 1
return
else
to_chat(user, "<span class='danger'>This device does not seem to interface correctly with the gateway. Perhaps you should try something else.</span>")
return
//If you use this kind of gateway you NEED one of these on the map or the players won't be able to leave//
//You should use the random spawner though so it won't always be in the same place//
/obj/item/device/mcguffin/brass
name = "mysterious brass device"
desc = "A curious object made of what appears to be brass and silver. Its purpose is unclear by looking at it. Perhaps it should be used with something of similar materials?"
icon = 'icons/obj/machines/gateway_vr.dmi'
icon_state = "mcguffin"
drop_sound = 'sound/items/drop/wrench.ogg'
pickup_sound = 'sound/items/pickup/wrench.ogg'
/obj/effect/landmark/mcguffin_spawner
name = "gateway key spawner"
icon = 'icons/mob/randomlandmarks.dmi'
icon_state = "key"
/obj/machinery/gateway/centeraway/proc/entrydetect()
return
/obj/machinery/gateway/centeraway/mcguffin/entrydetect()
if(key)
return
var/list/spawners = list()
for(var/obj/effect/landmark/mcguffin_spawner/sp in world)
spawners += sp
var/obj/effect/landmark/mcguffin_spawner/the_cool_one = pick(spawners)
var/atom/destination = get_turf(the_cool_one)
var/obj/structure/closet/CL = locate() in destination
if(CL)
destination = CL
if(!destination)
warning("A gateway is trying to spawn it's mcguffin but there are no mapped in spawner landmarks")
destination = get_turf(src)
key = new mcguffin_type(destination)
/obj/machinery/gateway/centeraway/mcguffin/Bumped(atom/movable/M as mob|obj)
if(!ready) return
if(!active) return
M.forceMove(get_step(stationgate.loc, SOUTH))
M.set_dir(SOUTH)
M << 'sound/effects/swooshygate.ogg'
playsound(src, 'sound/effects/swooshygate.ogg', 100, 1)
/obj/machinery/gateway/brass
name = "mysterious brass gateway"
desc = "A gateway of strange construction. It appears to be made primarily of materials resembling brass and silver."
icon = 'icons/obj/machines/gateway_vr.dmi'
//No, you can't digest the key to leave the gateway.
/obj/item/device/mcguffin/digest_act(var/atom/movable/item_storage = null)
return FALSE

View File

@@ -0,0 +1,55 @@
//Weird coins that I would prefer didn't work with normal vending machines. Might use them to make weird vending machines later.
/obj/item/weapon/aliencoin
icon = 'icons/obj/aliencoins.dmi'
name = "curious coin"
desc = "A curious triangular coin made primarily of some kind of dark, smooth metal. "
icon_state = "triangle"
randpixel = 8
force = 0.5
throwforce = 0.5
w_class = ITEMSIZE_TINY
slot_flags = SLOT_EARS
var/sides = 2
var/value = 1
drop_sound = 'sound/items/drop/ring.ogg'
pickup_sound = 'sound/items/pickup/ring.ogg'
/obj/item/weapon/aliencoin/New()
randpixel_xy()
/obj/item/weapon/aliencoin/gold
name = "curious coin"
icon_state = "triangle-g"
desc = "A curious triangular coin made primarily of some kind of dark, smooth metal. This one's markings appear to reveal a golden material underneath."
value = 3
/obj/item/weapon/aliencoin/silver
name = "curious coin"
icon_state = "triangle-s"
desc = "A curious triangular coin made primarily of some kind of dark, smooth metal. This one's markings appear to reveal a silver material underneath."
value = 2
/obj/item/weapon/aliencoin/phoron
name = "curious coin"
icon_state = "triangle-p"
desc = "A curious triangular coin made primarily of some kind of dark, smooth metal. This one's markings appear to reveal a purple material underneath."
value = 4
/obj/item/weapon/aliencoin/attack_self(mob/user as mob)
var/result = rand(1, sides)
var/comment = ""
if(result == 1)
comment = "tails"
else if(result == 2)
comment = "heads"
user.visible_message("<span class='notice'>[user] has thrown [src]. It lands on [comment]! </span>", runemessage = "[src] landed on [comment]")
if(rand(1,20) == 1)
user.visible_message("<span class='notice'>[user] fumbled the [src]!</span>", runemessage = "fumbles [src]")
user.remove_from_mob(src)
/obj/item/weapon/aliencoin/examine(var/mob/user)
. = ..()
if(Adjacent(user))
. += "<span class='notice'>It has some writing along its edge that seems to be some language that you are not familiar with. The face of the coin is very smooth, with what appears to be some kind of angular logo along the left side, and a couple of lines of the alien text along the opposite side. The reverse side is similarly smooth, the top of it features what appears to be some kind of vortex, surrounded by six stars, three on either side, with further swirls and intricate patterns along the bottom sections of this face. Looking closely, you can see that there is more text hidden among the swirls.</span>"

View File

@@ -17,6 +17,22 @@
"brightness" = 2.5,
"color" = "#EE9AC6"
),
list(
"brightness" = 1.5,
"color" = "#F07AD8"
),
list(
"brightness" = 1.5,
"color" = "#61AEF3"
),
list(
"brightness" = 1,
"color" = "#f3932d"
),
list(
"brightness" = 1,
"color" = "#631E8A"
list(
"brightness" = 1.0,
"color" = "#A3A291"
@@ -90,4 +106,70 @@
LC.update_gen = update_gen
LC.update_lumcount(lum_r, lum_g, lum_b)
update_gen--
qdel(src)
qdel(src)
/obj/effect/fake_sun/warm
name = "warm fake sun"
desc = "Deletes itself, but first updates all the lighting on outdoor turfs to warm colors."
possible_light_setups = list(
list(
"brightness" = 6.0,
"color" = "#E9FFB8"
),
list(
"brightness" = 4.0,
"color" = "#F4EA55"
),
list(
"brightness" = 1.0,
"color" = "#F07AD8"
),
list(
"brightness" = 1.0,
"color" = "#b4361f"
),
list(
"brightness" = 0.7,
"color" = "#f3932d"
),
list(
"brightness" = 0.1,
"color" = "#B92B00"
)
)
/obj/effect/fake_sun/cool
name = "fake sun"
desc = "Deletes itself, but first updates all the lighting on outdoor turfs to cool colors."
possible_light_setups = list(
list(
"brightness" = 6.0,
"color" = "#abfff7"
),
list(
"brightness" = 4.0,
"color" = "#2e30c9"
),
list(
"brightness" = 1.0,
"color" = "#61AEF3"
),
list(
"brightness" = 1.0,
"color" = "#61ddf3"
),
list(
"brightness" = 0.3,
"color" = "#253682"
),
list(
"brightness" = 0.1,
"color" = "#27024B"
)
)

View File

@@ -28,3 +28,10 @@
//Hooks need to return true otherwise they're considered having failed
return TRUE
//For making sure that if a mob is able to be joined by ghosts, that ghosts can't join it if it dies
/mob/living/simple_mob/death()
..()
ghostjoin = 0
active_ghost_pods -= src
ghostjoin_icon()

View File

@@ -129,7 +129,7 @@
B.digest_brute = 0.05
B.digest_burn = 0.05
B.mode_flags = 8
B.belly_fullscreen = "base"
B.belly_fullscreen = "a_tumby"
B.struggle_messages_inside = list(
"Your struggling only causes %pred's doughy gut to smother you against those wrinkled walls...",
"As you squirm, %pred's %belly flexxes over you heavily, forming you back into a small ball...",
@@ -169,6 +169,7 @@
icon_living = "cass"
icon_dead = "cass_dead"
icon_rest = "cass_rest"
ic_revivable = 0
faction = "theatre"
gender = PLURAL
@@ -244,4 +245,21 @@
ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting/threatening/woof
projectiletype = /obj/item/projectile/forcebolt/harmless/awoobolt
projectilesound = 'sound/voice/long_awoo.ogg'
projectilesound = 'sound/voice/long_awoo.ogg'
/mob/living/simple_mob/vore/woof/cass/attack_hand(mob/living/carbon/human/M as mob)
if(stat != DEAD)
return ..()
if(M.a_intent == I_HELP)
M.visible_message("[M] pets [src].", runemessage = "pets [src]")
if(do_after(M, 30 SECONDS, exclusive = 1, target = src))
faction = M.faction
revive()
sight = initial(sight)
see_in_dark = initial(see_in_dark)
see_invisible = initial(see_invisible)
update_icon()
visible_message("[src] stops playing dead.", runemessage = "[src] stops playing dead")
else
M.visible_message("The petting was interrupted!!!", runemessage = "The petting was interrupted")
return