mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 10:43:20 +00:00
cock
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
)
|
||||
@@ -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
|
||||
1039
code/game/objects/effects/semirandom_mobs_vr.dm
Normal file
1039
code/game/objects/effects/semirandom_mobs_vr.dm
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
22
code/game/objects/structures/flora/moretrees_vr.dm
Normal file
22
code/game/objects/structures/flora/moretrees_vr.dm
Normal 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)
|
||||
108
code/game/turfs/simulated/outdoors/outdoors_vr.dm
Normal file
108
code/game/turfs/simulated/outdoors/outdoors_vr.dm
Normal 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"
|
||||
@@ -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
|
||||
79
code/modules/awaymissions/gateway_vr.dm
Normal file
79
code/modules/awaymissions/gateway_vr.dm
Normal 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
|
||||
55
code/modules/economy/coins_vr.dm
Normal file
55
code/modules/economy/coins_vr.dm
Normal 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>"
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user