From a7a42b868ff3c7204424cc9b7e624c251fb0872e Mon Sep 17 00:00:00 2001 From: "petethegoat@gmail.com" Date: Sat, 15 Sep 2012 17:54:53 +0000 Subject: [PATCH] Fixing cigs_lighters.dm Fixes issue 903. Fixes issue 871. Fixes issue 855. Fixes a ton of bullshit in cig code! You can throw cigarettes into plasma to ignite it again, and such. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4690 316c924e-a436-60f5-8080-3fe189b3f50e --- .../objects/items/weapons/cigs_lighters.dm | 397 ++++++++---------- .../game/objects/items/weapons/hydroponics.dm | 2 +- icons/obj/clothing/masks.dmi | Bin 12110 -> 13026 bytes tgstation.dme | 217 ++++++++++ 4 files changed, 400 insertions(+), 216 deletions(-) diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index b23aa77cc8d..3cb6a8b7089 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -1,3 +1,5 @@ +//cleansed 9/15/2012 17:48 + /* CONTAINS: MATCHES @@ -23,29 +25,27 @@ ZIPPO origin_tech = "materials=1" attack_verb = list("burnt", "singed") +/obj/item/weapon/match/process() + var/turf/location = get_turf(src) + smoketime-- + if(smoketime < 1) + icon_state = "match_burnt" + lit = -1 + processing_objects.Remove(src) + return + if(location) + location.hotspot_expose(700, 5) + return - process() - var/turf/location = get_turf(src) - smoketime-- - if(smoketime < 1) - icon_state = "match_burnt" - lit = -1 - processing_objects.Remove(src) - return - if(location) - location.hotspot_expose(700, 5) - return - - - dropped(mob/user as mob) - if(lit == 1) - lit = -1 - damtype = "brute" - icon_state = "match_burnt" - item_state = "cigoff" - name = "burnt match" - desc = "A match. This one has seen better days." - return ..() +/obj/item/weapon/match/dropped(mob/user as mob) + if(lit == 1) + lit = -1 + damtype = "brute" + icon_state = "match_burnt" + item_state = "cigoff" + name = "burnt match" + desc = "A match. This one has seen better days." + return ..() ////////////////// //FINE SMOKABLES// @@ -81,27 +81,30 @@ ZIPPO if(istype(W, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/WT = W if(WT.isOn())//Badasses dont get blinded while lighting their cig with a welding tool - light("\red [user] casually lights the [name] with [W], what a badass.") + light("[user] casually lights the [name] with [W], what a badass.") else if(istype(W, /obj/item/weapon/lighter/zippo)) var/obj/item/weapon/lighter/zippo/Z = W - if(Z.lit > 0) - light("\red With a single flick of their wrist, [user] smoothly lights their [name] with their [W]. Damn they're cool.") + if(Z.lit) + light("With a single flick of their wrist, [user] smoothly lights their [name] with their [W]. Damn they're cool.") else if(istype(W, /obj/item/weapon/lighter)) var/obj/item/weapon/lighter/L = W - if(L.lit > 0) - light("\red After some fiddling, [user] manages to light their [name] with [W].") + if(L.lit) + light("After some fiddling, [user] manages to light their [name] with [W].") + + else if(istype(W, /obj/item/weapon/match)) + var/obj/item/weapon/match/M = W + if(M.lit) + light("[user] lights their [name] with their [W].") else if(istype(W, /obj/item/weapon/melee/energy/sword)) var/obj/item/weapon/melee/energy/sword/S = W if(S.active) - light("\red [user] swings their [W], barely missing their nose. They light their [name] in the process.") + light("[user] swings their [W], barely missing their nose. They light their [name] in the process.") - else if(istype(W, /obj/item/weapon/match)) - var/obj/item/weapon/match/M = W - if(M.lit > 0) - light("\red [user] lights their [name] with their [W].") + else if(istype(W, /obj/item/device/assembly/igniter)) + light("[user] fiddles with [W], and manages to light their [name].") //can't think of any other way to update the overlays :< user.update_inv_wear_mask(0) @@ -124,8 +127,8 @@ ZIPPO /obj/item/clothing/mask/cigarette/proc/light(var/flavor_text = "[usr] lights the [name].") - if(!lit) - lit = 1 + if(!src.lit) + src.lit = 1 damtype = "fire" if(reagents.get_reagent_amount("plasma")) // the plasma explodes when exposed to fire var/datum/effect/effect/system/reagents_explosion/e = new() @@ -143,8 +146,8 @@ ZIPPO reagents.handle_reactions() icon_state = icon_on item_state = icon_on - for(var/mob/O in viewers(usr, null)) - O.show_message(flavor_text, 1) + var/turf/T = get_turf(src) + T.visible_message(flavor_text) processing_objects.Add(src) @@ -156,15 +159,15 @@ ZIPPO processing_objects.Remove(src) if(ismob(loc)) var/mob/living/M = loc - M << "\red Your [name] goes out." + M << "Your [name] goes out." M.u_equip(src) //un-equip it so the overlays can update - M.update_icons() + M.update_inv_wear_mask(0) del(src) return if(location) location.hotspot_expose(700, 5) if(reagents && reagents.total_volume) // check if it has any reagents at all - if( iscarbon(loc) && (src == loc:wear_mask) ) // if it's in the human/monkey mouth, transfer reagents to the mob + if(iscarbon(loc) && (src == loc:wear_mask)) // if it's in the human/monkey mouth, transfer reagents to the mob var/mob/living/carbon/C = loc if(prob(15)) // so it's not an instarape in case of acid reagents.reaction(C, INGEST) @@ -174,13 +177,13 @@ ZIPPO return -/obj/item/clothing/mask/cigarette/dropped(mob/user as mob) +/obj/item/clothing/mask/cigarette/attack_self(mob/user as mob) if(lit == 1) - for(var/mob/O in viewers(user, null)) - O.show_message(text("\red [] calmly drops and treads on the lit [], putting it out instantly.", user,name), 1) - new type_butt(loc) - processing_objects.Remove(src) - del(src) + user.visible_message("[user] calmly drops and treads on the lit [src], putting it out instantly.") + var/turf/T = get_turf(src) + new type_butt(T) + processing_objects.Remove(src) + del(src) return ..() @@ -194,7 +197,7 @@ ZIPPO icon_state = "cigaroff" icon_on = "cigaron" icon_off = "cigaroff" - type_butt = /obj/item/weapon/cigbutt + type_butt = /obj/item/weapon/cigarbutt throw_speed = 0.5 item_state = "cigaroff" smoketime = 1500 @@ -234,105 +237,75 @@ ZIPPO if(istype(W, /obj/item/weapon/match)) ..() else - user << "\red The [src] straight out REFUSES to be lit by such uncivilized means." + user << "\The [src] straight out REFUSES to be lit by such uncivilized means." ///////////////// //SMOKING PIPES// ///////////////// - -/obj/item/clothing/mask/pipe +/obj/item/clothing/mask/cigarette/pipe name = "smoking pipe" desc = "A pipe, for smoking. Probably made of meershaum or something." - icon_state = "cobpipeoff" - throw_speed = 0.5 - item_state = "cobpipeoff" - w_class = 1 - body_parts_covered = null - var/lit = 0 - var/icon_on = "cobpipeon" //Note - these are in masks.dmi - var/icon_off = "cobpipeoff" - var/lastHolder = null - var/smoketime = 100 - var/maxsmoketime = 100 //make sure this is equal to your smoketime - proc - light(var/flavor_text = "[usr] lights the [name].") + icon_state = "pipeoff" + item_state = "pipeoff" + icon_on = "pipeon" //Note - these are in masks.dmi + icon_off = "pipeoff" + smoketime = 100 - attackby(obj/item/weapon/W as obj, mob/user as mob) - ..() - if(istype(W, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/WT = W - if(WT.isOn()) - light("\red [user] casually lights the [name] with [W], what a badass.") +/obj/item/clothing/mask/cigarette/pipe/light(var/flavor_text = "[usr] lights the [name].") + if(!src.lit) + src.lit = 1 + damtype = "fire" + icon_state = icon_on + item_state = icon_on + var/turf/T = get_turf(src) + T.visible_message(flavor_text) + processing_objects.Add(src) - else if(istype(W, /obj/item/weapon/lighter/zippo)) - var/obj/item/weapon/lighter/zippo/Z = W - if(Z.lit > 0) - light("\red With a single flick of their wrist, [user] smoothly lights their [name] with their [W]. Damn they're cool.") - - else if(istype(W, /obj/item/weapon/lighter)) - var/obj/item/weapon/lighter/L = W - if(L.lit > 0) - light("\red After some fiddling, [user] manages to light their [name] with [W].") - - else if(istype(W, /obj/item/weapon/match)) - var/obj/item/weapon/match/M = W - if(M.lit > 0) - light("\red [user] lights their [name] with their [W].") - - light(var/flavor_text = "[usr] lights the [name].") - if(!lit) - lit = 1 - damtype = "fire" - icon_state = icon_on - item_state = icon_on - for(var/mob/O in viewers(usr, null)) - O.show_message(flavor_text, 1) - processing_objects.Add(src) - - process() - var/turf/location = get_turf(src) - smoketime-- - if(smoketime < 1) - new /obj/effect/decal/cleanable/ash(location) - if(ismob(loc)) - var/mob/living/M = loc - M << "\red Your [name] goes out, and you empty the ash." - lit = 0 - icon_state = icon_off - item_state = icon_off - processing_objects.Remove(src) - return - if(location) - location.hotspot_expose(700, 5) - return - - dropped(mob/user as mob) - if(lit == 1) - user.visible_message("[user] puts out [src].") +/obj/item/clothing/mask/cigarette/pipe/process() + var/turf/location = get_turf(src) + smoketime-- + if(smoketime < 1) + new /obj/effect/decal/cleanable/ash(location) + if(ismob(loc)) + var/mob/living/M = loc + M << "Your [name] goes out, and you empty the ash." lit = 0 icon_state = icon_off item_state = icon_off - processing_objects.Remove(src) - return ..() - -/obj/item/clothing/mask/pipe/attack_self(mob/user as mob) //Refills the pipe. Can be changed to an attackby later, if loose tobacco is added to vendors or something. - if(smoketime <= 0) - user << "\blue You refill the pipe with tobacco." - smoketime = maxsmoketime + M.update_inv_wear_mask(0) + processing_objects.Remove(src) + return + if(location) + location.hotspot_expose(700, 5) return -/obj/item/clothing/mask/pipe/attackby(obj/item/weapon/W as obj, mob/user as mob) +/obj/item/clothing/mask/cigarette/pipe/attack_self(mob/user as mob) //Refills the pipe. Can be changed to an attackby later, if loose tobacco is added to vendors or something. + if(lit == 1) + user.visible_message("[user] puts out [src].") + lit = 0 + icon_state = icon_off + item_state = icon_off + processing_objects.Remove(src) + return + if(smoketime <= 0) + user << "You refill the pipe with tobacco." + smoketime = initial(smoketime) + return + +/obj/item/clothing/mask/cigarette/pipe/attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W, /obj/item/weapon/match)) ..() else - user << "\red The [src] straight out REFUSES to be lit by such means." + user << "\The [src] straight out REFUSES to be lit by such means." - -/obj/item/clothing/mask/pipe/cobpipe +/obj/item/clothing/mask/cigarette/pipe/cobpipe name = "corn cob pipe" desc = "A nicotine delivery system popularized by folksy backwoodsmen and kept popular in the modern age and beyond by space hipsters." + icon_state = "cobpipeoff" + item_state = "cobpipeoff" + icon_on = "cobpipeon" //Note - these are in masks.dmi + icon_off = "cobpipeoff" smoketime = 400 - maxsmoketime = 400 //////////// //CIG PACK// @@ -349,36 +322,35 @@ ZIPPO slot_flags = SLOT_BELT var/cigcount = 6 - New() - ..() - flags |= NOREACT - create_reagents(15*cigcount)//so people can inject cigarettes without opening a packet, now with being able to inject the whole one +/obj/item/weapon/cigpacket/New() + ..() + flags |= NOREACT + create_reagents(15*cigcount)//so people can inject cigarettes without opening a packet, now with being able to inject the whole one - Del() - ..() - del(reagents) +/obj/item/weapon/cigpacket/Del() + ..() + del(reagents) - update_icon() - icon_state = "[initial(icon_state)][cigcount]" - desc = "There's [cigcount] cig\s left!" - return +/obj/item/weapon/cigpacket/update_icon() + icon_state = "[initial(icon_state)][cigcount]" + desc = "There are [cigcount] cig\s left!" + return - - attack_hand(mob/user as mob) - if(user.r_hand == src || user.l_hand == src) - if(cigcount == 0) - user << "You're out of cigs, shit! How you gonna get through the rest of the day..." - return - else - var/obj/item/clothing/mask/cigarette/W = new /obj/item/clothing/mask/cigarette(user) - reagents.trans_to(W, (reagents.total_volume/cigcount)) - user.put_in_active_hand(W) - reagents.maximum_volume = 15*cigcount - cigcount-- +/obj/item/weapon/cigpacket/attack_hand(mob/user as mob) + if(user.r_hand == src || user.l_hand == src) + if(cigcount == 0) + user << "You're out of cigs, shit! How you gonna get through the rest of the day..." + return else - return ..() - update_icon() - return + var/obj/item/clothing/mask/cigarette/W = new /obj/item/clothing/mask/cigarette(user) + reagents.trans_to(W, (reagents.total_volume/cigcount)) + user.put_in_active_hand(W) + reagents.maximum_volume = 15*cigcount + cigcount-- + else + return ..() + update_icon() + return /obj/item/weapon/cigpacket/dromedaryco name = "DromedaryCo packet" @@ -389,7 +361,6 @@ ZIPPO ///////// //ZIPPO// ///////// - /obj/item/weapon/lighter name = "cheap lighter" desc = "A cheap-as-free lighter." @@ -420,76 +391,72 @@ ZIPPO icon_off = "lighter-[color]" icon_state = icon_off -/obj/item/weapon/lighter - - attack_self(mob/living/user) - if(user.r_hand == src || user.l_hand == src) - if(!lit) - lit = 1 - icon_state = icon_on - item_state = icon_on - if( istype(src,/obj/item/weapon/lighter/zippo) ) - for(var/mob/O in viewers(user, null)) - O.show_message(text("\red Without even breaking stride, [] flips open and lights the [] in one smooth movement.", user, src), 1) - else - if(prob(75)) - for(var/mob/O in viewers(user, null)) - O.show_message("\red After a few attempts, [user] manages to light the [src].", 1) - else - user << "\red You burn yourself while lighting the lighter." - user.adjustFireLoss(5) - for(var/mob/O in viewers(user, null)) - O.show_message("\red After a few attempts, [user] manages to light the [src], they however burn their finger in the process.", 1) - - user.SetLuminosity(user.luminosity + 2) - processing_objects.Add(src) +/obj/item/weapon/lighter/attack_self(mob/living/user) + if(user.r_hand == src || user.l_hand == src) + if(!lit) + lit = 1 + icon_state = icon_on + item_state = icon_on + if(istype(src, /obj/item/weapon/lighter/zippo) ) + user.visible_message("Without even breaking stride, [user] flips open and lights [src] in one smooth movement.") else - lit = 0 - icon_state = icon_off - item_state = icon_off - if( istype(src,/obj/item/weapon/lighter/zippo) ) - for(var/mob/O in viewers(user, null)) - O.show_message(text("\red You hear a quiet click, as [] shuts off the [] without even looking at what they're doing. Wow.", user, src), 1) + if(prob(75)) + user.visible_message("After a few attempts, [user] manages to light the [src].") else - for(var/mob/O in viewers(user, null)) - O.show_message("\red [user] quietly shuts off the [src].", 1) + user << "You burn yourself while lighting the lighter." + user.adjustFireLoss(5) + user.visible_message("After a few attempts, [user] manages to light the [src], they however burn their finger in the process.") - user.SetLuminosity(user.luminosity - 2) - processing_objects.Remove(src) + user.SetLuminosity(user.luminosity + 2) + processing_objects.Add(src) else - return ..() - return - - - attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) - if(!istype(M, /mob)) - return - - if(istype(M.wear_mask,/obj/item/clothing/mask/cigarette) && user.zone_sel.selecting == "mouth" && lit) - if(M == user) - M.wear_mask:light("\red With a single flick of their wrist, [user] smoothly lights their [M.wear_mask.name] with their [name]. Damn they're cool.") + lit = 0 + icon_state = icon_off + item_state = icon_off + if(istype(src, /obj/item/weapon/lighter/zippo) ) + user.visible_message("You hear a quiet click, as [user] shuts off [src] without even looking at what they're doing. Wow.") else - M.wear_mask:light("\red [user] whips the [name] out and holds it for [M]. Their arm is as steady as the unflickering flame they light the [M.wear_mask.name] with.") + user.visible_message("[user] quietly shuts off the [src].") + + user.SetLuminosity(user.luminosity - 2) + processing_objects.Remove(src) + else + return ..() + return + + +/obj/item/weapon/lighter/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) + if(!istype(M, /mob)) + return + + if(istype(M.wear_mask, /obj/item/clothing/mask/cigarette) && user.zone_sel.selecting == "mouth" && lit) + var/obj/item/clothing/mask/cigarette/cig = M.wear_mask + if(M == user) + cig.attackby(src, user) else - ..() + if(istype(src, /obj/item/weapon/lighter/zippo)) + cig.light("[user] whips the [name] out and holds it for [M]. Their arm is as steady as the unflickering flame they light \the [cig] with.") + else + cig.light("[user] holds the [name] out for [M], and lights the [cig.name].") + else + ..() + +/obj/item/weapon/lighter/process() + var/turf/location = get_turf(src) + if(location) + location.hotspot_expose(700, 5) + return - process() - var/turf/location = get_turf(src) - if(location) - location.hotspot_expose(700, 5) - return +/obj/item/weapon/lighter/pickup(mob/user) + if(lit) + SetLuminosity(0) + user.SetLuminosity(user.luminosity+2) + return - pickup(mob/user) - if(lit) - SetLuminosity(0) - user.SetLuminosity(user.luminosity+2) - return - - - dropped(mob/user) - if(lit) - user.SetLuminosity(user.luminosity-2) - SetLuminosity(2) - return +/obj/item/weapon/lighter/dropped(mob/user) + if(lit) + user.SetLuminosity(user.luminosity-2) + SetLuminosity(2) + return diff --git a/code/game/objects/items/weapons/hydroponics.dm b/code/game/objects/items/weapons/hydroponics.dm index a6699b41966..9ebb60804fa 100644 --- a/code/game/objects/items/weapons/hydroponics.dm +++ b/code/game/objects/items/weapons/hydroponics.dm @@ -128,6 +128,6 @@ ..() if(istype(W, /obj/item/weapon/circular_saw) || istype(W, /obj/item/weapon/hatchet) || istype(W, /obj/item/weapon/kitchen/utensil/knife)) user << "You use [W] to fashion a pipe out of the corn cob!" - new /obj/item/clothing/mask/pipe/cobpipe (user.loc) + new /obj/item/clothing/mask/cigarette/pipe/cobpipe (user.loc) del(src) return diff --git a/icons/obj/clothing/masks.dmi b/icons/obj/clothing/masks.dmi index a1b0728d4cbdff1292ba366fcf411812ff30948f..f9b63404d2141cbbfd3e4205b3840d6af78a45db 100644 GIT binary patch literal 13026 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 Q|91t@RMS;0R<;TIUmDUJ9smFU literal 12110 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 JD3P-W{U5@VC}IEr diff --git a/tgstation.dme b/tgstation.dme index a90afdde8af..0b18904069b 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -6,6 +6,223 @@ // 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/controllers" +#define FILE_DIR "code/datums" +#define FILE_DIR "code/datums/diseases" +#define FILE_DIR "code/datums/helper_datums" +#define FILE_DIR "code/datums/organs" +#define FILE_DIR "code/datums/spells" +#define FILE_DIR "code/defines" +#define FILE_DIR "code/defines/obj" +#define FILE_DIR "code/defines/procs" +#define FILE_DIR "code/FEA" +#define FILE_DIR "code/game" +#define FILE_DIR "code/game/area" +#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/camera" +#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/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/effects" +#define FILE_DIR "code/game/objects/effects/decals" +#define FILE_DIR "code/game/objects/effects/decals/Cleanable" +#define FILE_DIR "code/game/objects/effects/spawners" +#define FILE_DIR "code/game/objects/items" +#define FILE_DIR "code/game/objects/items/devices" +#define FILE_DIR "code/game/objects/items/devices/PDA" +#define FILE_DIR "code/game/objects/items/devices/radio" +#define FILE_DIR "code/game/objects/items/robot" +#define FILE_DIR "code/game/objects/items/stacks" +#define FILE_DIR "code/game/objects/items/stacks/sheets" +#define FILE_DIR "code/game/objects/items/stacks/tiles" +#define FILE_DIR "code/game/objects/items/weapons" +#define FILE_DIR "code/game/objects/items/weapons/grenades" +#define FILE_DIR "code/game/objects/items/weapons/implants" +#define FILE_DIR "code/game/objects/items/weapons/secstorage" +#define FILE_DIR "code/game/objects/items/weapons/storage" +#define FILE_DIR "code/game/objects/items/weapons/tanks" +#define FILE_DIR "code/game/objects/structures" +#define FILE_DIR "code/game/objects/structures/crates_lockers" +#define FILE_DIR "code/game/objects/structures/crates_lockers/closets" +#define FILE_DIR "code/game/objects/structures/crates_lockers/closets/secure" +#define FILE_DIR "code/game/objects/structures/stool_bed_chair_nest" +#define FILE_DIR "code/game/turfs" +#define FILE_DIR "code/game/turfs/simulated" +#define FILE_DIR "code/game/turfs/space" +#define FILE_DIR "code/game/turfs/unsimulated" +#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/awaymissions" +#define FILE_DIR "code/modules/awaymissions/maploader" +#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/ties" +#define FILE_DIR "code/modules/clothing/under" +#define FILE_DIR "code/modules/clothing/under/jobs" +#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/library" +#define FILE_DIR "code/modules/liquid" +#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/alien/special" +#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/ai/freelook" +#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/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/reagents" +#define FILE_DIR "code/modules/reagents/reagent_containers" +#define FILE_DIR "code/modules/reagents/reagent_containers/food" +#define FILE_DIR "code/modules/reagents/reagent_containers/food/drinks" +#define FILE_DIR "code/modules/reagents/reagent_containers/food/drinks/bottle" +#define FILE_DIR "code/modules/reagents/reagent_containers/food/snacks" +#define FILE_DIR "code/modules/reagents/reagent_containers/glass" +#define FILE_DIR "code/modules/reagents/reagent_containers/glass/bottle" +#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/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/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 "maps/RandomZLevels/backup" +#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