diff --git a/code/defines/obj.dm b/code/defines/obj.dm index 129aa6010f..95334e908e 100644 --- a/code/defines/obj.dm +++ b/code/defines/obj.dm @@ -329,6 +329,7 @@ var/obj/item/master = null var/icon_action_button //If this is set, The item will make an action button on the player's HUD when picked up. The button will have the icon_action_button sprite from the screen1_action.dmi file. + var/action_button_name //This is the text which gets displayed on the action button. If not set it defaults to 'Use [name]'. Note that icon_action_button needs to be set in order for the action button to appear. //Since any item can now be a piece of clothing, this has to be put here so all items share it. var/flags_inv //This flag is used to determine when items in someone's inventory cover others. IE helmets making it so you can't see glasses, etc. @@ -724,6 +725,16 @@ desc = "You sit in this. Either by will or force." icon_state = "chair" +/obj/structure/stool/bed/chair/wood/normal + icon_state = "wooden_chair" + name = "wooden chair" + desc = "Old is never too old to not be in fashion." + +/obj/structure/stool/bed/chair/wood/wings + icon_state = "wooden_chair_wings" + name = "wooden chair" + desc = "Old is never too old to not be in fashion." + /obj/structure/stool/bed/chair/comfy name = "comfy chair" desc = "It looks comfy." diff --git a/code/game/objects/stool.dm b/code/game/objects/stool.dm index fdd2f8f4e9..4d2af1067a 100644 --- a/code/game/objects/stool.dm +++ b/code/game/objects/stool.dm @@ -40,6 +40,15 @@ return return + +/obj/structure/stool/bed/chair/wood/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W, /obj/item/weapon/wrench)) + playsound(src.loc, 'Ratchet.ogg', 50, 1) + new /obj/item/stack/sheet/wood(src.loc) + del(src) + else + ..() + /obj/structure/stool/bed/Del() unbuckle() ..() diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index af00d7494d..67a10ba5b8 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -2,7 +2,7 @@ name = "gas mask" desc = "A face-covering mask that can be connected to an air supply." icon_state = "gas_alt" - flags = FPRINT|TABLEPASS|SUITSPACE|MASKCOVERSMOUTH|MASKCOVERSEYES + flags = FPRINT | TABLEPASS | SUITSPACE | MASKCOVERSMOUTH | MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT flags_inv = HIDEEARS|HIDEEYES|HIDEFACE w_class = 3.0 item_state = "gas_alt" diff --git a/code/modules/food/food.dm b/code/modules/food/food.dm index a4046430aa..3509d2fe23 100644 --- a/code/modules/food/food.dm +++ b/code/modules/food/food.dm @@ -544,17 +544,18 @@ desc = "Just like back home, on clown planet! HONK!" icon_state = "pie" trash = /obj/item/trash/plate - New() - ..() - reagents.add_reagent("nutriment", 4) - reagents.add_reagent("banana",5) - bitesize = 3 - throw_impact(atom/hit_atom) - ..() - new/obj/effect/decal/cleanable/pie_smudge(src.loc) - src.visible_message("\red [src.name] splats.","\red You hear a splat.") - del(src) +/obj/item/weapon/reagent_containers/food/snacks/pie/New() + ..() + reagents.add_reagent("nutriment", 4) + reagents.add_reagent("banana",5) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/pie/throw_impact(atom/hit_atom) + ..() + new/obj/effect/decal/cleanable/pie_smudge(src.loc) + src.visible_message("\red [src.name] splats.","\red You hear a splat.") + del(src) /obj/item/weapon/reagent_containers/food/snacks/berryclafoutis name = "Berry Clafoutis" diff --git a/code/modules/mob/living/carbon/alien/humanoid/hud.dm b/code/modules/mob/living/carbon/alien/humanoid/hud.dm index 94418bd689..10b6b92383 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/hud.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/hud.dm @@ -254,10 +254,10 @@ mymob.pullin.screen_loc = ui_pull_resist mymob.blind = new /obj/screen( null ) - mymob.blind.icon = 'icons/mob/screen1_alien.dmi' - mymob.blind.icon_state = "blackanimate" + mymob.blind.icon = 'icons/mob/screen1_full.dmi' + mymob.blind.icon_state = "blackimageoverlay" mymob.blind.name = " " - mymob.blind.screen_loc = "1,1 to 15,15" + mymob.blind.screen_loc = "1,1" mymob.blind.layer = 0 mymob.flash = new /obj/screen( null ) diff --git a/code/modules/mob/living/carbon/alien/larva/hud.dm b/code/modules/mob/living/carbon/alien/larva/hud.dm index 1f6da4f611..62e00be6b2 100644 --- a/code/modules/mob/living/carbon/alien/larva/hud.dm +++ b/code/modules/mob/living/carbon/alien/larva/hud.dm @@ -178,10 +178,10 @@ mymob.pullin.screen_loc = ui_pull_resist mymob.blind = new /obj/screen( null ) - mymob.blind.icon = 'icons/mob/screen1_alien.dmi' - mymob.blind.icon_state = "blackanimate" + mymob.blind.icon = 'icons/mob/screen1_full.dmi' + mymob.blind.icon_state = "blackimageoverlay" mymob.blind.name = " " - mymob.blind.screen_loc = "1,1 to 15,15" + mymob.blind.screen_loc = "1,1" mymob.blind.layer = 0 mymob.flash = new /obj/screen( null ) diff --git a/code/modules/mob/living/carbon/brain/hud.dm b/code/modules/mob/living/carbon/brain/hud.dm index c9f37b061f..7de140476e 100644 --- a/code/modules/mob/living/carbon/brain/hud.dm +++ b/code/modules/mob/living/carbon/brain/hud.dm @@ -19,8 +19,8 @@ druggy.mouse_opacity = 0 mymob.blind = new /obj/screen( null ) - mymob.blind.icon = ui_style - mymob.blind.icon_state = "blackanimate" + mymob.blind.icon = 'icons/mob/screen1_full.dmi' + mymob.blind.icon_state = "blackimageoverlay" mymob.blind.name = " " - mymob.blind.screen_loc = "1,1 to 15,15" + mymob.blind.screen_loc = "1,1" mymob.blind.layer = 0 \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/hud.dm b/code/modules/mob/living/carbon/human/hud.dm index f7cc48415a..a4e3be1f62 100644 --- a/code/modules/mob/living/carbon/human/hud.dm +++ b/code/modules/mob/living/carbon/human/hud.dm @@ -550,10 +550,11 @@ src.hotkeybuttons += mymob.pullin mymob.blind = new /obj/screen( null ) - mymob.blind.icon = ui_style - mymob.blind.icon_state = "blackanimate" + mymob.blind.icon = 'icons/mob/screen1_full.dmi' + mymob.blind.icon_state = "blackimageoverlay" mymob.blind.name = " " - mymob.blind.screen_loc = "1,1 to 15,15" + mymob.blind.screen_loc = "1,1" + mymob.blind.layer = 0 mymob.flash = new /obj/screen( null ) @@ -897,6 +898,9 @@ Radar-related things if(!src.hud_used) return if(!src.client) return + if(!hud_used.hud_shown) //Hud toggled to minimal + return + src.client.screen -= src.hud_used.item_action_list hud_used.item_action_list = list() @@ -905,6 +909,10 @@ Radar-related things var/obj/screen/item_action/A = new(src.hud_used) A.icon = 'icons/mob/screen1_action.dmi' A.icon_state = I.icon_action_button + if(I.action_button_name) + A.name = I.action_button_name + else + A.name = "Use [I.name]" A.owner = I hud_used.item_action_list += A switch(num) @@ -918,6 +926,7 @@ Radar-related things A.screen_loc = ui_action_slot4 if(5) A.screen_loc = ui_action_slot5 + break //5 slots available, so no more can be added. num++ src.client.screen += src.hud_used.item_action_list \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index f80024c41b..d310e7f3d8 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1,6 +1,7 @@ //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 #define HUMAN_MAX_OXYLOSS 12 //Defines how much oxyloss humans can get per tick. No air applies this value. +#define HUMAN_CRIT_MAX_OXYLOSS ( (4 * last_tick_duration) /3) //The amount of damage you'll get when in critical condition. We want this to be a 5 minute deal = 300s. There are 100HP to get through, so (1/3)*last_tick_duration per second. Breaths however only happen every 4 ticks. /mob/living/carbon/human var/oxygen_alert = 0 @@ -31,7 +32,7 @@ //No need to update all of these procs if the guy is dead. if(stat != DEAD) if(air_master.current_cycle%4==2) //First, resolve location and get a breath - spawn(0) breathe() //Only try to take a breath every 4 seconds, unless suffocating + spawn(0) breathe() //Only try to take a breath every 4 ticks, unless suffocating else //Still give containing object the chance to interact if(istype(loc, /obj/)) @@ -258,10 +259,7 @@ //No breath from internal atmosphere so get breath from location if(!breath) - if(istype(loc, /obj/)) - var/obj/location_as_object = loc - breath = location_as_object.handle_internal_lifeform(src, BREATH_VOLUME) - else if(istype(loc, /turf/)) + if(isturf(loc)) var/breath_moles = 0 /*if(environment.return_pressure() > ONE_ATMOSPHERE) // Loads of air around (pressure effect will be handled elsewhere), so lets just take a enough to fill our lungs at normal atmos pressure (using n = Pv/RT) @@ -271,12 +269,16 @@ breath_moles = environment.total_moles()*BREATH_PERCENTAGE breath = loc.remove_air(breath_moles) - // Handle chem smoke effect -- Doohl - var/block = 0 if(wear_mask) - if(istype(wear_mask, /obj/item/clothing/mask/gas)) + if(wear_mask.flags & BLOCK_GAS_SMOKE_EFFECT) + block = 1 + if(glasses) + if(glasses.flags & BLOCK_GAS_SMOKE_EFFECT) + block = 1 + if(head) + if(head.flags & BLOCK_GAS_SMOKE_EFFECT) block = 1 if(!block) @@ -290,9 +292,6 @@ break // If they breathe in the nasty stuff once, no need to continue checking else //Still give containing object the chance to interact - if(istype(loc, /obj/)) - var/obj/location_as_object = loc - location_as_object.handle_internal_lifeform(src, 0) handle_breath(breath) @@ -322,7 +321,10 @@ if(!breath || (breath.total_moles() == 0)) if(reagents.has_reagent("inaprovaline")) return - adjustOxyLoss(HUMAN_MAX_OXYLOSS) + if(health > 0) + adjustOxyLoss(HUMAN_MAX_OXYLOSS) + else + adjustOxyLoss(HUMAN_CRIT_MAX_OXYLOSS) oxygen_alert = max(oxygen_alert, 1) @@ -697,14 +699,17 @@ silent = 0 return 1 + //UNCONSCIOUS. NO-ONE IS HOME if( (getOxyLoss() > 50) || (config.health_threshold_crit > health) ) + Paralyse(3) + + /* Done by handle_breath() if( health <= 20 && prob(1) ) spawn(0) emote("gasp") if(!reagents.has_reagent("inaprovaline")) - adjustOxyLoss(1) - Paralyse(3) + adjustOxyLoss(1)*/ if(hallucination) if(hallucination >= 20) @@ -849,16 +854,20 @@ if(glasses) if(istype(glasses, /obj/item/clothing/glasses/meson)) sight |= SEE_TURFS - if(!druggy) see_invisible = SEE_INVISIBLE_MINIMUM + if(!druggy) + see_invisible = SEE_INVISIBLE_MINIMUM else if(istype(glasses, /obj/item/clothing/glasses/night)) see_in_dark = 5 - if(!druggy) see_invisible = SEE_INVISIBLE_MINIMUM + if(!druggy) + see_invisible = SEE_INVISIBLE_MINIMUM else if(istype(glasses, /obj/item/clothing/glasses/thermal)) sight |= SEE_MOBS - if(!druggy) see_invisible = SEE_INVISIBLE_MINIMUM + if(!druggy) + see_invisible = SEE_INVISIBLE_MINIMUM else if(istype(glasses, /obj/item/clothing/glasses/material)) sight |= SEE_OBJS - if(!druggy) see_invisible = SEE_INVISIBLE_MINIMUM + if(!druggy) + see_invisible = SEE_INVISIBLE_MINIMUM /* HUD shit goes here, as long as it doesn't modify sight flags */ // The purpose of this is to stop xray and w/e from preventing you from using huds -- Love, Doohl @@ -880,6 +889,10 @@ else if(istype(O, /obj/item/clothing/glasses/hud/security)) O.process_hud(src) if(!druggy) see_invisible = SEE_INVISIBLE_LIVING + else + see_invisible = SEE_INVISIBLE_LIVING + else + see_invisible = SEE_INVISIBLE_LIVING if(sleep && !hal_crit) sleep.icon_state = "sleep[sleeping]" //used? @@ -1028,4 +1041,5 @@ if ((changeling.geneticdamage > 0)) changeling.geneticdamage = changeling.geneticdamage-1 -#undef HUMAN_MAX_OXYLOSS \ No newline at end of file +#undef HUMAN_MAX_OXYLOSS +#undef HUMAN_CRIT_MAX_OXYLOSS \ No newline at end of file diff --git a/code/modules/mob/living/carbon/monkey/hud.dm b/code/modules/mob/living/carbon/monkey/hud.dm index c2546b6062..7509cf7af0 100644 --- a/code/modules/mob/living/carbon/monkey/hud.dm +++ b/code/modules/mob/living/carbon/monkey/hud.dm @@ -452,10 +452,10 @@ mymob.pullin.screen_loc = ui_pull_resist mymob.blind = new /obj/screen( null ) - mymob.blind.icon = ui_style - mymob.blind.icon_state = "blackanimate" + mymob.blind.icon = 'icons/mob/screen1_full.dmi' + mymob.blind.icon_state = "blackimageoverlay" mymob.blind.name = " " - mymob.blind.screen_loc = "1,1 to 15,15" + mymob.blind.screen_loc = "1,1" mymob.blind.layer = 0 mymob.flash = new /obj/screen( null ) diff --git a/code/modules/mob/living/silicon/robot/hud.dm b/code/modules/mob/living/silicon/robot/hud.dm index cd47529dde..5dbe07337c 100644 --- a/code/modules/mob/living/silicon/robot/hud.dm +++ b/code/modules/mob/living/silicon/robot/hud.dm @@ -201,10 +201,10 @@ mymob.pullin.screen_loc = ui_borg_pull mymob.blind = new /obj/screen( null ) - mymob.blind.icon = 'icons/mob/screen1_robot.dmi' - mymob.blind.icon_state = "blackanimate" + mymob.blind.icon = 'icons/mob/screen1_full.dmi' + mymob.blind.icon_state = "blackimageoverlay" mymob.blind.name = " " - mymob.blind.screen_loc = "1,1 to 15,15" + mymob.blind.screen_loc = "1,1" mymob.blind.layer = 0 mymob.flash = new /obj/screen( null ) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index eeb3e68c38..96ff696b38 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -291,6 +291,8 @@ It's fairly easy to fix if dealing with single letters but not so much with comp src.client.screen -= src.hud_used.other if(src.hud_used.hotkeybuttons) src.client.screen -= src.hud_used.hotkeybuttons + if(src.hud_used.item_action_list) + src.client.screen -= src.hud_used.item_action_list //Due to some poor coding some things need special treatment: //These ones are a part of 'adding', 'other' or 'hotkeybuttons' but we want them to stay @@ -311,11 +313,13 @@ It's fairly easy to fix if dealing with single letters but not so much with comp if(src.hud_used.hotkeybuttons && !src.hud_used.hotkey_ui_hidden) src.client.screen += src.hud_used.hotkeybuttons + src.hud_used.action_intent.screen_loc = ui_acti //Restore intent selection to the original position src.client.screen += src.zone_sel //This one is a special snowflake hud_used.hidden_inventory_update() hud_used.persistant_inventory_update() + update_action_buttons() else usr << "\red Inventory hiding is currently only supported for human mobs, sorry." else diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index f3e1357fae..9a0f20d44b 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -639,10 +639,10 @@ g_amt = 100 brightness = 8 - large - w_class = 2 - name = "large light tube" - brightness = 15 +/obj/item/weapon/light/tube/large + w_class = 2 + name = "large light tube" + brightness = 15 /obj/item/weapon/light/bulb name = "light bulb" @@ -653,6 +653,10 @@ g_amt = 100 brightness = 5 +/obj/item/weapon/light/throw_impact(atom/hit_atom) + ..() + shatter() + /obj/item/weapon/light/bulb/fire name = "fire bulb" desc = "A replacement fire bulb." @@ -663,18 +667,18 @@ brightness = 5 // update the icon state and description of the light -/obj/item/weapon/light - proc/update() - switch(status) - if(LIGHT_OK) - icon_state = base_state - desc = "A replacement [name]." - if(LIGHT_BURNED) - icon_state = "[base_state]-burned" - desc = "A burnt-out [name]." - if(LIGHT_BROKEN) - icon_state = "[base_state]-broken" - desc = "A broken [name]." + +/obj/item/weapon/light/proc/update() + switch(status) + if(LIGHT_OK) + icon_state = base_state + desc = "A replacement [name]." + if(LIGHT_BURNED) + icon_state = "[base_state]-burned" + desc = "A burnt-out [name]." + if(LIGHT_BROKEN) + icon_state = "[base_state]-broken" + desc = "A broken [name]." /obj/item/weapon/light/New() @@ -715,8 +719,11 @@ if(user.a_intent != "hurt") return + shatter() + +/obj/item/weapon/light/proc/shatter() if(status == LIGHT_OK || status == LIGHT_BURNED) - user << "The [name] shatters!" + src.visible_message("\red [name] shatters.","\red You hear a small glass object shatter.") status = LIGHT_BROKEN force = 5 playsound(src.loc, 'Glasshit.ogg', 75, 1) diff --git a/code/setup.dm b/code/setup.dm index 5239c4b222..b9c670ed9b 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -147,7 +147,8 @@ var/MAX_EXPLOSION_RANGE = 14 #define OPENCONTAINER 4096 // is an open container for chemistry purposes -#define ONESIZEFITSALL 8192 // can be worn by fatties (or children? ugh) +#define BLOCK_GAS_SMOKE_EFFECT 8192 // blocks the effect that chemical clouds would have on a mob --glasses, mask and helmets ONLY! (NOTE: flag shared with ONESIZEFITSALL) +#define ONESIZEFITSALL 8192 // can be worn by fatties (or children? ugh) --jumpsuit only (NOTE: flag shared with BLOCK_GAS_SMOKE_EFFECT) #define NOREACT 16384 //Reagents dont' react inside this container. diff --git a/code/unused/hivebot/hud.dm b/code/unused/hivebot/hud.dm index cc33795f10..9b9dc939cf 100644 --- a/code/unused/hivebot/hud.dm +++ b/code/unused/hivebot/hud.dm @@ -212,10 +212,10 @@ mymob.pullin.screen_loc = ui_pull mymob.blind = new /obj/screen( null ) - mymob.blind.icon = 'screen1_robot.dmi' - mymob.blind.icon_state = "blackanimate" + mymob.blind.icon = 'icons/mob/screen1_full.dmi'' + mymob.blind.icon_state = "blackimageoverlay" mymob.blind.name = " " - mymob.blind.screen_loc = "1,1 to 15,15" + mymob.blind.screen_loc = "1,1" mymob.blind.layer = 0 mymob.flash = new /obj/screen( null ) diff --git a/icons/mob/screen1_full.dmi b/icons/mob/screen1_full.dmi new file mode 100644 index 0000000000..9f913dafb6 Binary files /dev/null and b/icons/mob/screen1_full.dmi differ diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi index dd0e8e5008..031642e569 100644 Binary files a/icons/obj/objects.dmi and b/icons/obj/objects.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 05ceaea53b..b17188df1f 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -5,6 +5,207 @@ // 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/liquid" +#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/backup" +#define FILE_DIR "maps/RandomZLevels" +#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" +#define FILE_DIR "tools" +#define FILE_DIR "tools/Redirector" // END_FILE_DIR // BEGIN_PREFERENCES