-Brain radio MMIs were fixed, they wouldn't broadcast the MMI's message.

-Fixed a bug where you couldn't talk into intercoms while it is dark.
-AIs can now type in the "track with camera" verb and get a list of names to show up. This can save time if the AI needs to track an individual.
-Deleted the old AI move.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4910 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
giacomand@gmail.com
2012-10-18 16:16:29 +00:00
parent ecad5024c3
commit 2f68d2cd48
9 changed files with 364 additions and 131 deletions

View File

@@ -1,25 +1,56 @@
/mob/living/silicon/ai/proc/ai_camera_list()
/mob/living/silicon/ai/proc/get_camera_list()
if(src.stat == 2)
return
var/list/L = list()
for (var/obj/machinery/camera/C in cameranet.cameras)
L.Add(C)
camera_sort(L)
var/list/T = list()
T["Cancel"] = "Cancel"
for (var/obj/machinery/camera/C in L)
if (C.network == src.network)
T[text("[][]", C.c_tag, (C.can_use() ? null : " (Deactivated)"))] = C
track = new()
track.cameras = T
return T
/mob/living/silicon/ai/proc/ai_camera_list(var/camera in get_camera_list())
set category = "AI Commands"
set name = "Show Camera List"
if(usr.stat == 2)
usr << "You can't track with camera because you are dead!"
if(src.stat == 2)
src << "You can't list the cameras because you are dead!"
return
attack_ai(src)
if (!camera || camera == "Cancel")
return 0
var/obj/machinery/camera/C = track.cameras[camera]
track = null
src.eyeobj.setLoc(C)
/mob/living/silicon/ai/proc/ai_camera_track()
set category = "AI Commands"
set name = "Track With Camera"
if(usr.stat == 2)
usr << "You can't track with camera because you are dead!"
return
// Used to allow the AI is write in mob names/camera name from the CMD line.
/datum/trackable
var/list/names = list()
var/list/namecounts = list()
var/list/humans = list()
var/list/others = list()
var/list/cameras = list()
/mob/living/silicon/ai/proc/trackable_mobs()
if(usr.stat == 2)
return list()
var/datum/trackable/TB = new()
for(var/mob/living/M in mob_list)
// Easy checks first.
// Don't detect mobs on Centcom. Since the wizard den is on Centcomm, we only need this.
@@ -55,25 +86,34 @@
continue
var/name = M.name
if (name in names)
namecounts[name]++
name = text("[] ([])", name, namecounts[name])
if (name in TB.names)
TB.namecounts[name]++
name = text("[] ([])", name, TB.namecounts[name])
else
names.Add(name)
namecounts[name] = 1
TB.names.Add(name)
TB.namecounts[name] = 1
if(human)
humans[name] = M
TB.humans[name] = M
else
others[name] = M
TB.others[name] = M
var/list/targets = sortList(humans) + sortList(others)
var/target_name = input(usr, "Which creature should you track?") as null|anything in targets
var/list/targets = sortList(TB.humans) + sortList(TB.others)
src.track = TB
return targets
if (!target_name)
usr:cameraFollow = null
/mob/living/silicon/ai/proc/ai_camera_track(var/target_name in trackable_mobs())
set category = "AI Commands"
set name = "Track With Camera"
set desc = "Select who you would like to track."
if(src.stat == 2)
src << "You can't track with camera because you are dead!"
return
if(!target_name)
src.cameraFollow = null
var/mob/target = (isnull(humans[target_name]) ? others[target_name] : humans[target_name])
var/mob/target = (isnull(track.humans[target_name]) ? track.others[target_name] : track.humans[target_name])
src.track = null
ai_actual_track(target)
/mob/living/silicon/ai/proc/ai_actual_track(mob/living/target as mob)
@@ -121,7 +161,7 @@
return
sleep(10)
/proc/near_camera(var/mob/M)
/proc/near_camera(var/mob/living/M)
if (!isturf(M.loc))
return 0
if(isrobot(M))
@@ -141,33 +181,7 @@
/mob/living/silicon/ai/attack_ai(var/mob/user as mob)
if (user != src)
return
if (stat == 2)
return
var/list/L = list()
for (var/obj/machinery/camera/C in cameranet.cameras)
L.Add(C)
camera_sort(L)
var/list/D = list()
D["Cancel"] = "Cancel"
for (var/obj/machinery/camera/C in L)
if (C.network == src.network)
D[text("[][]", C.c_tag, (C.can_use() ? null : " (Deactivated)"))] = C
var/t = input(user, "Which camera should you change to?") as null|anything in D
if (!t || t == "Cancel")
return 0
var/obj/machinery/camera/C = D[t]
src.eyeobj.setLoc(C)
return
ai_camera_list()
/proc/camera_sort(list/L)
var/obj/machinery/camera/a

View File

@@ -10,6 +10,8 @@
return
else
message = Gibberish(message, (emp_damage*6))//scrambles the message, gets worse when emp_damage is higher
..()
else
if(istype(container, /obj/item/device/mmi/radio_enabled))
var/obj/item/device/mmi/radio_enabled/R = container
if(R.radio)
spawn(0) R.radio.hear_talk(src, message)
..()

View File

@@ -280,7 +280,7 @@ var/list/department_radio_keys = list(
listening|=M
var/turf/T = get_turf(src)
var/list/W = view(message_range, T)
var/list/W = hear(message_range, T)
for (var/obj/O in ((W | contents)-used_radios))
W |= O
@@ -311,12 +311,13 @@ var/list/department_radio_keys = list(
if (O)
O.hear_talk(src, message)
*/
if(isbrain(src))//For brains to properly talk if they are in an MMI..or in a brain. Could be extended to other mobs I guess.
/* if(isbrain(src))//For brains to properly talk if they are in an MMI..or in a brain. Could be extended to other mobs I guess.
for(var/obj/O in loc)//Kinda ugly but whatever.
if(O)
spawn(0)
O.hear_talk(src, message)
*/
var/list/heard_a = list() // understood us

View File

@@ -41,6 +41,7 @@
var/mob/living/silicon/ai/parent = null
var/camera_light_on = 0 //Defines if the AI toggled the light on the camera it's looking through.
var/datum/trackable/track = null
/mob/living/silicon/ai/New(loc, var/datum/ai_laws/L, var/obj/item/device/mmi/B, var/safety = 0)
var/list/possibleNames = ai_names

View File

@@ -124,8 +124,6 @@
/datum/camerachunk/New(loc, x, y, z)
set background = 1
// 0xf = 15
x &= ~0xf
y &= ~0xf

View File

@@ -94,7 +94,7 @@
// This will move the AIEye. It will also cause lights near the eye to light up, if toggled.
// This is handled in the proc below this one.
/client/AIMove(n, direct, var/mob/living/silicon/ai/user)
/client/proc/AIMove(n, direct, var/mob/living/silicon/ai/user)
var/initial = initial(user.sprint)
var/max_sprint = 50

View File

@@ -1,71 +0,0 @@
/var/const/SHARED_TYPES_WEIGHT = 5
/var/const/CAMERA_PROXIMITY_PREFERENCE = 0.2
// the smaller this is, the more a straight line will be preferred over a closer camera when changing cameras
// if you set this to 0 the game will crash. don't do that.
// if you set it to be negative the algorithm will do completely nonsensical things (like choosing the camera that's
// the farthest away). don't do that.
/client/proc/AIMove(n,direct,var/mob/living/silicon/ai/user)
if(!user) return
if(user.control_disabled) return
var/min_dist = 1e8
var/obj/machinery/camera/closest = null
var/atom/old = (user.current?user.current : user.loc)
if(!old) return
var/dx = 0
var/dy = 0
if(direct & NORTH)
dy = 1
else if(direct & SOUTH)
dy = -1
if(direct & EAST)
dx = 1
else if(direct & WEST)
dx = -1
var/area/A = get_area(old)
var/list/old_types = dd_text2list("[A.type]", "/")
for(var/obj/machinery/camera/current in cameranet.cameras)
if(user.network != current.network) continue
if(!current.status) continue // ignore disabled cameras
//make sure it's the right direction
if(dx && (current.x * dx <= old.x * dx))
continue
if(dy && (current.y * dy <= old.y * dy))
continue
var/shared_types = 0 //how many levels deep the old camera and the closest camera's areas share
//for instance, /area/A and /area/B would have shared_types = 2 (because of how dd_text2list works)
//whereas area/A/B and /area/A/C would have it as 3
var/area/cur_area = get_area(current)
if(!cur_area) continue
var/list/new_types = dd_text2list("[cur_area.type]", "/")
for(var/i = 1; i <= old_types.len && i <= new_types.len; i++)
if(old_types[i] == new_types[i])
shared_types++
else
break
//don't let it be too far from the current one in the axis perpindicular to the direction of travel,
//but let it be farther from that if it's in the same area
//something in the same hallway but farther away beats something in the same hallway
var/distance = abs((current.y - old.y)/(CAMERA_PROXIMITY_PREFERENCE + abs(dy))) + abs((current.x - old.x)/(CAMERA_PROXIMITY_PREFERENCE + abs(dx)))
distance -= SHARED_TYPES_WEIGHT * shared_types
//weight things in the same area as this so they count as being closer - makes you stay in the same area
//when possible
if(distance < min_dist)
//closer, or this is in the same area and the current closest isn't
min_dist = distance
closest = current
if(!closest)
return
user.switchCamera(closest)

View File

@@ -48,6 +48,14 @@ Stuff which is in development and not yet visible to players or just code relate
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 -->
<div class="commit sansserif">
<h2 class="date">18 October 2012</h2>
<h3 class="author">Giacom updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">As an AI, you can type in the "track with camera" command and get a list of names to show up there. This also works with "list camera" verb. Remember to use space to auto-fill.</li>
</ul>
</div>
<div class="commit sansserif">
<h2 class="date">16 October 2012</h2>
<h3 class="author">Giacom updated:</h3>

View File

@@ -6,6 +6,266 @@
// BEGIN_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/ATMOSPHERICS"
#define FILE_DIR "code/ATMOSPHERICS/components"
@@ -185,6 +445,15 @@
#define FILE_DIR "code/WorkInProgress/mapload"
#define FILE_DIR "code/WorkInProgress/organs"
#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/10-October"
#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 "icons"
#define FILE_DIR "icons/effects"
@@ -199,6 +468,7 @@
#define FILE_DIR "icons/obj/machines"
#define FILE_DIR "icons/obj/pipes"
#define FILE_DIR "icons/pda_icons"
#define FILE_DIR "icons/PSD files"
#define FILE_DIR "icons/spideros_icons"
#define FILE_DIR "icons/Testing"
#define FILE_DIR "icons/turf"
@@ -207,6 +477,7 @@
#define FILE_DIR "interface"
#define FILE_DIR "maps"
#define FILE_DIR "maps/RandomZLevels"
#define FILE_DIR "music"
#define FILE_DIR "sound"
#define FILE_DIR "sound/AI"
#define FILE_DIR "sound/ambience"
@@ -220,8 +491,18 @@
#define FILE_DIR "sound/violin"
#define FILE_DIR "sound/voice"
#define FILE_DIR "sound/weapons"
#define FILE_DIR "SQL"
#define FILE_DIR "tools"
#define FILE_DIR "tools/Redirector"
#define FILE_DIR "tools/Runtime Condenser"
#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
// BEGIN_PREFERENCES
@@ -1057,7 +1338,6 @@
#include "code\modules\mob\living\silicon\ai\life.dm"
#include "code\modules\mob\living\silicon\ai\login.dm"
#include "code\modules\mob\living\silicon\ai\logout.dm"
#include "code\modules\mob\living\silicon\ai\move.dm"
#include "code\modules\mob\living\silicon\ai\say.dm"
#include "code\modules\mob\living\silicon\ai\freelook\cameranet.dm"
#include "code\modules\mob\living\silicon\ai\freelook\chunk.dm"