Conflicts:
	code/game/machinery/washing_machine.dm
	code/modules/mob/living/carbon/human/update_icons.dm
This commit is contained in:
mwerezak
2015-04-26 14:53:01 -04:00
651 changed files with 8135 additions and 7604 deletions
+32 -72
View File
@@ -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
+11 -11
View File
@@ -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)
+50
View File
@@ -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