mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-10 17:52:36 +00:00
pAI Stuff
pAI gets a better PDA that can actually receive messages from people. They can also instantly reply like everybody else now. Got rid of old pAI messaging code. pAI can toggle their receiver/signaller and their ringer. AI Stuff You can show the AI the notes on your PDA by holding it up to a camera. When you show up a paper/pda to the camera the AI can now click on your name to go to you, if you're near a camera. The AI's "track with camera" list was adjusted so that it is sorted by humans and then by other mobs. In short, the huge list of monkeys will be below the human master race. Made the AI's PDA name look nicer. When showing a piece of paper/your pda to a camera... people who are Unknown will not have a link; which would allow the AI to track them. Radio/Telecomms Stuff Made the" common server" and the "preset right receiver" listen for frequencies 144.1 to 148.9. This will allow people to use different frequencies to talk to eachother without bothering the common channel. It will also allow Revs and Cultists to work with each other; everything is still logged though so it still has risks. Increased the maximum frequency limit for handheld radios and intercoms. It will give you the option to just use station bounced radios on a higher frequency so that anyone with a headset can't simply tune in. All-In-One Grinder Created an All-In-One Grinder that is suppose to replace the blender, juicer and reagent grinder altogether. Meaning any department that has a juicer, blender and grinder will instead get this. It will help people be more independent from Chemistry by recycling food and plants. The All-In-One grinder can grind and juice. Grinding food that isn't part of a recipe will transfer the reagents of the food into the beaker. Juicing only works with certain foods. I've updated the UI a bit, it will now tell you what's in the beaker and I made it look nicer. Map I removed all blenders and juicers on the station and replaced them with the All-In-One grinder! Misc. Added myself to the admin.txt list. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4053 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -35,8 +35,7 @@
|
|||||||
var/screen // Which screen our main window displays
|
var/screen // Which screen our main window displays
|
||||||
var/subscreen // Which specific function of the main screen is being displayed
|
var/subscreen // Which specific function of the main screen is being displayed
|
||||||
|
|
||||||
var/tnote // Message history var used for PDA Messaging functions
|
var/obj/item/device/pda/pai/pda = null
|
||||||
var/poff = 0 // For PDA messanging.
|
|
||||||
|
|
||||||
var/secHUD = 0 // Toggles whether the Security HUD is active or not
|
var/secHUD = 0 // Toggles whether the Security HUD is active or not
|
||||||
var/medHUD = 0 // Toggles whether the Medical HUD is active or not
|
var/medHUD = 0 // Toggles whether the Medical HUD is active or not
|
||||||
|
|||||||
@@ -43,10 +43,13 @@
|
|||||||
|
|
||||||
var/list/names = list()
|
var/list/names = list()
|
||||||
var/list/namecounts = list()
|
var/list/namecounts = list()
|
||||||
var/list/creatures = list()
|
var/list/humans = list()
|
||||||
|
var/list/others = list()
|
||||||
for(var/mob/living/M in world)
|
for(var/mob/living/M in world)
|
||||||
//Cameras can't track people wearing an agent card or a ninja hood.
|
//Cameras can't track people wearing an agent card or a ninja hood.
|
||||||
|
var/human = 0
|
||||||
if(istype(M, /mob/living/carbon/human))
|
if(istype(M, /mob/living/carbon/human))
|
||||||
|
human = 1
|
||||||
if(istype(M:wear_id, /obj/item/weapon/card/id/syndicate))
|
if(istype(M:wear_id, /obj/item/weapon/card/id/syndicate))
|
||||||
continue
|
continue
|
||||||
if(istype(M:head, /obj/item/clothing/head/helmet/space/space_ninja)&&!M:head:canremove)
|
if(istype(M:head, /obj/item/clothing/head/helmet/space/space_ninja)&&!M:head:canremove)
|
||||||
@@ -71,66 +74,71 @@
|
|||||||
else
|
else
|
||||||
names.Add(name)
|
names.Add(name)
|
||||||
namecounts[name] = 1
|
namecounts[name] = 1
|
||||||
|
if(human)
|
||||||
|
humans[name] = M
|
||||||
|
else
|
||||||
|
others[name] = M
|
||||||
|
|
||||||
creatures[name] = M
|
var/list/targets = sortList(humans) + sortList(others)
|
||||||
//I blame : usage!
|
var/target_name = input(usr, "Which creature should you track?") as null|anything in targets
|
||||||
var/target_name = input(usr, "Which creature should you track?") as null|anything in sortList(creatures)
|
|
||||||
|
|
||||||
if (!target_name)
|
if (!target_name)
|
||||||
usr:cameraFollow = null
|
usr:cameraFollow = null
|
||||||
return
|
return
|
||||||
|
|
||||||
var/mob/target = creatures[target_name]
|
var/mob/target = (isnull(humans[target_name]) ? others[target_name] : humans[target_name])
|
||||||
ai_actual_track(target)
|
ai_actual_track(target)
|
||||||
|
|
||||||
/mob/living/silicon/ai/proc/ai_actual_track(mob/living/target as mob)
|
/mob/living/silicon/ai/proc/ai_actual_track(mob/living/target as mob)
|
||||||
if(!istype(target)) return
|
if(!istype(target)) return
|
||||||
|
var/mob/living/silicon/ai/U = usr
|
||||||
|
|
||||||
usr:cameraFollow = target
|
U.cameraFollow = target
|
||||||
usr << text("Now tracking [] on camera.", target.name)
|
U << text("Now tracking [] on camera.", target.name)
|
||||||
if (usr.machine == null)
|
if (U.machine == null)
|
||||||
usr.machine = usr
|
U.machine = U
|
||||||
|
|
||||||
spawn (0)
|
spawn (0)
|
||||||
while (usr:cameraFollow == target)
|
while (U.cameraFollow == target)
|
||||||
if (usr:cameraFollow == null)
|
if (U.cameraFollow == null)
|
||||||
return
|
return
|
||||||
else if (istype(target, /mob/living/carbon/human))
|
else if (istype(target, /mob/living/carbon/human))
|
||||||
if(istype(target:wear_id, /obj/item/weapon/card/id/syndicate))
|
if(istype(target:wear_id, /obj/item/weapon/card/id/syndicate))
|
||||||
usr << "Follow camera mode terminated."
|
U << "Follow camera mode terminated."
|
||||||
usr:cameraFollow = null
|
U.cameraFollow = null
|
||||||
return
|
return
|
||||||
if(istype(target:head, /obj/item/clothing/head/helmet/space/space_ninja)&&!target:head:canremove)
|
if(istype(target:head, /obj/item/clothing/head/helmet/space/space_ninja)&&!target:head:canremove)
|
||||||
usr << "Follow camera mode terminated."
|
U << "Follow camera mode terminated."
|
||||||
usr:cameraFollow = null
|
U.cameraFollow = null
|
||||||
return
|
return
|
||||||
if(target.digitalcamo)
|
if(target.digitalcamo)
|
||||||
usr << "Follow camera mode terminated."
|
U << "Follow camera mode terminated."
|
||||||
usr:cameraFollow = null
|
U.cameraFollow = null
|
||||||
return
|
return
|
||||||
|
|
||||||
else if(istype(target.loc,/obj/effect/dummy))
|
else if(istype(target.loc,/obj/effect/dummy))
|
||||||
usr << "Follow camera mode ended."
|
U << "Follow camera mode ended."
|
||||||
usr:cameraFollow = null
|
U.cameraFollow = null
|
||||||
return
|
return
|
||||||
else if (!target || !istype(target.loc, /turf)) //in a closet
|
else if (!target || !istype(target.loc, /turf)) //in a closet
|
||||||
usr << "Target is not on or near any active cameras on the station. We'll check again in 5 seconds (unless you use the cancel-camera verb)."
|
U << "Target is not on or near any active cameras on the station. We'll check again in 5 seconds (unless you use the cancel-camera verb)."
|
||||||
sleep(40) //because we're sleeping another second after this (a few lines down)
|
sleep(40) //because we're sleeping another second after this (a few lines down)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
var/obj/machinery/camera/C = usr:current
|
var/obj/machinery/camera/C = U.current
|
||||||
if ((C && istype(C, /obj/machinery/camera)) || C==null)
|
if ((C && istype(C, /obj/machinery/camera)) || C==null)
|
||||||
|
|
||||||
if(isrobot(target))
|
if(isrobot(target))
|
||||||
C = target:camera
|
var/mob/living/silicon/robot/R = target
|
||||||
usr:current = C
|
C = R.camera
|
||||||
usr.reset_view(C)
|
U.current = C
|
||||||
|
U.reset_view(C)
|
||||||
else
|
else
|
||||||
var/closestDist = -1
|
var/closestDist = -1
|
||||||
if (C!=null)
|
if (C!=null)
|
||||||
if (C.status)
|
if (C.status)
|
||||||
closestDist = get_dist(C, target)
|
closestDist = get_dist(C, target)
|
||||||
//usr << text("Dist = [] for camera []", closestDist, C.name)
|
//U << text("Dist = [] for camera []", closestDist, C.name)
|
||||||
var/zmatched = 0
|
var/zmatched = 0
|
||||||
if (closestDist > 7 || closestDist == -1)
|
if (closestDist > 7 || closestDist == -1)
|
||||||
//check other cameras
|
//check other cameras
|
||||||
@@ -144,18 +152,18 @@
|
|||||||
if ((dist < closestDist) || (closestDist == -1))
|
if ((dist < closestDist) || (closestDist == -1))
|
||||||
closestDist = dist
|
closestDist = dist
|
||||||
closest = C2
|
closest = C2
|
||||||
//usr << text("Closest camera dist = [], for camera []", closestDist, closest.area.name)
|
//U << text("Closest camera dist = [], for camera []", closestDist, closest.area.name)
|
||||||
|
|
||||||
if (closest != C)
|
if (closest != C)
|
||||||
usr:current = closest
|
U.current = closest
|
||||||
usr.reset_view(closest)
|
U.reset_view(closest)
|
||||||
//use_power(50)
|
//use_power(50)
|
||||||
if (zmatched == 0)
|
if (zmatched == 0)
|
||||||
usr << "Target is not on or near any active cameras on the station. We'll check again in 5 seconds (unless you use the cancel-camera verb)."
|
U << "Target is not on or near any active cameras on the station. We'll check again in 5 seconds (unless you use the cancel-camera verb)."
|
||||||
sleep(40) //because we're sleeping another second after this (a few lines down)
|
sleep(40) //because we're sleeping another second after this (a few lines down)
|
||||||
else
|
else
|
||||||
usr << "Follow camera mode ended."
|
U << "Follow camera mode ended."
|
||||||
usr:cameraFollow = null
|
U.cameraFollow = null
|
||||||
|
|
||||||
sleep(10)
|
sleep(10)
|
||||||
|
|
||||||
@@ -263,22 +271,35 @@
|
|||||||
deactivate(user,0)
|
deactivate(user,0)
|
||||||
|
|
||||||
/obj/machinery/camera/attackby(W as obj, user as mob)
|
/obj/machinery/camera/attackby(W as obj, user as mob)
|
||||||
..()
|
|
||||||
if (istype(W, /obj/item/weapon/wirecutters))
|
if (istype(W, /obj/item/weapon/wirecutters))
|
||||||
deactivate(user)
|
deactivate(user)
|
||||||
else if (istype(W, /obj/item/weapon/paper))
|
else if ((istype(W, /obj/item/weapon/paper) || istype(W, /obj/item/device/pda)) && isliving(user))
|
||||||
var/obj/item/weapon/paper/X = W
|
var/mob/living/U = user
|
||||||
user << "You hold a paper up to the camera ..."
|
var/obj/item/weapon/paper/X = null
|
||||||
|
var/obj/item/device/pda/P = null
|
||||||
|
|
||||||
|
var/itemname = ""
|
||||||
|
var/info = ""
|
||||||
|
if(istype(W, /obj/item/weapon/paper))
|
||||||
|
X = W
|
||||||
|
itemname = X.name
|
||||||
|
info = X.info
|
||||||
|
else
|
||||||
|
P = W
|
||||||
|
itemname = P.name
|
||||||
|
info = P.note
|
||||||
|
U << "You hold \a [itemname] up to the camera ..."
|
||||||
for(var/mob/living/silicon/ai/O in world)
|
for(var/mob/living/silicon/ai/O in world)
|
||||||
//if (O.current == src)
|
//if (O.current == src)
|
||||||
O << "[user] holds a paper up to one of your cameras ..."
|
if(U.name == "Unknown") O << "<b>[U]</b> holds \a [itemname] up to one of your cameras ..."
|
||||||
O << browse(text("<HTML><HEAD><TITLE>[]</TITLE></HEAD><BODY><TT>[]</TT></BODY></HTML>", X.name, X.info), text("window=[]", X.name))
|
else O << "<b><a href='byond://?src=\ref[O];track2=\ref[O];track=\ref[U]'>[U]</a></b> holds \a [itemname] up to one of your cameras ..."
|
||||||
|
O << browse(text("<HTML><HEAD><TITLE>[]</TITLE></HEAD><BODY><TT>[]</TT></BODY></HTML>", itemname, info), text("window=[]", itemname))
|
||||||
for(var/mob/O in world)
|
for(var/mob/O in world)
|
||||||
if (istype(O.machine, /obj/machinery/computer/security))
|
if (istype(O.machine, /obj/machinery/computer/security))
|
||||||
var/obj/machinery/computer/security/S = O.machine
|
var/obj/machinery/computer/security/S = O.machine
|
||||||
if (S.current == src)
|
if (S.current == src)
|
||||||
O << "[user] holds a paper up to one of the cameras ..."
|
O << "[U] holds \a [itemname] up to one of the cameras ..."
|
||||||
O << browse(text("<HTML><HEAD><TITLE>[]</TITLE></HEAD><BODY><TT>[]</TT></BODY></HTML>", X.name, X.info), text("window=[]", X.name))
|
O << browse(text("<HTML><HEAD><TITLE>[]</TITLE></HEAD><BODY><TT>[]</TT></BODY></HTML>", itemname, info), text("window=[]", itemname))
|
||||||
else if (istype(W, /obj/item/weapon/wrench)) //Adding dismantlable cameras to go with the constructable ones. --NEO
|
else if (istype(W, /obj/item/weapon/wrench)) //Adding dismantlable cameras to go with the constructable ones. --NEO
|
||||||
if(src.status)
|
if(src.status)
|
||||||
user << "\red You can't dismantle a camera while it is active."
|
user << "\red You can't dismantle a camera while it is active."
|
||||||
@@ -327,6 +348,8 @@
|
|||||||
for(var/mob/O in viewers(user, 3))
|
for(var/mob/O in viewers(user, 3))
|
||||||
O.show_message(text("\blue The camera has been sliced apart by [] with an energy blade!", user), 1, text("\red You hear metal being sliced and sparks flying."), 2)
|
O.show_message(text("\blue The camera has been sliced apart by [] with an energy blade!", user), 1, text("\red You hear metal being sliced and sparks flying."), 2)
|
||||||
del(src)
|
del(src)
|
||||||
|
else
|
||||||
|
..()
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/machinery/camera/proc/deactivate(user as mob, var/choice = 1)
|
/obj/machinery/camera/proc/deactivate(user as mob, var/choice = 1)
|
||||||
|
|||||||
@@ -477,8 +477,13 @@
|
|||||||
id = "Receiver B"
|
id = "Receiver B"
|
||||||
network = "tcommsat"
|
network = "tcommsat"
|
||||||
autolinkers = list("bus3", "bus4") // Bus units 3 and 4
|
autolinkers = list("bus3", "bus4") // Bus units 3 and 4
|
||||||
freq_listening = list(1459, 1353, 1357, 1359) // common, command, engineering, security
|
freq_listening = list(1353, 1357, 1359) //command, engineering, security
|
||||||
|
|
||||||
|
//Common and other radio frequencies for people to freely use
|
||||||
|
New()
|
||||||
|
for(var/i = 1441, i < 1489, i += 2)
|
||||||
|
freq_listening |= i
|
||||||
|
..()
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/telecomms/bus/preset_one
|
/obj/machinery/telecomms/bus/preset_one
|
||||||
@@ -551,9 +556,16 @@
|
|||||||
|
|
||||||
common
|
common
|
||||||
id = "Common Server"
|
id = "Common Server"
|
||||||
freq_listening = list(1459)
|
freq_listening = list()
|
||||||
autolinkers = list("common", "broadcasterB")
|
autolinkers = list("common", "broadcasterB")
|
||||||
|
|
||||||
|
//Common and other radio frequencies for people to freely use
|
||||||
|
// 1441 to 1489
|
||||||
|
New()
|
||||||
|
for(var/i = 1441, i < 1489, i += 2)
|
||||||
|
freq_listening |= i
|
||||||
|
..()
|
||||||
|
|
||||||
command
|
command
|
||||||
id = "Command Server"
|
id = "Command Server"
|
||||||
freq_listening = list(1353)
|
freq_listening = list(1353)
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
var/mimeamt = 0 //How many silence left when infected with mime.exe
|
var/mimeamt = 0 //How many silence left when infected with mime.exe
|
||||||
var/note = "Congratulations, your station has chosen the Thinktronic 5230 Personal Data Assistant!" //Current note in the notepad function.
|
var/note = "Congratulations, your station has chosen the Thinktronic 5230 Personal Data Assistant!" //Current note in the notepad function.
|
||||||
var/cart = "" //A place to stick cartridge menu information
|
var/cart = "" //A place to stick cartridge menu information
|
||||||
|
var/detonate = 1 // Can the PDA be blown up?
|
||||||
|
|
||||||
var/obj/item/device/uplink/pda/uplink = null
|
var/obj/item/device/uplink/pda/uplink = null
|
||||||
|
|
||||||
@@ -171,10 +172,16 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
default_cartridge = /obj/item/weapon/cartridge/medical
|
default_cartridge = /obj/item/weapon/cartridge/medical
|
||||||
icon_state = "pda-gene"
|
icon_state = "pda-gene"
|
||||||
|
|
||||||
// Special AI PDA that cannot explode.
|
// Special AI/pAI PDAs that cannot explode.
|
||||||
/obj/item/device/pda/ai
|
/obj/item/device/pda/ai
|
||||||
icon_state = "NONE"
|
icon_state = "NONE"
|
||||||
ttone = "data"
|
ttone = "data"
|
||||||
|
detonate = 0
|
||||||
|
|
||||||
|
/obj/item/device/pda/pai
|
||||||
|
icon_state = "NONE"
|
||||||
|
ttone = "data"
|
||||||
|
detonate = 0
|
||||||
|
|
||||||
/obj/item/device/pda/ai/attack_self(mob/user as mob)
|
/obj/item/device/pda/ai/attack_self(mob/user as mob)
|
||||||
if ((honkamt > 0) && (prob(60)))//For clown virus.
|
if ((honkamt > 0) && (prob(60)))//For clown virus.
|
||||||
@@ -203,13 +210,15 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
cartridge = new default_cartridge(src)
|
cartridge = new default_cartridge(src)
|
||||||
|
|
||||||
/obj/item/device/pda/proc/can_use()
|
/obj/item/device/pda/proc/can_use()
|
||||||
|
|
||||||
|
if(istype(src, /obj/item/device/pda/ai))
|
||||||
|
return 1
|
||||||
if(!ismob(loc))
|
if(!ismob(loc))
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
var/mob/M = loc
|
var/mob/M = loc
|
||||||
|
if(!M.canmove)
|
||||||
if(!M.canmove && !isAI(M))
|
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
if((src in M.contents) || ( istype(loc, /turf) && in_range(src, M) ))
|
if((src in M.contents) || ( istype(loc, /turf) && in_range(src, M) ))
|
||||||
return 1
|
return 1
|
||||||
else
|
else
|
||||||
@@ -350,7 +359,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
for (var/obj/item/device/pda/P in sortList(PDAs))
|
for (var/obj/item/device/pda/P in sortList(PDAs))
|
||||||
if (!P.owner||P.toff||P == src) continue
|
if (!P.owner||P.toff||P == src) continue
|
||||||
dat += "<li><a href='byond://?src=\ref[src];choice=Message;target=\ref[P]'>[P]</a>"
|
dat += "<li><a href='byond://?src=\ref[src];choice=Message;target=\ref[P]'>[P]</a>"
|
||||||
if (istype(cartridge, /obj/item/weapon/cartridge/syndicate) && !istype(P, /obj/item/device/pda/ai))
|
if (istype(cartridge, /obj/item/weapon/cartridge/syndicate) && P.detonate)
|
||||||
dat += " (<a href='byond://?src=\ref[src];choice=Detonate;target=\ref[P]'><img src=pda_boom.png>*Detonate*</a>)"
|
dat += " (<a href='byond://?src=\ref[src];choice=Detonate;target=\ref[P]'><img src=pda_boom.png>*Detonate*</a>)"
|
||||||
if (istype(cartridge, /obj/item/weapon/cartridge/clown))
|
if (istype(cartridge, /obj/item/weapon/cartridge/clown))
|
||||||
dat += " (<a href='byond://?src=\ref[src];choice=Send Honk;target=\ref[P]'><img src=pda_honk.png>*Send Virus*</a>)"
|
dat += " (<a href='byond://?src=\ref[src];choice=Send Honk;target=\ref[P]'><img src=pda_honk.png>*Send Virus*</a>)"
|
||||||
@@ -724,95 +733,70 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
|
|
||||||
var/t = input(U, "Please enter message", name, null) as text
|
var/t = input(U, "Please enter message", name, null) as text
|
||||||
t = copytext(sanitize(t), 1, MAX_MESSAGE_LEN)
|
t = copytext(sanitize(t), 1, MAX_MESSAGE_LEN)
|
||||||
if (!t)
|
if (!t || !istype(P))
|
||||||
return
|
return
|
||||||
if (!in_range(src, U) && loc != U)
|
if (!in_range(src, U) && loc != U)
|
||||||
return
|
return
|
||||||
|
|
||||||
if(!istype(P)) return
|
if (isnull(P)||P.toff || toff)
|
||||||
|
return
|
||||||
|
|
||||||
if(istype(P, /obj/item/device/pda))
|
if (last_text && world.time < last_text + 5)
|
||||||
if (isnull(P)||P.toff || toff)
|
return
|
||||||
return
|
|
||||||
|
|
||||||
if (last_text && world.time < last_text + 5)
|
last_text = world.time
|
||||||
return
|
// check if telecomms I/O route 1459 is stable
|
||||||
|
//var/telecomms_intact = telecomms_process(P.owner, owner, t)
|
||||||
|
var/obj/machinery/message_server/useMS = null
|
||||||
|
if(message_servers)
|
||||||
|
for (var/obj/machinery/message_server/MS in message_servers)
|
||||||
|
//PDAs are now dependant on the Message Server.
|
||||||
|
if(MS.active)
|
||||||
|
useMS = MS
|
||||||
|
break
|
||||||
|
if(useMS) // only send the message if it's stable
|
||||||
|
useMS.send_pda_message("[P.owner]","[owner]","[t]")
|
||||||
|
|
||||||
last_text = world.time
|
tnote += "<i><b>→ To [P.owner]:</b></i><br>[t]<br>"
|
||||||
// check if telecomms I/O route 1459 is stable
|
P.tnote += "<i><b>← From <a href='byond://?src=\ref[P];choice=Message;target=\ref[src]'>[owner]</a> ([ownjob]):</b></i><br>[t]<br>"
|
||||||
//var/telecomms_intact = telecomms_process(P.owner, owner, t)
|
|
||||||
var/obj/machinery/message_server/useMS = null
|
|
||||||
if(message_servers)
|
|
||||||
for (var/obj/machinery/message_server/MS in message_servers)
|
|
||||||
//PDAs are now dependant on the Message Server.
|
|
||||||
if(MS.active)
|
|
||||||
useMS = MS
|
|
||||||
break
|
|
||||||
if(useMS) // only send the message if it's stable
|
|
||||||
useMS.send_pda_message("[P.owner]","[owner]","[t]")
|
|
||||||
|
|
||||||
tnote += "<i><b>→ To [P.owner]:</b></i><br>[t]<br>"
|
if (prob(15)) //Give the AI a chance of intercepting the message
|
||||||
P.tnote += "<i><b>← From <a href='byond://?src=\ref[P];choice=Message;target=\ref[src]'>[owner]</a> ([ownjob]):</b></i><br>[t]<br>"
|
var/who = src.owner
|
||||||
|
if(prob(50))
|
||||||
|
who = P:owner
|
||||||
|
for(var/mob/living/silicon/ai/ai in world)
|
||||||
|
// Allows other AIs to intercept the message but the AI won't intercept their own message.
|
||||||
|
if(ai.aiPDA != P && ai.aiPDA != src)
|
||||||
|
ai.show_message("<i>Intercepted message from <b>[who]</b>: [t]</i>")
|
||||||
|
|
||||||
if (prob(15)) //Give the AI a chance of intercepting the message
|
if (!P.silent)
|
||||||
var/who = src.owner
|
playsound(P.loc, 'twobeep.ogg', 50, 1)
|
||||||
if(prob(50))
|
for (var/mob/O in hearers(3, P.loc))
|
||||||
who = P:owner
|
if(!P.silent) O.show_message(text("\icon[P] *[P.ttone]*"))
|
||||||
for(var/mob/living/silicon/ai/ai in world)
|
//Search for holder of the PDA.
|
||||||
// Allows other AIs to intercept the message but the AI won't intercept their own message.
|
var/mob/living/L = null
|
||||||
if(ai.aiPDA != P && ai.aiPDA != src)
|
if(P.loc && isliving(P.loc))
|
||||||
ai.show_message("<i>Intercepted message from <b>[who]</b>: [t]</i>")
|
L = P.loc
|
||||||
|
//Maybe they are a pAI!
|
||||||
|
else if(istype(P, /obj/item/device/pda/pai) && P.loc)
|
||||||
|
//Search through the location's contents
|
||||||
|
for(var/obj/item/device/paicard/Pcard in P.loc)
|
||||||
|
//If there's a Pcard there then get the mind inside
|
||||||
|
if(Pcard.pai)
|
||||||
|
var/mob/living/silicon/pai/pai = Pcard.pai
|
||||||
|
//Is it the pAI that is receiving the message?
|
||||||
|
if(pai.pda && pai.pda == P)
|
||||||
|
L = pai
|
||||||
|
break
|
||||||
|
if(L)
|
||||||
|
L << "\icon[P] <b>Message from [src.owner] ([ownjob]), </b>\"[t]\" (<a href='byond://?src=\ref[P];choice=Message;skiprefresh=1;target=\ref[src]'>Reply</a>)"
|
||||||
|
|
||||||
if (!P.silent)
|
log_pda("[usr] (PDA: [src.name]) sent \"[t]\" to [P.name]")
|
||||||
playsound(P.loc, 'twobeep.ogg', 50, 1)
|
P.overlays = null
|
||||||
for (var/mob/O in hearers(3, P.loc))
|
P.overlays += image('pda.dmi', "pda-r")
|
||||||
if(!P.silent) O.show_message(text("\icon[P] *[P.ttone]*"))
|
|
||||||
if( P.loc && isliving(P.loc) )
|
|
||||||
var/mob/living/L = P.loc
|
|
||||||
L << "\icon[P] <b>Message from [src.owner] ([ownjob]), </b>\"[t]\" (<a href='byond://?src=\ref[P];choice=Message;skiprefresh=1;target=\ref[src]'>Reply</a>)"
|
|
||||||
|
|
||||||
log_pda("[usr] (PDA: [src.name]) sent \"[t]\" to [P.name]")
|
|
||||||
P.overlays = null
|
|
||||||
P.overlays += image('pda.dmi', "pda-r")
|
|
||||||
else
|
|
||||||
U << "ERROR: Server isn't responding."
|
|
||||||
|
|
||||||
// pAI Message
|
|
||||||
else
|
else
|
||||||
|
U << "ERROR: Server isn't responding."
|
||||||
|
|
||||||
//var/telecomms_intact = telecomms_process(P.owner, owner, t)
|
|
||||||
var/obj/machinery/message_server/useMS = null
|
|
||||||
if(message_servers)
|
|
||||||
for (var/obj/machinery/message_server/MS in message_servers)
|
|
||||||
//PDAs are now dependant on the Message Server.
|
|
||||||
if(MS.active)
|
|
||||||
useMS = MS
|
|
||||||
break
|
|
||||||
if(useMS) // only send the message if it's stable
|
|
||||||
useMS.send_pda_message("[P.owner]","[owner]","[t]")
|
|
||||||
tnote += "<i><b>→ To [P]:</b></i><br>[t]<br>"
|
|
||||||
P.tnote += "<i><b>← From <a href='byond://?src=\ref[P];soft=pdamessage;target=\ref[src]'>[src]</a>:</b></i><br>[t]<br>"
|
|
||||||
|
|
||||||
|
|
||||||
if (prob(15)) //Give the AI a chance of intercepting the message
|
|
||||||
var/who = src
|
|
||||||
if(prob(50))
|
|
||||||
who = P
|
|
||||||
for (var/mob/living/silicon/ai/ai in world)
|
|
||||||
// Allows other AIs to intercept the message but the AI won't intercept their own message.
|
|
||||||
if(ai.aiPDA != P && ai.aiPDA != src)
|
|
||||||
ai.show_message("<i>Intercepted message from <b>[who]</b>: [t]</i>")
|
|
||||||
|
|
||||||
if (!P.silent)
|
|
||||||
playsound(P.loc, 'twobeep.ogg', 50, 1)
|
|
||||||
for (var/mob/O in hearers(3, P.loc))
|
|
||||||
if(!P.silent) O.show_message(text("\icon[P] *[P.ttone]*"))
|
|
||||||
if( P.loc && isliving(P.loc) )
|
|
||||||
var/mob/living/L = P.loc
|
|
||||||
L << "\icon[P] <b>Message from [src.owner] ([ownjob]), </b>\"[t]\" (<a href='byond://?src=\ref[P];choice=Message;skiprefresh=1;target=\ref[src]'>Reply</a>)"
|
|
||||||
log_pda("[usr] (PDA: [src.name]) sent \"[t]\" to [P.name]")
|
|
||||||
else
|
|
||||||
U << "ERROR: Server isn't responding."
|
|
||||||
|
|
||||||
/obj/item/device/pda/verb/verb_remove_id()
|
/obj/item/device/pda/verb/verb_remove_id()
|
||||||
set category = "Object"
|
set category = "Object"
|
||||||
@@ -1012,7 +996,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
|
|
||||||
|
|
||||||
/obj/item/device/pda/proc/explode() //This needs tuning.
|
/obj/item/device/pda/proc/explode() //This needs tuning.
|
||||||
|
if(!src.detonate) return
|
||||||
var/turf/T = get_turf(src.loc)
|
var/turf/T = get_turf(src.loc)
|
||||||
|
|
||||||
if (ismob(loc))
|
if (ismob(loc))
|
||||||
@@ -1027,9 +1011,6 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
del(src)
|
del(src)
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/item/device/pda/ai/explode()
|
|
||||||
return // No explosions for the AI pda!
|
|
||||||
|
|
||||||
/obj/item/device/pda/Del()
|
/obj/item/device/pda/Del()
|
||||||
PDAs -= src
|
PDAs -= src
|
||||||
if (src.id)
|
if (src.id)
|
||||||
@@ -1118,6 +1099,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
usr << "You can't do that because you are dead!"
|
usr << "You can't do that because you are dead!"
|
||||||
return
|
return
|
||||||
if(!isnull(aiPDA))
|
if(!isnull(aiPDA))
|
||||||
|
//0
|
||||||
aiPDA.silent = !aiPDA.silent
|
aiPDA.silent = !aiPDA.silent
|
||||||
usr << "<span class='notice'>PDA ringer toggled [(aiPDA.silent ? "Off" : "On")]!</span>"
|
usr << "<span class='notice'>PDA ringer toggled [(aiPDA.silent ? "Off" : "On")]!</span>"
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
var/translate_hive = 0
|
var/translate_hive = 0
|
||||||
var/obj/item/device/encryptionkey/keyslot1 = null
|
var/obj/item/device/encryptionkey/keyslot1 = null
|
||||||
var/obj/item/device/encryptionkey/keyslot2 = null
|
var/obj/item/device/encryptionkey/keyslot2 = null
|
||||||
|
maxf = 1489
|
||||||
|
|
||||||
/obj/item/device/radio/headset/New()
|
/obj/item/device/radio/headset/New()
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
|
|||||||
var/list/channels = list() //see communications.dm for full list. First channes is a "default" for :h
|
var/list/channels = list() //see communications.dm for full list. First channes is a "default" for :h
|
||||||
var/subspace_transmission = 0
|
var/subspace_transmission = 0
|
||||||
var/syndie = 0//Holder to see if it's a syndicate encrpyed radio
|
var/syndie = 0//Holder to see if it's a syndicate encrpyed radio
|
||||||
|
var/maxf = 1499
|
||||||
// "Example" = FREQ_LISTENING|FREQ_BROADCASTING
|
// "Example" = FREQ_LISTENING|FREQ_BROADCASTING
|
||||||
flags = FPRINT | CONDUCT | TABLEPASS
|
flags = FPRINT | CONDUCT | TABLEPASS
|
||||||
slot_flags = SLOT_BELT
|
slot_flags = SLOT_BELT
|
||||||
@@ -65,10 +66,11 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
|
|||||||
|
|
||||||
if(freerange)
|
if(freerange)
|
||||||
if(frequency < 1200 || frequency > 1600)
|
if(frequency < 1200 || frequency > 1600)
|
||||||
frequency = sanitize_frequency(frequency)
|
frequency = sanitize_frequency(frequency, maxf)
|
||||||
else if (frequency < 1441 || frequency > 1489)
|
// The max freq is higher than a regular headset to decrease the chance of people listening in, if you use the higher channels.
|
||||||
|
else if (frequency < 1441 || frequency > maxf)
|
||||||
world.log << "[src] ([type]) has a frequency of [frequency], sanitizing."
|
world.log << "[src] ([type]) has a frequency of [frequency], sanitizing."
|
||||||
frequency = sanitize_frequency(frequency)
|
frequency = sanitize_frequency(frequency, maxf)
|
||||||
|
|
||||||
set_frequency(frequency)
|
set_frequency(frequency)
|
||||||
|
|
||||||
@@ -181,7 +183,7 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
|
|||||||
else if (href_list["freq"])
|
else if (href_list["freq"])
|
||||||
var/new_frequency = (frequency + text2num(href_list["freq"]))
|
var/new_frequency = (frequency + text2num(href_list["freq"]))
|
||||||
if (!freerange || (frequency < 1200 || frequency > 1600))
|
if (!freerange || (frequency < 1200 || frequency > 1600))
|
||||||
new_frequency = sanitize_frequency(new_frequency)
|
new_frequency = sanitize_frequency(new_frequency, maxf)
|
||||||
set_frequency(new_frequency)
|
set_frequency(new_frequency)
|
||||||
|
|
||||||
if (traitor_frequency && frequency == traitor_frequency)
|
if (traitor_frequency && frequency == traitor_frequency)
|
||||||
|
|||||||
@@ -654,7 +654,8 @@
|
|||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
/obj/machinery/reagentgrinder
|
/obj/machinery/reagentgrinder
|
||||||
name = "Reagent Grinder"
|
|
||||||
|
name = "All-In-One Grinder"
|
||||||
icon = 'kitchen.dmi'
|
icon = 'kitchen.dmi'
|
||||||
icon_state = "juicer1"
|
icon_state = "juicer1"
|
||||||
layer = 2.9
|
layer = 2.9
|
||||||
@@ -663,28 +664,49 @@
|
|||||||
use_power = 1
|
use_power = 1
|
||||||
idle_power_usage = 5
|
idle_power_usage = 5
|
||||||
active_power_usage = 100
|
active_power_usage = 100
|
||||||
|
var/inuse = 0
|
||||||
var/obj/item/weapon/reagent_containers/beaker = null
|
var/obj/item/weapon/reagent_containers/beaker = null
|
||||||
var/global/list/allowed_items = list ( // reagent = amount, amount of 0 indicate to determine the amount from the reagents list, only implemented on plants for now
|
var/list/blend_items = list (
|
||||||
|
|
||||||
|
//Sheets
|
||||||
/obj/item/stack/sheet/plasma = list("plasma" = 20),
|
/obj/item/stack/sheet/plasma = list("plasma" = 20),
|
||||||
/obj/item/stack/sheet/uranium = list("uranium" = 20),
|
/obj/item/stack/sheet/uranium = list("uranium" = 20),
|
||||||
/obj/item/stack/sheet/clown = list("banana" = 20),
|
/obj/item/stack/sheet/clown = list("banana" = 20),
|
||||||
/obj/item/stack/sheet/silver = list("silver" = 20),
|
/obj/item/stack/sheet/silver = list("silver" = 20),
|
||||||
/obj/item/stack/sheet/gold = list("gold" = 20),
|
/obj/item/stack/sheet/gold = list("gold" = 20),
|
||||||
/*
|
|
||||||
/obj/item/weapon/reagent_containers/food/snacks/grown/banana = list("banana" = 0),
|
|
||||||
/obj/item/weapon/reagent_containers/food/snacks/grown/carrot = list("imidazoline" = 0),
|
|
||||||
/obj/item/weapon/reagent_containers/food/snacks/grown/corn = list("cornoil" = 0),
|
|
||||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap = list("psilocybin" = 0),
|
|
||||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita = list("amatoxin" = 0, "psilocybin" = 0),
|
|
||||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/angel = list("amatoxin" = 0, "psilocybin" = 0),
|
|
||||||
/obj/item/weapon/reagent_containers/food/snacks/grown/chili = list("capsaicin" = 0),
|
|
||||||
/obj/item/weapon/reagent_containers/food/snacks/grown/icepepper = list("frostoil" = 0),
|
|
||||||
*/
|
|
||||||
/obj/item/weapon/grown/nettle = list("acid" = 0),
|
/obj/item/weapon/grown/nettle = list("acid" = 0),
|
||||||
/obj/item/weapon/grown/deathnettle = list("pacid" = 0),
|
/obj/item/weapon/grown/deathnettle = list("pacid" = 0),
|
||||||
/obj/item/weapon/reagent_containers/pill = list()
|
|
||||||
|
//Blender Stuff
|
||||||
|
/obj/item/weapon/reagent_containers/food/snacks/grown/soybeans = list("soymilk" = 0),
|
||||||
|
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato = list("ketchup" = 0),
|
||||||
|
/obj/item/weapon/reagent_containers/food/snacks/grown/corn = list("cornoil" = 0),
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//All types that you can put into the grinder to transfer the reagents to the beaker. !Put all recipes above this.!
|
||||||
|
/obj/item/weapon/reagent_containers/pill = list(),
|
||||||
|
/obj/item/weapon/reagent_containers/food = list()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var/list/juice_items = list (
|
||||||
|
|
||||||
|
//Juicer Stuff
|
||||||
|
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato = list("tomatojuice" = 0),
|
||||||
|
/obj/item/weapon/reagent_containers/food/snacks/grown/carrot = list("carrotjuice" = 0),
|
||||||
|
/obj/item/weapon/reagent_containers/food/snacks/grown/berries = list("berryjuice" = 0),
|
||||||
|
/obj/item/weapon/reagent_containers/food/snacks/grown/banana = list("banana" = 0),
|
||||||
|
/obj/item/weapon/reagent_containers/food/snacks/grown/potato = list("potato" = 0),
|
||||||
|
/obj/item/weapon/reagent_containers/food/snacks/grown/lemon = list("lemonjuice" = 0),
|
||||||
|
/obj/item/weapon/reagent_containers/food/snacks/grown/orange = list("orangejuice" = 0),
|
||||||
|
/obj/item/weapon/reagent_containers/food/snacks/grown/lime = list("limejuice" = 0),
|
||||||
|
/obj/item/weapon/reagent_containers/food/snacks/watermelonslice = list("watermelonjuice" = 0),
|
||||||
|
/obj/item/weapon/reagent_containers/food/snacks/grown/poisonberries = list("poisonberryjuice" = 0),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
var/list/holdingitems = list()
|
||||||
|
|
||||||
/obj/machinery/reagentgrinder/New()
|
/obj/machinery/reagentgrinder/New()
|
||||||
..()
|
..()
|
||||||
beaker = new /obj/item/weapon/reagent_containers/glass/large(src)
|
beaker = new /obj/item/weapon/reagent_containers/glass/large(src)
|
||||||
@@ -708,11 +730,14 @@
|
|||||||
update_icon()
|
update_icon()
|
||||||
src.updateUsrDialog()
|
src.updateUsrDialog()
|
||||||
return 0
|
return 0
|
||||||
if (!is_type_in_list(O, allowed_items))
|
if (!is_type_in_list(O, blend_items) && !is_type_in_list(O, juice_items))
|
||||||
user << "Cannot refine into a reagent."
|
user << "Cannot refine into a reagent."
|
||||||
return 1
|
return 1
|
||||||
user.before_take_item(O)
|
user.before_take_item(O)
|
||||||
|
if(holdingitems && holdingitems.len == 0)
|
||||||
|
src.verbs += /obj/machinery/reagentgrinder/verb/eject
|
||||||
O.loc = src
|
O.loc = src
|
||||||
|
holdingitems += O
|
||||||
src.updateUsrDialog()
|
src.updateUsrDialog()
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
@@ -731,37 +756,43 @@
|
|||||||
var/is_beaker_ready = 0
|
var/is_beaker_ready = 0
|
||||||
var/processing_chamber = ""
|
var/processing_chamber = ""
|
||||||
var/beaker_contents = ""
|
var/beaker_contents = ""
|
||||||
|
var/dat = ""
|
||||||
|
|
||||||
for (var/i in allowed_items)
|
if(!inuse)
|
||||||
for (var/obj/item/O in src.contents)
|
for (var/obj/item/O in holdingitems)
|
||||||
if (!istype(O,i))
|
processing_chamber += "\A [O.name]<BR>"
|
||||||
continue
|
|
||||||
processing_chamber+= "some <B>[O]</B><BR>"
|
if (!processing_chamber)
|
||||||
break
|
is_chamber_empty = 1
|
||||||
if (!processing_chamber)
|
processing_chamber = "Nothing."
|
||||||
is_chamber_empty = 1
|
if (!beaker)
|
||||||
processing_chamber = "Nothing."
|
beaker_contents = "<B>No beaker attached.</B><br>"
|
||||||
if (!beaker)
|
else
|
||||||
beaker_contents = "\The [src] has no beaker attached."
|
is_beaker_ready = 1
|
||||||
else if (!beaker.reagents.total_volume)
|
beaker_contents = "<B>The beaker contains:</B><br>"
|
||||||
beaker_contents = "\The [src] has attached an empty beaker."
|
var/anything = 0
|
||||||
is_beaker_ready = 1
|
for(var/datum/reagent/R in beaker.reagents.reagent_list)
|
||||||
else if (beaker.reagents.total_volume < beaker.reagents.maximum_volume)
|
anything = 1
|
||||||
beaker_contents = "\The [src] has attached a beaker with something."
|
beaker_contents += "[R.volume] - [R.name]<br>"
|
||||||
is_beaker_ready = 1
|
if(!anything)
|
||||||
|
beaker_contents += "Nothing<br>"
|
||||||
|
|
||||||
|
|
||||||
|
dat = {"
|
||||||
|
<b>Processing chamber contains:</b><br>
|
||||||
|
[processing_chamber]<br>
|
||||||
|
[beaker_contents]<hr>
|
||||||
|
"}
|
||||||
|
if (is_beaker_ready && !is_chamber_empty && !(stat & (NOPOWER|BROKEN)))
|
||||||
|
dat += "<A href='?src=\ref[src];action=grind'>Grind the reagents</a><BR>"
|
||||||
|
dat += "<A href='?src=\ref[src];action=juice'>Juice the reagents</a><BR><BR>"
|
||||||
|
if(holdingitems && holdingitems.len > 0)
|
||||||
|
dat += "<A href='?src=\ref[src];action=eject'>Eject the reagents</a><BR>"
|
||||||
|
if (beaker)
|
||||||
|
dat += "<A href='?src=\ref[src];action=detach'>Detach the beaker</a><BR>"
|
||||||
else
|
else
|
||||||
beaker_contents = "\The [src] has attached a beaker and the beaker is full!"
|
dat += "Please wait..."
|
||||||
|
user << browse("<HEAD><TITLE>All-In-One Grinder</TITLE></HEAD><TT>[dat]</TT>", "window=reagentgrinder")
|
||||||
var/dat = {"
|
|
||||||
<b>Processing chamber contains:</b><br>
|
|
||||||
[processing_chamber]<br>
|
|
||||||
[beaker_contents]<hr>
|
|
||||||
"}
|
|
||||||
if (is_beaker_ready && !is_chamber_empty && !(stat & (NOPOWER|BROKEN)))
|
|
||||||
dat += "<A href='?src=\ref[src];action=grind'>Turn on!<BR>"
|
|
||||||
if (beaker)
|
|
||||||
dat += "<A href='?src=\ref[src];action=detach'>Detach a beaker!<BR>"
|
|
||||||
user << browse("<HEAD><TITLE>Reagent Grinder</TITLE></HEAD><TT>[dat]</TT>", "window=reagentgrinder")
|
|
||||||
onclose(user, "reagentgrinder")
|
onclose(user, "reagentgrinder")
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -773,7 +804,10 @@
|
|||||||
switch(href_list["action"])
|
switch(href_list["action"])
|
||||||
if ("grind")
|
if ("grind")
|
||||||
grind()
|
grind()
|
||||||
|
if("juice")
|
||||||
|
juice()
|
||||||
|
if("eject")
|
||||||
|
eject()
|
||||||
if ("detach")
|
if ("detach")
|
||||||
detach()
|
detach()
|
||||||
src.updateUsrDialog()
|
src.updateUsrDialog()
|
||||||
@@ -792,11 +826,42 @@
|
|||||||
beaker = null
|
beaker = null
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
/obj/machinery/reagentgrinder/proc/get_allowed_by_id(var/obj/item/weapon/grown/O)
|
/obj/machinery/reagentgrinder/verb/eject()
|
||||||
for (var/i in allowed_items)
|
set category = "Object"
|
||||||
if (istype(O, i))
|
set name = "Eject contents from the grinder"
|
||||||
return allowed_items[i]
|
set src in oview(1)
|
||||||
|
if (usr.stat != 0)
|
||||||
|
return
|
||||||
|
if (holdingitems && holdingitems.len == 0)
|
||||||
|
return
|
||||||
|
|
||||||
|
src.verbs -= /obj/machinery/reagentgrinder/verb/eject
|
||||||
|
|
||||||
|
for(var/obj/item/O in holdingitems)
|
||||||
|
O.loc = src.loc
|
||||||
|
holdingitems -= O
|
||||||
|
holdingitems = list()
|
||||||
|
|
||||||
|
/obj/machinery/reagentgrinder/proc/is_allowed(var/obj/item/weapon/reagent_containers/O)
|
||||||
|
for (var/i in blend_items)
|
||||||
|
if(istype(O, i))
|
||||||
|
return 1
|
||||||
|
return 0
|
||||||
|
|
||||||
|
/obj/machinery/reagentgrinder/proc/get_allowed_by_id(var/obj/item/weapon/grown/O)
|
||||||
|
for (var/i in blend_items)
|
||||||
|
if (istype(O, i))
|
||||||
|
return blend_items[i]
|
||||||
|
|
||||||
|
/obj/machinery/reagentgrinder/proc/get_allowed_snack_by_id(var/obj/item/weapon/reagent_containers/food/snacks/O)
|
||||||
|
for(var/i in blend_items)
|
||||||
|
if(istype(O, i))
|
||||||
|
return blend_items[i]
|
||||||
|
|
||||||
|
/obj/machinery/reagentgrinder/proc/get_allowed_juice_by_id(var/obj/item/weapon/reagent_containers/food/snacks/O)
|
||||||
|
for(var/i in juice_items)
|
||||||
|
if(istype(O, i))
|
||||||
|
return juice_items[i]
|
||||||
|
|
||||||
/obj/machinery/reagentgrinder/proc/get_grownweapon_amount(var/obj/item/weapon/grown/O)
|
/obj/machinery/reagentgrinder/proc/get_grownweapon_amount(var/obj/item/weapon/grown/O)
|
||||||
if (!istype(O))
|
if (!istype(O))
|
||||||
@@ -806,40 +871,94 @@
|
|||||||
else
|
else
|
||||||
return round(O.potency)
|
return round(O.potency)
|
||||||
|
|
||||||
/obj/machinery/reagentgrinder/proc/get_grind_id(var/obj/item/stack/sheet/O)
|
/obj/machinery/reagentgrinder/proc/get_juice_amount(var/obj/item/weapon/reagent_containers/food/snacks/grown/O)
|
||||||
for (var/i in allowed_items)
|
if (!istype(O))
|
||||||
if (istype(O, i))
|
return 5
|
||||||
return allowed_items[i]
|
else if (O.potency == -1)
|
||||||
|
return 5
|
||||||
|
else
|
||||||
|
return round(5*sqrt(O.potency))
|
||||||
|
|
||||||
/obj/machinery/reagentgrinder/proc/get_grind_amount(var/obj/item/stack/sheet/O)
|
/obj/machinery/reagentgrinder/proc/remove_object(var/obj/item/O)
|
||||||
return 20
|
holdingitems -= O
|
||||||
|
del(O)
|
||||||
|
|
||||||
/obj/machinery/reagentgrinder/proc/grind()
|
/obj/machinery/reagentgrinder/proc/juice()
|
||||||
power_change()
|
power_change()
|
||||||
if(stat & (NOPOWER|BROKEN))
|
if(stat & (NOPOWER|BROKEN))
|
||||||
return
|
return
|
||||||
if (!beaker || beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
if (!beaker || beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||||
return
|
return
|
||||||
playsound(src.loc, 'juicer.ogg', 20, 1)
|
playsound(src.loc, 'juicer.ogg', 20, 1)
|
||||||
|
inuse = 1
|
||||||
|
spawn(50)
|
||||||
|
inuse = 0
|
||||||
|
interact(usr)
|
||||||
//Snacks
|
//Snacks
|
||||||
for (var/obj/item/weapon/reagent_containers/food/snacks/O in src.contents)
|
for (var/obj/item/weapon/reagent_containers/food/snacks/O in holdingitems)
|
||||||
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||||
break
|
break
|
||||||
var/allowed = get_allowed_by_id(O)
|
|
||||||
|
var/allowed = get_allowed_juice_by_id(O)
|
||||||
|
if(isnull(allowed))
|
||||||
|
break
|
||||||
|
|
||||||
for (var/r_id in allowed)
|
for (var/r_id in allowed)
|
||||||
|
|
||||||
var/space = beaker.reagents.maximum_volume - beaker.reagents.total_volume
|
var/space = beaker.reagents.maximum_volume - beaker.reagents.total_volume
|
||||||
var/amount = allowed[r_id]
|
var/amount = get_juice_amount(O)
|
||||||
if (amount == 0)
|
|
||||||
if (O.reagents != null && O.reagents.has_reagent(r_id))
|
O.reagents.trans_id_to(beaker, r_id, min(amount, space))
|
||||||
beaker.reagents.add_reagent(r_id,min(O.reagents.get_reagent_amount(r_id), space))
|
|
||||||
else
|
|
||||||
beaker.reagents.add_reagent(r_id,min(amount, space))
|
|
||||||
|
|
||||||
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||||
break
|
break
|
||||||
del(O)
|
if(O.reagents.reagent_list.len == 0)
|
||||||
|
remove_object(O)
|
||||||
|
|
||||||
|
|
||||||
|
if(holdingitems && holdingitems.len == 0)
|
||||||
|
src.verbs -= /obj/machinery/reagentgrinder/verb/eject
|
||||||
|
|
||||||
|
/obj/machinery/reagentgrinder/proc/grind()
|
||||||
|
|
||||||
|
power_change()
|
||||||
|
if(stat & (NOPOWER|BROKEN))
|
||||||
|
return
|
||||||
|
if (!beaker || beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||||
|
return
|
||||||
|
playsound(src.loc, 'blender.ogg', 50, 1)
|
||||||
|
inuse = 1
|
||||||
|
spawn(60)
|
||||||
|
inuse = 0
|
||||||
|
interact(usr)
|
||||||
|
//Snacks
|
||||||
|
for (var/obj/item/weapon/reagent_containers/food/snacks/O in holdingitems)
|
||||||
|
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||||
|
break
|
||||||
|
|
||||||
|
var/allowed = get_allowed_snack_by_id(O)
|
||||||
|
if(isnull(allowed))
|
||||||
|
break
|
||||||
|
|
||||||
|
for (var/r_id in allowed)
|
||||||
|
|
||||||
|
var/space = beaker.reagents.maximum_volume - beaker.reagents.total_volume
|
||||||
|
var/amount = allowed[r_id]
|
||||||
|
if(amount == 0)
|
||||||
|
if (O.reagents != null && O.reagents.has_reagent("nutriment"))
|
||||||
|
beaker.reagents.add_reagent(r_id, min(O.reagents.get_reagent_amount("nutriment"), space))
|
||||||
|
|
||||||
|
else
|
||||||
|
O.reagents.trans_id_to(beaker, r_id, min(amount, space))
|
||||||
|
|
||||||
|
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||||
|
break
|
||||||
|
|
||||||
|
if(O.reagents.reagent_list.len == 0)
|
||||||
|
remove_object(O)
|
||||||
|
|
||||||
//Sheets
|
//Sheets
|
||||||
for (var/obj/item/stack/sheet/O in src.contents)
|
for (var/obj/item/stack/sheet/O in holdingitems)
|
||||||
var/allowed = get_allowed_by_id(O)
|
var/allowed = get_allowed_by_id(O)
|
||||||
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||||
break
|
break
|
||||||
@@ -851,10 +970,10 @@
|
|||||||
if (space < amount)
|
if (space < amount)
|
||||||
break
|
break
|
||||||
if (i == round(O.amount, 1))
|
if (i == round(O.amount, 1))
|
||||||
del(O)
|
remove_object(O)
|
||||||
break
|
break
|
||||||
//Plants
|
//Plants
|
||||||
for (var/obj/item/weapon/grown/O in src.contents)
|
for (var/obj/item/weapon/grown/O in holdingitems)
|
||||||
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||||
break
|
break
|
||||||
var/allowed = get_allowed_by_id(O)
|
var/allowed = get_allowed_by_id(O)
|
||||||
@@ -869,12 +988,16 @@
|
|||||||
|
|
||||||
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||||
break
|
break
|
||||||
del(O)
|
remove_object(O)
|
||||||
//Pills - Transfers reagents from pill into beaker
|
|
||||||
for (var/obj/item/weapon/reagent_containers/pill/O in src.contents)
|
//Everything else - Transfers reagents from it into beaker
|
||||||
|
for (var/obj/item/weapon/reagent_containers/O in holdingitems)
|
||||||
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||||
break
|
break
|
||||||
var/amount = O.reagents.total_volume
|
var/amount = O.reagents.total_volume
|
||||||
O.reagents.trans_to(beaker, amount)
|
O.reagents.trans_to(beaker, amount)
|
||||||
if(!O.reagents)
|
if(!O.reagents.total_volume)
|
||||||
del(O)
|
remove_object(O)
|
||||||
|
|
||||||
|
if(holdingitems && holdingitems.len == 0)
|
||||||
|
src.verbs -= /obj/machinery/reagentgrinder/verb/eject
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
aiPDA = new/obj/item/device/pda/ai(src)
|
aiPDA = new/obj/item/device/pda/ai(src)
|
||||||
aiPDA.owner = name
|
aiPDA.owner = name
|
||||||
aiPDA.ownjob = "AI"
|
aiPDA.ownjob = "AI"
|
||||||
aiPDA.name = "AI - " + name + " (" + aiPDA.ownjob + ")"
|
aiPDA.name = name + " (" + aiPDA.ownjob + ")"
|
||||||
|
|
||||||
if (istype(loc, /turf))
|
if (istype(loc, /turf))
|
||||||
verbs.Add(/mob/living/silicon/ai/proc/ai_call_shuttle,/mob/living/silicon/ai/proc/ai_camera_track, \
|
verbs.Add(/mob/living/silicon/ai/proc/ai_call_shuttle,/mob/living/silicon/ai/proc/ai_camera_track, \
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
if(aiPDA && aiPDA.name != name)
|
if(aiPDA && aiPDA.name != name)
|
||||||
aiPDA.owner = name
|
aiPDA.owner = name
|
||||||
aiPDA.name = "AI - " + name + " (" + aiPDA.ownjob + ")"
|
aiPDA.name = name + " (" + aiPDA.ownjob + ")"
|
||||||
|
|
||||||
if (src.malfhack)
|
if (src.malfhack)
|
||||||
if (src.malfhack.aidisabled)
|
if (src.malfhack.aidisabled)
|
||||||
|
|||||||
@@ -8,6 +8,13 @@
|
|||||||
card.radio = new /obj/item/device/radio(src.card)
|
card.radio = new /obj/item/device/radio(src.card)
|
||||||
radio = card.radio
|
radio = card.radio
|
||||||
|
|
||||||
|
//PDA
|
||||||
|
pda = new(src)
|
||||||
|
spawn(5)
|
||||||
|
pda.ownjob = "Personal Assistant"
|
||||||
|
pda.owner = text("[]", src)
|
||||||
|
pda.name = pda.owner + " (" + pda.ownjob + ")"
|
||||||
|
pda.toff = 1
|
||||||
..()
|
..()
|
||||||
|
|
||||||
/mob/living/silicon/pai/Login()
|
/mob/living/silicon/pai/Login()
|
||||||
|
|||||||
@@ -181,74 +181,17 @@
|
|||||||
spawn CheckDNA(M, src)
|
spawn CheckDNA(M, src)
|
||||||
|
|
||||||
if("pdamessage")
|
if("pdamessage")
|
||||||
if(href_list["target"])
|
if(!isnull(pda))
|
||||||
if(silence_time)
|
if(href_list["toggler"])
|
||||||
return alert("Communications circuits remain unitialized.")
|
pda.toff = !pda.toff
|
||||||
|
else if(href_list["ringer"])
|
||||||
|
pda.silent = !pda.silent
|
||||||
|
else if(href_list["target"])
|
||||||
|
if(silence_time)
|
||||||
|
return alert("Communications circuits remain unitialized.")
|
||||||
|
|
||||||
var/t = input(usr, "Please enter message", name, null) as text
|
var/target = locate(href_list["target"])
|
||||||
t = copytext(sanitize(t), 1, MAX_MESSAGE_LEN)
|
pda.create_message(src, target)
|
||||||
if(!t)
|
|
||||||
return
|
|
||||||
var/target = locate(href_list["target"])
|
|
||||||
|
|
||||||
// PDA Message
|
|
||||||
if(istype(target, /obj/item/device/pda))
|
|
||||||
var/obj/item/device/pda/P = target
|
|
||||||
if(isnull(P)||P.toff)
|
|
||||||
return
|
|
||||||
|
|
||||||
var/AnsweringMS = 0
|
|
||||||
for (var/obj/machinery/message_server/MS in message_servers)
|
|
||||||
if(MS.active)
|
|
||||||
MS.send_pda_message("[P.owner]","[src]","[t]")
|
|
||||||
AnsweringMS = 1
|
|
||||||
break
|
|
||||||
|
|
||||||
if(!AnsweringMS)
|
|
||||||
return alert("ERROR: No response from server!")
|
|
||||||
|
|
||||||
tnote += "<i><b>→ To [P.owner]:</b></i><br>[t]<br>"
|
|
||||||
P.tnote += "<i><b>← From <a href='byond://?src=\ref[P];choice=Message;target=\ref[src]'>[src]</a>:</b></i><br>[t]<br>"
|
|
||||||
|
|
||||||
if(prob(15)) //Give the AI a chance of intercepting the message
|
|
||||||
var/who = src
|
|
||||||
if(prob(50))
|
|
||||||
who = P:owner
|
|
||||||
for(var/mob/living/silicon/ai/ai in world)
|
|
||||||
ai.show_message("<i>Intercepted message from <b>[who]</b>: [t]</i>")
|
|
||||||
|
|
||||||
if(!P.silent)
|
|
||||||
playsound(P.loc, 'twobeep.ogg', 50, 1)
|
|
||||||
for (var/mob/O in hearers(3, P.loc))
|
|
||||||
O.show_message(text("\icon[P] *[P.ttone]*"))
|
|
||||||
|
|
||||||
P.overlays = null
|
|
||||||
P.overlays += image('pda.dmi', "pda-r")
|
|
||||||
|
|
||||||
// pAI Message
|
|
||||||
else
|
|
||||||
var/mob/living/silicon/pai/P = target
|
|
||||||
|
|
||||||
var/AnsweringMS = 0
|
|
||||||
for (var/obj/machinery/message_server/MS in message_servers)
|
|
||||||
MS.send_pda_message("[P]","[src]","[t]")
|
|
||||||
AnsweringMS = 1
|
|
||||||
break
|
|
||||||
|
|
||||||
if(!AnsweringMS)
|
|
||||||
return alert("ERROR: No response from server!")
|
|
||||||
|
|
||||||
tnote += "<i><b>→ To [P]:</b></i><br>[t]<br>"
|
|
||||||
P.tnote += "<i><b>← From <a href='byond://?src=\ref[P];soft=pdamessage;target=\ref[src]'>[src]</a>:</b></i><br>[t]<br>"
|
|
||||||
|
|
||||||
if (prob(15)) //Give the AI a chance of intercepting the message
|
|
||||||
var/who = src
|
|
||||||
if(prob(50))
|
|
||||||
who = P
|
|
||||||
for (var/mob/living/silicon/ai/ai in world)
|
|
||||||
ai.show_message("<i>Intercepted message from <b>[who]</b>: [t]</i>")
|
|
||||||
|
|
||||||
playsound(P.loc, 'twobeep.ogg', 50, 1)
|
|
||||||
|
|
||||||
// Accessing medical records
|
// Accessing medical records
|
||||||
if("medicalrecord")
|
if("medicalrecord")
|
||||||
@@ -309,6 +252,7 @@
|
|||||||
/mob/living/silicon/pai/proc/softwareMenu() // Populate the right menu
|
/mob/living/silicon/pai/proc/softwareMenu() // Populate the right menu
|
||||||
var/dat = ""
|
var/dat = ""
|
||||||
|
|
||||||
|
dat += "<A href='byond://?src=\ref[src];software=refresh'>Refresh</A><br>"
|
||||||
// Built-in
|
// Built-in
|
||||||
dat += "<A href='byond://?src=\ref[src];software=directives'>Directives</A><br>"
|
dat += "<A href='byond://?src=\ref[src];software=directives'>Directives</A><br>"
|
||||||
dat += "<A href='byond://?src=\ref[src];software=radio;sub=0'>Radio Configuration</A><br>"
|
dat += "<A href='byond://?src=\ref[src];software=radio;sub=0'>Radio Configuration</A><br>"
|
||||||
@@ -660,17 +604,19 @@
|
|||||||
|
|
||||||
// Digital Messenger
|
// Digital Messenger
|
||||||
/mob/living/silicon/pai/proc/pdamessage()
|
/mob/living/silicon/pai/proc/pdamessage()
|
||||||
|
|
||||||
var/dat = "<h3>Digital Messenger</h3>"
|
var/dat = "<h3>Digital Messenger</h3>"
|
||||||
|
dat += {"<b>Signal/Receiver Status:</b> <A href='byond://?src=\ref[src];software=pdamessage;toggler=1'>
|
||||||
|
[(pda.toff) ? "<font color='red'> \[Off\]</font>" : "<font color='green'> \[On\]</font>"]</a><br>
|
||||||
|
<b>Ringer Status:</b> <A href='byond://?src=\ref[src];software=pdamessage;ringer=1'>
|
||||||
|
[(pda.silent) ? "<font color='red'> \[Off\]</font>" : "<font color='green'> \[On\]</font>"]</a><br><br>"}
|
||||||
dat += "<ul>"
|
dat += "<ul>"
|
||||||
for (var/obj/item/device/pda/P in world)
|
if(!pda.toff)
|
||||||
if (!P.owner||P.toff||P == src) continue
|
for (var/obj/item/device/pda/P in sortList(PDAs))
|
||||||
dat += "<li><a href='byond://?src=\ref[src];software=pdamessage;target=\ref[P]'>[P]</a>"
|
if (!P.owner||P.toff||P == src.pda) continue
|
||||||
dat += "</li>"
|
|
||||||
for (var/mob/living/silicon/pai/P in world)
|
|
||||||
if(P.stat != 2)
|
|
||||||
dat += "<li><a href='byond://?src=\ref[src];software=pdamessage;target=\ref[P]'>[P]</a>"
|
dat += "<li><a href='byond://?src=\ref[src];software=pdamessage;target=\ref[P]'>[P]</a>"
|
||||||
dat += "</li>"
|
dat += "</li>"
|
||||||
dat += "</ul>"
|
dat += "</ul>"
|
||||||
dat += "<br><br>"
|
dat += "<br><br>"
|
||||||
dat += "Messages: <hr> [tnote]"
|
dat += "Messages: <hr> [pda.tnote]"
|
||||||
return dat
|
return dat
|
||||||
@@ -14,4 +14,5 @@ korphaeron - Game Master
|
|||||||
nodrak - Game Master
|
nodrak - Game Master
|
||||||
carnwennan - Game Master
|
carnwennan - Game Master
|
||||||
ikarrus - Game Master
|
ikarrus - Game Master
|
||||||
cheridan - Game Master
|
cheridan - Game Master
|
||||||
|
giacomand - Game Master
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
<table align='center' class="top">
|
<table align='center' class="top">
|
||||||
<tr>
|
<tr>
|
||||||
<td valign='top'>
|
<td valign='top'>
|
||||||
<font size='2'><b>Coders:</b> TLE, NEO, Errorage, muskets, veryinky, Skie, Noise, Numbers, Agouri, Noka, Urist McDorf, Uhangi, Darem, Mport, rastaf0, Doohl, Superxpdude, Rockdtben, ConstantA, Petethegoat, Kor, Polymorph, Carn, Nodrak, Donkie, Sieve<br></font>
|
<font size='2'><b>Coders:</b> TLE, NEO, Errorage, muskets, veryinky, Skie, Noise, Numbers, Agouri, Noka, Urist McDorf, Uhangi, Darem, Mport, rastaf0, Doohl, Superxpdude, Rockdtben, ConstantA, Petethegoat, Kor, Polymorph, Carn, Nodrak, Donkie, Sieve, Giacom<br></font>
|
||||||
<font size='2'><b>Spriters:</b> Agouri, Cheridan, Cruazy Guest, Deeaych, Deuryn, Matty406, Microwave, ShiftyEyesShady, Skie, Uhangi, Veyveyr, Petethegoat, Kor, Ricotez, Ausops, TankNut<br></font>
|
<font size='2'><b>Spriters:</b> Agouri, Cheridan, Cruazy Guest, Deeaych, Deuryn, Matty406, Microwave, ShiftyEyesShady, Skie, Uhangi, Veyveyr, Petethegoat, Kor, Ricotez, Ausops, TankNut<br></font>
|
||||||
<font size='2'><b>Sounds:</b> Skie, Lasty/Vinyl<br></font>
|
<font size='2'><b>Sounds:</b> Skie, Lasty/Vinyl<br></font>
|
||||||
<font size='2'><b>Thanks to:</b> CDK Station devs, GoonStation devs, the original SpaceStation developers and Invisty for the title image</font>
|
<font size='2'><b>Thanks to:</b> CDK Station devs, GoonStation devs, the original SpaceStation developers and Invisty for the title image</font>
|
||||||
@@ -47,7 +47,19 @@ should be listed in the changelog upon commit tho. Thanks. -->
|
|||||||
|
|
||||||
<!-- To take advantage of the pretty new format (well it was new when I wrote this anyway), open the "add-to-changelog.html" file in any browser and add the stuff and then generate the html code and paste it here -->
|
<!-- To take advantage of the pretty new format (well it was new when I wrote this anyway), open the "add-to-changelog.html" file in any browser and add the stuff and then generate the html code and paste it here -->
|
||||||
<div class="commit sansserif">
|
<div class="commit sansserif">
|
||||||
<h2 class="date">11 July 2012</h2>
|
<h2 class="date">Thursday July 12th 2012</h2>
|
||||||
|
<h3 class="author">Giacom updated:</h3>
|
||||||
|
<ul class="changes bgimages16">
|
||||||
|
<li class="rscadd">pAI gets a better PDA that can actually receive messages from people. They can also instantly reply like everybody else now and they can toggle their receiver/signaller/ringer.</li>
|
||||||
|
<li class="rscadd">You can show the AI the notes on your PDA by holding it up to a camera. When you show up a paper/pda to the camera the AI can now click on your name to go to you, if you're near a camera. People who are Unknown will not have a link; which would've allowed the AI to track them.</li>
|
||||||
|
<li class="rscadd">Made the" common server" and the "preset right receiver" listen for frequencies 144.1 to 148.9. This will allow people to use different frequencies to talk to eachother without bothering the common channel. It will also allow Revs and Cultists to work with each other; everything is still logged though so it still has risks.</li>
|
||||||
|
<li class="rscadd">Increased the maximum frequency limit for handheld radios and intercoms. It will give you the option to just use station bounced radios on a higher frequency so that anyone with a headset can't simply tune in.</li>
|
||||||
|
<li class="rscadd">Created an All-In-One Grinder that is suppose to replace the blender, juicer and reagent grinder all together. Meaning any department that has a juicer, blender and grinder will instead get this. It will help people be more independent from Chemistry by recycling foods and plants.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="commit sansserif">
|
||||||
|
<h2 class="date">Wednesday July 11th 2012</h2>
|
||||||
<h3 class="author">Nodrak, Cheridan and Icarus updated:</h3>
|
<h3 class="author">Nodrak, Cheridan and Icarus updated:</h3>
|
||||||
<ul class="changes bgimages16">
|
<ul class="changes bgimages16">
|
||||||
<li class="rscadd">Added a couple of Emergency Shield Projectors to Engineering secure storage.
|
<li class="rscadd">Added a couple of Emergency Shield Projectors to Engineering secure storage.
|
||||||
|
|||||||
@@ -1813,7 +1813,7 @@
|
|||||||
"aIS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar)
|
"aIS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar)
|
||||||
"aIT" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = "90Curve"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar)
|
"aIT" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = "90Curve"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar)
|
||||||
"aIU" = (/obj/structure/stool{pixel_y = 8},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar)
|
"aIU" = (/obj/structure/stool{pixel_y = 8},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar)
|
||||||
"aIV" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/light/small{dir = 8},/obj/structure/table,/obj/machinery/juicer,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/bar)
|
"aIV" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/bar)
|
||||||
"aIW" = (/obj/structure/disposalpipe/segment,/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/bar)
|
"aIW" = (/obj/structure/disposalpipe/segment,/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/bar)
|
||||||
"aIX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/bar)
|
"aIX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/bar)
|
||||||
"aIY" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/bar)
|
"aIY" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/bar)
|
||||||
@@ -2343,7 +2343,7 @@
|
|||||||
"aTc" = (/obj/effect/landmark/start{name = "Chef"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
|
"aTc" = (/obj/effect/landmark/start{name = "Chef"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
|
||||||
"aTd" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
|
"aTd" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
|
||||||
"aTe" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
|
"aTe" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
|
||||||
"aTf" = (/obj/structure/table,/obj/machinery/blender{pixel_y = 0},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/requests_console{department = "Kitchen"; departmentType = 2; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
|
"aTf" = (/obj/structure/table,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/requests_console{department = "Kitchen"; departmentType = 2; pixel_x = 30; pixel_y = 0},/obj/machinery/reagentgrinder,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
|
||||||
"aTg" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/hallway/primary/starboard)
|
"aTg" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/hallway/primary/starboard)
|
||||||
"aTh" = (/obj/machinery/atmospherics/pipe/simple{color = "blue"; icon_state = "intact-b-f"; level = 1; name = "pipe"},/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor,/area/hallway/primary/starboard)
|
"aTh" = (/obj/machinery/atmospherics/pipe/simple{color = "blue"; icon_state = "intact-b-f"; level = 1; name = "pipe"},/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor,/area/hallway/primary/starboard)
|
||||||
"aTi" = (/turf/simulated/floor,/area/hallway/primary/starboard)
|
"aTi" = (/turf/simulated/floor,/area/hallway/primary/starboard)
|
||||||
@@ -2410,7 +2410,7 @@
|
|||||||
"aUr" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar)
|
"aUr" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar)
|
||||||
"aUs" = (/obj/structure/extinguisher_cabinet{pixel_x = 27},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar)
|
"aUs" = (/obj/structure/extinguisher_cabinet{pixel_x = 27},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar)
|
||||||
"aUt" = (/obj/machinery/door_control{id = "kitchen"; name = "Hallway Shutters"; pixel_x = -1; pixel_y = -24},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
|
"aUt" = (/obj/machinery/door_control{id = "kitchen"; name = "Hallway Shutters"; pixel_x = -1; pixel_y = -24},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
|
||||||
"aUu" = (/obj/structure/table,/obj/machinery/juicer,/obj/structure/disposalpipe/segment,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
|
"aUu" = (/obj/structure/table,/obj/structure/disposalpipe/segment,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
|
||||||
"aUv" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor,/area/hydroponics)
|
"aUv" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor,/area/hydroponics)
|
||||||
"aUw" = (/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor,/area/hydroponics)
|
"aUw" = (/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor,/area/hydroponics)
|
||||||
"aUx" = (/obj/machinery/hydroponics,/turf/simulated/floor{dir = 1; icon_state = "green"},/area/hydroponics)
|
"aUx" = (/obj/machinery/hydroponics,/turf/simulated/floor{dir = 1; icon_state = "green"},/area/hydroponics)
|
||||||
|
|||||||
281
tgstation.dme
281
tgstation.dme
@@ -5,6 +5,266 @@
|
|||||||
// END_INTERNALS
|
// END_INTERNALS
|
||||||
// BEGIN_FILE_DIR
|
// BEGIN_FILE_DIR
|
||||||
#define FILE_DIR .
|
#define FILE_DIR .
|
||||||
|
#define FILE_DIR ".svn"
|
||||||
|
#define FILE_DIR ".svn/pristine"
|
||||||
|
#define FILE_DIR ".svn/pristine/00"
|
||||||
|
#define FILE_DIR ".svn/pristine/01"
|
||||||
|
#define FILE_DIR ".svn/pristine/02"
|
||||||
|
#define FILE_DIR ".svn/pristine/03"
|
||||||
|
#define FILE_DIR ".svn/pristine/04"
|
||||||
|
#define FILE_DIR ".svn/pristine/05"
|
||||||
|
#define FILE_DIR ".svn/pristine/06"
|
||||||
|
#define FILE_DIR ".svn/pristine/07"
|
||||||
|
#define FILE_DIR ".svn/pristine/08"
|
||||||
|
#define FILE_DIR ".svn/pristine/09"
|
||||||
|
#define FILE_DIR ".svn/pristine/0a"
|
||||||
|
#define FILE_DIR ".svn/pristine/0b"
|
||||||
|
#define FILE_DIR ".svn/pristine/0c"
|
||||||
|
#define FILE_DIR ".svn/pristine/0d"
|
||||||
|
#define FILE_DIR ".svn/pristine/0e"
|
||||||
|
#define FILE_DIR ".svn/pristine/0f"
|
||||||
|
#define FILE_DIR ".svn/pristine/10"
|
||||||
|
#define FILE_DIR ".svn/pristine/11"
|
||||||
|
#define FILE_DIR ".svn/pristine/12"
|
||||||
|
#define FILE_DIR ".svn/pristine/13"
|
||||||
|
#define FILE_DIR ".svn/pristine/14"
|
||||||
|
#define FILE_DIR ".svn/pristine/15"
|
||||||
|
#define FILE_DIR ".svn/pristine/16"
|
||||||
|
#define FILE_DIR ".svn/pristine/17"
|
||||||
|
#define FILE_DIR ".svn/pristine/18"
|
||||||
|
#define FILE_DIR ".svn/pristine/19"
|
||||||
|
#define FILE_DIR ".svn/pristine/1a"
|
||||||
|
#define FILE_DIR ".svn/pristine/1b"
|
||||||
|
#define FILE_DIR ".svn/pristine/1c"
|
||||||
|
#define FILE_DIR ".svn/pristine/1d"
|
||||||
|
#define FILE_DIR ".svn/pristine/1e"
|
||||||
|
#define FILE_DIR ".svn/pristine/1f"
|
||||||
|
#define FILE_DIR ".svn/pristine/20"
|
||||||
|
#define FILE_DIR ".svn/pristine/21"
|
||||||
|
#define FILE_DIR ".svn/pristine/22"
|
||||||
|
#define FILE_DIR ".svn/pristine/23"
|
||||||
|
#define FILE_DIR ".svn/pristine/24"
|
||||||
|
#define FILE_DIR ".svn/pristine/25"
|
||||||
|
#define FILE_DIR ".svn/pristine/26"
|
||||||
|
#define FILE_DIR ".svn/pristine/27"
|
||||||
|
#define FILE_DIR ".svn/pristine/28"
|
||||||
|
#define FILE_DIR ".svn/pristine/29"
|
||||||
|
#define FILE_DIR ".svn/pristine/2a"
|
||||||
|
#define FILE_DIR ".svn/pristine/2b"
|
||||||
|
#define FILE_DIR ".svn/pristine/2c"
|
||||||
|
#define FILE_DIR ".svn/pristine/2d"
|
||||||
|
#define FILE_DIR ".svn/pristine/2e"
|
||||||
|
#define FILE_DIR ".svn/pristine/2f"
|
||||||
|
#define FILE_DIR ".svn/pristine/30"
|
||||||
|
#define FILE_DIR ".svn/pristine/31"
|
||||||
|
#define FILE_DIR ".svn/pristine/32"
|
||||||
|
#define FILE_DIR ".svn/pristine/33"
|
||||||
|
#define FILE_DIR ".svn/pristine/34"
|
||||||
|
#define FILE_DIR ".svn/pristine/35"
|
||||||
|
#define FILE_DIR ".svn/pristine/36"
|
||||||
|
#define FILE_DIR ".svn/pristine/37"
|
||||||
|
#define FILE_DIR ".svn/pristine/38"
|
||||||
|
#define FILE_DIR ".svn/pristine/39"
|
||||||
|
#define FILE_DIR ".svn/pristine/3a"
|
||||||
|
#define FILE_DIR ".svn/pristine/3b"
|
||||||
|
#define FILE_DIR ".svn/pristine/3c"
|
||||||
|
#define FILE_DIR ".svn/pristine/3d"
|
||||||
|
#define FILE_DIR ".svn/pristine/3e"
|
||||||
|
#define FILE_DIR ".svn/pristine/3f"
|
||||||
|
#define FILE_DIR ".svn/pristine/40"
|
||||||
|
#define FILE_DIR ".svn/pristine/41"
|
||||||
|
#define FILE_DIR ".svn/pristine/42"
|
||||||
|
#define FILE_DIR ".svn/pristine/43"
|
||||||
|
#define FILE_DIR ".svn/pristine/44"
|
||||||
|
#define FILE_DIR ".svn/pristine/45"
|
||||||
|
#define FILE_DIR ".svn/pristine/46"
|
||||||
|
#define FILE_DIR ".svn/pristine/47"
|
||||||
|
#define FILE_DIR ".svn/pristine/48"
|
||||||
|
#define FILE_DIR ".svn/pristine/49"
|
||||||
|
#define FILE_DIR ".svn/pristine/4a"
|
||||||
|
#define FILE_DIR ".svn/pristine/4b"
|
||||||
|
#define FILE_DIR ".svn/pristine/4c"
|
||||||
|
#define FILE_DIR ".svn/pristine/4d"
|
||||||
|
#define FILE_DIR ".svn/pristine/4e"
|
||||||
|
#define FILE_DIR ".svn/pristine/4f"
|
||||||
|
#define FILE_DIR ".svn/pristine/50"
|
||||||
|
#define FILE_DIR ".svn/pristine/51"
|
||||||
|
#define FILE_DIR ".svn/pristine/52"
|
||||||
|
#define FILE_DIR ".svn/pristine/53"
|
||||||
|
#define FILE_DIR ".svn/pristine/54"
|
||||||
|
#define FILE_DIR ".svn/pristine/55"
|
||||||
|
#define FILE_DIR ".svn/pristine/56"
|
||||||
|
#define FILE_DIR ".svn/pristine/57"
|
||||||
|
#define FILE_DIR ".svn/pristine/58"
|
||||||
|
#define FILE_DIR ".svn/pristine/59"
|
||||||
|
#define FILE_DIR ".svn/pristine/5a"
|
||||||
|
#define FILE_DIR ".svn/pristine/5b"
|
||||||
|
#define FILE_DIR ".svn/pristine/5c"
|
||||||
|
#define FILE_DIR ".svn/pristine/5d"
|
||||||
|
#define FILE_DIR ".svn/pristine/5e"
|
||||||
|
#define FILE_DIR ".svn/pristine/5f"
|
||||||
|
#define FILE_DIR ".svn/pristine/60"
|
||||||
|
#define FILE_DIR ".svn/pristine/61"
|
||||||
|
#define FILE_DIR ".svn/pristine/62"
|
||||||
|
#define FILE_DIR ".svn/pristine/63"
|
||||||
|
#define FILE_DIR ".svn/pristine/64"
|
||||||
|
#define FILE_DIR ".svn/pristine/65"
|
||||||
|
#define FILE_DIR ".svn/pristine/66"
|
||||||
|
#define FILE_DIR ".svn/pristine/67"
|
||||||
|
#define FILE_DIR ".svn/pristine/68"
|
||||||
|
#define FILE_DIR ".svn/pristine/69"
|
||||||
|
#define FILE_DIR ".svn/pristine/6a"
|
||||||
|
#define FILE_DIR ".svn/pristine/6b"
|
||||||
|
#define FILE_DIR ".svn/pristine/6c"
|
||||||
|
#define FILE_DIR ".svn/pristine/6d"
|
||||||
|
#define FILE_DIR ".svn/pristine/6e"
|
||||||
|
#define FILE_DIR ".svn/pristine/6f"
|
||||||
|
#define FILE_DIR ".svn/pristine/70"
|
||||||
|
#define FILE_DIR ".svn/pristine/71"
|
||||||
|
#define FILE_DIR ".svn/pristine/72"
|
||||||
|
#define FILE_DIR ".svn/pristine/73"
|
||||||
|
#define FILE_DIR ".svn/pristine/74"
|
||||||
|
#define FILE_DIR ".svn/pristine/75"
|
||||||
|
#define FILE_DIR ".svn/pristine/76"
|
||||||
|
#define FILE_DIR ".svn/pristine/77"
|
||||||
|
#define FILE_DIR ".svn/pristine/78"
|
||||||
|
#define FILE_DIR ".svn/pristine/79"
|
||||||
|
#define FILE_DIR ".svn/pristine/7a"
|
||||||
|
#define FILE_DIR ".svn/pristine/7b"
|
||||||
|
#define FILE_DIR ".svn/pristine/7c"
|
||||||
|
#define FILE_DIR ".svn/pristine/7d"
|
||||||
|
#define FILE_DIR ".svn/pristine/7e"
|
||||||
|
#define FILE_DIR ".svn/pristine/7f"
|
||||||
|
#define FILE_DIR ".svn/pristine/80"
|
||||||
|
#define FILE_DIR ".svn/pristine/81"
|
||||||
|
#define FILE_DIR ".svn/pristine/82"
|
||||||
|
#define FILE_DIR ".svn/pristine/83"
|
||||||
|
#define FILE_DIR ".svn/pristine/84"
|
||||||
|
#define FILE_DIR ".svn/pristine/85"
|
||||||
|
#define FILE_DIR ".svn/pristine/86"
|
||||||
|
#define FILE_DIR ".svn/pristine/87"
|
||||||
|
#define FILE_DIR ".svn/pristine/88"
|
||||||
|
#define FILE_DIR ".svn/pristine/89"
|
||||||
|
#define FILE_DIR ".svn/pristine/8a"
|
||||||
|
#define FILE_DIR ".svn/pristine/8b"
|
||||||
|
#define FILE_DIR ".svn/pristine/8c"
|
||||||
|
#define FILE_DIR ".svn/pristine/8d"
|
||||||
|
#define FILE_DIR ".svn/pristine/8e"
|
||||||
|
#define FILE_DIR ".svn/pristine/8f"
|
||||||
|
#define FILE_DIR ".svn/pristine/90"
|
||||||
|
#define FILE_DIR ".svn/pristine/91"
|
||||||
|
#define FILE_DIR ".svn/pristine/92"
|
||||||
|
#define FILE_DIR ".svn/pristine/93"
|
||||||
|
#define FILE_DIR ".svn/pristine/94"
|
||||||
|
#define FILE_DIR ".svn/pristine/95"
|
||||||
|
#define FILE_DIR ".svn/pristine/96"
|
||||||
|
#define FILE_DIR ".svn/pristine/97"
|
||||||
|
#define FILE_DIR ".svn/pristine/98"
|
||||||
|
#define FILE_DIR ".svn/pristine/99"
|
||||||
|
#define FILE_DIR ".svn/pristine/9a"
|
||||||
|
#define FILE_DIR ".svn/pristine/9b"
|
||||||
|
#define FILE_DIR ".svn/pristine/9c"
|
||||||
|
#define FILE_DIR ".svn/pristine/9d"
|
||||||
|
#define FILE_DIR ".svn/pristine/9e"
|
||||||
|
#define FILE_DIR ".svn/pristine/9f"
|
||||||
|
#define FILE_DIR ".svn/pristine/a0"
|
||||||
|
#define FILE_DIR ".svn/pristine/a1"
|
||||||
|
#define FILE_DIR ".svn/pristine/a2"
|
||||||
|
#define FILE_DIR ".svn/pristine/a3"
|
||||||
|
#define FILE_DIR ".svn/pristine/a4"
|
||||||
|
#define FILE_DIR ".svn/pristine/a5"
|
||||||
|
#define FILE_DIR ".svn/pristine/a6"
|
||||||
|
#define FILE_DIR ".svn/pristine/a7"
|
||||||
|
#define FILE_DIR ".svn/pristine/a8"
|
||||||
|
#define FILE_DIR ".svn/pristine/a9"
|
||||||
|
#define FILE_DIR ".svn/pristine/aa"
|
||||||
|
#define FILE_DIR ".svn/pristine/ab"
|
||||||
|
#define FILE_DIR ".svn/pristine/ac"
|
||||||
|
#define FILE_DIR ".svn/pristine/ad"
|
||||||
|
#define FILE_DIR ".svn/pristine/ae"
|
||||||
|
#define FILE_DIR ".svn/pristine/af"
|
||||||
|
#define FILE_DIR ".svn/pristine/b0"
|
||||||
|
#define FILE_DIR ".svn/pristine/b1"
|
||||||
|
#define FILE_DIR ".svn/pristine/b2"
|
||||||
|
#define FILE_DIR ".svn/pristine/b3"
|
||||||
|
#define FILE_DIR ".svn/pristine/b4"
|
||||||
|
#define FILE_DIR ".svn/pristine/b5"
|
||||||
|
#define FILE_DIR ".svn/pristine/b6"
|
||||||
|
#define FILE_DIR ".svn/pristine/b7"
|
||||||
|
#define FILE_DIR ".svn/pristine/b8"
|
||||||
|
#define FILE_DIR ".svn/pristine/b9"
|
||||||
|
#define FILE_DIR ".svn/pristine/ba"
|
||||||
|
#define FILE_DIR ".svn/pristine/bb"
|
||||||
|
#define FILE_DIR ".svn/pristine/bc"
|
||||||
|
#define FILE_DIR ".svn/pristine/bd"
|
||||||
|
#define FILE_DIR ".svn/pristine/be"
|
||||||
|
#define FILE_DIR ".svn/pristine/bf"
|
||||||
|
#define FILE_DIR ".svn/pristine/c0"
|
||||||
|
#define FILE_DIR ".svn/pristine/c1"
|
||||||
|
#define FILE_DIR ".svn/pristine/c2"
|
||||||
|
#define FILE_DIR ".svn/pristine/c3"
|
||||||
|
#define FILE_DIR ".svn/pristine/c4"
|
||||||
|
#define FILE_DIR ".svn/pristine/c5"
|
||||||
|
#define FILE_DIR ".svn/pristine/c6"
|
||||||
|
#define FILE_DIR ".svn/pristine/c7"
|
||||||
|
#define FILE_DIR ".svn/pristine/c8"
|
||||||
|
#define FILE_DIR ".svn/pristine/c9"
|
||||||
|
#define FILE_DIR ".svn/pristine/ca"
|
||||||
|
#define FILE_DIR ".svn/pristine/cb"
|
||||||
|
#define FILE_DIR ".svn/pristine/cc"
|
||||||
|
#define FILE_DIR ".svn/pristine/cd"
|
||||||
|
#define FILE_DIR ".svn/pristine/ce"
|
||||||
|
#define FILE_DIR ".svn/pristine/cf"
|
||||||
|
#define FILE_DIR ".svn/pristine/d0"
|
||||||
|
#define FILE_DIR ".svn/pristine/d1"
|
||||||
|
#define FILE_DIR ".svn/pristine/d2"
|
||||||
|
#define FILE_DIR ".svn/pristine/d3"
|
||||||
|
#define FILE_DIR ".svn/pristine/d4"
|
||||||
|
#define FILE_DIR ".svn/pristine/d5"
|
||||||
|
#define FILE_DIR ".svn/pristine/d6"
|
||||||
|
#define FILE_DIR ".svn/pristine/d7"
|
||||||
|
#define FILE_DIR ".svn/pristine/d8"
|
||||||
|
#define FILE_DIR ".svn/pristine/d9"
|
||||||
|
#define FILE_DIR ".svn/pristine/da"
|
||||||
|
#define FILE_DIR ".svn/pristine/db"
|
||||||
|
#define FILE_DIR ".svn/pristine/dc"
|
||||||
|
#define FILE_DIR ".svn/pristine/dd"
|
||||||
|
#define FILE_DIR ".svn/pristine/de"
|
||||||
|
#define FILE_DIR ".svn/pristine/df"
|
||||||
|
#define FILE_DIR ".svn/pristine/e0"
|
||||||
|
#define FILE_DIR ".svn/pristine/e1"
|
||||||
|
#define FILE_DIR ".svn/pristine/e2"
|
||||||
|
#define FILE_DIR ".svn/pristine/e3"
|
||||||
|
#define FILE_DIR ".svn/pristine/e4"
|
||||||
|
#define FILE_DIR ".svn/pristine/e5"
|
||||||
|
#define FILE_DIR ".svn/pristine/e6"
|
||||||
|
#define FILE_DIR ".svn/pristine/e7"
|
||||||
|
#define FILE_DIR ".svn/pristine/e8"
|
||||||
|
#define FILE_DIR ".svn/pristine/e9"
|
||||||
|
#define FILE_DIR ".svn/pristine/ea"
|
||||||
|
#define FILE_DIR ".svn/pristine/eb"
|
||||||
|
#define FILE_DIR ".svn/pristine/ec"
|
||||||
|
#define FILE_DIR ".svn/pristine/ed"
|
||||||
|
#define FILE_DIR ".svn/pristine/ee"
|
||||||
|
#define FILE_DIR ".svn/pristine/ef"
|
||||||
|
#define FILE_DIR ".svn/pristine/f0"
|
||||||
|
#define FILE_DIR ".svn/pristine/f1"
|
||||||
|
#define FILE_DIR ".svn/pristine/f2"
|
||||||
|
#define FILE_DIR ".svn/pristine/f3"
|
||||||
|
#define FILE_DIR ".svn/pristine/f4"
|
||||||
|
#define FILE_DIR ".svn/pristine/f5"
|
||||||
|
#define FILE_DIR ".svn/pristine/f6"
|
||||||
|
#define FILE_DIR ".svn/pristine/f7"
|
||||||
|
#define FILE_DIR ".svn/pristine/f8"
|
||||||
|
#define FILE_DIR ".svn/pristine/f9"
|
||||||
|
#define FILE_DIR ".svn/pristine/fa"
|
||||||
|
#define FILE_DIR ".svn/pristine/fb"
|
||||||
|
#define FILE_DIR ".svn/pristine/fc"
|
||||||
|
#define FILE_DIR ".svn/pristine/fd"
|
||||||
|
#define FILE_DIR ".svn/pristine/fe"
|
||||||
|
#define FILE_DIR ".svn/pristine/ff"
|
||||||
|
#define FILE_DIR "bot"
|
||||||
|
#define FILE_DIR "bot/Marakov"
|
||||||
#define FILE_DIR "code"
|
#define FILE_DIR "code"
|
||||||
#define FILE_DIR "code/ATMOSPHERICS"
|
#define FILE_DIR "code/ATMOSPHERICS"
|
||||||
#define FILE_DIR "code/ATMOSPHERICS/components"
|
#define FILE_DIR "code/ATMOSPHERICS/components"
|
||||||
@@ -166,6 +426,15 @@
|
|||||||
#define FILE_DIR "code/WorkInProgress/mapload"
|
#define FILE_DIR "code/WorkInProgress/mapload"
|
||||||
#define FILE_DIR "code/WorkInProgress/organs"
|
#define FILE_DIR "code/WorkInProgress/organs"
|
||||||
#define FILE_DIR "code/WorkInProgress/virus2"
|
#define FILE_DIR "code/WorkInProgress/virus2"
|
||||||
|
#define FILE_DIR "config"
|
||||||
|
#define FILE_DIR "config/names"
|
||||||
|
#define FILE_DIR "data"
|
||||||
|
#define FILE_DIR "data/logs"
|
||||||
|
#define FILE_DIR "data/logs/2012"
|
||||||
|
#define FILE_DIR "data/logs/2012/07-July"
|
||||||
|
#define FILE_DIR "data/player_saves"
|
||||||
|
#define FILE_DIR "data/player_saves/g"
|
||||||
|
#define FILE_DIR "data/player_saves/g/giacomand"
|
||||||
#define FILE_DIR "html"
|
#define FILE_DIR "html"
|
||||||
#define FILE_DIR "icons"
|
#define FILE_DIR "icons"
|
||||||
#define FILE_DIR "icons/48x48"
|
#define FILE_DIR "icons/48x48"
|
||||||
@@ -181,6 +450,7 @@
|
|||||||
#define FILE_DIR "icons/obj/machines"
|
#define FILE_DIR "icons/obj/machines"
|
||||||
#define FILE_DIR "icons/obj/pipes"
|
#define FILE_DIR "icons/obj/pipes"
|
||||||
#define FILE_DIR "icons/pda_icons"
|
#define FILE_DIR "icons/pda_icons"
|
||||||
|
#define FILE_DIR "icons/PSD files"
|
||||||
#define FILE_DIR "icons/spideros_icons"
|
#define FILE_DIR "icons/spideros_icons"
|
||||||
#define FILE_DIR "icons/Testing"
|
#define FILE_DIR "icons/Testing"
|
||||||
#define FILE_DIR "icons/turf"
|
#define FILE_DIR "icons/turf"
|
||||||
@@ -190,6 +460,7 @@
|
|||||||
#define FILE_DIR "interface"
|
#define FILE_DIR "interface"
|
||||||
#define FILE_DIR "maps"
|
#define FILE_DIR "maps"
|
||||||
#define FILE_DIR "maps/RandomZLevels"
|
#define FILE_DIR "maps/RandomZLevels"
|
||||||
|
#define FILE_DIR "music"
|
||||||
#define FILE_DIR "Redirector"
|
#define FILE_DIR "Redirector"
|
||||||
#define FILE_DIR "sound"
|
#define FILE_DIR "sound"
|
||||||
#define FILE_DIR "sound/AI"
|
#define FILE_DIR "sound/AI"
|
||||||
@@ -203,6 +474,16 @@
|
|||||||
#define FILE_DIR "sound/piano"
|
#define FILE_DIR "sound/piano"
|
||||||
#define FILE_DIR "sound/voice"
|
#define FILE_DIR "sound/voice"
|
||||||
#define FILE_DIR "sound/weapons"
|
#define FILE_DIR "sound/weapons"
|
||||||
|
#define FILE_DIR "SQL"
|
||||||
|
#define FILE_DIR "tools"
|
||||||
|
#define FILE_DIR "tools/UnstandardnessTestForDM"
|
||||||
|
#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM"
|
||||||
|
#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM/bin"
|
||||||
|
#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM/bin/Debug"
|
||||||
|
#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM/obj"
|
||||||
|
#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM/obj/x86"
|
||||||
|
#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM/obj/x86/Debug"
|
||||||
|
#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM/Properties"
|
||||||
// END_FILE_DIR
|
// END_FILE_DIR
|
||||||
|
|
||||||
// BEGIN_PREFERENCES
|
// BEGIN_PREFERENCES
|
||||||
|
|||||||
Reference in New Issue
Block a user