This commit is contained in:
Aronai Sieyes
2021-06-17 00:52:45 -04:00
committed by Cadyn
parent b35d59cc5b
commit ac00965e68
43 changed files with 182043 additions and 22 deletions

View File

@@ -50,10 +50,10 @@ What is the naming convention for planes or layers?
#define PLANE_LOOKINGGLASS_IMG -77 // For the Looking Glass holodecks
// OPENSPACE_PLANE reserves all planes between OPENSPACE_PLANE_START and OPENSPACE_PLANE_END inclusive
#define OPENSPACE_PLANE -75 // /turf/simulated/open will use OPENSPACE_PLANE + z (Valid z's being 2 thru 17)
#define OPENSPACE_PLANE -75 // /turf/simulated/open will use OPENSPACE_PLANE + z (Valid z's being 2 thru 27) //VOREStation Edit
#define OPENSPACE_PLANE_START -73
#define OPENSPACE_PLANE_END -58
#define OVER_OPENSPACE_PLANE -57
#define OPENSPACE_PLANE_END -48 //VOREStation Edit
#define OVER_OPENSPACE_PLANE -47 //VOREStation Edit
// Turf Planes
#define PLATING_PLANE -44 // Plating

View File

@@ -6,6 +6,7 @@
#define GD_ONEITEM 2 // only one type of suit comes out of this dispenser.
#define GD_NOGREED 4 // no-one is allowed more than one item from this TYPE of dispenser unless emagged
#define GD_UNLIMITED 8 // will not deplete amount when gear is taken
#define GD_UNIQUE 16 // each instance of this will allow people to take 1 thing
var/list/dispenser_presets = list()
@@ -154,6 +155,8 @@ var/list/dispenser_presets = list()
var/datum/gear_disp/one_setting
var/global/list/gear_distributed_to = list()
var/dispenser_flags = GD_NOGREED|GD_UNLIMITED
var/unique_dispense_list = list()
var/needs_power = 0
//req_one_access = list(whatever) // Note that each gear datum can have access, too.
/obj/machinery/gear_dispenser/custom/emag_act(remaining_charges, mob/user, emag_source)
@@ -198,6 +201,9 @@ var/list/dispenser_presets = list()
/obj/machinery/gear_dispenser/proc/can_use(var/mob/living/carbon/human/user)
var/list/used_by = gear_distributed_to["[type]"]
if(needs_power && inoperable())
to_chat(user,"<span class='warning'>The machine does not respond to your prodding.</span>")
return 0
if(!istype(user))
to_chat(user,"<span class='warning'>You can't use this!</span>")
return 0
@@ -207,15 +213,19 @@ var/list/dispenser_presets = list()
if((dispenser_flags & GD_ONEITEM) && !(dispenser_flags & GD_UNLIMITED) && !one_setting.amount)
to_chat(user,"<span class='warning'>There's nothing in here!</span>")
return 0
if ((dispenser_flags & GD_NOGREED) && (weakref(user) in used_by) && !emagged)
to_chat(user,"<span class='warning'>You've already picked up your gear!</span>")
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0)
return 0
if(emagged)
if (!emagged)
if ((dispenser_flags & GD_NOGREED) && (user.ckey in used_by))
to_chat(user,"<span class='warning'>You've already picked up your gear!</span>")
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0)
return 0
if ((dispenser_flags & GD_UNIQUE) && (user.ckey in unique_dispense_list))
to_chat(user,"<span class='warning'>You've already picked up your gear!</span>")
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0)
return 0
else
audible_message("!'^&YouVE alreaDY pIC&$!Ked UP yOU%r Ge^!ar.")
playsound(src, 'sound/machines/buzz-sigh.ogg', 100, 0)
return 1
return 1
// And finally
if(allowed(user))
return 1
@@ -244,7 +254,10 @@ var/list/dispenser_presets = list()
else if(!(dispenser_flags & GD_UNLIMITED))
S.amount--
if((dispenser_flags & GD_NOGREED) && !emagged)
gear_distributed_to["[type]"] |= weakref(user)
gear_distributed_to["[type]"] |= user.ckey
if((dispenser_flags & GD_UNIQUE) && !emagged)
unique_dispense_list |= user.ckey
flick("[icon_state]-scan",src)
visible_message("\The [src] scans its user.", runemessage = "hums")
sleep(30)
@@ -528,3 +541,216 @@ var/list/dispenser_presets = list()
running[option_name] = G
to_chat(usr, "[src] added [running.len] entries")
dispenses = running
////////////////////////////// RANDOM SUIT AND WEAPON DISPENSERS ///////////////////////////
/obj/machinery/gear_dispenser/randomvoidsuit
name = "Suit Dispenser"
desc = "An industrial U-Tak-It Dispenser unit designed to fetch voidsuits."
icon_state = "suitdispenserAL"
dispenser_flags = GD_ONEITEM|GD_NOGREED
one_setting = /datum/gear_disp/voidsuit/random
/datum/gear_disp/voidsuit/random
name = "Voidsuit"
to_spawn = list()
amount = 4
/datum/gear_disp/voidsuit/random/spawn_gear(var/turf/T, var/mob/living/carbon/user)
// I copied these from the /obj/random/multiple/voidsuit, but added the "suit" and "helmet"
var/list/choice = pick(
prob(5);list(
"suit" = /obj/item/clothing/suit/space/void,
"helmet" = /obj/item/clothing/head/helmet/space/void
),
prob(5);list(
"suit" = /obj/item/clothing/suit/space/void/atmos,
"helmet" = /obj/item/clothing/head/helmet/space/void/atmos
),
prob(5);list(
"suit" = /obj/item/clothing/suit/space/void/atmos/alt,
"helmet" = /obj/item/clothing/head/helmet/space/void/atmos/alt
),
prob(5);list(
"suit" = /obj/item/clothing/suit/space/void/engineering,
"helmet" = /obj/item/clothing/head/helmet/space/void/engineering
),
prob(5);list(
"suit" = /obj/item/clothing/suit/space/void/engineering/alt,
"helmet" = /obj/item/clothing/head/helmet/space/void/engineering/alt
),
prob(5);list(
"suit" = /obj/item/clothing/suit/space/void/engineering/hazmat,
"helmet" = /obj/item/clothing/head/helmet/space/void/engineering/hazmat
),
prob(5);list(
"suit" = /obj/item/clothing/suit/space/void/engineering/construction,
"helmet" = /obj/item/clothing/head/helmet/space/void/engineering/construction
),
prob(5);list(
"suit" = /obj/item/clothing/suit/space/void/engineering/salvage,
"helmet" = /obj/item/clothing/head/helmet/space/void/engineering/salvage
),
prob(5);list(
"suit" = /obj/item/clothing/suit/space/void/medical,
"helmet" = /obj/item/clothing/head/helmet/space/void/medical
),
prob(5);list(
"suit" = /obj/item/clothing/suit/space/void/medical/alt,
"helmet" = /obj/item/clothing/head/helmet/space/void/medical/alt
),
prob(5);list(
"suit" = /obj/item/clothing/suit/space/void/medical/bio,
"helmet" = /obj/item/clothing/head/helmet/space/void/medical/bio
),
prob(5);list(
"suit" = /obj/item/clothing/suit/space/void/medical/emt,
"helmet" = /obj/item/clothing/head/helmet/space/void/medical/emt
),
prob(5);list(
"suit" = /obj/item/clothing/suit/space/void/merc,
"helmet" = /obj/item/clothing/head/helmet/space/void/merc
),
prob(5);list(
"suit" = /obj/item/clothing/suit/space/void/merc/fire,
"helmet" = /obj/item/clothing/head/helmet/space/void/merc/fire
),
prob(5);list(
"suit" = /obj/item/clothing/suit/space/void/mining,
"helmet" = /obj/item/clothing/head/helmet/space/void/mining
),
prob(5);list(
"suit" = /obj/item/clothing/suit/space/void/mining/alt,
"helmet" = /obj/item/clothing/head/helmet/space/void/mining/alt
),
prob(5);list(
"suit" = /obj/item/clothing/suit/space/void/security,
"helmet" = /obj/item/clothing/head/helmet/space/void/security
),
prob(5);list(
"suit" = /obj/item/clothing/suit/space/void/security/alt,
"helmet" = /obj/item/clothing/head/helmet/space/void/security/alt
),
prob(5);list(
"suit" = /obj/item/clothing/suit/space/void/security/riot,
"helmet" = /obj/item/clothing/head/helmet/space/void/security/riot
),
prob(5);list(
"suit" = /obj/item/clothing/suit/space/void/exploration,
"helmet" = /obj/item/clothing/head/helmet/space/void/exploration
),
prob(5);list(
"suit" = /obj/item/clothing/suit/space/void/pilot,
"helmet" = /obj/item/clothing/head/helmet/space/void/pilot
))
voidsuit_type = choice["suit"]
voidhelmet_type = choice["helmet"]
return ..()
/obj/machinery/gear_dispenser/randomweapons
name = "Weapon Dispenser"
desc = "An industrial U-Tak-It Dispenser unit designed to fetch weapons."
dispenser_flags = GD_ONEITEM|GD_NOGREED
one_setting = /datum/gear_disp/randomweapons
/datum/gear_disp/randomweapons
name = "Weapon"
amount = 2
/datum/gear_disp/randomweapons/spawn_gear(var/turf/T, var/mob/living/carbon/user)
var/choice = pick(
prob(3);/obj/random/multiple/gun/projectile/handgun,
prob(2);/obj/random/multiple/gun/projectile/smg,
prob(2);/obj/random/multiple/gun/projectile/shotgun,
prob(1);/obj/random/multiple/gun/projectile/rifle)
to_spawn = list(choice)
return ..()
///////////////////Adventure Box//////////////////////////
/obj/machinery/gear_dispenser/adventure_box
name = "Dispenser"
desc = "An industrial U-Tak-It Dispenser unit designed to fetch items that one might need in dangerous scenarios!"
dispenser_flags = GD_UNIQUE
dispenses = list(
/datum/gear_disp/adventure_box/awayloot,
/datum/gear_disp/adventure_box/food,
/datum/gear_disp/adventure_box/medical,
/datum/gear_disp/adventure_box/tools,
/datum/gear_disp/adventure_box/armor,
/datum/gear_disp/adventure_box/light
)
var/chance_to_delete = 0
/obj/machinery/gear_dispenser/adventure_box/Initialize()
. = ..()
if(prob(chance_to_delete))
return INITIALIZE_HINT_QDEL
/datum/gear_disp/adventure_box/medical
name = "Medkit"
to_spawn = list(/obj/random/firstaid)
amount = 2
/datum/gear_disp/adventure_box/awayloot
name = "Curious Item"
to_spawn = list(/obj/random/awayloot/nofail)
amount = 5
/datum/gear_disp/adventure_box/food
name = "Food Plate"
to_spawn = list(
/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar,
/obj/item/weapon/reagent_containers/food/snacks/no_raisin,
/obj/item/weapon/reagent_containers/food/drinks/tea
)
amount = 10
/datum/gear_disp/adventure_box/tools
name = "Tools"
to_spawn = list(
/obj/random/tool,
/obj/random/tool,
/obj/random/tool,
/obj/item/weapon/storage/belt/utility
)
amount = 5
/datum/gear_disp/adventure_box/armor
name = "Armor"
to_spawn = list(
/obj/item/clothing/suit/armor/vest,
/obj/item/clothing/head/helmet/bulletproof,
/obj/item/clothing/shoes/boots/jackboots
)
amount = 1
/datum/gear_disp/adventure_box/light
name = "Flashlight"
to_spawn = list(/obj/item/device/flashlight/maglight)
amount = 2
/datum/gear_disp/adventure_box/weapon
name = "Ranged Weapon"
amount = 1
//from /obj/random/projectile/random
/datum/gear_disp/adventure_box/weapon/spawn_gear(var/turf/T, var/mob/living/carbon/user)
var/choice = pick(
prob(3);/obj/random/multiple/gun/projectile/handgun,
prob(2);/obj/random/multiple/gun/projectile/smg,
prob(2);/obj/random/multiple/gun/projectile/shotgun,
prob(1);/obj/random/multiple/gun/projectile/rifle)
to_spawn = list(choice)
return ..()
/obj/machinery/gear_dispenser/adventure_box/weapon
dispenses = list(
/datum/gear_disp/adventure_box/awayloot,
/datum/gear_disp/adventure_box/food,
/datum/gear_disp/adventure_box/medical,
/datum/gear_disp/adventure_box/tools,
/datum/gear_disp/adventure_box/armor,
/datum/gear_disp/adventure_box/light,
/datum/gear_disp/adventure_box/weapon
)

View File

@@ -26,4 +26,14 @@
/obj/effect/map_effect/perma_light/concentrated/incandescent
name = "permanent light (concentrated incandescent)"
light_color = LIGHT_COLOR_INCANDESCENT_TUBE
light_color = LIGHT_COLOR_INCANDESCENT_TUBE
// VOREStation Addition Start
/obj/effect/map_effect/perma_light/gateway
name = "permanent light (gateway)"
icon_state = "permalight"
light_range = 10
light_power = 5
light_color = "#b6cdff"
// VOREStation Addition End

File diff suppressed because it is too large Load Diff

View File

@@ -116,7 +116,10 @@
if(do_after(user, revive_time, exclusive = 1, target = target))
target.faction = user.faction
target.revivedby = user.name
<<<<<<< HEAD
target.ai_holder.returns_home = FALSE
=======
>>>>>>> 11e76bde920 (Merge pull request #10476 from Very-Soft/Gatewaytime)
target.revive()
target.sight = initial(target.sight)
target.see_in_dark = initial(target.see_in_dark)

View File

@@ -1345,6 +1345,28 @@
/obj/random/multiple/large_corp_crate
)
)
//VOREStation Add - Random good, no guns gooder
/obj/random/multiple/random_size_crate/no_weapons
name = "random size corporate crate (no weapons)"
desc = "A random size corporate crate with thematic contents: prefers small crates."
icon = 'icons/obj/storage.dmi'
icon_state = "largermetal"
spawn_nothing_percentage = 50
/obj/random/multiple/random_size_crate/no_weapons/item_to_spawn()
return pick(
prob(85);list(
/obj/random/multiple/corp_crate/no_weapons
),
prob(15);list(
/obj/random/multiple/large_corp_crate/no_weapons
)
)
/obj/random/multiple/random_size_crate/no_weapons/nofail
spawn_nothing_percentage = 0
//VOREStation Add End
/*
* Turf swappers.
*/

View File

@@ -249,6 +249,7 @@
prob(8);/obj/item/weapon/storage/firstaid/o2,
prob(6);/obj/item/weapon/storage/firstaid/adv,
prob(8);/obj/item/weapon/storage/firstaid/fire,
prob(1);/obj/item/device/denecrotizer/medical, //VOREStation Add,
prob(1);/obj/item/weapon/storage/firstaid/combat)
/obj/random/contraband

View File

@@ -8,4 +8,44 @@
/obj/random/explorer_shield/item_to_spawn()
return pick(/obj/item/weapon/shield/riot/explorer,
/obj/item/weapon/shield/riot/explorer/purple)
/obj/item/weapon/shield/riot/explorer/purple)
/obj/random/awayloot
name = "random away mission loot"
desc = "A list of things that people can find in away missions."
icon = 'icons/mob/randomlandmarks.dmi'
icon_state = "awayloot"
spawn_nothing_percentage = 50
/obj/random/awayloot/item_to_spawn()
return pick(prob(50);/obj/item/weapon/aliencoin,
prob(40);/obj/item/weapon/aliencoin/silver,
prob(30);/obj/item/weapon/aliencoin/gold,
prob(20);/obj/item/weapon/aliencoin/phoron,
prob(10);/obj/item/device/denecrotizer,
prob(5);/obj/item/device/perfect_tele,
prob(5);/obj/item/weapon/bluespace_harpoon,
prob(1);/obj/item/weapon/cell/infinite,
prob(1);/obj/item/weapon/cell/void,
prob(1);/obj/item/weapon/cell/device/weapon/recharge/alien,
prob(1);/obj/item/clothing/shoes/boots/speed,
prob(1);/obj/item/device/nif,
prob(1);/obj/item/device/paicard,
prob(2);/obj/item/weapon/storage/backpack/dufflebag/syndie,
prob(2);/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo,
prob(2);/obj/item/weapon/storage/backpack/dufflebag/syndie/med,
prob(2);/obj/item/clothing/mask/gas/voice,
prob(2);/obj/item/device/radio_jammer,
prob(1);/obj/item/toy/bosunwhistle,
prob(1);/obj/item/weapon/bananapeel,
prob(5);/obj/fiftyspawner/platinum,
prob(3);/obj/fiftyspawner/gold,
prob(3);/obj/fiftyspawner/silver,
prob(1);/obj/fiftyspawner/diamond,
prob(5);/obj/fiftyspawner/phoron,
prob(1);/obj/item/weapon/telecube/randomized
)
/obj/random/awayloot/nofail
name = "garunteed random away mission loot"
spawn_nothing_percentage = 0

View File

@@ -257,4 +257,8 @@
prob(5);/obj/item/weapon/rig/eva,
prob(4);/obj/item/weapon/rig/light/stealth,
prob(3);/obj/item/weapon/rig/hazard,
prob(1);/obj/item/weapon/rig/merc/empty)
prob(1);/obj/item/weapon/rig/merc/empty)
//VOREStation Add Start
/obj/random/rigsuit/chancetofail
spawn_nothing_percentage = 50
//VOREStation Add End

View File

@@ -0,0 +1,22 @@
/obj/structure/flora/tree/bigtree
icon = 'icons/obj/flora/moretrees_vr.dmi'
icon_state = "bigtree1"
base_state = "tree"
product = /obj/item/stack/material/log
product_amount = 20
health = 2000
max_health = 2000
pixel_x = -65
pixel_y = -8
layer = MOB_LAYER - 1
shake_animation_degrees = 2
/obj/structure/flora/tree/bigtree/choose_icon_state()
return "[base_state][rand(1, 4)]"
/obj/structure/flora/tree/bigtree/Initialize()
. = ..()
var/image/i = image('icons/obj/flora/moretrees_vr.dmi', "[icon_state]-b")
i.plane = ABOVE_MOB_PLANE
add_overlay(i)

View File

@@ -0,0 +1,108 @@
/turf/simulated/floor/tiled/asteroid_steel/outdoors
name = "weathered tiles"
desc = "Old tiles left out in the elements."
outdoors = 1
edge_blending_priority = 1
/turf/simulated/floor/outdoors/newdirt
name = "dirt"
desc = "Looks dirty."
icon = 'icons/turf/outdoors_vr.dmi'
icon_state = "dirt0"
edge_blending_priority = 2
initial_flooring = /decl/flooring/outdoors/newdirt
/decl/flooring/outdoors/newdirt
name = "dirt"
desc = "Looks dirty."
icon = 'icons/turf/outdoors_vr.dmi'
icon_base = "dirt0"
footstep_sounds = list("human" = list(
'sound/effects/footstep/asteroid1.ogg',
'sound/effects/footstep/asteroid2.ogg',
'sound/effects/footstep/asteroid3.ogg',
'sound/effects/footstep/asteroid4.ogg',
'sound/effects/footstep/asteroid5.ogg',
'sound/effects/footstep/MedDirt1.ogg',
'sound/effects/footstep/MedDirt2.ogg',
'sound/effects/footstep/MedDirt3.ogg',
'sound/effects/footstep/MedDirt4.ogg'))
/turf/simulated/floor/outdoors/newdirt/Initialize(mapload)
var/possibledirts = list(
"dirt0" = 150,
"dirt1" = 25,
"dirt2" = 25,
"dirt3" = 10,
"dirt4" = 3,
"dirt5" = 3,
"dirt6" = 1,
"dirt7" = 25,
"dirt8" = 10,
"dirt9" = 25
)
flooring_override = pickweight(possibledirts)
return ..()
/turf/simulated/floor/outdoors/newdirt_nograss
name = "dirt"
desc = "Looks dirty."
icon = 'icons/turf/outdoors_vr.dmi'
icon_state = "dirt0"
edge_blending_priority = 2
initial_flooring = /decl/flooring/outdoors/newdirt
/turf/simulated/floor/outdoors/newdirt_nograss/Initialize(mapload)
var/possibledirts = list(
"dirt0" = 200,
"dirt3" = 20,
"dirt4" = 3,
"dirt5" = 3,
"dirt6" = 1
)
flooring_override = pickweight(possibledirts)
return ..()
/turf/simulated/floor/outdoors/sidewalk
name = "sidewalk"
desc = "Concrete shaped into a path!"
icon = 'icons/turf/outdoors_vr.dmi'
icon_state = "sidewalk"
edge_blending_priority = 1
movement_cost = -0.5
initial_flooring = /decl/flooring/outdoors/sidewalk
/decl/flooring/outdoors/sidewalk
name = "sidewalk"
desc = "Concrete shaped into a path!"
icon = 'icons/turf/outdoors_vr.dmi'
icon_base = "sidewalk"
footstep_sounds = list("human" = list(
'sound/effects/footstep/LightStone1.ogg',
'sound/effects/footstep/LightStone2.ogg',
'sound/effects/footstep/LightStone3.ogg',
'sound/effects/footstep/LightStone4.ogg',))
/turf/simulated/floor/outdoors/sidewalk/Initialize(mapload)
var/possibledirts = list(
"[initial(icon_state)]" = 150,
"[initial(icon_state)]1" = 3,
"[initial(icon_state)]2" = 3,
"[initial(icon_state)]3" = 3,
"[initial(icon_state)]4" = 3,
"[initial(icon_state)]5" = 3,
"[initial(icon_state)]6" = 2,
"[initial(icon_state)]7" = 2,
"[initial(icon_state)]8" = 2,
"[initial(icon_state)]9" = 2,
"[initial(icon_state)]10" = 2
)
flooring_override = pickweight(possibledirts)
return ..()
/turf/simulated/floor/outdoors/sidewalk/side
icon_state = "side-walk"
/turf/simulated/floor/outdoors/sidewalk/slab
icon_state = "slab"

View File

@@ -148,6 +148,61 @@ obj/machinery/gateway/centerstation/process()
if(dest)
M.forceMove(dest.loc)
M.set_dir(SOUTH)
<<<<<<< HEAD
=======
//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
//Situations to get the mob out of
if(L.buckled)
L.buckled.unbuckle_mob()
if(istype(L.loc,/obj/mecha))
var/obj/mecha/ME = L.loc
ME.go_out()
else if(istype(L.loc,/obj/machinery/sleeper))
var/obj/machinery/sleeper/SL = L.loc
SL.go_out()
else if(istype(L.loc,/obj/machinery/recharge_station))
var/obj/machinery/recharge_station/RS = L.loc
RS.go_out()
if(!issilicon(L)) //Don't drop borg modules...
var/list/mob_contents = list() //Things which are actually drained as a result of the above not being null.
mob_contents |= L // The recursive check below does not add the object being checked to its list.
mob_contents |= recursive_content_check(L, mob_contents, recursion_limit = 3, client_check = 0, sight_check = 0, include_mobs = 1, include_objects = 1, ignore_show_messages = 1)
for(var/obj/item/weapon/holder/I in mob_contents)
var/obj/item/weapon/holder/H = I
var/mob/living/MI = H.held_mob
MI.forceMove(get_turf(H))
if(!issilicon(MI)) //Don't drop borg modules...
for(var/obj/item/II in MI)
if(istype(II,/obj/item/weapon/implant) || istype(II,/obj/item/device/nif))
continue
MI.drop_from_inventory(II, dest.loc)
var/obj/effect/landmark/finaldest = pick(awayabductors)
MI.forceMove(finaldest.loc)
sleep(1)
MI.Paralyse(10)
MI << 'sound/effects/bamf.ogg'
to_chat(MI,"<span class='warning'>You're starting to come to. You feel like you've been out for a few minutes, at least...</span>")
for(var/obj/item/I in L)
if(istype(I,/obj/item/weapon/implant) || istype(I,/obj/item/device/nif))
continue
L.drop_from_inventory(I, dest.loc)
var/obj/effect/landmark/finaldest = pick(awayabductors)
L.forceMove(finaldest.loc)
sleep(1)
L.Paralyse(10)
L << 'sound/effects/bamf.ogg'
to_chat(L,"<span class='warning'>You're starting to come to. You feel like you've been out for a few minutes, at least...</span>")
//VOREStation Addition End
>>>>>>> 11e76bde920 (Merge pull request #10476 from Very-Soft/Gatewaytime)
return
/obj/machinery/gateway/centerstation/attackby(obj/item/device/W as obj, mob/user as mob)
@@ -273,4 +328,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

@@ -107,11 +107,26 @@
if(T.outdoors)
turfs_to_use += T
<<<<<<< HEAD
if(!turfs_to_use.len)
warning("Fake sun placed on a level where it can't find any outdoor turfs to color at [x],[y],[z].")
return
fake_sun.update_corners(turfs_to_use)
=======
for(var/turf/simulated/T as anything in turfs)
if(!T.lighting_overlay)
T.lighting_build_overlay()
if(!T.outdoors)
continue
for(var/C in T.get_corners())
var/datum/lighting_corner/LC = C
if(LC.update_gen != update_gen && LC.active)
LC.update_gen = update_gen
LC.update_lumcount(lum_r, lum_g, lum_b)
update_gen--
qdel(src)
>>>>>>> 11e76bde920 (Merge pull request #10476 from Very-Soft/Gatewaytime)
/obj/effect/fake_sun/warm
name = "warm fake sun"
@@ -177,4 +192,8 @@
"brightness" = 0.1,
"color" = "#27024B"
)
<<<<<<< HEAD
)
=======
)
>>>>>>> 11e76bde920 (Merge pull request #10476 from Very-Soft/Gatewaytime)

View File

@@ -28,4 +28,14 @@
//Hooks need to return true otherwise they're considered having failed
return TRUE
*/
<<<<<<< HEAD
*/
=======
//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()
>>>>>>> 11e76bde920 (Merge pull request #10476 from Very-Soft/Gatewaytime)

View File

@@ -131,7 +131,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...",
@@ -171,6 +171,7 @@
icon_living = "cass"
icon_dead = "cass_dead"
icon_rest = "cass_rest"
ic_revivable = 0
faction = "theatre"
gender = PLURAL
@@ -246,4 +247,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