Revert "12/21 modernizations from TG live"
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
/proc/DuplicateObject(var/atom/original, var/perfectcopy = TRUE, var/sameloc = FALSE, var/atom/newloc = null, var/nerf = FALSE, var/holoitem=FALSE)
|
||||
/proc/DuplicateObject(obj/original, var/perfectcopy = 0 , var/sameloc = 0, var/atom/newloc = null, var/nerf = 0)
|
||||
if(!original)
|
||||
return null
|
||||
var/atom/O
|
||||
var/obj/O
|
||||
|
||||
if(sameloc)
|
||||
O = new original.type(original.loc)
|
||||
@@ -20,19 +20,15 @@
|
||||
else
|
||||
O.vars[V] = original.vars[V]
|
||||
|
||||
if(istype(O, /obj))
|
||||
var/obj/N = O
|
||||
if(holoitem)
|
||||
N.resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF // holoitems do not burn
|
||||
|
||||
if(istype(O))
|
||||
O.burn_state = FIRE_PROOF // holoitems do not burn
|
||||
if(nerf && istype(O,/obj/item))
|
||||
var/obj/item/I = O
|
||||
I.damtype = STAMINA // thou shalt not
|
||||
|
||||
N.update_icon()
|
||||
if(istype(O,/obj/machinery))
|
||||
var/obj/machinery/M = O
|
||||
M.power_change()
|
||||
O.update_icon()
|
||||
return O
|
||||
|
||||
|
||||
@@ -80,7 +76,7 @@
|
||||
continue
|
||||
|
||||
if(platingRequired)
|
||||
if(isspaceturf(B))
|
||||
if(istype(B, /turf/open/space))
|
||||
continue
|
||||
|
||||
var/old_dir1 = T.dir
|
||||
@@ -93,13 +89,13 @@
|
||||
X.icon_state = old_icon_state1
|
||||
|
||||
for(var/obj/O in T)
|
||||
var/obj/O2 = DuplicateObject(O , perfectcopy=TRUE, newloc = X, nerf=nerf_weapons, holoitem=TRUE)
|
||||
var/obj/O2 = DuplicateObject(O , 1, newloc = X, nerf=nerf_weapons)
|
||||
if(!O2) continue
|
||||
copiedobjs += O2.GetAllContents()
|
||||
|
||||
for(var/mob/M in T)
|
||||
if(istype(M, /mob/camera)) continue // If we need to check for more mobs, I'll add a variable
|
||||
var/mob/SM = DuplicateObject(M , perfectcopy=TRUE, newloc = X, holoitem=TRUE)
|
||||
var/mob/SM = DuplicateObject(M , 1, newloc = X)
|
||||
copiedobjs += SM.GetAllContents()
|
||||
|
||||
var/global/list/forbidden_vars = list("type","stat","loc","locs","vars", "parent", "parent_type","verbs","ckey","key","x","y","z","contents", "luminosity")
|
||||
|
||||
@@ -0,0 +1,102 @@
|
||||
/area/holodeck
|
||||
name = "Holodeck"
|
||||
icon_state = "Holodeck"
|
||||
luminosity = 1
|
||||
dynamic_lighting = DYNAMIC_LIGHTING_DISABLED
|
||||
|
||||
var/obj/machinery/computer/holodeck/linked
|
||||
var/restricted = 0 // if true, program goes on emag list
|
||||
|
||||
/*
|
||||
Power tracking: Use the holodeck computer's power grid
|
||||
Asserts are to avoid the inevitable infinite loops
|
||||
*/
|
||||
|
||||
/area/holodeck/powered(var/chan)
|
||||
if(!master.requires_power)
|
||||
return 1
|
||||
if(master.always_unpowered)
|
||||
return 0
|
||||
if(!linked)
|
||||
return 0
|
||||
var/area/A = get_area(linked)
|
||||
ASSERT(!istype(A,/area/holodeck))
|
||||
return A.powered(chan)
|
||||
|
||||
/area/holodeck/usage(var/chan)
|
||||
if(!linked)
|
||||
return 0
|
||||
var/area/A = get_area(linked)
|
||||
ASSERT(!istype(A,/area/holodeck))
|
||||
return A.usage(chan)
|
||||
|
||||
/area/holodeck/addStaticPower(value, powerchannel)
|
||||
if(!linked)
|
||||
return
|
||||
var/area/A = get_area(linked)
|
||||
ASSERT(!istype(A,/area/holodeck))
|
||||
return A.addStaticPower(value,powerchannel)
|
||||
|
||||
/area/holodeck/use_power(var/amount, var/chan)
|
||||
if(!linked)
|
||||
return 0
|
||||
var/area/A = get_area(linked)
|
||||
ASSERT(!istype(A,/area/holodeck))
|
||||
return A.use_power(amount,chan)
|
||||
|
||||
|
||||
/*
|
||||
This is the standard holodeck. It is intended to allow you to
|
||||
blow off steam by doing stupid things like laying down, throwing
|
||||
spheres at holes, or bludgeoning people.
|
||||
*/
|
||||
/area/holodeck/rec_center
|
||||
name = "\improper Recreational Holodeck"
|
||||
|
||||
/area/holodeck/rec_center/offline
|
||||
name = "Holodeck - Offline"
|
||||
|
||||
/area/holodeck/rec_center/court
|
||||
name = "Holodeck - Empty Court"
|
||||
|
||||
/area/holodeck/rec_center/dodgeball
|
||||
name = "Holodeck - Dodgeball Court"
|
||||
|
||||
/area/holodeck/rec_center/basketball
|
||||
name = "Holodeck - Basketball Court"
|
||||
|
||||
/area/holodeck/rec_center/thunderdome
|
||||
name = "Holodeck - Thunderdome Court"
|
||||
|
||||
/area/holodeck/rec_center/beach
|
||||
name = "Holodeck - Beach"
|
||||
|
||||
/area/holodeck/rec_center/lounge
|
||||
name = "Holodeck - Lounge"
|
||||
|
||||
/area/holodeck/rec_center/medical
|
||||
name = "Holodeck - Emergency Medical"
|
||||
|
||||
/area/holodeck/rec_center/pet_lounge
|
||||
name = "Holodeck - Pet Playground"
|
||||
|
||||
/area/holodeck/rec_center/winterwonderland
|
||||
name = "Holodeck - Winter Wonderland"
|
||||
|
||||
// Bad programs
|
||||
|
||||
/area/holodeck/rec_center/burn
|
||||
name = "Holodeck - Atmospheric Burn Test"
|
||||
restricted = 1
|
||||
|
||||
/area/holodeck/rec_center/wildlife
|
||||
name = "Holodeck - Wildlife Simulation"
|
||||
restricted = 1
|
||||
|
||||
/area/holodeck/rec_center/bunker
|
||||
name = "Holodeck - Holdout Bunker"
|
||||
restricted = 1
|
||||
|
||||
/area/holodeck/rec_center/anthophila
|
||||
name = "Holodeck - Anthophila"
|
||||
restricted = 1
|
||||
@@ -25,6 +25,7 @@
|
||||
var/area/holodeck/program
|
||||
var/area/holodeck/last_program
|
||||
var/area/offline_program = /area/holodeck/rec_center/offline
|
||||
light_color = LIGHT_COLOR_CYAN
|
||||
|
||||
var/list/program_cache = list()
|
||||
var/list/emag_programs = list()
|
||||
@@ -143,14 +144,14 @@
|
||||
|
||||
/obj/machinery/computer/holodeck/proc/floorcheck()
|
||||
for(var/turf/T in linked)
|
||||
if(!T.intact || isspaceturf(T))
|
||||
if(!T.intact || istype(T,/turf/open/space))
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/obj/machinery/computer/holodeck/Topic(href, list/href_list)
|
||||
if(..())
|
||||
return
|
||||
if(!Adjacent(usr) && !issilicon(usr))
|
||||
if(!Adjacent(usr) && !istype(usr, /mob/living/silicon))
|
||||
return
|
||||
usr.set_machine(src)
|
||||
add_fingerprint(usr)
|
||||
@@ -204,6 +205,6 @@
|
||||
emergency_shutdown()
|
||||
..()
|
||||
|
||||
/obj/machinery/computer/holodeck/blob_act(obj/structure/blob/B)
|
||||
/obj/machinery/computer/holodeck/blob_act(obj/effect/blob/B)
|
||||
emergency_shutdown()
|
||||
..()
|
||||
..()
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
mob = new mobtype(loc)
|
||||
|
||||
// these vars are not really standardized but all would theoretically create stuff on death
|
||||
for(var/v in list("butcher_results","corpse","weapon1","weapon2","blood_volume") & mob.vars)
|
||||
for(var/v in list("butcher_results","corpse","weapon1","weapon2") & mob.vars)
|
||||
mob.vars[v] = null
|
||||
return mob
|
||||
|
||||
@@ -93,7 +93,4 @@
|
||||
/mob/living/simple_animal/pet/dog/pug, /mob/living/simple_animal/pet/fox)
|
||||
|
||||
/obj/effect/holodeck_effect/mobspawner/bee
|
||||
mobtype = /mob/living/simple_animal/hostile/poison/bees/toxin
|
||||
|
||||
/obj/effect/holodeck_effect/mobspawner/monkey
|
||||
mobtype = /mob/living/simple_animal/holodeck_monkey
|
||||
mobtype = /mob/living/simple_animal/hostile/poison/bees/toxin
|
||||
@@ -18,18 +18,15 @@
|
||||
throw_speed = 2
|
||||
throw_range = 5
|
||||
throwforce = 0
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
w_class = 2.0
|
||||
hitsound = "swing_hit"
|
||||
armour_penetration = 50
|
||||
var/active = 0
|
||||
|
||||
/obj/item/weapon/holo/esword/green/New()
|
||||
..()
|
||||
item_color = "green"
|
||||
|
||||
|
||||
/obj/item/weapon/holo/esword/red/New()
|
||||
..()
|
||||
item_color = "red"
|
||||
|
||||
/obj/item/weapon/holo/esword/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance)
|
||||
@@ -42,21 +39,20 @@
|
||||
|
||||
/obj/item/weapon/holo/esword/New()
|
||||
item_color = pick("red","blue","green","purple")
|
||||
..()
|
||||
|
||||
/obj/item/weapon/holo/esword/attack_self(mob/living/user as mob)
|
||||
active = !active
|
||||
if (active)
|
||||
force = 30
|
||||
icon_state = "sword[item_color]"
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
w_class = 4
|
||||
hitsound = 'sound/weapons/blade1.ogg'
|
||||
playsound(user, 'sound/weapons/saberon.ogg', 20, 1)
|
||||
user << "<span class='warning'>[src] is now active.</span>"
|
||||
else
|
||||
force = 3
|
||||
icon_state = "sword0"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
w_class = 2
|
||||
hitsound = "swing_hit"
|
||||
playsound(user, 'sound/weapons/saberoff.ogg', 20, 1)
|
||||
user << "<span class='warning'>[src] can now be concealed.</span>"
|
||||
@@ -66,11 +62,11 @@
|
||||
|
||||
/obj/item/toy/beach_ball/holoball
|
||||
name = "basketball"
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon = 'icons/obj/basketball.dmi'
|
||||
icon_state = "basketball"
|
||||
item_state = "basketball"
|
||||
desc = "Here's your chance, do your dance at the Space Jam."
|
||||
w_class = WEIGHT_CLASS_BULKY //Stops people from hiding it in their bags/pockets
|
||||
w_class = 4 //Stops people from hiding it in their bags/pockets
|
||||
|
||||
/obj/item/toy/beach_ball/holoball/dodgeball
|
||||
name = "dodgeball"
|
||||
@@ -86,7 +82,7 @@
|
||||
M.apply_damage(10, STAMINA)
|
||||
if(prob(5))
|
||||
M.Weaken(3)
|
||||
visible_message("<span class='danger'>[M] is knocked right off [M.p_their()] feet!</span>")
|
||||
visible_message("<span class='danger'>[M] is knocked right off \his feet!</span>")
|
||||
|
||||
//
|
||||
// Structures
|
||||
@@ -106,7 +102,7 @@
|
||||
visible_message("<span class='warning'> [user] dunks [W] into \the [src]!</span>")
|
||||
|
||||
/obj/structure/holohoop/attack_hand(mob/user)
|
||||
if(user.pulling && user.a_intent == INTENT_GRAB && isliving(user.pulling))
|
||||
if(user.pulling && user.a_intent == "grab" && isliving(user.pulling))
|
||||
var/mob/living/L = user.pulling
|
||||
if(user.grab_state < GRAB_AGGRESSIVE)
|
||||
user << "<span class='warning'>You need a better grip to do that!</span>"
|
||||
@@ -207,15 +203,3 @@
|
||||
|
||||
for(var/mob/M in currentarea)
|
||||
M << "FIGHT!"
|
||||
|
||||
/obj/machinery/conveyor/holodeck
|
||||
|
||||
/obj/machinery/conveyor/holodeck/attackby(obj/item/I, mob/user, params)
|
||||
if(user.drop_item())
|
||||
I.loc = src.loc
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/paper/trek_diploma
|
||||
name = "paper - Starfleet Academy Diploma"
|
||||
info = {"<h2>Starfleet Academy</h2></br><p>Official Diploma</p></br>"}
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
/*
|
||||
Mobs
|
||||
*/
|
||||
|
||||
/mob/living/simple_animal/holodeck_monkey
|
||||
name = "monkey"
|
||||
desc = "A holographic creature fond of bananas."
|
||||
icon = 'icons/mob/monkey.dmi'
|
||||
icon_state = "monkey1"
|
||||
icon_living = "monkey1"
|
||||
icon_dead = "monkey1_dead"
|
||||
speak_emote = list("chimpers")
|
||||
emote_hear = list("chimpers.")
|
||||
emote_see = list("scratches.", "looks around.")
|
||||
speak_chance = 1
|
||||
turns_per_move = 2
|
||||
butcher_results = list()
|
||||
response_help = "pets"
|
||||
response_disarm = "pushes aside"
|
||||
response_harm = "bites"
|
||||
@@ -3,17 +3,16 @@
|
||||
thermal_conductivity = 0
|
||||
broken_states = list("engine")
|
||||
burnt_states = list("engine")
|
||||
flags = NONE
|
||||
|
||||
/turf/open/floor/holofloor/attackby(obj/item/I, mob/living/user)
|
||||
/turf/open/floor/holofloor/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
return // HOLOFLOOR DOES NOT GIVE A FUCK
|
||||
|
||||
/turf/open/floor/holofloor/plating
|
||||
name = "holodeck projector floor"
|
||||
name = "Holodeck Projector Floor"
|
||||
icon_state = "engine"
|
||||
|
||||
/turf/open/floor/holofloor/plating/burnmix
|
||||
name = "burn-mix floor"
|
||||
name = "Burn-mix Floor"
|
||||
initial_gas_mix = "o2=2500;plasma=5000;TEMP=370"
|
||||
|
||||
/turf/open/floor/holofloor/grass
|
||||
@@ -39,21 +38,13 @@
|
||||
icon_state = "water"
|
||||
|
||||
/turf/open/floor/holofloor/asteroid
|
||||
name = "asteroid"
|
||||
name = "Asteroid"
|
||||
icon_state = "asteroid0"
|
||||
|
||||
/turf/open/floor/holofloor/asteroid/New()
|
||||
icon_state = "asteroid[pick(0,1,2,3,4,5,6,7,8,9,10,11,12)]"
|
||||
..()
|
||||
|
||||
/turf/open/floor/holofloor/basalt
|
||||
name = "basalt"
|
||||
icon_state = "basalt0"
|
||||
|
||||
/turf/open/floor/holofloor/basalt/New()
|
||||
icon_state = "basalt[pick(0,1,2,3,4,5,6,7,8,9,10,11,12)]"
|
||||
..()
|
||||
|
||||
/turf/open/floor/holofloor/space
|
||||
name = "Space"
|
||||
icon = 'icons/turf/space.dmi'
|
||||
@@ -64,12 +55,12 @@
|
||||
..()
|
||||
|
||||
/turf/open/floor/holofloor/hyperspace
|
||||
name = "hyperspace"
|
||||
name = "Hyperspace"
|
||||
icon = 'icons/turf/space.dmi'
|
||||
icon_state = "speedspace_ns_1"
|
||||
icon_state = "speedspace_ew_1"
|
||||
|
||||
/turf/open/floor/holofloor/hyperspace/New()
|
||||
icon_state = "speedspace_ns_[(x + 5*y + (y%2+1)*7)%15+1]"
|
||||
icon_state = "speedspace_ew_[(x + 5*y + (y%2+1)*7)%15+1]"
|
||||
..()
|
||||
|
||||
/turf/open/floor/holofloor/hyperspace/ns/New()
|
||||
@@ -77,7 +68,7 @@
|
||||
icon_state = "speedspace_ns_[(x + 5*y + (y%2+1)*7)%15+1]"
|
||||
|
||||
/turf/open/floor/holofloor/carpet
|
||||
name = "carpet"
|
||||
name = "Carpet"
|
||||
desc = "Electrically inviting."
|
||||
icon = 'icons/turf/floors/carpet.dmi'
|
||||
icon_state = "carpet"
|
||||
@@ -104,7 +95,7 @@
|
||||
slowdown = 2
|
||||
|
||||
/turf/open/floor/holofloor/snow/cold
|
||||
initial_gas_mix = "freon=7500;TEMP=0"
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
|
||||
/turf/open/floor/holofloor/asteroid
|
||||
name = "asteroid sand"
|
||||
|
||||
Reference in New Issue
Block a user