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"