diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm
index 6a7e098766..f1a00be628 100644
--- a/code/game/gamemodes/wizard/soulstone.dm
+++ b/code/game/gamemodes/wizard/soulstone.dm
@@ -140,7 +140,7 @@
if("SHADE")
var/mob/living/simple_animal/shade/T = target
var/obj/item/device/soulstone/C = src
- if (T.alive == 0)
+ if (T.stat == DEAD)
U << "\red Capture failed!: \black The shade has already been banished!"
else
if(C.contents.len)
diff --git a/code/modules/critters/critter.dm b/code/modules/critters/critter.dm
index 0c3b15a407..cc52021737 100644
--- a/code/modules/critters/critter.dm
+++ b/code/modules/critters/critter.dm
@@ -80,16 +80,8 @@
var/attack_speed = 25 // delay of attack
- proc
- patrol_step()
- seek_target()
- Die()
- ChaseAttack()
- RunAttack()
- TakeDamage(var/damage = 0)
- Target_Attacker(var/target)
- Harvest(var/obj/item/weapon/W, var/mob/living/user)//Controls havesting things from dead critters
- AfterAttack(var/mob/living/target)
+ proc/AfterAttack(var/mob/living/target)
+ return
diff --git a/code/modules/critters/critter_AI.dm b/code/modules/critters/critter_AI.dm
index d62e2a78df..3c33e3bdcf 100644
--- a/code/modules/critters/critter_AI.dm
+++ b/code/modules/critters/critter_AI.dm
@@ -86,7 +86,7 @@
return
- patrol_step()
+ proc/patrol_step()
var/moveto = locate(src.x + rand(-1,1),src.y + rand(-1, 1),src.z)
if (istype(moveto, /turf/simulated/floor) || istype(moveto, /turf/simulated/shuttle/floor) || istype(moveto, /turf/unsimulated/floor)) step_towards(src, moveto)
if(src.aggressive) seek_target()
@@ -114,7 +114,7 @@
M:loc = T
- seek_target()
+ proc/seek_target()
src.anchored = 0
var/T = null
for(var/mob/living/C in view(src.seekrange,src))//TODO: mess with this
@@ -179,13 +179,13 @@
return
- ChaseAttack()
+ proc/ChaseAttack()
for(var/mob/O in viewers(src, null))
O.show_message("\red [src] [src.angertext] at [src.target]!", 1)
return
- RunAttack()
+ proc/RunAttack()
src.attacking = 1
if(ismob(src.target))
diff --git a/code/modules/critters/critter_defenses.dm b/code/modules/critters/critter_defenses.dm
index f370053ca7..9175df53ff 100644
--- a/code/modules/critters/critter_defenses.dm
+++ b/code/modules/critters/critter_defenses.dm
@@ -42,7 +42,7 @@ Contains the procs that control attacking critters
O.show_message("\blue [user] touches [src]!", 1)
- Target_Attacker(var/target)
+ proc/Target_Attacker(var/target)
if(!target) return
src.target = target
src.oldtarget_name = target:name
@@ -54,7 +54,7 @@ Contains the procs that control attacking critters
return
- TakeDamage(var/damage = 0)
+ proc/TakeDamage(var/damage = 0)
var/tempdamage = (damage-armor)
if(tempdamage > 0)
src.health -= tempdamage
@@ -64,7 +64,7 @@ Contains the procs that control attacking critters
src.Die()
- Die()
+ proc/Die()
if (!src.alive) return
src.icon_state += "-dead"
src.alive = 0
@@ -74,7 +74,7 @@ Contains the procs that control attacking critters
src.visible_message("[src] [deathtext]")
- Harvest(var/obj/item/weapon/W, var/mob/living/user)
+ proc/Harvest(var/obj/item/weapon/W, var/mob/living/user)
if((!W) || (!user)) return 0
if(src.alive) return 0
return 1
diff --git a/code/modules/mob/living/simple_animal/bear.dm b/code/modules/mob/living/simple_animal/bear.dm
new file mode 100644
index 0000000000..a06be62155
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/bear.dm
@@ -0,0 +1,163 @@
+#define BEAR_STANCE_IDLE 1
+#define BEAR_STANCE_ALERT 2
+#define BEAR_STANCE_ATTACK 3
+#define BEAR_STANCE_ATTACKING 4
+#define BEAR_STANCE_TIRED 4
+
+//Space bears!
+/mob/living/simple_animal/bear
+ name = "space bear"
+ desc = "RawrRawr!!"
+ icon = 'icons/mob/mob.dmi'
+ icon_state = "bearspace"
+ icon_living = "bearspace"
+ icon_dead = "bear_d"
+ speak = list("RAWR!","Rawr!","GRR!","Growl!")
+ speak_emote = list("growls", "roars")
+ emote_hear = list("rawrs","grumbles","grawls")
+ emote_see = list("stares ferociously", "stomps")
+ speak_chance = 1
+ turns_per_move = 5
+ see_in_dark = 6
+ meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
+ response_help = "pets the"
+ response_disarm = "gently pushes aside the"
+ response_harm = "pokes the"
+
+ health = 60
+
+ //Space bears aren't affected by atmos.
+ min_oxy = 0
+ max_oxy = 0
+ min_tox = 0
+ max_tox = 0
+ min_co2 = 0
+ max_co2 = 0
+ min_n2 = 0
+ max_n2 = 0
+
+ var/stance = BEAR_STANCE_IDLE //Used to determine behavior
+ var/stance_step = 0 //Used to delay checks depending on what stance the bear is in
+ var/mob/living/target_mob //Once the bear enters attack stance, it will try to chase this mob. This it to prevent it changing it's mind between multiple mobs.
+
+//SPACE BEARS! SQUEEEEEEEE~ OW! FUCK! IT BIT MY HAND OFF!!
+/mob/living/simple_animal/bear/Hudson
+ name = "Hudson"
+ desc = ""
+ response_help = "pets"
+ response_disarm = "gently pushes aside"
+ response_harm = "pokes"
+
+/mob/living/simple_animal/bear/Life()
+ ..()
+
+ if(!stat)
+ if( loc && istype(loc,/turf/space) )
+ icon_state = "bearspace"
+ else
+ icon_state = "bearfloor"
+
+ switch(stance)
+ if(BEAR_STANCE_IDLE)
+ stop_automated_movement = 0
+ stance_step++
+ if(stance_step > 5)
+ stance_step = 0
+ for( var/mob/living/L in viewers(7,src) )
+ if(isbear(L)) continue
+ if(!L.stat)
+ emote("stares alertly at [L]")
+ stance = BEAR_STANCE_ALERT
+ break
+ if(BEAR_STANCE_ALERT)
+ stop_automated_movement = 1
+ var/found_mob = 0
+ for( var/mob/living/L in viewers(7,src) )
+ if(isbear(L)) continue
+ if(!L.stat)
+ stance_step = max(0, stance_step) //If we have not seen a mob in a while, the stance_step will be negative, we need to reset it to 0 as soon as we see a mob again.
+ stance_step++
+ found_mob = 1
+ target_mob = L
+ src.dir = get_dir(src,target_mob) //Keep staring at the mob
+
+ if(stance_step in list(1,4,7)) //every 3 ticks
+ var/action = pick( list( "growls at [L]", "stares angrily at [L]", "prepares to attack [L]", "closely watches [L]" ) )
+ if(action)
+ emote(action)
+ break
+ if(!found_mob)
+ stance_step--
+
+ if(stance_step <= -20) //If we have not found a mob for 20-ish ticks, revert to idle mode
+ stance = BEAR_STANCE_IDLE
+ if(stance_step >= 7) //If we have been staring at a mob for 7 ticks,
+ stance = BEAR_STANCE_ATTACK
+ if(BEAR_STANCE_ATTACK) //This one should only be active for one tick,
+ stop_automated_movement = 1
+ if(!target_mob || target_mob.stat)
+ stance = BEAR_STANCE_ALERT
+ stance_step = 5 //Make it very alert, so it quickly attacks again if a mob returns
+ if(target_mob in viewers(7,src))
+ walk_to(src, target_mob, 1, 3)
+ stance = BEAR_STANCE_ATTACKING
+ stance_step = 0
+ if(BEAR_STANCE_ATTACKING)
+
+ stop_automated_movement = 1
+ stance_step++
+ if(!target_mob || target_mob.stat)
+ stance = BEAR_STANCE_ALERT
+ stance_step = 5 //Make it very alert, so it quickly attacks again if a mob returns
+ return
+ if( !(target_mob in viewers(7,src)) )
+ stance = BEAR_STANCE_ALERT
+ stance_step = 5 //Make it very alert, so it quickly attacks again if a mob returns
+ target_mob = null
+ return
+ if( get_dist(src, target_mob) <= 1 ) //Attacking
+ emote( pick( list("slashes at [target_mob]", "bites [target_mob]") ) )
+
+ var/damage = rand(20,30)
+
+ if(ishuman(target_mob))
+ var/mob/living/carbon/human/H = target_mob
+ var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg")
+ var/datum/organ/external/affecting = H.get_organ(ran_zone(dam_zone))
+ H.apply_damage(damage, BRUTE, affecting, H.run_armor_check(affecting, "melee"))
+ else if(isliving(target_mob))
+ var/mob/living/L = target_mob
+ L.adjustBruteLoss(damage)
+
+ if( stance_step >= 20 ) //attacks for 20 ticks, then it gets tired and needs to rest
+ emote( "is worn out and needs to rest" )
+ stance = BEAR_STANCE_TIRED
+ stance_step = 0
+ walk(src, 0) //This stops the bear's walking
+ return
+ if(BEAR_STANCE_TIRED)
+ stop_automated_movement = 1
+ stance_step++
+ if(stance_step >= 10) //rests for 10 ticks
+ if(target_mob && target_mob in viewers(7,src))
+ stance = BEAR_STANCE_ATTACK //If the mob he was chasing is still nearby, resume the attack, otherwise go idle.
+ else
+ stance = BEAR_STANCE_IDLE
+
+
+/mob/living/simple_animal/bear/attackby(var/obj/item/O as obj, var/mob/user as mob)
+ if(stance != BEAR_STANCE_ATTACK && stance != BEAR_STANCE_ATTACKING)
+ stance = BEAR_STANCE_ALERT
+ stance_step = 6
+ target_mob = user
+ ..()
+
+/mob/living/simple_animal/bear/attack_hand(mob/living/carbon/human/M as mob)
+ if(stance != BEAR_STANCE_ATTACK && stance != BEAR_STANCE_ATTACKING)
+ stance = BEAR_STANCE_ALERT
+ stance_step = 6
+ target_mob = M
+ ..()
+
+/mob/living/simple_animal/bear/Process_Spacemove(var/check_drift = 0)
+ return //No drifting in space for space bears!
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_animal/corgi.dm b/code/modules/mob/living/simple_animal/corgi.dm
index b4bf5d99d8..16add3bed9 100644
--- a/code/modules/mob/living/simple_animal/corgi.dm
+++ b/code/modules/mob/living/simple_animal/corgi.dm
@@ -267,7 +267,7 @@
..()
//Feeding, chasing food, FOOOOODDDD
- if(alive && !resting && !buckled)
+ if(!stat && !resting && !buckled)
turns_since_scan++
if(turns_since_scan > 5)
turns_since_scan = 0
@@ -364,7 +364,7 @@
/mob/living/simple_animal/corgi/attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri
if(istype(O, /obj/item/weapon/newspaper))
- if(alive)
+ if(!stat)
for(var/mob/M in viewers(user, null))
if ((M.client && !( M.blinded )))
M.show_message("\blue [user] baps [name] on the nose with the rolled up [O]")
diff --git a/code/modules/mob/living/simple_animal/crab.dm b/code/modules/mob/living/simple_animal/crab.dm
index a3a450ddda..ec6d18e074 100644
--- a/code/modules/mob/living/simple_animal/crab.dm
+++ b/code/modules/mob/living/simple_animal/crab.dm
@@ -21,7 +21,7 @@
/mob/living/simple_animal/crab/Life()
..()
//CRAB movement
- if(!ckey && alive)
+ if(!ckey && !stat)
if(isturf(src.loc) && !resting && !buckled) //This is so it only moves if it's not inside a closet, gentics machine, etc.
turns_since_move++
if(turns_since_move >= turns_per_move)
@@ -43,7 +43,7 @@
health -= 20
Die()
if(istype(O, /obj/item/stack/medical))
- if(alive)
+ if(stat != DEAD)
var/obj/item/stack/medical/MED = O
if(health < maxHealth)
if(MED.amount >= 1)
diff --git a/code/modules/mob/living/simple_animal/life.dm b/code/modules/mob/living/simple_animal/life.dm
index 9f7de01ec1..48f83ea699 100644
--- a/code/modules/mob/living/simple_animal/life.dm
+++ b/code/modules/mob/living/simple_animal/life.dm
@@ -3,7 +3,6 @@
var/icon_living = ""
var/icon_dead = ""
maxHealth = 20
- var/alive = 1
var/list/speak = list()
var/list/speak_emote = list()// Emotes while speaking IE: Ian [emote], [text] -- Ian barks, "WOOF!". Spoken text is generated from the speak variable.
var/speak_chance = 0
@@ -64,10 +63,9 @@
/mob/living/simple_animal/Life()
//Health
- if(!alive)
+ if(stat == DEAD)
if(health > 0)
icon_state = icon_living
- alive = 1
stat = CONSCIOUS
density = 1
return
@@ -217,7 +215,11 @@
/mob/living/simple_animal/Bumped(AM as mob|obj)
if(!AM) return
- if(isturf(src.loc) && !resting && !buckled)
+
+ if(resting || buckled)
+ return
+
+ if(isturf(src.loc))
if(ismob(AM))
var/newamloc = src.loc
src.loc = AM:loc
@@ -304,7 +306,7 @@
/mob/living/simple_animal/attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri
if(istype(O, /obj/item/stack/medical))
- if(alive)
+ if(stat != DEAD)
var/obj/item/stack/medical/MED = O
if(health < maxHealth)
if(MED.amount >= 1)
@@ -344,7 +346,6 @@
stat(null, "Health: [round((health / maxHealth) * 100)]%")
/mob/living/simple_animal/proc/Die()
- alive = 0
icon_state = icon_dead
stat = DEAD
density = 0
@@ -363,4 +364,7 @@
if(3.0)
- health -= 30
\ No newline at end of file
+ health -= 30
+
+/mob/living/simple_animal/adjustBruteLoss(damage)
+ health -= damage
\ No newline at end of file
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index 23d4bdb712..c4f6cffa04 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -56,19 +56,14 @@
return 0
/proc/iscat(A)
- if(istype(A, /mob/living/simple_animal/cat/))
+ if(istype(A, /mob/living/simple_animal/cat))
return 1
return 0
-/*proc/ishivebot(A)
- if(A && istype(A, /mob/living/silicon/hivebot))
+/proc/isbear(A)
+ if(istype(A, /mob/living/simple_animal/bear))
return 1
- return 0*/
-
-/*proc/ishivemainframe(A)
- if(A && istype(A, /mob/living/silicon/hive_mainframe))
- return 1
- return 0*/
+ return 0
/proc/isAI(A)
if(istype(A, /mob/living/silicon/ai))
diff --git a/icons/mob/livestock.dmi b/icons/mob/livestock.dmi
index 53ddc3f31c..8e7abeed1e 100644
Binary files a/icons/mob/livestock.dmi and b/icons/mob/livestock.dmi differ
diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi
index 0ff58c8809..f422207830 100644
Binary files a/icons/mob/mob.dmi and b/icons/mob/mob.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index c63d620538..dd30e5da61 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -5,6 +5,204 @@
// END_INTERNALS
// BEGIN_FILE_DIR
#define FILE_DIR .
+#define FILE_DIR "code"
+#define FILE_DIR "code/ATMOSPHERICS"
+#define FILE_DIR "code/ATMOSPHERICS/components"
+#define FILE_DIR "code/ATMOSPHERICS/components/binary_devices"
+#define FILE_DIR "code/ATMOSPHERICS/components/trinary_devices"
+#define FILE_DIR "code/ATMOSPHERICS/components/unary"
+#define FILE_DIR "code/datums"
+#define FILE_DIR "code/datums/diseases"
+#define FILE_DIR "code/datums/helper_datums"
+#define FILE_DIR "code/datums/spells"
+#define FILE_DIR "code/defines"
+#define FILE_DIR "code/defines/area"
+#define FILE_DIR "code/defines/mob"
+#define FILE_DIR "code/defines/mob/dead"
+#define FILE_DIR "code/defines/mob/living"
+#define FILE_DIR "code/defines/mob/living/carbon"
+#define FILE_DIR "code/defines/mob/living/silicon"
+#define FILE_DIR "code/defines/obj"
+#define FILE_DIR "code/defines/procs"
+#define FILE_DIR "code/defines/tanning"
+#define FILE_DIR "code/FEA"
+#define FILE_DIR "code/game"
+#define FILE_DIR "code/game/area"
+#define FILE_DIR "code/game/asteroid"
+#define FILE_DIR "code/game/gamemodes"
+#define FILE_DIR "code/game/gamemodes/blob"
+#define FILE_DIR "code/game/gamemodes/blob/blobs"
+#define FILE_DIR "code/game/gamemodes/changeling"
+#define FILE_DIR "code/game/gamemodes/cult"
+#define FILE_DIR "code/game/gamemodes/events"
+#define FILE_DIR "code/game/gamemodes/events/holidays"
+#define FILE_DIR "code/game/gamemodes/extended"
+#define FILE_DIR "code/game/gamemodes/malfunction"
+#define FILE_DIR "code/game/gamemodes/meteor"
+#define FILE_DIR "code/game/gamemodes/nuclear"
+#define FILE_DIR "code/game/gamemodes/revolution"
+#define FILE_DIR "code/game/gamemodes/sandbox"
+#define FILE_DIR "code/game/gamemodes/traitor"
+#define FILE_DIR "code/game/gamemodes/wizard"
+#define FILE_DIR "code/game/jobs"
+#define FILE_DIR "code/game/jobs/job"
+#define FILE_DIR "code/game/machinery"
+#define FILE_DIR "code/game/machinery/atmoalter"
+#define FILE_DIR "code/game/machinery/bots"
+#define FILE_DIR "code/game/machinery/computer"
+#define FILE_DIR "code/game/machinery/doors"
+#define FILE_DIR "code/game/machinery/embedded_controller"
+#define FILE_DIR "code/game/machinery/kitchen"
+#define FILE_DIR "code/game/machinery/pipe"
+#define FILE_DIR "code/game/machinery/telecomms"
+#define FILE_DIR "code/game/magic"
+#define FILE_DIR "code/game/magic/cultist"
+#define FILE_DIR "code/game/mecha"
+#define FILE_DIR "code/game/mecha/combat"
+#define FILE_DIR "code/game/mecha/equipment"
+#define FILE_DIR "code/game/mecha/equipment/tools"
+#define FILE_DIR "code/game/mecha/equipment/weapons"
+#define FILE_DIR "code/game/mecha/medical"
+#define FILE_DIR "code/game/mecha/working"
+#define FILE_DIR "code/game/objects"
+#define FILE_DIR "code/game/objects/alien"
+#define FILE_DIR "code/game/objects/closets"
+#define FILE_DIR "code/game/objects/closets/secure"
+#define FILE_DIR "code/game/objects/devices"
+#define FILE_DIR "code/game/objects/devices/PDA"
+#define FILE_DIR "code/game/objects/grenades"
+#define FILE_DIR "code/game/objects/items"
+#define FILE_DIR "code/game/objects/items/weapons"
+#define FILE_DIR "code/game/objects/items/weapons/implants"
+#define FILE_DIR "code/game/objects/radio"
+#define FILE_DIR "code/game/objects/secstorage"
+#define FILE_DIR "code/game/objects/stacks"
+#define FILE_DIR "code/game/objects/storage"
+#define FILE_DIR "code/game/objects/tanks"
+#define FILE_DIR "code/game/vehicles"
+#define FILE_DIR "code/game/vehicles/airtight"
+#define FILE_DIR "code/game/verbs"
+#define FILE_DIR "code/js"
+#define FILE_DIR "code/modules"
+#define FILE_DIR "code/modules/admin"
+#define FILE_DIR "code/modules/admin/DB ban"
+#define FILE_DIR "code/modules/admin/verbs"
+#define FILE_DIR "code/modules/assembly"
+#define FILE_DIR "code/modules/chemical"
+#define FILE_DIR "code/modules/client"
+#define FILE_DIR "code/modules/clothing"
+#define FILE_DIR "code/modules/clothing/glasses"
+#define FILE_DIR "code/modules/clothing/gloves"
+#define FILE_DIR "code/modules/clothing/head"
+#define FILE_DIR "code/modules/clothing/masks"
+#define FILE_DIR "code/modules/clothing/shoes"
+#define FILE_DIR "code/modules/clothing/spacesuits"
+#define FILE_DIR "code/modules/clothing/suits"
+#define FILE_DIR "code/modules/clothing/under"
+#define FILE_DIR "code/modules/clothing/uniforms"
+#define FILE_DIR "code/modules/critters"
+#define FILE_DIR "code/modules/critters/hivebots"
+#define FILE_DIR "code/modules/detectivework"
+#define FILE_DIR "code/modules/flufftext"
+#define FILE_DIR "code/modules/food"
+#define FILE_DIR "code/modules/maps"
+#define FILE_DIR "code/modules/mining"
+#define FILE_DIR "code/modules/mob"
+#define FILE_DIR "code/modules/mob/dead"
+#define FILE_DIR "code/modules/mob/dead/observer"
+#define FILE_DIR "code/modules/mob/living"
+#define FILE_DIR "code/modules/mob/living/blob"
+#define FILE_DIR "code/modules/mob/living/carbon"
+#define FILE_DIR "code/modules/mob/living/carbon/alien"
+#define FILE_DIR "code/modules/mob/living/carbon/alien/humanoid"
+#define FILE_DIR "code/modules/mob/living/carbon/alien/humanoid/caste"
+#define FILE_DIR "code/modules/mob/living/carbon/alien/larva"
+#define FILE_DIR "code/modules/mob/living/carbon/brain"
+#define FILE_DIR "code/modules/mob/living/carbon/human"
+#define FILE_DIR "code/modules/mob/living/carbon/metroid"
+#define FILE_DIR "code/modules/mob/living/carbon/monkey"
+#define FILE_DIR "code/modules/mob/living/silicon"
+#define FILE_DIR "code/modules/mob/living/silicon/ai"
+#define FILE_DIR "code/modules/mob/living/silicon/decoy"
+#define FILE_DIR "code/modules/mob/living/silicon/pai"
+#define FILE_DIR "code/modules/mob/living/silicon/robot"
+#define FILE_DIR "code/modules/mob/living/simple_animal"
+#define FILE_DIR "code/modules/mob/new_player"
+#define FILE_DIR "code/modules/mob/organ"
+#define FILE_DIR "code/modules/paperwork"
+#define FILE_DIR "code/modules/power"
+#define FILE_DIR "code/modules/power/antimatter"
+#define FILE_DIR "code/modules/power/singularity"
+#define FILE_DIR "code/modules/power/singularity/particle_accelerator"
+#define FILE_DIR "code/modules/projectiles"
+#define FILE_DIR "code/modules/projectiles/ammunition"
+#define FILE_DIR "code/modules/projectiles/guns"
+#define FILE_DIR "code/modules/projectiles/guns/energy"
+#define FILE_DIR "code/modules/projectiles/guns/projectile"
+#define FILE_DIR "code/modules/projectiles/projectile"
+#define FILE_DIR "code/modules/recycling"
+#define FILE_DIR "code/modules/research"
+#define FILE_DIR "code/modules/scripting"
+#define FILE_DIR "code/modules/scripting/AST"
+#define FILE_DIR "code/modules/scripting/AST/Operators"
+#define FILE_DIR "code/modules/scripting/Implementations"
+#define FILE_DIR "code/modules/scripting/Interpreter"
+#define FILE_DIR "code/modules/scripting/Parser"
+#define FILE_DIR "code/modules/scripting/Scanner"
+#define FILE_DIR "code/modules/security levels"
+#define FILE_DIR "code/unused"
+#define FILE_DIR "code/unused/beast"
+#define FILE_DIR "code/unused/computer2"
+#define FILE_DIR "code/unused/disease2"
+#define FILE_DIR "code/unused/gamemodes"
+#define FILE_DIR "code/unused/hivebot"
+#define FILE_DIR "code/unused/mining"
+#define FILE_DIR "code/unused/optics"
+#define FILE_DIR "code/unused/pda2"
+#define FILE_DIR "code/unused/powerarmor"
+#define FILE_DIR "code/unused/spacecraft"
+#define FILE_DIR "code/WorkInProgress"
+#define FILE_DIR "code/WorkInProgress/carn"
+#define FILE_DIR "code/WorkInProgress/mapload"
+#define FILE_DIR "code/WorkInProgress/organs"
+#define FILE_DIR "code/WorkInProgress/virus2"
+#define FILE_DIR "html"
+#define FILE_DIR "icons"
+#define FILE_DIR "icons/48x48"
+#define FILE_DIR "icons/effects"
+#define FILE_DIR "icons/mecha"
+#define FILE_DIR "icons/misc"
+#define FILE_DIR "icons/mob"
+#define FILE_DIR "icons/obj"
+#define FILE_DIR "icons/obj/assemblies"
+#define FILE_DIR "icons/obj/atmospherics"
+#define FILE_DIR "icons/obj/clothing"
+#define FILE_DIR "icons/obj/doors"
+#define FILE_DIR "icons/obj/machines"
+#define FILE_DIR "icons/obj/pipes"
+#define FILE_DIR "icons/pda_icons"
+#define FILE_DIR "icons/spideros_icons"
+#define FILE_DIR "icons/Testing"
+#define FILE_DIR "icons/turf"
+#define FILE_DIR "icons/unused"
+#define FILE_DIR "icons/vehicles"
+#define FILE_DIR "icons/vending_icons"
+#define FILE_DIR "interface"
+#define FILE_DIR "maps"
+#define FILE_DIR "maps/RandomZLevels"
+#define FILE_DIR "Redirector"
+#define FILE_DIR "sound"
+#define FILE_DIR "sound/AI"
+#define FILE_DIR "sound/ambience"
+#define FILE_DIR "sound/effects"
+#define FILE_DIR "sound/hallucinations"
+#define FILE_DIR "sound/items"
+#define FILE_DIR "sound/machines"
+#define FILE_DIR "sound/mecha"
+#define FILE_DIR "sound/misc"
+#define FILE_DIR "sound/piano"
+#define FILE_DIR "sound/voice"
+#define FILE_DIR "sound/weapons"
// END_FILE_DIR
// BEGIN_PREFERENCES
@@ -849,6 +1047,7 @@
#include "code\modules\mob\living\silicon\robot\robot_movement.dm"
#include "code\modules\mob\living\silicon\robot\say.dm"
#include "code\modules\mob\living\silicon\robot\wires.dm"
+#include "code\modules\mob\living\simple_animal\bear.dm"
#include "code\modules\mob\living\simple_animal\behemoth.dm"
#include "code\modules\mob\living\simple_animal\cat.dm"
#include "code\modules\mob\living\simple_animal\constructs.dm"