mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
Added NanoUI from bay, hit string limit, ran string combiner again.
God have mercy on our souls.
This commit is contained in:
@@ -56,8 +56,12 @@
|
||||
|
||||
/obj/item/device/eftpos/attack_self(mob/user as mob)
|
||||
if(get_dist(src,user) <= 1)
|
||||
var/dat = "<b>[eftpos_name]</b><br>"
|
||||
dat += "<i>This terminal is</i> [machine_id]. <i>Report this code when contacting NanoTrasen IT Support</i><br>"
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\WorkInProgress\Cael_Aislinn\Economy\EFTPOS.dm:59: var/dat = "<b>[eftpos_name]</b><br>"
|
||||
var/dat = {"<b>[eftpos_name]</b><br>
|
||||
<i>This terminal is</i> [machine_id]. <i>Report this code when contacting NanoTrasen IT Support</i><br>"}
|
||||
// END AUTOFIX
|
||||
if(transaction_locked)
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
|
||||
@@ -19,7 +19,9 @@
|
||||
//see if our location has custom event info for this event
|
||||
newMsg.body = affected_dest.get_custom_eventstring()
|
||||
if(!newMsg.body)
|
||||
newMsg.body = ""
|
||||
newMsg.body = "[affected_dest.name] doesn't have custom events. Bug a coder."
|
||||
// Too many goddamn strings, Bay. - N3X
|
||||
/*
|
||||
switch(event_type)
|
||||
if(RESEARCH_BREAKTHROUGH)
|
||||
newMsg.body = "A major breakthough in the field of [pick("plasma research","super-compressed materials","nano-augmentation","bluespace research","volatile power manipulation")] \
|
||||
@@ -126,6 +128,7 @@
|
||||
newMsg.body += "Tourists are flocking to [affected_dest.name] after the surprise announcement of [pick("major shopping bargains by a wily retailer",\
|
||||
"a huge new ARG by a popular entertainment company","a secret tour by popular artiste [random_name(pick(MALE,FEMALE))]")]. \
|
||||
Tau Ceti Daily is offering discount tickets for two to see [random_name(pick(MALE,FEMALE))] live in return for eyewitness reports and up to the minute coverage."
|
||||
*/
|
||||
|
||||
for(var/datum/feed_channel/FC in news_network.network_channels)
|
||||
if(FC.channel_name == "Tau Ceti Daily")
|
||||
@@ -143,90 +146,7 @@
|
||||
newMsg.author = "Editor Mike Hammers"
|
||||
//newMsg.is_admin_message = 1
|
||||
var/datum/trade_destination/affected_dest = pick(weighted_mundaneevent_locations)
|
||||
newMsg.body = pick(
|
||||
"Tree stuck in tajaran; firefighters baffled.",\
|
||||
"Armadillos want aardvarks removed from dictionary claims 'here first'.",\
|
||||
"Angel found dancing on pinhead ordered to stop; cited for public nuisance.",\
|
||||
"Letters claim they are better than number; 'Always have been'.",\
|
||||
"Pens proclaim pencils obsolete, 'lead is dead'.",\
|
||||
"Rock and paper sues scissors for discrimination.",\
|
||||
"Steak tell-all book reveals he never liked sitting by potato.",\
|
||||
"Woodchuck stops counting how many times he<68>s chucked 'Never again'.",\
|
||||
"[affected_dest.name] clerk first person able to pronounce '@*$%!'.",\
|
||||
"[affected_dest.name] delis serving boiled paperback dictionaries, 'Adjectives chewy' customers declare.",\
|
||||
"[affected_dest.name] weather deemed 'boring'; meteors and rad storms to be imported.",\
|
||||
"Most [affected_dest.name] security officers prefer cream over sugar.",\
|
||||
"Palindrome speakers conference in [affected_dest.name]; 'Wow!' says Otto.",\
|
||||
"Question mark worshipped as deity by ancient [affected_dest.name] dwellers.",\
|
||||
"Spilled milk causes whole [affected_dest.name] populace to cry.",\
|
||||
"World largest carp patty at display on [affected_dest.name].",\
|
||||
"'Here kitty kitty' no longer preferred tajaran retrieval technique.",\
|
||||
"Man travels 7000 light years to retrieve lost hankie, 'It was my favourite'.",\
|
||||
"New bowling lane that shoots mini-meteors at bowlers very popular.",\
|
||||
"[pick("Unathi","Spacer")] gets tattoo of Tau Ceti on chest '[pick("CentComm","star","starship","asteroid")] tickles most'.",\
|
||||
"Skrell marries computer; wedding attended by 100 modems.",\
|
||||
"Chef reports successfully using harmonica as cheese grater.",\
|
||||
"NanoTrasen invents handkerchief that says 'Bless you' after sneeze.",\
|
||||
"Clone accused of posing for other clones<65>s school photo.",\
|
||||
"Clone accused of stealing other clones<65>s employee of the month award.",\
|
||||
"Woman robs station with hair dryer; crewmen love new style.",\
|
||||
"This space for rent.",\
|
||||
"[affected_dest.name] Baker Wins Pickled Crumpet Toss Three Years Running",\
|
||||
"Skrell Scientist Discovers Abacus Can Be Used To Dry Towels",\
|
||||
"Survey: 'Cheese Louise' Voted Best Pizza Restaurant In Tau Ceti",\
|
||||
"I Was Framed, jokes [affected_dest.name] artist",\
|
||||
"Mysterious Loud Rumbling Noises In [affected_dest.name] Found To Be Mysterious Loud Rumblings",\
|
||||
"Alien ambassador becomes lost on [affected_dest.name], refuses to ask for directions",\
|
||||
"Swamp Gas Verified To Be Exhalations Of Stars--Movie Stars--Long Passed",\
|
||||
"Tainted Broccoli Weapon Of Choice For Syndicate Assassins",\
|
||||
"Chefs Find Broccoli Effective Tool For Cutting Cheese",\
|
||||
"Broccoli Found To Cause Grumpiness In Monkeys",\
|
||||
"Survey: 80% Of People on [affected_dest.name] Love Clog-Dancing",\
|
||||
"Giant Hairball Has Perfect Grammar But Rolls rr's Too Much, Linguists Say",\
|
||||
"[affected_dest.name] Phonebooks Print All Wrong Numbers; Results In 15 New Marriages",\
|
||||
"Tajaran Burglar Spotted on [affected_dest.name], Mistaken For Dalmatian",\
|
||||
"Gibson Gazette Updates Frequently Absurd, Poll Indicates",\
|
||||
"Esoteric Verbosity Culminates In Communicative Ennui, [affected_dest.name] Academics Note",\
|
||||
"Taj Demand Longer Breaks, Cleaner Litter, Slower Mice",\
|
||||
"Survey: 3 Out Of 5 Skrell Loathe Modern Art",\
|
||||
"Skrell Scientist Discovers Gravity While Falling Down Stairs",\
|
||||
"Boy Saves Tajaran From Tree on [affected_dest.name], Thousands Cheer",\
|
||||
"Shipment Of Apples Overturns, [affected_dest.name] Diner Offers Applesauce Special",\
|
||||
"Spotted Owl Spotted on [affected_dest.name]",\
|
||||
"Humans Everywhere Agree: Purring Tajarans Are Happy Tajarans",\
|
||||
"From The Desk Of Wise Guy Sammy: One Word In This Gazette Is Sdrawkcab",\
|
||||
"From The Desk Of Wise Guy Sammy: It's Hard To Have Too Much Shelf Space",\
|
||||
"From The Desk Of Wise Guy Sammy: Wine And Friendships Get Better With Age",\
|
||||
"From The Desk Of Wise Guy Sammy: The Insides Of Golf Balls Are Mostly Rubber Bands",\
|
||||
"From The Desk Of Wise Guy Sammy: You Don't Have To Fool All The People, Just The Right Ones",\
|
||||
"From The Desk Of Wise Guy Sammy: If You Made The Mess, You Clean It Up",\
|
||||
"From The Desk Of Wise Guy Sammy: It Is Easier To Get Forgiveness Than Permission",\
|
||||
"From The Desk Of Wise Guy Sammy: Check Your Facts Before Making A Fool Of Yourself",\
|
||||
"From The Desk Of Wise Guy Sammy: You Can't Outwait A Bureaucracy",\
|
||||
"From The Desk Of Wise Guy Sammy: It's Better To Yield Right Of Way Than To Demand It",\
|
||||
"From The Desk Of Wise Guy Sammy: A Person Who Likes Cats Can't Be All Bad",\
|
||||
"From The Desk Of Wise Guy Sammy: Help Is The Sunny Side Of Control",\
|
||||
"From The Desk Of Wise Guy Sammy: Two Points Determine A Straight Line",\
|
||||
"From The Desk Of Wise Guy Sammy: Reading Improves The Mind And Lifts The Spirit",\
|
||||
"From The Desk Of Wise Guy Sammy: Better To Aim High And Miss Then To Aim Low And Hit",\
|
||||
"From The Desk Of Wise Guy Sammy: Meteors Often Strike The Same Place More Than Once",\
|
||||
"Tommy B. Saif Sez: Look Both Ways Before Boarding The Shuttle",\
|
||||
"Tommy B. Saif Sez: Hold On; Sudden Stops Sometimes Necessary",\
|
||||
"Tommy B. Saif Sez: Keep Fingers Away From Moving Panels",\
|
||||
"Tommy B. Saif Sez: No Left Turn, Except Shuttles",\
|
||||
"Tommy B. Saif Sez: Return Seats And Trays To Their Proper Upright Position",\
|
||||
"Tommy B. Saif Sez: Eating And Drinking In Docking Bays Is Prohibited",\
|
||||
"Tommy B. Saif Sez: Accept No Substitutes, And Don't Be Fooled By Imitations",\
|
||||
"Tommy B. Saif Sez: Do Not Remove This Tag Under Penalty Of Law",\
|
||||
"Tommy B. Saif Sez: Always Mix Thoroughly When So Instructed",\
|
||||
"Tommy B. Saif Sez: Try To Keep Six Month's Expenses In Reserve",\
|
||||
"Tommy B. Saif Sez: Change Not Given Without Purchase",\
|
||||
"Tommy B. Saif Sez: If You Break It, You Buy It",\
|
||||
"Tommy B. Saif Sez: Reservations Must Be Cancelled 48 Hours Prior To Event To Obtain Refund",\
|
||||
"Doughnuts: Is There Anything They Can't Do",\
|
||||
"If Tin Whistles Are Made Of Tin, What Do They Make Foghorns Out Of?",\
|
||||
"Broccoli discovered to be colonies of tiny aliens with murder on their minds"\
|
||||
)
|
||||
newMsg.body = pick(file2list("config/news/trivial.txt"))
|
||||
|
||||
for(var/datum/feed_channel/FC in news_network.network_channels)
|
||||
if(FC.channel_name == "The Gibson Gazette")
|
||||
|
||||
@@ -36,8 +36,12 @@ var/const/max_assembly_amount = 300
|
||||
user << browse(null, "window=fuelcomp")
|
||||
return
|
||||
|
||||
var/t = "<B>Reactor Fuel Rod Compressor / Assembler</B><BR>"
|
||||
t += "<A href='?src=\ref[src];close=1'>Close</A><BR>"
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\WorkInProgress\Cael_Aislinn\Rust\fuel_compressor.dm:39: var/t = "<B>Reactor Fuel Rod Compressor / Assembler</B><BR>"
|
||||
var/t = {"<B>Reactor Fuel Rod Compressor / Assembler</B><BR>
|
||||
<A href='?src=\ref[src];close=1'>Close</A><BR>"}
|
||||
// END AUTOFIX
|
||||
if(locked)
|
||||
t += "Swipe your ID to unlock this console."
|
||||
else
|
||||
|
||||
@@ -30,8 +30,12 @@
|
||||
user.machine = null
|
||||
user << browse(null, "window=gyrotron_controller")
|
||||
return
|
||||
var/t = "<B>Gyrotron Remote Control Console</B><BR>"
|
||||
t += "<hr>"
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\WorkInProgress\Cael_Aislinn\Rust\gyrotron_controller.dm:33: var/t = "<B>Gyrotron Remote Control Console</B><BR>"
|
||||
var/t = {"<B>Gyrotron Remote Control Console</B><BR>
|
||||
<hr>"}
|
||||
// END AUTOFIX
|
||||
for(var/obj/machinery/rust/gyrotron/gyro in world)
|
||||
if(gyro.remoteenabled && gyro.on)
|
||||
|
||||
@@ -55,8 +59,12 @@
|
||||
t += "<b><font color=red>Gyrotron unresponsive</font></b>"
|
||||
t += "<hr>"
|
||||
/*
|
||||
var/t = "<B>Reactor Core Fuel Control</B><BR>"
|
||||
t += "Current fuel injection stage: [active_stage]<br>"
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\WorkInProgress\Cael_Aislinn\Rust\gyrotron_controller.dm:58: var/t = "<B>Reactor Core Fuel Control</B><BR>"
|
||||
var/t = {"<B>Reactor Core Fuel Control</B><BR>
|
||||
Current fuel injection stage: [active_stage]<br>"}
|
||||
// END AUTOFIX
|
||||
if(active_stage == "Cooling")
|
||||
//t += "<a href='?src=\ref[src];restart=1;'>Restart injection cycle</a><br>"
|
||||
t += "----<br>"
|
||||
|
||||
@@ -76,6 +76,7 @@
|
||||
chemtraces += V
|
||||
|
||||
/obj/item/weapon/autopsy_scanner/verb/print_data()
|
||||
set category = "Object"
|
||||
set src in view(usr, 1)
|
||||
set name = "Print Data"
|
||||
if(usr.stat || !(istype(usr,/mob/living/carbon/human)))
|
||||
|
||||
@@ -24,6 +24,7 @@ datum/controller/game_controller
|
||||
var/objects_cost = 0
|
||||
var/networks_cost = 0
|
||||
var/powernets_cost = 0
|
||||
var/nano_cost = 0
|
||||
var/events_cost = 0
|
||||
var/ticker_cost = 0
|
||||
var/total_cost = 0
|
||||
@@ -73,7 +74,7 @@ datum/controller/game_controller/proc/setup()
|
||||
for(var/i=0, i<max_secret_rooms, i++)
|
||||
make_mining_asteroid_secret()
|
||||
|
||||
if(config.socket_talk) spawn keepalive()
|
||||
//if(config.socket_talk) spawn keepalive()
|
||||
|
||||
spawn(0)
|
||||
if(ticker)
|
||||
@@ -107,20 +108,6 @@ datum/controller/game_controller/proc/setup_objects()
|
||||
sleep(-1)
|
||||
|
||||
|
||||
datum/controller/game_controller/proc/set_ticker_state(var/state)
|
||||
if(socket_talk)
|
||||
socket_talk.set_ticker_state("AIR")
|
||||
else
|
||||
if(config.socket_talk)
|
||||
socket_talk = new /datum/socket_talk()
|
||||
|
||||
|
||||
datum/controller/game_controller/proc/keepalive()
|
||||
spawn while(1)
|
||||
sleep(10)
|
||||
// Notify the other process that we're still there
|
||||
socket_talk.send_keepalive()
|
||||
|
||||
datum/controller/game_controller/proc/process()
|
||||
processing = 1
|
||||
spawn(0)
|
||||
@@ -143,11 +130,10 @@ datum/controller/game_controller/proc/process()
|
||||
//AIR
|
||||
|
||||
if(!air_processing_killed)
|
||||
set_ticker_state("AIR")
|
||||
timer = world.timeofday
|
||||
last_thing_processed = air_master.type
|
||||
air_master.tick()
|
||||
air_cost = (world.timeofday - timer) / 10 // this might make atmos slower
|
||||
//air_master.tick()
|
||||
//air_cost = (world.timeofday - timer) / 10 // this might make atmos slower
|
||||
// 1. atmos won't process if the game is generally lagged out(no deadlocks)
|
||||
// 2. if the server frequently crashes during atmos processing we will knowif(!kill_air)
|
||||
//src.set_debug_state("Air Master")
|
||||
@@ -167,7 +153,6 @@ datum/controller/game_controller/proc/process()
|
||||
sleep(breather_ticks)
|
||||
|
||||
//SUN
|
||||
set_ticker_state("SUN")
|
||||
timer = world.timeofday
|
||||
last_thing_processed = sun.type
|
||||
sun.calc_position()
|
||||
@@ -176,7 +161,6 @@ datum/controller/game_controller/proc/process()
|
||||
sleep(breather_ticks)
|
||||
|
||||
//MOBS
|
||||
set_ticker_state("MOBS")
|
||||
timer = world.timeofday
|
||||
process_mobs()
|
||||
mobs_cost = (world.timeofday - timer) / 10
|
||||
@@ -184,7 +168,6 @@ datum/controller/game_controller/proc/process()
|
||||
sleep(breather_ticks)
|
||||
|
||||
//DISEASES
|
||||
set_ticker_state("DISEASES")
|
||||
timer = world.timeofday
|
||||
process_diseases()
|
||||
diseases_cost = (world.timeofday - timer) / 10
|
||||
@@ -192,7 +175,6 @@ datum/controller/game_controller/proc/process()
|
||||
sleep(breather_ticks)
|
||||
|
||||
//MACHINES
|
||||
set_ticker_state("MACHINES")
|
||||
timer = world.timeofday
|
||||
process_machines()
|
||||
machines_cost = (world.timeofday - timer) / 10
|
||||
@@ -200,7 +182,6 @@ datum/controller/game_controller/proc/process()
|
||||
sleep(breather_ticks)
|
||||
|
||||
//OBJECTS
|
||||
set_ticker_state("OBJECTS")
|
||||
timer = world.timeofday
|
||||
process_objects()
|
||||
objects_cost = (world.timeofday - timer) / 10
|
||||
@@ -209,7 +190,6 @@ datum/controller/game_controller/proc/process()
|
||||
|
||||
//PIPENETS
|
||||
if(!pipe_processing_killed)
|
||||
set_ticker_state("PIPENETS")
|
||||
timer = world.timeofday
|
||||
process_pipenets()
|
||||
networks_cost = (world.timeofday - timer) / 10
|
||||
@@ -217,28 +197,32 @@ datum/controller/game_controller/proc/process()
|
||||
sleep(breather_ticks)
|
||||
|
||||
//POWERNETS
|
||||
set_ticker_state("POWERNETS")
|
||||
timer = world.timeofday
|
||||
process_powernets()
|
||||
powernets_cost = (world.timeofday - timer) / 10
|
||||
|
||||
sleep(breather_ticks)
|
||||
|
||||
//NANO UIS
|
||||
timer = world.timeofday
|
||||
process_nano()
|
||||
nano_cost = (world.timeofday - timer) / 10
|
||||
|
||||
sleep(breather_ticks)
|
||||
|
||||
//EVENTS
|
||||
set_ticker_state("EVENTS")
|
||||
timer = world.timeofday
|
||||
process_events()
|
||||
events_cost = (world.timeofday - timer) / 10
|
||||
|
||||
//TICKER
|
||||
set_ticker_state("TIMING")
|
||||
timer = world.timeofday
|
||||
last_thing_processed = ticker.type
|
||||
ticker.process()
|
||||
ticker_cost = (world.timeofday - timer) / 10
|
||||
|
||||
//TIMING
|
||||
total_cost = air_cost + sun_cost + mobs_cost + diseases_cost + machines_cost + objects_cost + networks_cost + powernets_cost + events_cost + ticker_cost
|
||||
total_cost = air_cost + sun_cost + mobs_cost + diseases_cost + machines_cost + objects_cost + networks_cost + powernets_cost + nano_cost + events_cost + ticker_cost
|
||||
|
||||
var/end_time = world.timeofday
|
||||
if(end_time < start_time)
|
||||
@@ -316,6 +300,16 @@ datum/controller/game_controller/proc/process_powernets()
|
||||
continue
|
||||
powernets.Cut(i,i+1)
|
||||
|
||||
datum/controller/game_controller/proc/process_nano()
|
||||
var/i = 1
|
||||
while(i<=nanomanager.processing_uis.len)
|
||||
var/datum/nanoui/ui = nanomanager.processing_uis[i]
|
||||
if(ui && ui.src_object && ui.user)
|
||||
ui.process()
|
||||
i++
|
||||
continue
|
||||
nanomanager.processing_uis.Cut(i,i+1)
|
||||
|
||||
datum/controller/game_controller/proc/process_events()
|
||||
last_thing_processed = /datum/event
|
||||
var/i = 1
|
||||
|
||||
@@ -227,10 +227,12 @@
|
||||
|
||||
|
||||
/datum/game_mode/proc/send_intercept()
|
||||
var/intercepttext = "<FONT size = 3><B>[command_name()] Update</B> Requested status information:</FONT><HR>"
|
||||
intercepttext += "<B> In case you have misplaced your copy, attached is a list of personnel whom reliable sources™ suspect may be affiliated with the Syndicate:</B><br>"
|
||||
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\game\gamemodes\game_mode.dm:230: var/intercepttext = "<FONT size = 3><B>[command_name()] Update</B> Requested status information:</FONT><HR>"
|
||||
var/intercepttext = {"<FONT size = 3><B>[command_name()] Update</B> Requested status information:</FONT><HR>
|
||||
<B> In case you have misplaced your copy, attached is a list of personnel whom reliable sources™ suspect may be affiliated with the Syndicate:</B><br>"}
|
||||
// END AUTOFIX
|
||||
var/list/suspects = list()
|
||||
for(var/mob/living/carbon/human/man in player_list) if(man.client && man.mind)
|
||||
// NT relation option
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
|
||||
/obj/machinery/alarm
|
||||
name = "alarm"
|
||||
icon = 'monitors.dmi'
|
||||
icon = 'icons/obj/monitors.dmi'
|
||||
icon_state = "alarm0"
|
||||
anchored = 1
|
||||
use_power = 1
|
||||
|
||||
@@ -38,8 +38,12 @@
|
||||
return
|
||||
|
||||
user.set_machine(src)
|
||||
var/dat = "<HEAD><TITLE>Operating Computer</TITLE><META HTTP-EQUIV='Refresh' CONTENT='10'></HEAD><BODY>\n"
|
||||
dat += "<A HREF='?src=\ref[user];mach_close=op'>Close</A><br><br>" //| <A HREF='?src=\ref[user];update=1'>Update</A>"
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\game\machinery\computer\Operating.dm:41: var/dat = "<HEAD><TITLE>Operating Computer</TITLE><META HTTP-EQUIV='Refresh' CONTENT='10'></HEAD><BODY>\n"
|
||||
var/dat = {"<HEAD><TITLE>Operating Computer</TITLE><META HTTP-EQUIV='Refresh' CONTENT='10'></HEAD><BODY>\n
|
||||
<A HREF='?src=\ref[user];mach_close=op'>Close</A><br><br>" //| <A HREF='?src=\ref[user];update=1'>Update</A>"}
|
||||
// END AUTOFIX
|
||||
if(src.table && (src.table.check_victim()))
|
||||
src.victim = src.table.victim
|
||||
dat += {"
|
||||
|
||||
@@ -13,7 +13,7 @@ var/specops_shuttle_timeleft = 0
|
||||
|
||||
/obj/machinery/computer/specops_shuttle
|
||||
name = "Spec. Ops. Shuttle Console"
|
||||
icon = 'computer.dmi'
|
||||
icon = 'icons/obj/computer.dmi'
|
||||
icon_state = "shuttle"
|
||||
req_access = list(access_cent_specops)
|
||||
// req_access = list(ACCESS_CENT_SPECOPS)
|
||||
|
||||
@@ -26,8 +26,12 @@
|
||||
|
||||
interact(mob/user)
|
||||
usr.set_machine(src)
|
||||
var/dat = "<HEAD><TITLE>Current Station Alerts</TITLE><META HTTP-EQUIV='Refresh' CONTENT='10'></HEAD><BODY>\n"
|
||||
dat += "<A HREF='?src=\ref[user];mach_close=alerts'>Close</A><br><br>"
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\game\machinery\computer\station_alert.dm:29: var/dat = "<HEAD><TITLE>Current Station Alerts</TITLE><META HTTP-EQUIV='Refresh' CONTENT='10'></HEAD><BODY>\n"
|
||||
var/dat = {"<HEAD><TITLE>Current Station Alerts</TITLE><META HTTP-EQUIV='Refresh' CONTENT='10'></HEAD><BODY>\n
|
||||
<A HREF='?src=\ref[user];mach_close=alerts'>Close</A><br><br>"}
|
||||
// END AUTOFIX
|
||||
for (var/cat in src.alarms)
|
||||
dat += text("<B>[]</B><BR>\n", cat)
|
||||
var/list/L = src.alarms[cat]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/obj/machinery/atmospherics/unary/cryo_cell
|
||||
name = "cryo cell"
|
||||
name = "Cryo Cell"
|
||||
icon = 'icons/obj/cryogenics.dmi'
|
||||
icon_state = "cell-off"
|
||||
density = 1
|
||||
@@ -62,37 +62,66 @@
|
||||
go_out()
|
||||
return
|
||||
|
||||
/obj/machinery/atmospherics/unary/cryo_cell/attack_hand(mob/user as mob)
|
||||
user.set_machine(src)
|
||||
var/beaker_text = ""
|
||||
var/health_text = ""
|
||||
var/temp_text = ""
|
||||
if(occupant)
|
||||
if(occupant.health <= -100)
|
||||
health_text = "<FONT color=red>Dead</FONT>"
|
||||
else if(occupant.health < 0)
|
||||
health_text = "<FONT color=red>[round(occupant.health,0.1)]</FONT>"
|
||||
else
|
||||
health_text = "[round(occupant.health,0.1)]"
|
||||
if(air_contents.temperature > T0C)
|
||||
temp_text = "<FONT color=red>[air_contents.temperature]</FONT>"
|
||||
/obj/machinery/atmospherics/unary/cryo_cell/attack_hand(mob/user)
|
||||
ui_interact(user)
|
||||
|
||||
/obj/machinery/atmospherics/unary/cryo_cell/ui_interact(mob/user, ui_key = "main")
|
||||
|
||||
var/data[0]
|
||||
data["isOperating"] = on
|
||||
|
||||
data["hasOccupant"] = occupant ? 1 : 0
|
||||
|
||||
var/occupantData[0]
|
||||
if (!occupant)
|
||||
occupantData["name"] = null
|
||||
occupantData["stat"] = null
|
||||
occupantData["health"] = null
|
||||
occupantData["bruteLoss"] = null
|
||||
occupantData["oxyLoss"] = null
|
||||
occupantData["toxLoss"] = null
|
||||
occupantData["fireLoss"] = null
|
||||
occupantData["bodyTemperature"] = null
|
||||
else
|
||||
occupantData["name"] = occupant.name
|
||||
occupantData["stat"] = occupant.stat
|
||||
occupantData["health"] = round(occupant.health)
|
||||
occupantData["bruteLoss"] = round(occupant.getBruteLoss())
|
||||
occupantData["oxyLoss"] = round(occupant.getOxyLoss())
|
||||
occupantData["toxLoss"] = round(occupant.getToxLoss())
|
||||
occupantData["fireLoss"] = round(occupant.getFireLoss())
|
||||
occupantData["bodyTemperature"] = round(occupant.bodytemperature)
|
||||
data["occupant"] = occupantData;
|
||||
|
||||
data["cellTemperature"] = round(air_contents.temperature)
|
||||
data["cellTemperatureStatus"] = "good"
|
||||
if(air_contents.temperature > T0C) // if greater than 273.15 kelvin (0 celcius)
|
||||
data["cellTemperatureStatus"] = "bad"
|
||||
else if(air_contents.temperature > 225)
|
||||
temp_text = "<FONT color=black>[air_contents.temperature]</FONT>"
|
||||
data["cellTemperatureStatus"] = "average"
|
||||
|
||||
data["isBeakerLoaded"] = beaker ? 1 : 0
|
||||
var beakerContents[0]
|
||||
if(beaker && beaker:reagents && beaker:reagents.reagent_list.len)
|
||||
for(var/datum/reagent/R in beaker:reagents.reagent_list)
|
||||
beakerContents.Add(list(list("name" = R.name, "volume" = R.volume))) // list in a list because Byond merges the first list...
|
||||
data["beakerContents"] = beakerContents
|
||||
|
||||
//user << list2json(data)
|
||||
|
||||
var/datum/nanoui/ui = nanomanager.get_open_ui(user, src, ui_key)
|
||||
if (!ui)
|
||||
ui = new(user, src, ui_key, "cryo.tmpl", "Cryo Cell Control System", 520, 410)
|
||||
// When the UI is first opened this is the data it will use
|
||||
ui.set_initial_data(data)
|
||||
ui.open()
|
||||
// Auto update every Master Controller tick
|
||||
ui.set_auto_update(1)
|
||||
else
|
||||
temp_text = "<FONT color=blue>[air_contents.temperature]</FONT>"
|
||||
if(beaker)
|
||||
beaker_text = "<B>Beaker:</B> <A href='?src=\ref[src];eject=1'>Eject</A>"
|
||||
else
|
||||
beaker_text = "<B>Beaker:</B> <FONT color=red>No beaker loaded</FONT>"
|
||||
var/dat = {"<B>Cryo cell control system</B><BR>
|
||||
<B>Current cell temperature:</B> [temp_text]K<BR>
|
||||
<B>Cryo status:</B> [ on ? "<A href='?src=\ref[src];start=1'>Off</A> <B>On</B>" : "<B>Off</B> <A href='?src=\ref[src];start=1'>On</A>"]<BR>
|
||||
[beaker_text]<BR><BR>
|
||||
<B>Current occupant:</B> [occupant ? "<BR>Name: [occupant]<BR>Health: [health_text]<BR>Oxygen deprivation: [round(occupant.getOxyLoss(),0.1)]<BR>Brute damage: [round(occupant.getBruteLoss(),0.1)]<BR>Fire damage: [round(occupant.getFireLoss(),0.1)]<BR>Toxin damage: [round(occupant.getToxLoss(),0.1)]<BR>Body temperature: [occupant.bodytemperature]" : "<FONT color=red>None</FONT>"]<BR>
|
||||
"}
|
||||
user.set_machine(src)
|
||||
user << browse(dat, "window=cryo")
|
||||
onclose(user, "cryo")
|
||||
// The UI is already open so push the new data to it
|
||||
ui.push_data(data)
|
||||
return
|
||||
//user.set_machine(src)
|
||||
|
||||
/obj/machinery/atmospherics/unary/cryo_cell/Topic(href, href_list)
|
||||
if ((get_dist(src, usr) <= 1) || istype(usr, /mob/living/silicon/ai))
|
||||
@@ -103,9 +132,9 @@
|
||||
if (beaker)
|
||||
var/obj/item/weapon/reagent_containers/glass/B = beaker
|
||||
B.loc = get_step(loc, SOUTH)
|
||||
beaker = null
|
||||
beaker = null
|
||||
|
||||
updateUsrDialog()
|
||||
nanomanager.update_uis(src) // update all UIs attached to this object
|
||||
add_fingerprint(usr)
|
||||
return
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
/obj/machinery/floodlight
|
||||
name = "Emergency Floodlight"
|
||||
icon = 'floodlight.dmi'
|
||||
icon = 'icons/obj/machines/floodlight.dmi'
|
||||
icon_state = "flood00"
|
||||
density = 1
|
||||
var/on = 0
|
||||
|
||||
@@ -493,7 +493,7 @@
|
||||
// Cheating.
|
||||
phazon/phase_array
|
||||
name = "Phase Array"
|
||||
name = "A peice of bluespace technology so advanced, it seems magical."
|
||||
desc = "A peice of bluespace technology so advanced, it seems magical."
|
||||
icon='icons/mecha/mecha_equipment.dmi'
|
||||
icon_state = "mecha_phase_array"
|
||||
|
||||
|
||||
@@ -310,10 +310,12 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
if(active_uplink_check(user))
|
||||
return
|
||||
|
||||
var/dat = "<html><head><title>Personal Data Assistant</title></head><body bgcolor=\"#808000\"><style>a, a:link, a:visited, a:active, a:hover { color: #000000; }img {border-style:none;}</style>"
|
||||
|
||||
dat += "<a href='byond://?src=\ref[src];choice=Close'><img src=pda_exit.png> Close</a>"
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\game\objects\items\devices\PDA\PDA.dm:313: var/dat = "<html><head><title>Personal Data Assistant</title></head><body bgcolor=\"#808000\"><style>a, a:link, a:visited, a:active, a:hover { color: #000000; }img {border-style:none;}</style>"
|
||||
var/dat = {"<html><head><title>Personal Data Assistant</title></head><body bgcolor=\"#808000\"><style>a, a:link, a:visited, a:active, a:hover { color: #000000; }img {border-style:none;}</style>
|
||||
<a href='byond://?src=\ref[src];choice=Close'><img src=pda_exit.png> Close</a>"}
|
||||
// END AUTOFIX
|
||||
if ((!isnull(cartridge)) && (mode == 0))
|
||||
dat += " | <a href='byond://?src=\ref[src];choice=Eject'><img src=pda_eject.png> Eject [cartridge]</a>"
|
||||
if (mode)
|
||||
|
||||
22
code/game/objects/items/devices/pipe_painter.dm
Normal file
22
code/game/objects/items/devices/pipe_painter.dm
Normal file
@@ -0,0 +1,22 @@
|
||||
/obj/item/device/pipe_painter
|
||||
name = "pipe painter"
|
||||
icon = 'icons/obj/bureaucracy.dmi'
|
||||
icon_state = "labeler1"
|
||||
item_state = "flight"
|
||||
var/list/modes = list("grey","red","blue","cyan","green","yellow","purple")
|
||||
var/mode = "grey"
|
||||
|
||||
/obj/item/device/pipe_painter/afterattack(atom/A, mob/user as mob)
|
||||
if(!istype(A,/obj/machinery/atmospherics/pipe) || istype(A,/obj/machinery/atmospherics/pipe/tank) || istype(A,/obj/machinery/atmospherics/pipe/vent) || istype(A,/obj/machinery/atmospherics/pipe/simple/heat_exchanging) || istype(A,/obj/machinery/atmospherics/pipe/simple/insulated))
|
||||
return
|
||||
var/obj/machinery/atmospherics/pipe/P = A
|
||||
P._color = mode
|
||||
user.visible_message("<span class='notice'>[user] paints \the [P] [mode].</span>","<span class='notice'>You paint \the [P] [mode].</span>")
|
||||
P.update_icon()
|
||||
|
||||
/obj/item/device/pipe_painter/attack_self(mob/user as mob)
|
||||
mode = input("Which colour do you want to use?","Pipe painter") in modes
|
||||
|
||||
/obj/item/device/pipe_painter/examine()
|
||||
..()
|
||||
usr << "It is in [mode] mode."
|
||||
@@ -55,8 +55,7 @@
|
||||
if(!user.IsAdvancedToolUser())
|
||||
user << "\red You don't have the dexterity to do this!"
|
||||
return 0
|
||||
var/title = "Sheet-Glass"
|
||||
title += " ([src.amount] sheet\s left)"
|
||||
var/title = "Sheet-Glass ([src.amount] sheet\s left)"
|
||||
switch(alert(title, "Would you like full tile glass or one direction?", "One Direction", "Full Window", "Cancel", null))
|
||||
if("One Direction")
|
||||
if(!src) return 1
|
||||
@@ -138,8 +137,7 @@
|
||||
if(!user.IsAdvancedToolUser())
|
||||
user << "\red You don't have the dexterity to do this!"
|
||||
return 0
|
||||
var/title = "Sheet Reinf. Glass"
|
||||
title += " ([src.amount] sheet\s left)"
|
||||
var/title = "Sheet Reinf. Glass ([src.amount] sheet\s left)"
|
||||
switch(input(title, "Would you like full tile glass a one direction glass pane or a windoor?") in list("One Direction", "Full Window", "Windoor", "Cancel"))
|
||||
if("One Direction")
|
||||
if(!src) return 1
|
||||
|
||||
@@ -74,8 +74,12 @@ FLOOR SAFES
|
||||
|
||||
/obj/structure/safe/attack_hand(mob/user as mob)
|
||||
user.set_machine(src)
|
||||
var/dat = "<center>"
|
||||
dat += "<a href='?src=\ref[src];open=1'>[open ? "Close" : "Open"] [src]</a> | <a href='?src=\ref[src];decrement=1'>-</a> [dial * 5] <a href='?src=\ref[src];increment=1'>+</a>"
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\game\objects\structures\safe.dm:77: var/dat = "<center>"
|
||||
var/dat = {"<center>
|
||||
<a href='?src=\ref[src];open=1'>[open ? "Close" : "Open"] [src]</a> | <a href='?src=\ref[src];decrement=1'>-</a> [dial * 5] <a href='?src=\ref[src];increment=1'>+</a>"}
|
||||
// END AUTOFIX
|
||||
if(open)
|
||||
dat += "<table>"
|
||||
for(var/i = contents.len, i>=1, i--)
|
||||
|
||||
@@ -167,6 +167,9 @@ var/shuttlecoming = 0
|
||||
var/join_motd = null
|
||||
var/forceblob = 0
|
||||
|
||||
// nanomanager, the manager for Nano UIs
|
||||
var/datum/nanomanager/nanomanager = new()
|
||||
|
||||
//airlockWireColorToIndex takes a number representing the wire color, e.g. the orange wire is always 1, the dark red wire is always 2, etc. It returns the index for whatever that wire does.
|
||||
//airlockIndexToWireColor does the opposite thing - it takes the index for what the wire does, for example AIRLOCK_WIRE_IDSCAN is 1, AIRLOCK_WIRE_POWER1 is 2, etc. It returns the wire color number.
|
||||
//airlockWireColorToFlag takes the wire color number and returns the flag for it (1, 2, 4, 8, 16, etc)
|
||||
|
||||
@@ -37,8 +37,12 @@ var/global/floorIsLava = 0
|
||||
usr << "Error: you are not an admin!"
|
||||
return
|
||||
|
||||
var/body = "<html><head><title>Options for [M.key]</title></head>"
|
||||
body += "<body>Options panel for <b>[M]</b>"
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\admin\admin.dm:40: var/body = "<html><head><title>Options for [M.key]</title></head>"
|
||||
var/body = {"<html><head><title>Options for [M.key]</title></head>
|
||||
<body>Options panel for <b>[M]</b>"}
|
||||
// END AUTOFIX
|
||||
if(M.client)
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
@@ -244,9 +248,12 @@ var/global/floorIsLava = 0
|
||||
if (!istype(src,/datum/admins))
|
||||
usr << "Error: you are not an admin!"
|
||||
return
|
||||
var/dat = "<html><head><title>Info on [key]</title></head>"
|
||||
dat += "<body>"
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\admin\admin.dm:247: var/dat = "<html><head><title>Info on [key]</title></head>"
|
||||
var/dat = {"<html><head><title>Info on [key]</title></head>
|
||||
<body>"}
|
||||
// END AUTOFIX
|
||||
var/savefile/info = new("data/player_saves/[copytext(key, 1, 2)]/[key]/info.sav")
|
||||
var/list/infos
|
||||
info >> infos
|
||||
|
||||
@@ -324,8 +324,12 @@
|
||||
/datum/admins/proc/player_panel_old()
|
||||
if (!usr.client.holder)
|
||||
return
|
||||
var/dat = "<html><head><title>Player Menu</title></head>"
|
||||
dat += "<body><table border=1 cellspacing=5><B><tr><th>Name</th><th>Real Name</th><th>Assigned Job</th><th>Key</th><th>Options</th><th>PM</th><th>Traitor?</th></tr></B>"
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\admin\player_panel.dm:327: var/dat = "<html><head><title>Player Menu</title></head>"
|
||||
var/dat = {"<html><head><title>Player Menu</title></head>
|
||||
<body><table border=1 cellspacing=5><B><tr><th>Name</th><th>Real Name</th><th>Assigned Job</th><th>Key</th><th>Options</th><th>PM</th><th>Traitor?</th></tr></B>"}
|
||||
// END AUTOFIX
|
||||
//add <th>IP:</th> to this if wanting to add back in IP checking
|
||||
//add <td>(IP: [M.lastKnownIP])</td> if you want to know their ip to the lists below
|
||||
var/list/mobs = sortmobs()
|
||||
|
||||
@@ -2249,8 +2249,12 @@
|
||||
alert("The game mode is [ticker.mode.name]")
|
||||
else alert("For some reason there's a ticker, but not a game mode")
|
||||
if("manifest")
|
||||
var/dat = "<B>Showing Crew Manifest.</B><HR>"
|
||||
dat += "<table cellspacing=5><tr><th>Name</th><th>Position</th></tr>"
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\admin\topic.dm:2252: var/dat = "<B>Showing Crew Manifest.</B><HR>"
|
||||
var/dat = {"<B>Showing Crew Manifest.</B><HR>
|
||||
<table cellspacing=5><tr><th>Name</th><th>Position</th></tr>"}
|
||||
// END AUTOFIX
|
||||
for(var/mob/living/carbon/human/H in mob_list)
|
||||
if(H.ckey)
|
||||
dat += text("<tr><td>[]</td><td>[]</td></tr>", H.name, H.get_assignment())
|
||||
@@ -2259,16 +2263,24 @@
|
||||
if("check_antagonist")
|
||||
check_antagonists()
|
||||
if("DNA")
|
||||
var/dat = "<B>Showing DNA from blood.</B><HR>"
|
||||
dat += "<table cellspacing=5><tr><th>Name</th><th>DNA</th><th>Blood Type</th></tr>"
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\admin\topic.dm:2262: var/dat = "<B>Showing DNA from blood.</B><HR>"
|
||||
var/dat = {"<B>Showing DNA from blood.</B><HR>
|
||||
<table cellspacing=5><tr><th>Name</th><th>DNA</th><th>Blood Type</th></tr>"}
|
||||
// END AUTOFIX
|
||||
for(var/mob/living/carbon/human/H in mob_list)
|
||||
if(H.dna && H.ckey)
|
||||
dat += "<tr><td>[H]</td><td>[H.dna.unique_enzymes]</td><td>[H.b_type]</td></tr>"
|
||||
dat += "</table>"
|
||||
usr << browse(dat, "window=DNA;size=440x410")
|
||||
if("fingerprints")
|
||||
var/dat = "<B>Showing Fingerprints.</B><HR>"
|
||||
dat += "<table cellspacing=5><tr><th>Name</th><th>Fingerprints</th></tr>"
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\admin\topic.dm:2270: var/dat = "<B>Showing Fingerprints.</B><HR>"
|
||||
var/dat = {"<B>Showing Fingerprints.</B><HR>
|
||||
<table cellspacing=5><tr><th>Name</th><th>Fingerprints</th></tr>"}
|
||||
// END AUTOFIX
|
||||
for(var/mob/living/carbon/human/H in mob_list)
|
||||
if(H.ckey)
|
||||
if(H.dna && H.dna.uni_identity)
|
||||
|
||||
@@ -1280,9 +1280,12 @@ datum/preferences
|
||||
character.gender = MALE
|
||||
|
||||
proc/open_load_dialog(mob/user)
|
||||
var/dat = "<body>"
|
||||
dat += "<tt><center>"
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\client\preferences.dm:1283: var/dat = "<body>"
|
||||
var/dat = {"<body>
|
||||
<tt><center>"}
|
||||
// END AUTOFIX
|
||||
var/savefile/S = new /savefile(path)
|
||||
if(S)
|
||||
dat += "<b>Select a character slot to load</b><hr>"
|
||||
|
||||
@@ -83,9 +83,12 @@
|
||||
usr << "<span class='notice'>Something is there but you can't see it.</span>"
|
||||
return
|
||||
|
||||
var/msg = "<span class='info'>*---------*\nThis is \icon[src] \a <EM>[src]</EM>!\n[desc]\n"
|
||||
msg += "<span class='warning'>"
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\mob\living\carbon\brain\posibrain.dm:86: var/msg = "<span class='info'>*---------*\nThis is \icon[src] \a <EM>[src]</EM>!\n[desc]\n"
|
||||
var/msg = {"<span class='info'>*---------*\nThis is \icon[src] \a <EM>[src]</EM>!\n[desc]\n
|
||||
<span class='warning'>"}
|
||||
// END AUTOFIX
|
||||
if(src.brainmob && src.brainmob.key)
|
||||
switch(src.brainmob.stat)
|
||||
if(CONSCIOUS)
|
||||
|
||||
@@ -192,8 +192,12 @@ var/list/ai_list = list()
|
||||
set category = "AI Commands"
|
||||
set name = "Show Alerts"
|
||||
|
||||
var/dat = "<HEAD><TITLE>Current Station Alerts</TITLE><META HTTP-EQUIV='Refresh' CONTENT='10'></HEAD><BODY>\n"
|
||||
dat += "<A HREF='?src=\ref[src];mach_close=aialerts'>Close</A><BR><BR>"
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\mob\living\silicon\ai\ai.dm:195: var/dat = "<HEAD><TITLE>Current Station Alerts</TITLE><META HTTP-EQUIV='Refresh' CONTENT='10'></HEAD><BODY>\n"
|
||||
var/dat = {"<HEAD><TITLE>Current Station Alerts</TITLE><META HTTP-EQUIV='Refresh' CONTENT='10'></HEAD><BODY>\n
|
||||
<A HREF='?src=\ref[src];mach_close=aialerts'>Close</A><BR><BR>"}
|
||||
// END AUTOFIX
|
||||
for (var/cat in alarms)
|
||||
dat += text("<B>[]</B><BR>\n", cat)
|
||||
var/list/L = alarms[cat]
|
||||
|
||||
@@ -580,9 +580,12 @@
|
||||
|
||||
// Camera Jack - Clearly not finished
|
||||
/mob/living/silicon/pai/proc/softwareCamera()
|
||||
var/dat = "<h3>Camera Jack</h3>"
|
||||
dat += "Cable status : "
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\mob\living\silicon\pai\software.dm:583: var/dat = "<h3>Camera Jack</h3>"
|
||||
var/dat = {"<h3>Camera Jack</h3>
|
||||
Cable status :"}
|
||||
// END AUTOFIX
|
||||
if(!src.cable)
|
||||
dat += "<font color=#FF5555>Retracted</font> <br>"
|
||||
return dat
|
||||
@@ -599,8 +602,12 @@
|
||||
|
||||
// Door Jack
|
||||
/mob/living/silicon/pai/proc/softwareDoor()
|
||||
var/dat = "<h3>Airlock Jack</h3>"
|
||||
dat += "Cable status : "
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\mob\living\silicon\pai\software.dm:602: var/dat = "<h3>Airlock Jack</h3>"
|
||||
var/dat = {"<h3>Airlock Jack</h3>
|
||||
Cable status :"}
|
||||
// END AUTOFIX
|
||||
if(!src.cable)
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
|
||||
@@ -6,8 +6,12 @@
|
||||
usr << "<span class='notice'>Something is there but you can't see it.</span>"
|
||||
return
|
||||
|
||||
var/msg = "<span class='info'>*---------*\nThis is \icon[src] \a <EM>[src]</EM>[custom_name ? ", [modtype] [braintype]" : ""]!\n"
|
||||
msg += "<span class='warning'>"
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\mob\living\silicon\robot\examine.dm:9: var/msg = "<span class='info'>*---------*\nThis is \icon[src] \a <EM>[src]</EM>[custom_name ? ", [modtype] [braintype]" : ""]!\n"
|
||||
var/msg = {"<span class='info'>*---------*\nThis is \icon[src] \a <EM>[src]</EM>[custom_name ? ", [modtype] [braintype]" : ""]!\n
|
||||
<span class='warning'>"}
|
||||
// END AUTOFIX
|
||||
if (src.getBruteLoss())
|
||||
if (src.getBruteLoss() < 75)
|
||||
msg += "It looks slightly dented.\n"
|
||||
|
||||
@@ -319,8 +319,12 @@
|
||||
|
||||
|
||||
/mob/living/silicon/robot/proc/robot_alerts()
|
||||
var/dat = "<HEAD><TITLE>Current Station Alerts</TITLE><META HTTP-EQUIV='Refresh' CONTENT='10'></HEAD><BODY>\n"
|
||||
dat += "<A HREF='?src=\ref[src];mach_close=robotalerts'>Close</A><BR><BR>"
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\mob\living\silicon\robot\robot.dm:322: var/dat = "<HEAD><TITLE>Current Station Alerts</TITLE><META HTTP-EQUIV='Refresh' CONTENT='10'></HEAD><BODY>\n"
|
||||
var/dat = {"<HEAD><TITLE>Current Station Alerts</TITLE><META HTTP-EQUIV='Refresh' CONTENT='10'></HEAD><BODY>\n
|
||||
<A HREF='?src=\ref[src];mach_close=robotalerts'>Close</A><BR><BR>"}
|
||||
// END AUTOFIX
|
||||
for (var/cat in alarms)
|
||||
dat += text("<B>[cat]</B><BR>\n")
|
||||
var/list/L = alarms[cat]
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
/mob/Logout()
|
||||
nanomanager.user_logout(src) // this is used to clean up (remove) this user's Nano UIs
|
||||
player_list -= src
|
||||
log_access("Logout: [key_name(src)]")
|
||||
if(admin_datums[src.ckey])
|
||||
|
||||
@@ -1159,6 +1159,7 @@ note dizziness decrements automatically in the mob's Life() proc.
|
||||
stat(null,"Mch-[master_controller.machines_cost]\t#[machines.len]")
|
||||
stat(null,"Obj-[master_controller.objects_cost]\t#[processing_objects.len]")
|
||||
stat(null,"Net-[master_controller.networks_cost]\tPnet-[master_controller.powernets_cost]")
|
||||
stat(null,"NanoUI-[master_controller.nano_cost]\t#[nanomanager.processing_uis.len]")
|
||||
stat(null,"Tick-[master_controller.ticker_cost]\tALL-[master_controller.total_cost]")
|
||||
else
|
||||
stat(null,"MasterController-ERROR")
|
||||
|
||||
@@ -319,9 +319,12 @@
|
||||
var/mins = (mills % 36000) / 600
|
||||
var/hours = mills / 36000
|
||||
|
||||
var/dat = "<html><body><center>"
|
||||
dat += "Round Duration: [round(hours)]h [round(mins)]m<br>"
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\mob\new_player\new_player.dm:322: var/dat = "<html><body><center>"
|
||||
var/dat = {"<html><body><center>
|
||||
Round Duration: [round(hours)]h [round(mins)]m<br>"}
|
||||
// END AUTOFIX
|
||||
if(emergency_shuttle) //In case Nanotrasen decides reposess CentComm's shuttles.
|
||||
if(emergency_shuttle.direction == 2) //Shuttle is going to centcomm, not recalled
|
||||
dat += "<font color='red'><b>The station has been evacuated.</b></font><br>"
|
||||
@@ -407,8 +410,12 @@
|
||||
return new_character
|
||||
|
||||
proc/ViewManifest()
|
||||
var/dat = "<html><body>"
|
||||
dat += "<h4>Crew Manifest</h4>"
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\mob\new_player\new_player.dm:410: var/dat = "<html><body>"
|
||||
var/dat = {"<html><body>
|
||||
<h4>Crew Manifest</h4>"}
|
||||
// END AUTOFIX
|
||||
dat += data_core.get_manifest(OOC = 1)
|
||||
|
||||
src << browse(dat, "window=manifest;size=370x420;can_close=1")
|
||||
|
||||
@@ -53,9 +53,12 @@
|
||||
var/DBQuery/select_query = dbcon.NewQuery("SELECT id, question FROM erro_poll_question WHERE [(isadmin ? "" : "adminonly = false AND")] Now() BETWEEN starttime AND endtime")
|
||||
select_query.Execute()
|
||||
|
||||
var/output = "<div align='center'><B>Player polls</B>"
|
||||
output +="<hr>"
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\mob\new_player\poll.dm:56: var/output = "<div align='center'><B>Player polls</B>"
|
||||
var/output = {"<div align='center'><B>Player polls</B>
|
||||
<hr>"}
|
||||
// END AUTOFIX
|
||||
var/pollid
|
||||
var/pollquestion
|
||||
|
||||
|
||||
205
code/modules/nano/JSON Reader.dm
Normal file
205
code/modules/nano/JSON Reader.dm
Normal file
@@ -0,0 +1,205 @@
|
||||
json_token
|
||||
var
|
||||
value
|
||||
New(v)
|
||||
src.value = v
|
||||
text
|
||||
number
|
||||
word
|
||||
symbol
|
||||
eof
|
||||
|
||||
json_reader
|
||||
var
|
||||
list
|
||||
string = list("'", "\"")
|
||||
symbols = list("{", "}", "\[", "]", ":", "\"", "'", ",")
|
||||
sequences = list("b" = 8, "t" = 9, "n" = 10, "f" = 12, "r" = 13)
|
||||
tokens
|
||||
json
|
||||
i = 1
|
||||
|
||||
|
||||
proc
|
||||
// scanner
|
||||
ScanJson(json)
|
||||
src.json = json
|
||||
. = new/list()
|
||||
src.i = 1
|
||||
while(src.i <= lentext(json))
|
||||
var/char = get_char()
|
||||
if(is_whitespace(char))
|
||||
i++
|
||||
continue
|
||||
if(string.Find(char))
|
||||
. += read_string(char)
|
||||
else if(symbols.Find(char))
|
||||
. += new/json_token/symbol(char)
|
||||
else if(is_digit(char))
|
||||
. += read_number()
|
||||
else
|
||||
. += read_word()
|
||||
i++
|
||||
. += new/json_token/eof()
|
||||
|
||||
read_word()
|
||||
var/val = ""
|
||||
while(i <= lentext(json))
|
||||
var/char = get_char()
|
||||
if(is_whitespace(char) || symbols.Find(char))
|
||||
i-- // let scanner handle this character
|
||||
return new/json_token/word(val)
|
||||
val += char
|
||||
i++
|
||||
|
||||
read_string(delim)
|
||||
var
|
||||
escape = FALSE
|
||||
val = ""
|
||||
while(++i <= lentext(json))
|
||||
var/char = get_char()
|
||||
if(escape)
|
||||
switch(char)
|
||||
if("\\", "'", "\"", "/", "u")
|
||||
val += char
|
||||
else
|
||||
// TODO: support octal, hex, unicode sequences
|
||||
ASSERT(sequences.Find(char))
|
||||
val += ascii2text(sequences[char])
|
||||
else
|
||||
if(char == delim)
|
||||
return new/json_token/text(val)
|
||||
else if(char == "\\")
|
||||
escape = TRUE
|
||||
else
|
||||
val += char
|
||||
CRASH("Unterminated string.")
|
||||
|
||||
read_number()
|
||||
var/val = ""
|
||||
var/char = get_char()
|
||||
while(is_digit(char) || char == "." || lowertext(char) == "e")
|
||||
val += char
|
||||
i++
|
||||
char = get_char()
|
||||
i-- // allow scanner to read the first non-number character
|
||||
return new/json_token/number(text2num(val))
|
||||
|
||||
check_char()
|
||||
ASSERT(args.Find(get_char()))
|
||||
|
||||
get_char()
|
||||
return copytext(json, i, i+1)
|
||||
|
||||
is_whitespace(char)
|
||||
return char == " " || char == "\t" || char == "\n" || text2ascii(char) == 13
|
||||
|
||||
is_digit(char)
|
||||
var/c = text2ascii(char)
|
||||
return 48 <= c && c <= 57 || char == "+" || char == "-"
|
||||
|
||||
|
||||
// parser
|
||||
ReadObject(list/tokens)
|
||||
src.tokens = tokens
|
||||
. = new/list()
|
||||
i = 1
|
||||
read_token("{", /json_token/symbol)
|
||||
while(i <= tokens.len)
|
||||
var/json_token/K = get_token()
|
||||
check_type(/json_token/word, /json_token/text)
|
||||
next_token()
|
||||
read_token(":", /json_token/symbol)
|
||||
|
||||
.[K.value] = read_value()
|
||||
|
||||
var/json_token/S = get_token()
|
||||
check_type(/json_token/symbol)
|
||||
switch(S.value)
|
||||
if(",")
|
||||
next_token()
|
||||
continue
|
||||
if("}")
|
||||
next_token()
|
||||
return
|
||||
else
|
||||
die()
|
||||
|
||||
get_token()
|
||||
return tokens[i]
|
||||
|
||||
next_token()
|
||||
return tokens[++i]
|
||||
|
||||
read_token(val, type)
|
||||
var/json_token/T = get_token()
|
||||
if(!(T.value == val && istype(T, type)))
|
||||
CRASH("Expected '[val]', found '[T.value]'.")
|
||||
next_token()
|
||||
return T
|
||||
|
||||
check_type(...)
|
||||
var/json_token/T = get_token()
|
||||
for(var/type in args)
|
||||
if(istype(T, type))
|
||||
return
|
||||
CRASH("Bad token type: [T.type].")
|
||||
|
||||
check_value(...)
|
||||
var/json_token/T = get_token()
|
||||
ASSERT(args.Find(T.value))
|
||||
|
||||
read_key()
|
||||
var/char = get_char()
|
||||
if(char == "\"" || char == "'")
|
||||
return read_string(char)
|
||||
|
||||
read_value()
|
||||
var/json_token/T = get_token()
|
||||
switch(T.type)
|
||||
if(/json_token/text, /json_token/number)
|
||||
next_token()
|
||||
return T.value
|
||||
if(/json_token/word)
|
||||
next_token()
|
||||
switch(T.value)
|
||||
if("true")
|
||||
return TRUE
|
||||
if("false")
|
||||
return FALSE
|
||||
if("null")
|
||||
return null
|
||||
if(/json_token/symbol)
|
||||
switch(T.value)
|
||||
if("\[")
|
||||
return read_array()
|
||||
if("{")
|
||||
return ReadObject(tokens.Copy(i))
|
||||
die()
|
||||
|
||||
read_array()
|
||||
read_token("\[", /json_token/symbol)
|
||||
. = new/list()
|
||||
var/list/L = .
|
||||
while(i <= tokens.len)
|
||||
// Avoid using Add() or += in case a list is returned.
|
||||
L.len++
|
||||
L[L.len] = read_value()
|
||||
var/json_token/T = get_token()
|
||||
check_type(/json_token/symbol)
|
||||
switch(T.value)
|
||||
if(",")
|
||||
next_token()
|
||||
continue
|
||||
if("]")
|
||||
next_token()
|
||||
return
|
||||
else
|
||||
die()
|
||||
next_token()
|
||||
CRASH("Unterminated array.")
|
||||
|
||||
|
||||
die(json_token/T)
|
||||
if(!T) T = get_token()
|
||||
CRASH("Unexpected token: [T.value].")
|
||||
54
code/modules/nano/JSON Writer.dm
Normal file
54
code/modules/nano/JSON Writer.dm
Normal file
@@ -0,0 +1,54 @@
|
||||
|
||||
json_writer
|
||||
proc
|
||||
WriteObject(list/L)
|
||||
. = "{"
|
||||
var/i = 1
|
||||
for(var/k in L)
|
||||
var/val = L[k]
|
||||
. += {"\"[k]\":[write(val)]"}
|
||||
if(i++ < L.len)
|
||||
. += ","
|
||||
.+= "}"
|
||||
|
||||
write(val)
|
||||
if(isnum(val))
|
||||
return num2text(val, 100)
|
||||
else if(isnull(val))
|
||||
return "null"
|
||||
else if(istype(val, /list))
|
||||
if(is_associative(val))
|
||||
return WriteObject(val)
|
||||
else
|
||||
return write_array(val)
|
||||
else
|
||||
. += write_string("[val]")
|
||||
|
||||
write_array(list/L)
|
||||
. = "\["
|
||||
for(var/i = 1 to L.len)
|
||||
. += write(L[i])
|
||||
if(i < L.len)
|
||||
. += ","
|
||||
. += "]"
|
||||
|
||||
write_string(txt)
|
||||
var/static/list/json_escape = list("\\", "\"", "'", "\n")
|
||||
for(var/targ in json_escape)
|
||||
var/start = 1
|
||||
while(start <= lentext(txt))
|
||||
var/i = findtext(txt, targ, start)
|
||||
if(!i)
|
||||
break
|
||||
if(targ == "\n")
|
||||
txt = copytext(txt, 1, i) + "\\n" + copytext(txt, i+1)
|
||||
else
|
||||
txt = copytext(txt, 1, i) + "\\" + copytext(txt, i)
|
||||
start = i + 2
|
||||
return {""[txt]""}
|
||||
|
||||
is_associative(list/L)
|
||||
for(var/key in L)
|
||||
// if the key is a list that means it's actually an array of lists (stupid Byond...)
|
||||
if(!isnum(key) && !istype(key, /list))
|
||||
return TRUE
|
||||
12
code/modules/nano/_JSON.dm
Normal file
12
code/modules/nano/_JSON.dm
Normal file
@@ -0,0 +1,12 @@
|
||||
/*
|
||||
n_Json v11.3.21
|
||||
*/
|
||||
|
||||
proc
|
||||
json2list(json)
|
||||
var/static/json_reader/_jsonr = new()
|
||||
return _jsonr.ReadObject(_jsonr.ScanJson(json))
|
||||
|
||||
list2json(list/L)
|
||||
var/static/json_writer/_jsonw = new()
|
||||
return _jsonw.WriteObject(L)
|
||||
6
code/modules/nano/nanoexternal.dm
Normal file
6
code/modules/nano/nanoexternal.dm
Normal file
@@ -0,0 +1,6 @@
|
||||
// All movable things can have a Nano UI, always use ui_interact to open/interact with a Nano UI
|
||||
/atom/movable/proc/ui_interact(mob/user, ui_key = "main")
|
||||
return
|
||||
|
||||
// Used by the Nano UI Manager (/datum/nanomanager) to track UIs opened by this mob
|
||||
/mob/var/list/open_uis = list()
|
||||
69
code/modules/nano/nanomanager.dm
Normal file
69
code/modules/nano/nanomanager.dm
Normal file
@@ -0,0 +1,69 @@
|
||||
// This is the window/UI manager for Nano UI
|
||||
// There should only ever be one (global) instance of nanomanger
|
||||
/datum/nanomanager
|
||||
var/open_uis[0]
|
||||
var/list/processing_uis = list()
|
||||
|
||||
/datum/nanomanager/New()
|
||||
return
|
||||
|
||||
/datum/nanomanager/proc/get_open_ui(var/mob/user, src_object, ui_key)
|
||||
var/src_object_key = "\ref[src_object]"
|
||||
if (isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list))
|
||||
return null
|
||||
else if (isnull(open_uis[src_object_key][ui_key]) || !istype(open_uis[src_object_key][ui_key], /list))
|
||||
return null
|
||||
|
||||
for (var/datum/nanoui/ui in open_uis[src_object_key][ui_key])
|
||||
if (ui.user == user)
|
||||
return ui
|
||||
|
||||
return null
|
||||
|
||||
/datum/nanomanager/proc/update_uis(src_object)
|
||||
var/src_object_key = "\ref[src_object]"
|
||||
if (isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list))
|
||||
return 0
|
||||
|
||||
var/update_count = 0
|
||||
for (var/ui_key in open_uis[src_object_key])
|
||||
for (var/datum/nanoui/ui in open_uis[src_object_key][ui_key])
|
||||
if(ui && ui.src_object && ui.user)
|
||||
ui.process()
|
||||
update_count++
|
||||
return update_count
|
||||
|
||||
/datum/nanomanager/proc/ui_opened(var/datum/nanoui/ui)
|
||||
var/src_object_key = "\ref[ui.src_object]"
|
||||
if (isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list))
|
||||
open_uis[src_object_key] = list(ui.ui_key = list())
|
||||
else if (isnull(open_uis[src_object_key][ui.ui_key]) || !istype(open_uis[src_object_key][ui.ui_key], /list))
|
||||
open_uis[src_object_key][ui.ui_key] = list();
|
||||
|
||||
ui.user.open_uis.Add(ui)
|
||||
var/list/uis = open_uis[src_object_key][ui.ui_key]
|
||||
uis.Add(ui)
|
||||
processing_uis.Add(ui)
|
||||
|
||||
/datum/nanomanager/proc/ui_closed(var/datum/nanoui/ui)
|
||||
var/src_object_key = "\ref[ui.src_object]"
|
||||
if (isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list))
|
||||
return 0 // wasn't open
|
||||
else if (isnull(open_uis[src_object_key][ui.ui_key]) || !istype(open_uis[src_object_key][ui.ui_key], /list))
|
||||
return 0 // wasn't open
|
||||
|
||||
processing_uis.Remove(ui)
|
||||
ui.user.open_uis.Remove(ui)
|
||||
var/list/uis = open_uis[src_object_key][ui.ui_key]
|
||||
return uis.Remove(ui)
|
||||
|
||||
// user has logged out (or is switching mob) so close/clear all uis
|
||||
/datum/nanomanager/proc/user_logout(var/mob/user)
|
||||
if (isnull(user.open_uis) || !istype(user.open_uis, /list) || open_uis.len == 0)
|
||||
return 0 // has no open uis
|
||||
|
||||
for (var/datum/nanoui/ui in user.open_uis)
|
||||
ui.close();
|
||||
|
||||
|
||||
|
||||
251
code/modules/nano/nanoui.dm
Normal file
251
code/modules/nano/nanoui.dm
Normal file
@@ -0,0 +1,251 @@
|
||||
/datum/nanoui
|
||||
var/mob/user
|
||||
var/atom/movable/src_object
|
||||
var/title
|
||||
var/ui_key
|
||||
var/window_id // window_id is used as the window name for browse and onclose
|
||||
var/width = 0
|
||||
var/height = 0
|
||||
var/atom/ref = null
|
||||
var/on_close_logic = 1
|
||||
var/window_options = "focus=0;can_close=1;can_minimize=1;can_maximize=0;can_resize=1;titlebar=1;" // window option is set using window_id
|
||||
var/list/stylesheets = list()
|
||||
var/list/scripts = list()
|
||||
var/templates[0]
|
||||
var/title_image
|
||||
var/head_elements
|
||||
var/body_elements
|
||||
var/head_content = ""
|
||||
var/content = "<div id='mainTemplate'></div>" // the #mainTemplate div will contain the compiled "main" template html
|
||||
var/list/initial_data[0]
|
||||
var/is_auto_updating = 0
|
||||
var/status = 2
|
||||
|
||||
|
||||
/datum/nanoui/New(nuser, nsrc_object, nui_key, ntemplate, ntitle = 0, nwidth = 0, nheight = 0, var/atom/nref = null)
|
||||
user = nuser
|
||||
src_object = nsrc_object
|
||||
ui_key = nui_key
|
||||
window_id = "[ui_key]\ref[src_object]"
|
||||
|
||||
add_template("main", ntemplate)
|
||||
|
||||
if (ntitle)
|
||||
title = ntitle
|
||||
if (nwidth)
|
||||
width = nwidth
|
||||
if (nheight)
|
||||
height = nheight
|
||||
if (nref)
|
||||
ref = nref
|
||||
|
||||
add_common_assets()
|
||||
|
||||
/datum/nanoui/proc/add_common_assets()
|
||||
add_script("libraries.min.js") // The jQuery library
|
||||
add_script("nano_update.js") // The NanoUpdate JS, this is used to receive updates and apply them.
|
||||
add_script("nano_config.js") // The NanoUpdate JS, this is used to receive updates and apply them.
|
||||
add_script("nano_base_helpers.js") // The NanoBaseHelpers JS, this is used to set up template helpers which are common to all templates
|
||||
add_stylesheet("shared.css") // this CSS sheet is common to all UIs
|
||||
add_stylesheet("icons.css") // this CSS sheet is common to all UIs
|
||||
|
||||
/datum/nanoui/proc/set_status(state)
|
||||
if (state != status)
|
||||
status = state
|
||||
push_data(list(), 1) // Update the UI
|
||||
else
|
||||
status = state
|
||||
|
||||
/datum/nanoui/proc/set_auto_update(state = 1)
|
||||
is_auto_updating = state
|
||||
|
||||
/datum/nanoui/proc/set_initial_data(data)
|
||||
initial_data = modify_data(data)
|
||||
|
||||
/datum/nanoui/proc/add_head_content(nhead_content)
|
||||
head_content = nhead_content
|
||||
|
||||
/datum/nanoui/proc/set_window_options(nwindow_options)
|
||||
window_options = nwindow_options
|
||||
|
||||
/datum/nanoui/proc/set_title_image(ntitle_image)
|
||||
//title_image = ntitle_image
|
||||
|
||||
/datum/nanoui/proc/add_stylesheet(file)
|
||||
stylesheets.Add(file)
|
||||
|
||||
/datum/nanoui/proc/add_script(file)
|
||||
scripts.Add(file)
|
||||
|
||||
/datum/nanoui/proc/add_template(name, file)
|
||||
templates[name] = file
|
||||
|
||||
/datum/nanoui/proc/set_content(ncontent)
|
||||
content = ncontent
|
||||
|
||||
/datum/nanoui/proc/add_content(ncontent)
|
||||
content += ncontent
|
||||
|
||||
/datum/nanoui/proc/use_on_close_logic(nsetting)
|
||||
on_close_logic = nsetting
|
||||
|
||||
/datum/nanoui/proc/get_header()
|
||||
for (var/filename in stylesheets)
|
||||
head_content += "<link rel='stylesheet' type='text/css' href='[filename]'>"
|
||||
|
||||
var/title_attributes = "id='uiTitle'"
|
||||
if (title_image)
|
||||
title_attributes = "id='uiTitle icon' style='background-image: url([title_image]);'"
|
||||
|
||||
var/templatel_data[0]
|
||||
for (var/key in templates)
|
||||
templatel_data[key] = templates[key];
|
||||
|
||||
var/template_data_json = "{}" // An empty JSON object
|
||||
if (templatel_data.len > 0)
|
||||
template_data_json = list2json(templatel_data)
|
||||
|
||||
var/initial_data_json = "{}" // An empty JSON object
|
||||
if (initial_data.len > 0)
|
||||
initial_data_json = list2json(initial_data)
|
||||
|
||||
var/url_parameters_json = list2json(list("src" = "\ref[src_object]"))
|
||||
|
||||
return {"<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<head>
|
||||
[head_content]
|
||||
</head>
|
||||
<body scroll=auto data-url-parameters='[url_parameters_json]' data-template-data='[template_data_json]' data-initial-data='[initial_data_json]'>
|
||||
<script type='text/javascript'>
|
||||
function receiveUpdateData(jsonString)
|
||||
{
|
||||
// We need both jQuery and NanoUpdate to be able to recieve data
|
||||
if (typeof NanoUpdate != 'undefined' && typeof jQuery != 'undefined')
|
||||
{
|
||||
NanoUpdate.receiveUpdateData(jsonString);
|
||||
}
|
||||
else
|
||||
{
|
||||
alert('receiveUpdateData error: something is not defined!');
|
||||
if (typeof NanoUpdate == 'undefined')
|
||||
{
|
||||
alert('NanoUpdate not defined!');
|
||||
}
|
||||
if (typeof jQuery == 'undefined')
|
||||
{
|
||||
alert('jQuery not defined!');
|
||||
}
|
||||
}
|
||||
// At the moment any data received before those libraries are loaded will be lost
|
||||
}
|
||||
</script>
|
||||
<div id='uiWrapper'>
|
||||
[title ? "<div id='uiTitleWrapper'><div id='uiStatusIcon' class='icon24 uiStatusGood'></div><div [title_attributes]>[title]</div><div id='uiTitleFluff'></div></div>" : ""]
|
||||
<div id='uiContent'>
|
||||
"}
|
||||
|
||||
/datum/nanoui/proc/get_footer()
|
||||
var/scriptsContent = ""
|
||||
|
||||
for (var/filename in scripts)
|
||||
scriptsContent += "<script type='text/javascript' src='[filename]'></script>"
|
||||
|
||||
return {"
|
||||
[scriptsContent]
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>"}
|
||||
|
||||
/datum/nanoui/proc/get_content()
|
||||
return {"
|
||||
[get_header()]
|
||||
[content]
|
||||
[get_footer()]
|
||||
"}
|
||||
|
||||
/datum/nanoui/proc/open()
|
||||
var/window_size = ""
|
||||
if (width && height)
|
||||
window_size = "size=[width]x[height];"
|
||||
user << browse(get_content(), "window=[window_id];[window_size][window_options]")
|
||||
on_close_winset()
|
||||
//onclose(user, window_id)
|
||||
nanomanager.ui_opened(src)
|
||||
|
||||
/datum/nanoui/proc/close()
|
||||
is_auto_updating = 0
|
||||
nanomanager.ui_closed(src)
|
||||
user << browse(null, "window=[window_id]")
|
||||
|
||||
/datum/nanoui/proc/on_close_winset()
|
||||
if(!user.client)
|
||||
world << "ERROR: No user.client!?"
|
||||
return
|
||||
var/params = "\ref[src]"
|
||||
|
||||
winset(user, window_id, "on-close=\"nanoclose [params]\"")
|
||||
|
||||
/datum/nanoui/proc/process(update = 0)
|
||||
var/dist = get_dist(src_object, user)
|
||||
if (dist <= 1)
|
||||
set_status(2) // interactive
|
||||
else if (dist <= 2)
|
||||
set_status(1) // update only
|
||||
else if (dist <= 3)
|
||||
set_status(0) // no updates, completely disabled
|
||||
return // don't auto update
|
||||
else
|
||||
close()
|
||||
return
|
||||
|
||||
if (update || is_auto_updating)
|
||||
src_object.ui_interact(user, ui_key)
|
||||
|
||||
/datum/nanoui/proc/modify_data(data)
|
||||
data["ui"] = list(
|
||||
"status" = status,
|
||||
"user" = list("name" = user.name)
|
||||
)
|
||||
//user << list2json(data)
|
||||
return data
|
||||
|
||||
/datum/nanoui/proc/push_data(data, force_push = 0)
|
||||
if (!status && !force_push)
|
||||
user << "Cannot update UI, user out of range (status [status])"
|
||||
return
|
||||
|
||||
data = modify_data(data)
|
||||
|
||||
user << output(list2params(list(list2json(data))),"[window_id].browser:receiveUpdateData")
|
||||
on_close_winset()
|
||||
|
||||
/client/verb/nanoclose(var/uiref as text)
|
||||
set hidden = 1 // hide this verb from the user's panel
|
||||
set name = "nanoclose" // no autocomplete on cmd line
|
||||
|
||||
//world << "world [src] looking for [uiref]"
|
||||
|
||||
var/datum/nanoui/ui = locate(uiref)
|
||||
|
||||
if (ui)
|
||||
//world << "[src] UI found [ui.window_id]"
|
||||
ui.close()
|
||||
|
||||
if (ui.on_close_logic)
|
||||
if(ui.ref)
|
||||
var/href = "close=1"
|
||||
//world << "[src] Topic [href] [ui.ref]"
|
||||
src.Topic(href, params2list(href), ui.ref) // this will direct to the atom's
|
||||
// Topic() proc via client.Topic()
|
||||
else
|
||||
// no atomref specified (or not found)
|
||||
// so just reset the user mob's machine var
|
||||
if(src && src.mob)
|
||||
//world << "[src] was [src.mob.machine], setting to null"
|
||||
src.mob.unset_machine()
|
||||
else
|
||||
world << "[src] UI not found"
|
||||
return
|
||||
@@ -556,16 +556,16 @@
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\power\apc.dm:555: t += "<I>(Swipe ID card to unlock inteface.)</I><BR>"
|
||||
t += {"<I>(Swipe ID card to unlock inteface.)</I><BR>
|
||||
Main breaker : <B>[operating ? "On" : "Off"]</B><BR>
|
||||
External power : <B>[ main_status ? (main_status ==2 ? "<FONT COLOR=#004000>Good</FONT>" : "<FONT COLOR=#D09000>Low</FONT>") : "<FONT COLOR=#F00000>None</FONT>"]</B><BR>
|
||||
Power cell: <B>[cell ? "[round(cell.percent())]%" : "<FONT COLOR=red>Not connected.</FONT>"]</B>"}
|
||||
Main breaker : <B>[operating ? "On" : "Off"]</B><BR>
|
||||
External power : <B>[ main_status ? (main_status ==2 ? "<FONT COLOR=#004000>Good</FONT>" : "<FONT COLOR=#D09000>Low</FONT>") : "<FONT COLOR=#F00000>None</FONT>"]</B><BR>
|
||||
Power cell: <B>[cell ? "[round(cell.percent())]%" : "<FONT COLOR=red>Not connected.</FONT>"]</B>"}
|
||||
// END AUTOFIX
|
||||
if(cell)
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\power\apc.dm:560: t += " ([charging ? ( charging == 1 ? "Charging" : "Fully charged" ) : "Not charging"])"
|
||||
t += {"([charging ? ( charging == 1 ? "Charging" : "Fully charged" ) : "Not charging"])
|
||||
([chargemode ? "Auto" : "Off"])"}
|
||||
([chargemode ? "Auto" : "Off"])"}
|
||||
// END AUTOFIX
|
||||
|
||||
t += "<BR><HR>Power channels<BR><PRE>"
|
||||
@@ -575,12 +575,11 @@
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\power\apc.dm:567: t += "Equipment: [add_lspace(lastused_equip, 6)] W : <B>[L[equipment+1]]</B><BR>"
|
||||
t += {"Equipment: [add_lspace(lastused_equip, 6)] W : <B>[L[equipment+1]]</B>
|
||||
Lighting: [add_lspace(lastused_light, 6)] W : <B>[L[lighting+1]]</B>
|
||||
Environmental:[add_lspace(lastused_environ, 6)] W : <B>[L[environ+1]]</B>
|
||||
|
||||
Total load: [lastused_light + lastused_equip + lastused_environ] W</PRE>
|
||||
<HR>Cover lock: <B>[coverlocked ? "Engaged" : "Disengaged"]</B>"}
|
||||
t += {"Equipment: [add_lspace(lastused_equip, 6)] W : <B>[L[equipment+1]]</B><BR>
|
||||
Lighting: [add_lspace(lastused_light, 6)] W : <B>[L[lighting+1]]</B><BR>
|
||||
Environmental:[add_lspace(lastused_environ, 6)] W : <B>[L[environ+1]]</B><BR>
|
||||
<BR>Total load: [lastused_light + lastused_equip + lastused_environ] W</PRE>
|
||||
<HR>Cover lock: <B>[coverlocked ? "Engaged" : "Disengaged"]</B>"}
|
||||
// END AUTOFIX
|
||||
else
|
||||
if (!istype(user, /mob/living/silicon))
|
||||
@@ -589,15 +588,15 @@ Total load: [lastused_light + lastused_equip + lastused_environ] W</PRE>
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\power\apc.dm:577: t += "Main breaker: [operating ? "<B>On</B> <A href='?src=\ref[src];breaker=1'>Off</A>" : "<A href='?src=\ref[src];breaker=1'>On</A> <B>Off</B>" ]<BR>"
|
||||
t += {"Main breaker: [operating ? "<B>On</B> <A href='?src=\ref[src];breaker=1'>Off</A>" : "<A href='?src=\ref[src];breaker=1'>On</A> <B>Off</B>" ]<BR>
|
||||
External power : <B>[ main_status ? (main_status ==2 ? "<FONT COLOR=#004000>Good</FONT>" : "<FONT COLOR=#D09000>Low</FONT>") : "<FONT COLOR=#F00000>None</FONT>"]</B><BR>"}
|
||||
External power : <B>[ main_status ? (main_status ==2 ? "<FONT COLOR=#004000>Good</FONT>" : "<FONT COLOR=#D09000>Low</FONT>") : "<FONT COLOR=#F00000>None</FONT>"]</B><BR>"}
|
||||
// END AUTOFIX
|
||||
if(cell)
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\power\apc.dm:580: t += "Power cell: <B>[round(cell.percent())]%</B>"
|
||||
t += {"Power cell: <B>[round(cell.percent())]%</B>
|
||||
([charging ? ( charging == 1 ? "Charging" : "Fully charged" ) : "Not charging"])
|
||||
([chargemode ? "<A href='?src=\ref[src];cmode=1'>Off</A> <B>Auto</B>" : "<B>Off</B> <A href='?src=\ref[src];cmode=1'>Auto</A>"])"}
|
||||
([charging ? ( charging == 1 ? "Charging" : "Fully charged" ) : "Not charging"])
|
||||
([chargemode ? "<A href='?src=\ref[src];cmode=1'>Off</A> <B>Auto</B>" : "<B>Off</B> <A href='?src=\ref[src];cmode=1'>Auto</A>"])"}
|
||||
// END AUTOFIX
|
||||
else
|
||||
t += "Power cell: <B><FONT COLOR=red>Not connected.</FONT></B>"
|
||||
@@ -606,7 +605,7 @@ Total load: [lastused_light + lastused_equip + lastused_environ] W</PRE>
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\power\apc.dm:587: t += "<BR><HR>Power channels<BR><PRE>"
|
||||
t += {"<BR><HR>Power channels<BR><PRE>
|
||||
Equipment: [add_lspace(lastused_equip, 6)] W : "}
|
||||
Equipment: [add_lspace(lastused_equip, 6)] W :"}
|
||||
// END AUTOFIX
|
||||
switch(equipment)
|
||||
if(0)
|
||||
@@ -620,8 +619,8 @@ Equipment: [add_lspace(lastused_equip, 6)] W : "}
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\power\apc.dm:600: t +="<BR>"
|
||||
t += {"
|
||||
Lighting: [add_lspace(lastused_light, 6)] W : "}
|
||||
t += {"<BR>
|
||||
Lighting: [add_lspace(lastused_light, 6)] W :"}
|
||||
// END AUTOFIX
|
||||
switch(lighting)
|
||||
if(0)
|
||||
@@ -635,8 +634,8 @@ Lighting: [add_lspace(lastused_light, 6)] W : "}
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\power\apc.dm:613: t +="<BR>"
|
||||
t += {"
|
||||
Environmental:[add_lspace(lastused_environ, 6)] W : "}
|
||||
t += {"<BR>
|
||||
Environmental:[add_lspace(lastused_environ, 6)] W :"}
|
||||
// END AUTOFIX
|
||||
switch(environ)
|
||||
if(0)
|
||||
@@ -654,7 +653,7 @@ Environmental:[add_lspace(lastused_environ, 6)] W : "}
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\power\apc.dm:629: t += "<BR>Total load: [lastused_light + lastused_equip + lastused_environ] W</PRE>"
|
||||
t += {"<BR>Total load: [lastused_light + lastused_equip + lastused_environ] W</PRE>
|
||||
<HR>Cover lock: [coverlocked ? "<B><A href='?src=\ref[src];lock=1'>Engaged</A></B>" : "<B><A href='?src=\ref[src];lock=1'>Disengaged</A></B>"]"}
|
||||
<HR>Cover lock: [coverlocked ? "<B><A href='?src=\ref[src];lock=1'>Engaged</A></B>" : "<B><A href='?src=\ref[src];lock=1'>Disengaged</A></B>"]"}
|
||||
// END AUTOFIX
|
||||
if (istype(user, /mob/living/silicon))
|
||||
t += "<BR><HR><A href='?src=\ref[src];overload=1'><I>Overload lighting circuit</I></A><BR>"
|
||||
@@ -675,7 +674,7 @@ Environmental:[add_lspace(lastused_environ, 6)] W : "}
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\power\apc.dm:648: t += "<BR><HR><A href='?src=\ref[src];close=1'>Close</A>"
|
||||
t += {"<BR><HR><A href='?src=\ref[src];close=1'>Close</A>
|
||||
</TT></body></html>"}
|
||||
</TT></body></html>"}
|
||||
// END AUTOFIX
|
||||
user << browse(t, "window=apc")
|
||||
onclose(user, "apc")
|
||||
|
||||
@@ -404,14 +404,18 @@ var/list/solars_list = list()
|
||||
add_fingerprint(user)
|
||||
user.set_machine(src)
|
||||
|
||||
var/t = "<TT><B>Solar Generator Control</B><HR><PRE>"
|
||||
t += "<B>Generated power</B> : [round(lastgen)] W<BR>"
|
||||
t += "Station Rotational Period: [60/abs(sun.rate)] minutes<BR>"
|
||||
t += "Station Rotational Direction: [sun.rate<0 ? "CCW" : "CW"]<BR>"
|
||||
t += "Star Orientation: [sun.angle]° ([angle2text(sun.angle)])<BR>"
|
||||
t += "Array Orientation: [rate_control(src,"cdir","[cdir]°",1,10,60)] ([angle2text(cdir)])<BR>"
|
||||
t += "<BR><HR><BR>"
|
||||
t += "Tracking: "
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\power\solar.dm:407: var/t = "<TT><B>Solar Generator Control</B><HR><PRE>"
|
||||
var/t = {"<TT><B>Solar Generator Control</B><HR><PRE>
|
||||
<B>Generated power</B> : [round(lastgen)] W<BR>
|
||||
Station Rotational Period: [60/abs(sun.rate)] minutes<BR>
|
||||
Station Rotational Direction: [sun.rate<0 ? "CCW" : "CW"]<BR>
|
||||
Star Orientation: [sun.angle]° ([angle2text(sun.angle)])<BR>
|
||||
Array Orientation: [rate_control(src,"cdir","[cdir]°",1,10,60)] ([angle2text(cdir)])<BR>
|
||||
<BR><HR><BR>
|
||||
Tracking:"}
|
||||
// END AUTOFIX
|
||||
switch(track)
|
||||
if(0)
|
||||
t += "<B>Off</B> <A href='?src=\ref[src];track=1'>Manual</A> <A href='?src=\ref[src];track=2'>Automatic</A><BR>"
|
||||
@@ -420,8 +424,12 @@ var/list/solars_list = list()
|
||||
if(2)
|
||||
t += "<A href='?src=\ref[src];track=0'>Off</A> <A href='?src=\ref[src];track=1'>Manual</A> <B>Automatic</B><BR>"
|
||||
|
||||
t += "Manual Tracking Rate: [rate_control(src,"tdir","[trackrate/10]°/min ([trackdir<0 ? "CCW" : "CW"])",1,10)]<BR>"
|
||||
t += "Manual Tracking Direction: "
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\power\solar.dm:423: t += "Manual Tracking Rate: [rate_control(src,"tdir","[trackrate/10]°/min ([trackdir<0 ? "CCW" : "CW"])",1,10)]<BR>"
|
||||
t += {"Manual Tracking Rate: [rate_control(src,"tdir","[trackrate/10]°/min ([trackdir<0 ? "CCW" : "CW"])",1,10)]<BR>
|
||||
Manual Tracking Direction:"}
|
||||
// END AUTOFIX
|
||||
switch(trackdir)
|
||||
if(-1)
|
||||
t += "<A href='?src=\ref[src];trackdir=1'>CW</A> <B>CCW</B><BR>"
|
||||
|
||||
@@ -492,7 +492,7 @@
|
||||
spawn()
|
||||
has_sprites += user.client
|
||||
for(var/i = 1 to MAX_PILL_SPRITE)
|
||||
usr << browse_rsc(icon('chemical.dmi', "pill" + num2text(i)), "pill[i].png")
|
||||
usr << browse_rsc(icon('icons/obj/chemical.dmi', "pill" + num2text(i)), "pill[i].png")
|
||||
for(var/i = 1 to MAX_BOTTLE_SPRITE)
|
||||
usr << browse_rsc(icon('chemical.dmi', "bottle" + num2text(i)), "bottle[i].png")
|
||||
var/dat = ""
|
||||
@@ -518,12 +518,12 @@
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\reagents\Chemistry-Machinery.dm:518: dat += "[G.name] , [G.volume] Units - "
|
||||
dat += {"[G.name] , [G.volume] Units -
|
||||
<A href='?src=\ref[src];analyze=1;desc=[G.description];name=[G.name]'>(Analyze)</A>
|
||||
<A href='?src=\ref[src];add=[G.id];amount=1'>(1)</A>
|
||||
<A href='?src=\ref[src];add=[G.id];amount=5'>(5)</A>
|
||||
<A href='?src=\ref[src];add=[G.id];amount=10'>(10)</A>
|
||||
<A href='?src=\ref[src];add=[G.id];amount=[G.volume]'>(All)</A>
|
||||
dat += {"[G.name] , [G.volume] Units -
|
||||
<A href='?src=\ref[src];analyze=1;desc=[G.description];name=[G.name]'>(Analyze)</A>
|
||||
<A href='?src=\ref[src];add=[G.id];amount=1'>(1)</A>
|
||||
<A href='?src=\ref[src];add=[G.id];amount=5'>(5)</A>
|
||||
<A href='?src=\ref[src];add=[G.id];amount=10'>(10)</A>
|
||||
<A href='?src=\ref[src];add=[G.id];amount=[G.volume]'>(All)</A>
|
||||
<A href='?src=\ref[src];addcustom=[G.id]'>(Custom)</A><BR>"}
|
||||
// END AUTOFIX
|
||||
|
||||
@@ -533,12 +533,12 @@
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\reagents\Chemistry-Machinery.dm:529: dat += "[N.name] , [N.volume] Units - "
|
||||
dat += {"[N.name] , [N.volume] Units -
|
||||
<A href='?src=\ref[src];analyze=1;desc=[N.description];name=[N.name]'>(Analyze)</A>
|
||||
<A href='?src=\ref[src];remove=[N.id];amount=1'>(1)</A>
|
||||
<A href='?src=\ref[src];remove=[N.id];amount=5'>(5)</A>
|
||||
<A href='?src=\ref[src];remove=[N.id];amount=10'>(10)</A>
|
||||
<A href='?src=\ref[src];remove=[N.id];amount=[N.volume]'>(All)</A>
|
||||
dat += {"[N.name] , [N.volume] Units -
|
||||
<A href='?src=\ref[src];analyze=1;desc=[N.description];name=[N.name]'>(Analyze)</A>
|
||||
<A href='?src=\ref[src];remove=[N.id];amount=1'>(1)</A>
|
||||
<A href='?src=\ref[src];remove=[N.id];amount=5'>(5)</A>
|
||||
<A href='?src=\ref[src];remove=[N.id];amount=10'>(10)</A>
|
||||
<A href='?src=\ref[src];remove=[N.id];amount=[N.volume]'>(All)</A>
|
||||
<A href='?src=\ref[src];removecustom=[N.id]'>(Custom)</A><BR>"}
|
||||
// END AUTOFIX
|
||||
else
|
||||
|
||||
@@ -171,9 +171,12 @@
|
||||
slot_flags = SLOT_BELT
|
||||
|
||||
proc/openwindow(mob/user as mob)
|
||||
var/dat = "<tt><center><h1><b>TagMaster 2.2</b></h1></center>"
|
||||
|
||||
dat += "<table style='width:100%; padding:4px;'><tr>"
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\recycling\sortingmachinery.dm:174: var/dat = "<tt><center><h1><b>TagMaster 2.2</b></h1></center>"
|
||||
var/dat = {"<tt><center><h1><b>TagMaster 2.2</b></h1></center>
|
||||
<table style='width:100%; padding:4px;'><tr>"}
|
||||
// END AUTOFIX
|
||||
for (var/i = 1, i <= TAGGERLOCATIONS.len, i++)
|
||||
dat += "<td><a href='?src=\ref[src];nextTag=[i]'>[TAGGERLOCATIONS[i]]</a></td>"
|
||||
|
||||
|
||||
@@ -96,8 +96,12 @@
|
||||
interact(user)
|
||||
|
||||
/obj/machinery/replicator/interact(mob/user)
|
||||
var/dat = "The control panel displays an incomprehensible selection of controls, many with unusual markings or text around them.<br>"
|
||||
dat += "<br>"
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\research\xenoarchaeology\artifact\artifact_replicator.dm:99: var/dat = "The control panel displays an incomprehensible selection of controls, many with unusual markings or text around them.<br>"
|
||||
var/dat = {"The control panel displays an incomprehensible selection of controls, many with unusual markings or text around them.<br>
|
||||
<br>"}
|
||||
// END AUTOFIX
|
||||
for(var/index=1, index<=construction.len, index++)
|
||||
dat += "<A href='?src=\ref[src];activate=[index]'>\[[construction[index]]\]</a><br>"
|
||||
|
||||
|
||||
@@ -34,8 +34,12 @@
|
||||
user.unset_machine(src)
|
||||
return
|
||||
|
||||
var/dat = "<B>Anomalous material analyser</B><BR>"
|
||||
dat += "<HR>"
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\research\xenoarchaeology\machinery\artifact_analyser.dm:37: var/dat = "<B>Anomalous material analyser</B><BR>"
|
||||
var/dat = {"<B>Anomalous material analyser</B><BR>
|
||||
<HR>"}
|
||||
// END AUTOFIX
|
||||
if(!owned_scanner)
|
||||
owned_scanner = locate() in orange(1, src)
|
||||
|
||||
|
||||
@@ -41,8 +41,12 @@
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
user.set_machine(src)
|
||||
var/dat = "<B>Artifact Power Harvester</B><BR>"
|
||||
dat += "<HR><BR>"
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\research\xenoarchaeology\machinery\artifact_harvester.dm:44: var/dat = "<B>Artifact Power Harvester</B><BR>"
|
||||
var/dat = {"<B>Artifact Power Harvester</B><BR>
|
||||
<HR><BR>"}
|
||||
// END AUTOFIX
|
||||
//
|
||||
if(owned_scanner)
|
||||
if(harvesting)
|
||||
|
||||
@@ -77,8 +77,12 @@
|
||||
return src.interact(user)
|
||||
|
||||
/obj/item/device/depth_scanner/interact(var/mob/user as mob)
|
||||
var/dat = "<b>Co-ordinates with positive matches</b><br>"
|
||||
dat += "<A href='?src=\ref[src];clear=0'>== Clear all ==</a><br>"
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\research\xenoarchaeology\tools\tools_depthscanner.dm:80: var/dat = "<b>Co-ordinates with positive matches</b><br>"
|
||||
var/dat = {"<b>Co-ordinates with positive matches</b><br>
|
||||
<A href='?src=\ref[src];clear=0'>== Clear all ==</a><br>"}
|
||||
// END AUTOFIX
|
||||
if(current)
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
|
||||
@@ -162,7 +162,7 @@
|
||||
|
||||
/world/Reboot(var/reason)
|
||||
spawn(0)
|
||||
world << sound(pick('sound/AI/newroundsexy.ogg','sound/misc/apcdestroyed.ogg','sound/misc/bangindonk.ogg','slugmissioncomplete.ogg')) // random end sounds!! - LastyBatsy
|
||||
world << sound(pick('sound/AI/newroundsexy.ogg','sound/misc/apcdestroyed.ogg','sound/misc/bangindonk.ogg','sound/misc/slugmissioncomplete.ogg')) // random end sounds!! - LastyBatsy
|
||||
|
||||
for(var/client/C in clients)
|
||||
if(config.server) //if you set a server location in config.txt, it sends you there instead of trying to reconnect to the same world address. -- NeoFite
|
||||
|
||||
Reference in New Issue
Block a user