mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-20 03:26:37 +01:00
Merge branch 'dev' of https://github.com/Baystation12/Baystation12 into item-color
Conflicts: code/game/machinery/washing_machine.dm code/modules/mob/living/carbon/human/update_icons.dm
This commit is contained in:
@@ -1,21 +1,3 @@
|
||||
var/global/list/holodeck_programs = list(
|
||||
"emptycourt" = /area/holodeck/source_emptycourt, \
|
||||
"boxingcourt" = /area/holodeck/source_boxingcourt, \
|
||||
"basketball" = /area/holodeck/source_basketball, \
|
||||
"thunderdomecourt" = /area/holodeck/source_thunderdomecourt, \
|
||||
"beach" = /area/holodeck/source_beach, \
|
||||
"desert" = /area/holodeck/source_desert, \
|
||||
"space" = /area/holodeck/source_space, \
|
||||
"picnicarea" = /area/holodeck/source_picnicarea, \
|
||||
"snowfield" = /area/holodeck/source_snowfield, \
|
||||
"theatre" = /area/holodeck/source_theatre, \
|
||||
"meetinghall" = /area/holodeck/source_meetinghall, \
|
||||
"courtroom" = /area/holodeck/source_courtroom, \
|
||||
"burntest" = /area/holodeck/source_burntest, \
|
||||
"wildlifecarp" = /area/holodeck/source_wildlife, \
|
||||
"turnoff" = /area/holodeck/source_plating \
|
||||
)
|
||||
|
||||
/obj/machinery/computer/HolodeckControl
|
||||
name = "holodeck control console"
|
||||
desc = "A computer used to control a nearby holodeck."
|
||||
@@ -113,9 +95,7 @@ var/global/list/holodeck_programs = list(
|
||||
if(href_list["program"])
|
||||
var/prog = href_list["program"]
|
||||
if(prog in holodeck_programs)
|
||||
target = locate(holodeck_programs[prog])
|
||||
if(target)
|
||||
loadProgram(target)
|
||||
loadProgram(holodeck_programs[prog])
|
||||
|
||||
else if(href_list["AIoverride"])
|
||||
if(!issilicon(usr))
|
||||
@@ -172,13 +152,9 @@ var/global/list/holodeck_programs = list(
|
||||
/obj/machinery/computer/HolodeckControl/New()
|
||||
..()
|
||||
linkedholodeck = locate(/area/holodeck/alphadeck)
|
||||
//if(linkedholodeck)
|
||||
// target = locate(/area/holodeck/source_emptycourt)
|
||||
// if(target)
|
||||
// loadProgram(target)
|
||||
|
||||
//This could all be done better, but it works for now.
|
||||
/obj/machinery/computer/HolodeckControl/Del()
|
||||
/obj/machinery/computer/HolodeckControl/Destroy()
|
||||
emergencyShutdown()
|
||||
..()
|
||||
|
||||
@@ -225,9 +201,7 @@ var/global/list/holodeck_programs = list(
|
||||
|
||||
if(!checkInteg(linkedholodeck))
|
||||
damaged = 1
|
||||
target = locate(/area/holodeck/source_plating)
|
||||
if(target)
|
||||
loadProgram(target)
|
||||
loadProgram(holodeck_programs["turnoff"], 0)
|
||||
active = 0
|
||||
use_power = 1
|
||||
for(var/mob/M in range(10,src))
|
||||
@@ -257,7 +231,7 @@ var/global/list/holodeck_programs = list(
|
||||
if(!silent)
|
||||
var/obj/oldobj = obj
|
||||
visible_message("The [oldobj.name] fades away!")
|
||||
del(obj)
|
||||
qdel(obj)
|
||||
|
||||
/obj/machinery/computer/HolodeckControl/proc/checkInteg(var/area/A)
|
||||
for(var/turf/T in A)
|
||||
@@ -268,46 +242,33 @@ var/global/list/holodeck_programs = list(
|
||||
|
||||
//Why is it called toggle if it doesn't toggle?
|
||||
/obj/machinery/computer/HolodeckControl/proc/togglePower(var/toggleOn = 0)
|
||||
|
||||
if(toggleOn)
|
||||
var/area/targetsource = locate(/area/holodeck/source_emptycourt)
|
||||
holographic_objs = targetsource.copy_contents_to(linkedholodeck)
|
||||
|
||||
spawn(30)
|
||||
for(var/obj/effect/landmark/L in linkedholodeck)
|
||||
if(L.name=="Atmospheric Test Start")
|
||||
spawn(20)
|
||||
var/turf/T = get_turf(L)
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(2, 1, T)
|
||||
s.start()
|
||||
if(T)
|
||||
T.temperature = 5000
|
||||
T.hotspot_expose(50000,50000,1)
|
||||
|
||||
active = 1
|
||||
use_power = 2
|
||||
loadProgram(holodeck_programs["emptycourt"], 0)
|
||||
else
|
||||
for(var/item in holographic_objs)
|
||||
derez(item)
|
||||
loadProgram(holodeck_programs["turnoff"], 0)
|
||||
|
||||
if(!linkedholodeck.has_gravity)
|
||||
linkedholodeck.gravitychange(1,linkedholodeck)
|
||||
|
||||
var/area/targetsource = locate(/area/holodeck/source_plating)
|
||||
targetsource.copy_contents_to(linkedholodeck , 1)
|
||||
active = 0
|
||||
use_power = 1
|
||||
|
||||
|
||||
/obj/machinery/computer/HolodeckControl/proc/loadProgram(var/area/A)
|
||||
/obj/machinery/computer/HolodeckControl/proc/loadProgram(var/datum/holodeck_program/HP, var/check_delay = 1)
|
||||
if(!HP)
|
||||
return
|
||||
var/area/A = locate(HP.target)
|
||||
if(!A)
|
||||
return
|
||||
|
||||
if(world.time < (last_change + 25))
|
||||
if(world.time < (last_change + 15))//To prevent super-spam clicking, reduced process size and annoyance -Sieve
|
||||
return
|
||||
for(var/mob/M in range(3,src))
|
||||
M.show_message("\b ERROR. Recalibrating projection apparatus.")
|
||||
last_change = world.time
|
||||
return
|
||||
if(check_delay)
|
||||
if(world.time < (last_change + 25))
|
||||
if(world.time < (last_change + 15))//To prevent super-spam clicking, reduced process size and annoyance -Sieve
|
||||
return
|
||||
for(var/mob/M in range(3,src))
|
||||
M.show_message("\b ERROR. Recalibrating projection apparatus.")
|
||||
last_change = world.time
|
||||
return
|
||||
|
||||
last_change = world.time
|
||||
active = 1
|
||||
@@ -321,12 +282,21 @@ var/global/list/holodeck_programs = list(
|
||||
C.derez()
|
||||
|
||||
for(var/obj/effect/decal/cleanable/blood/B in linkedholodeck)
|
||||
del(B)
|
||||
qdel(B)
|
||||
|
||||
holographic_objs = A.copy_contents_to(linkedholodeck , 1)
|
||||
for(var/obj/holo_obj in holographic_objs)
|
||||
holo_obj.alpha *= 0.8 //give holodeck objs a slight transparency
|
||||
|
||||
if(HP.ambience)
|
||||
linkedholodeck.forced_ambience = HP.ambience
|
||||
else
|
||||
linkedholodeck.forced_ambience = initial(linkedholodeck.ambience)
|
||||
|
||||
for(var/mob/living/M in mobs_in_area(linkedholodeck))
|
||||
if(M.mind)
|
||||
linkedholodeck.play_ambience(M)
|
||||
|
||||
spawn(30)
|
||||
for(var/obj/effect/landmark/L in linkedholodeck)
|
||||
if(L.name=="Atmospheric Test Start")
|
||||
@@ -367,21 +337,11 @@ var/global/list/holodeck_programs = list(
|
||||
A.gravitychange(1,A)
|
||||
|
||||
/obj/machinery/computer/HolodeckControl/proc/emergencyShutdown()
|
||||
//Get rid of any items
|
||||
for(var/item in holographic_objs)
|
||||
derez(item)
|
||||
for(var/mob/living/simple_animal/hostile/carp/holodeck/C in holographic_mobs)
|
||||
holographic_mobs -= C
|
||||
C.derez()
|
||||
//Turn it back to the regular non-holographic room
|
||||
target = locate(/area/holodeck/source_plating)
|
||||
if(target)
|
||||
loadProgram(target)
|
||||
loadProgram(holodeck_programs["turnoff"], 0)
|
||||
|
||||
if(!linkedholodeck.has_gravity)
|
||||
linkedholodeck.gravitychange(1,linkedholodeck)
|
||||
|
||||
var/area/targetsource = locate(/area/holodeck/source_plating)
|
||||
targetsource.copy_contents_to(linkedholodeck , 1)
|
||||
active = 0
|
||||
use_power = 1
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
icon_state = "boxing"
|
||||
item_state = "boxing"
|
||||
|
||||
/obj/structure/window/reinforced/holowindow/Del()
|
||||
/obj/structure/window/reinforced/holowindow/Destroy()
|
||||
..()
|
||||
|
||||
/obj/structure/window/reinforced/holowindow/attackby(obj/item/W as obj, mob/user as mob)
|
||||
@@ -95,7 +95,7 @@
|
||||
if(istype(G.affecting,/mob/living))
|
||||
var/mob/living/M = G.affecting
|
||||
var/state = G.state
|
||||
del(W) //gotta delete it here because if window breaks, it won't get deleted
|
||||
qdel(W) //gotta delete it here because if window breaks, it won't get deleted
|
||||
switch (state)
|
||||
if(1)
|
||||
M.visible_message("<span class='warning'>[user] slams [M] against \the [src]!</span>")
|
||||
@@ -138,13 +138,13 @@
|
||||
playsound(src, "shatter", 70, 1)
|
||||
if(display_message)
|
||||
visible_message("[src] fades away as it shatters!")
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/structure/window/reinforced/holowindow/disappearing/Del()
|
||||
/obj/structure/window/reinforced/holowindow/disappearing/Destroy()
|
||||
..()
|
||||
|
||||
/obj/machinery/door/window/holowindoor/Del()
|
||||
/obj/machinery/door/window/holowindoor/Destroy()
|
||||
..()
|
||||
|
||||
/obj/machinery/door/window/holowindoor/attackby(obj/item/weapon/I as obj, mob/user as mob)
|
||||
@@ -180,9 +180,9 @@
|
||||
playsound(src, "shatter", 70, 1)
|
||||
if(display_message)
|
||||
visible_message("[src] fades away as it shatters!")
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/bed/chair/holochair/Del()
|
||||
/obj/structure/bed/chair/holochair/Destroy()
|
||||
..()
|
||||
|
||||
/obj/structure/bed/chair/holochair/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
@@ -275,7 +275,7 @@
|
||||
G.affecting.loc = src.loc
|
||||
G.affecting.Weaken(5)
|
||||
visible_message("<span class='warning'>[G.assailant] dunks [G.affecting] into the [src]!</span>", 3)
|
||||
del(W)
|
||||
qdel(W)
|
||||
return
|
||||
else if (istype(W, /obj/item) && get_dist(src,user)<2)
|
||||
user.drop_item(src.loc)
|
||||
@@ -334,7 +334,7 @@
|
||||
|
||||
currentarea = get_area(src.loc)
|
||||
if(!currentarea)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
if(eventstarted)
|
||||
usr << "The event has already begun!"
|
||||
@@ -365,7 +365,7 @@
|
||||
eventstarted = 1
|
||||
|
||||
for(var/obj/structure/window/reinforced/holowindow/disappearing/W in currentarea)
|
||||
del(W)
|
||||
qdel(W)
|
||||
|
||||
for(var/mob/M in currentarea)
|
||||
M << "FIGHT!"
|
||||
@@ -425,4 +425,4 @@
|
||||
|
||||
/mob/living/simple_animal/hostile/carp/holodeck/proc/derez()
|
||||
visible_message("<span class='notice'>\The [src] fades away!</span>")
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
var/global/list/holodeck_programs = list(
|
||||
"emptycourt" = new/datum/holodeck_program(/area/holodeck/source_emptycourt, list('sound/music/THUNDERDOME.ogg')),
|
||||
"boxingcourt" = new/datum/holodeck_program(/area/holodeck/source_boxingcourt, list('sound/music/THUNDERDOME.ogg')),
|
||||
"basketball" = new/datum/holodeck_program(/area/holodeck/source_basketball, list('sound/music/THUNDERDOME.ogg')),
|
||||
"thunderdomecourt" = new/datum/holodeck_program(/area/holodeck/source_thunderdomecourt, list('sound/music/THUNDERDOME.ogg')),
|
||||
"beach" = new/datum/holodeck_program(/area/holodeck/source_beach),
|
||||
"desert" = new/datum/holodeck_program(/area/holodeck/source_desert,
|
||||
list(
|
||||
'sound/effects/wind/wind_2_1.ogg',
|
||||
'sound/effects/wind/wind_2_2.ogg',
|
||||
'sound/effects/wind/wind_3_1.ogg',
|
||||
'sound/effects/wind/wind_4_1.ogg',
|
||||
'sound/effects/wind/wind_4_2.ogg',
|
||||
'sound/effects/wind/wind_5_1.ogg'
|
||||
)
|
||||
),
|
||||
"snowfield" = new/datum/holodeck_program(/area/holodeck/source_snowfield,
|
||||
list(
|
||||
'sound/effects/wind/wind_2_1.ogg',
|
||||
'sound/effects/wind/wind_2_2.ogg',
|
||||
'sound/effects/wind/wind_3_1.ogg',
|
||||
'sound/effects/wind/wind_4_1.ogg',
|
||||
'sound/effects/wind/wind_4_2.ogg',
|
||||
'sound/effects/wind/wind_5_1.ogg'
|
||||
)
|
||||
),
|
||||
"space" = new/datum/holodeck_program(/area/holodeck/source_space,
|
||||
list(
|
||||
'sound/ambience/ambispace.ogg',
|
||||
'sound/music/main.ogg',
|
||||
'sound/music/space.ogg',
|
||||
'sound/music/traitor.ogg',
|
||||
)
|
||||
),
|
||||
"picnicarea" = new/datum/holodeck_program(/area/holodeck/source_picnicarea, list('sound/music/title2.ogg')),
|
||||
"theatre" = new/datum/holodeck_program(/area/holodeck/source_theatre),
|
||||
"meetinghall" = new/datum/holodeck_program(/area/holodeck/source_meetinghall),
|
||||
"courtroom" = new/datum/holodeck_program(/area/holodeck/source_courtroom, list('sound/music/traitor.ogg')),
|
||||
"burntest" = new/datum/holodeck_program(/area/holodeck/source_burntest, list()),
|
||||
"wildlifecarp" = new/datum/holodeck_program(/area/holodeck/source_wildlife, list()),
|
||||
"turnoff" = new/datum/holodeck_program(/area/holodeck/source_plating, list())
|
||||
)
|
||||
|
||||
/datum/holodeck_program
|
||||
var/target
|
||||
var/list/ambience = null
|
||||
|
||||
/datum/holodeck_program/New(var/target, var/list/ambience = null)
|
||||
src.target = target
|
||||
src.ambience = ambience
|
||||
Reference in New Issue
Block a user