From bd4bf94f390c3dda325ab4160a2ca5ac05b22ad4 Mon Sep 17 00:00:00 2001 From: panurgomatic Date: Tue, 8 Feb 2011 04:58:22 +0000 Subject: [PATCH] - Lots of garbage were removed from tgstation.dme by me and DreamMaker itself. Still, compiles ok for me. - Mech part fabricator. - Buildable Gygax mech + related sprites\construction datums\etc git-svn-id: http://tgstation13.googlecode.com/svn/trunk@993 316c924e-a436-60f5-8080-3fe189b3f50e --- code/game/mecha/mech_fabricator.dm | 191 +++++++++++++ code/game/mecha/mecha.dm | 2 +- code/game/mecha/mecha_construction.dm | 247 ++++++++++++++--- code/game/research/designs.dm | 27 ++ icons/misc/mech_construct.dmi | Bin 6413 -> 6962 bytes icons/misc/mech_fab.dmi | Bin 0 -> 2241 bytes icons/obj/module.dmi | Bin 725 -> 4561 bytes tgstation.dme | 384 +------------------------- 8 files changed, 433 insertions(+), 418 deletions(-) create mode 100644 code/game/mecha/mech_fabricator.dm create mode 100644 icons/misc/mech_fab.dmi diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm new file mode 100644 index 00000000000..0690ed89662 --- /dev/null +++ b/code/game/mecha/mech_fabricator.dm @@ -0,0 +1,191 @@ +///////////////////////////// +///// Part Fabricator /////// +///////////////////////////// + + +/obj/machinery/mecha_part_fabricator + icon = 'mech_fab.dmi' + icon_state = "fabricator" + name = "Exosuit Fabricator" + density = 1 + anchored = 1 + layer=2 + power_usage = 100 + var/list/resources = list( + "metal"=20000, + "glass"=20000, + "gold"=0, + "silver"=0, + "diamond"=0, + "plasma"=0 + ) + var/res_max_amount = 200000 + var/part_set + var/obj/being_built + var/list/part_sets = list( + "Ripley"=list( + list("result"="/obj/mecha_chassis/ripley","time"=100,"metal"=20000), + list("result"="/obj/item/mecha_parts/part/ripley_torso","time"=300,"metal"=40000,"glass"=15000), + list("result"="/obj/item/mecha_parts/part/ripley_left_arm","time"=200,"metal"=25000), + list("result"="/obj/item/mecha_parts/part/ripley_right_arm","time"=200,"metal"=25000), + list("result"="/obj/item/mecha_parts/part/ripley_left_leg","time"=200,"metal"=30000), + list("result"="/obj/item/mecha_parts/part/ripley_right_leg","time"=200,"metal"=30000) + ), + "Gygax"=list( + list("result"="/obj/mecha_chassis/gygax","time"=100,"metal"=25000), + list("result"="/obj/item/mecha_parts/part/gygax_torso","time"=300,"metal"=50000,"glass"=20000), + list("result"="/obj/item/mecha_parts/part/gygax_head","time"=200,"metal"=20000,"glass"=10000), + list("result"="/obj/item/mecha_parts/part/gygax_left_arm","time"=200,"metal"=30000), + list("result"="/obj/item/mecha_parts/part/gygax_right_arm","time"=200,"metal"=30000), + list("result"="/obj/item/mecha_parts/part/gygax_left_leg","time"=200,"metal"=35000), + list("result"="/obj/item/mecha_parts/part/gygax_right_leg","time"=200,"metal"=35000), + list("result"="/obj/item/mecha_parts/part/gygax_armour","time"=600,"metal"=75000,"diamond"=10000) + ) + ) + + proc/output_parts_list(set_name) + var/output = "" + if(set_name in part_sets) + var/list/part_set = part_sets[set_name] + for(var/part in part_set) + var/resources_available = check_resources(part) + output += "[resources_available?"":""][output_part_info(part)][resources_available?"":""]
" + return output + + proc/output_part_info(part) + var/path = part["result"] + var/obj/O = new path(src) + var/cost = "Cost: " + var/i = 0 + for(var/p in part) + if(p in resources) + cost += "[i?" | ":null][part[p]] [p]" + i++ + var/output = "[O.name] ([cost]) [part["time"]/10]sec" + del O + return output + + proc/output_available_resources() + var/output + for(var/resource in resources) + output += "[resource]: [min(res_max_amount, resources[resource])] cm3
" + return output + + proc/remove_resources(part) + for(var/p in part) + if(p in resources) + src.resources[p] -= part[p] + return + + proc/check_resources(part) + for(var/p in part) + if(p in resources) + if(src.resources[p] < part[p]) + return 0 + return 1 + + attack_hand(mob/user as mob) + var/dat + if (..()) + return + user.machine = src + if (src.being_built) + dat = {"Building [src.being_built.name].
+ Please wait until completion...

+
+ "} + else + dat = output_available_resources() + dat += "
" + if(!part_set) + for(var/part_set in part_sets) + dat += "[part_set]
" + else + dat += output_parts_list(part_set) + dat += "
Return" + + user << browse({" + + +[src.name] + + +[dat] + + "}, "window=mecha_fabricator") + onclose(user, "mecha_fabricator") + return + + + Topic(href, href_list) + ..() + if(href_list["part_set"]) + if(href_list["part_set"]=="clear") + src.part_set = null + else + src.part_set = href_list["part_set"] + if(href_list["part"]) + var/list/part = locate(href_list["part"]) + if(!part) return + var/path = part["result"] + var/time = part["time"] + src.being_built = new path(src) + src.remove_resources(part) + src.icon_state = "fabricator_ani" + src.power_usage = 2000 + spawn(time) + src.being_built.Move(get_step(src,EAST)) + src.icon_state = initial(src.icon_state) + src.power_usage = initial(src.power_usage) + src.visible_message("[src] beeps, \"The [src.being_built] is complete\".") + src.being_built = null + src.updateUsrDialog() + src.updateUsrDialog() + return + + process() + if (stat & (NOPOWER|BROKEN)) + return + + attackby(obj/item/stack/sheet/W as obj, mob/user as mob) + var/material + var/amnt + if(istype(W, /obj/item/stack/sheet/gold)) + material = "gold" + amnt = "g_amt" + else if(istype(W, /obj/item/stack/sheet/silver)) + material = "silver" + amnt = "g_amt" + else if(istype(W, /obj/item/stack/sheet/diamond)) + material = "diamond" + amnt = "g_amt" + else if(istype(W, /obj/item/stack/sheet/plasma)) + material = "plasma" + amnt = "g_amt" + else if(istype(W, /obj/item/stack/sheet/metal)) + material = "metal" + amnt = "m_amt" + else if(istype(W, /obj/item/stack/sheet/glass)) + material = "glass" + amnt = "g_amt" + else + return ..() + + var/name = "[W.name]" + if(src.resources[material] < res_max_amount) + var/count = 0 + spawn(10) + if(W && W.amount) + while(src.resources[material] < res_max_amount && W) + src.resources[material] += W.vars[amnt] + W.use(1) + count++ + + user << "You insert [count] [name] into the fabricator." + src.updateUsrDialog() + else + user << "The fabricator cannot hold more [name]." + return diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 01ed5937fc3..0d9c0debf84 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -28,7 +28,7 @@ var/datum/effects/system/spark_spread/spark_system = new var/lights = 0 var/lights_power = 6 - var/inertia_dir = null //for open space travel. + //var/inertia_dir = null //for open space travel. //inner atmos machinery. Air tank mostly var/datum/gas_mixture/air_contents = new diff --git a/code/game/mecha/mecha_construction.dm b/code/game/mecha/mecha_construction.dm index c1c6b64334a..d93e4056236 100644 --- a/code/game/mecha/mecha_construction.dm +++ b/code/game/mecha/mecha_construction.dm @@ -5,7 +5,7 @@ /obj/mecha_chassis name="Mecha Chassis" icon = 'mech_construct.dmi' - icon_state = "mecha_chassis" + icon_state = "backbone" var/datum/construction/construct flags = FPRINT | CONDUCT @@ -37,6 +37,35 @@ ..() return + +/obj/mecha_chassis/gygax + name = "Gygax Chassis Frame" + + New() + ..() + construct = new /datum/construction/mecha/gygax_chassis(src) + + attackby(obj/item/W as obj, mob/user as mob) + if(istype(W, /obj/item/mecha_parts)) + if(construct) + construct.check_all_steps(W, user) + else + ..() + return + +/obj/mecha_chassis/gygax_full + name = "Gygax Chassis" + icon_state = "gygax_chassis" + + New() + ..() + construct = new /datum/construction/mecha/gygax(src) + + attackby(obj/item/weapon/W as obj, mob/user as mob) + if(!construct || !construct.check_step(W, user)) + ..() + return + ///////////////////////// ////// Mecha Parts ////// ///////////////////////// @@ -45,30 +74,64 @@ /obj/item/mecha_parts name = "mecha part" icon = 'mech_construct.dmi' - icon_state = "mecha_chassis" + icon_state = "blank" w_class = 20 flags = FPRINT | TABLEPASS | CONDUCT +/////////// Ripley /obj/item/mecha_parts/part/ripley_torso name="Ripley Torso" - icon_state = "ripley_torso" + icon_state = "ripley_harness" /obj/item/mecha_parts/part/ripley_left_arm name="Ripley Left Arm" - icon_state = "ripley_left_arm" + icon_state = "ripley_l_arm" /obj/item/mecha_parts/part/ripley_right_arm name="Ripley Right Arm" - icon_state = "ripley_right_arm" + icon_state = "ripley_r_arm" /obj/item/mecha_parts/part/ripley_left_leg name="Ripley Left Leg" - icon_state = "ripley_left_leg" + icon_state = "ripley_l_leg" /obj/item/mecha_parts/part/ripley_right_leg name="Ripley Right Leg" - icon_state = "ripley_right_leg" + icon_state = "ripley_r_leg" + +///////// Gygax + +/obj/item/mecha_parts/part/gygax_torso + name="Gygax Torso" + icon_state = "gygax_harness" + +/obj/item/mecha_parts/part/gygax_head + name="Gygax Head" + icon_state = "gygax_head" + +/obj/item/mecha_parts/part/gygax_left_arm + name="Gygax Left Arm" + icon_state = "gygax_l_arm" + +/obj/item/mecha_parts/part/gygax_right_arm + name="Gygax Right Arm" + icon_state = "gygax_r_arm" + +/obj/item/mecha_parts/part/gygax_left_leg + name="Gygax Left Leg" + icon_state = "gygax_l_leg" + +/obj/item/mecha_parts/part/gygax_right_leg + name="Gygax Right Leg" + icon_state = "gygax_r_leg" + +/obj/item/mecha_parts/part/gygax_armour + name="Gygax Armour Plates" + icon_state = "gygax_armour" + + + /obj/item/mecha_parts/circuitboard name = "Exosuit Circuit board" @@ -84,16 +147,58 @@ ripley/peripherals name = "Circuit board (Ripley Peripherals Control module)" + icon_state = "mcontroller" ripley/main name = "Circuit board (Ripley Central Control module)" icon_state = "mainboard" + gygax/peripherals + name = "Circuit board (Gygax Peripherals Control module)" + icon_state = "mcontroller" + + gygax/targeting + name = "Circuit board (Weapon Control and Targeting module)" + icon_state = "mcontroller" + + gygax/main + name = "Circuit board (Gygax Central Control module)" + icon_state = "mainboard" //////////////////////////////// ///// Construction datums ////// //////////////////////////////// +/datum/construction/mecha/custom_action(step, atom/used_atom, mob/user) + if(istype(used_atom, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/W = used_atom + if (W:remove_fuel(2, user)) + playsound(holder, 'Welder2.ogg', 50, 1) + else + return 0 + else if(istype(used_atom, /obj/item/weapon/wrench)) + playsound(holder, 'Ratchet.ogg', 50, 1) + + else if(istype(used_atom, /obj/item/weapon/wirecutters)) + playsound(holder, 'Wirecutter.ogg', 50, 1) + + else if(istype(used_atom, /obj/item/weapon/cable_coil)) + var/obj/item/weapon/cable_coil/C = used_atom + if(C.amount<3) + user << ("There's not enough cable to finish the task.") + return 0 + else + C.use(4) + else if(istype(used_atom, /obj/item/stack)) + var/obj/item/stack/S = used_atom + if(S.amount < 5) + user << ("There's not enough material in this stack.") + return 0 + else + S.use(5) + return 1 + + /datum/construction/mecha/ripley_chassis result = "/obj/mecha_chassis/ripley_full" steps = list(list("key"="/obj/item/mecha_parts/part/ripley_torso"),//1 @@ -113,7 +218,7 @@ if(1) */ user.visible_message("[user] has connected [used_atom] to [holder].", "You connect [used_atom] to [holder]") - holder.overlays += used_atom.icon_state + holder.overlays += used_atom.icon_state+"+o" del used_atom return 1 @@ -137,32 +242,8 @@ ) custom_action(step, atom/used_atom, mob/user) - if(istype(used_atom, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/W = used_atom - if (W:remove_fuel(2, user)) - playsound(holder, 'Welder2.ogg', 50, 1) - else - return 0 - else if(istype(used_atom, /obj/item/weapon/wrench)) - playsound(holder, 'Ratchet.ogg', 50, 1) - - else if(istype(used_atom, /obj/item/weapon/wirecutters)) - playsound(holder, 'Wirecutter.ogg', 50, 1) - - else if(istype(used_atom, /obj/item/weapon/cable_coil)) - var/obj/item/weapon/cable_coil/C = used_atom - if(C.amount<3) - user << ("There's not enough cable to finish the task.") - return 0 - else - C.use(4) - else if(istype(used_atom, /obj/item/stack)) - var/obj/item/stack/S = used_atom - if(S.amount < 5) - user << ("There's not enough material in this stack.") - return 0 - else - S.use(5) + if(!..()) + return 0 //TODO: better messages. switch(step) @@ -200,6 +281,104 @@ +/datum/construction/mecha/gygax_chassis + result = "/obj/mecha_chassis/gygax_full" + steps = list(list("key"="/obj/item/mecha_parts/part/gygax_torso"),//1 + list("key"="/obj/item/mecha_parts/part/gygax_left_arm"),//2 + list("key"="/obj/item/mecha_parts/part/gygax_right_arm"),//3 + list("key"="/obj/item/mecha_parts/part/gygax_left_leg"),//4 + list("key"="/obj/item/mecha_parts/part/gygax_right_leg"),//5 + list("key"="/obj/item/mecha_parts/part/gygax_head") + ) + + custom_action(step, atom/used_atom, mob/user) + user.visible_message("[user] has connected [used_atom] to [holder].", "You connect [used_atom] to [holder]") + holder.overlays += used_atom.icon_state+"+o" + del used_atom + return 1 + + +/datum/construction/mecha/gygax + result = "/obj/mecha/combat/gygax" + steps = list(list("key"="/obj/item/weapon/weldingtool"),//1 + list("key"="/obj/item/weapon/wrench"),//2 + list("key"="/obj/item/mecha_parts/part/gygax_armour"),//3 + list("key"="/obj/item/weapon/weldingtool"),//4 + list("key"="/obj/item/weapon/wrench"),//5 + list("key"="/obj/item/stack/sheet/metal"),//6 + list("key"="/obj/item/weapon/wrench"),//7 + list("key"="/obj/item/weapon/gun/energy/taser_gun"),//8 + list("key"="/obj/item/weapon/wrench"),//9 + list("key"="/obj/item/weapon/gun/energy/laser_gun"),//10 + list("key"="/obj/item/weapon/screwdriver"),//11 + list("key"="/obj/item/mecha_parts/circuitboard/gygax/targeting"),//12 + list("key"="/obj/item/weapon/screwdriver"),//13 + list("key"="/obj/item/mecha_parts/circuitboard/gygax/peripherals"),//14 + list("key"="/obj/item/weapon/screwdriver"),//15 + list("key"="/obj/item/mecha_parts/circuitboard/gygax/main"),//16 + list("key"="/obj/item/weapon/wirecutters"),//17 + list("key"="/obj/item/weapon/cable_coil"),//18 + list("key"="/obj/item/weapon/screwdriver"),//19 + list("key"="/obj/item/weapon/wrench")//20 + ) + + custom_action(step, atom/used_atom, mob/user) + if(!..()) + return 0 + + //TODO: better messages. + switch(step) + if(20) + user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.") + if(19) + user.visible_message("[user] adjusts [holder] hydraulic systems.", "You adjust [holder] hydraulic systems.") + if(18) + user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].") + if(17) + user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].") + if(16) + user.visible_message("[user] installs the central control module into [holder].", "You install the central computer mainboard into [holder].") + del used_atom + if(15) + user.visible_message("[user] secures the mainboard.", "You secure the mainboard.") + if(14) + user.visible_message("[user] installs the peripherals control module into [holder].", "You install the peripherals control module into [holder].") + del used_atom + if(13) + user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.") + if(12) + user.visible_message("[user] installs the weapon control module into [holder].", "You install the weapon control module into [holder].") + del used_atom + if(11) + user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.") + if(10) + user.visible_message("[user] installs the laser gun into the weapon socket.", "You install the laser gun into the weapon socket.") + del used_atom + if(9) + user.visible_message("[user] secures the laser gun in place and connects it to [holder] powernet.", "You secure the laser gun in place and connect it to [holder] powernet.") + if(8) + user.visible_message("[user] installs the taser gun into the weapon socket.", "You install the taser gun into the weapon socket.") + del used_atom + if(7) + user.visible_message("[user] secures the taser gun in place and connects it to [holder] powernet.", "You secure the taser gun in place and connect it to [holder] powernet.") + if(6) + user.visible_message("[user] installs internal armor layer to [holder].", "You install internal armor layer to [holder].") + if(5) + user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.") + if(4) + user.visible_message("[user] welds internal armor layer to [holder].", "You weld the internal armor layer to [holder].") + if(3) + user.visible_message("[user] installs Gygax Armour Plates to [holder].", "You install Gygax Armour Plates to [holder].") + holder.overlays += used_atom.icon_state + del used_atom + if(2) + user.visible_message("[user] secures Gygax Armour Plates.", "You secure Gygax Armour Plates.") + if(1) + user.visible_message("[user] welds Gygax Armour Plates to [holder].", "You weld Gygax Armour Plates to [holder].") + return 1 + + + ////////////////// misc //////////////// diff --git a/code/game/research/designs.dm b/code/game/research/designs.dm index da79fb5e3df..e66b6065bd6 100644 --- a/code/game/research/designs.dm +++ b/code/game/research/designs.dm @@ -351,6 +351,33 @@ datum materials = list("$glass" = 2000, "acid" = 20) build_path = "/obj/item/mecha_parts/circuitboard/ripley/peripherals" + gygax_main + name = "Circuit Design (\"Gygax\" Central Control module)" + desc = "Allows for the construction of a Safeguard AI Module." + id = "gygax_main" + req_tech = list("programming" = 4, "robotics" = 5) + build_type = IMPRINTER + materials = list("$glass" = 2000, "acid" = 20) + build_path = "/obj/item/mecha_parts/circuitboard/gygax/main" + + gygax_peri + name = "Circuit Design (\"Gygax\" Peripherals Control module)" + desc = "Allows for the construction of a Safeguard AI Module." + id = "gygax_peri" + req_tech = list("programming" = 4, "robotics" = 5) + build_type = IMPRINTER + materials = list("$glass" = 2000, "acid" = 20) + build_path = "/obj/item/mecha_parts/circuitboard/gygax/peripherals" + + gygax_targ + name = "Circuit Design (\"Gygax\" Weapons & Targeting Control module)" + desc = "Allows for the construction of a Safeguard AI Module." + id = "gygax_targ" + req_tech = list("programming" = 4, "robotics" = 5) + build_type = IMPRINTER + materials = list("$glass" = 2000, "acid" = 20) + build_path = "/obj/item/mecha_parts/circuitboard/gygax/targeting" + //////////////////////////////////////// //////////Disk Construction Disks/////// //////////////////////////////////////// diff --git a/icons/misc/mech_construct.dmi b/icons/misc/mech_construct.dmi index f699ff95f065c451356b6158227616aa486d1d28..2c7b30781a1af55f3b66bb8f2ece2670f699d61a 100644 GIT binary patch literal 6962 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 literal 6413 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 diff --git a/icons/misc/mech_fab.dmi b/icons/misc/mech_fab.dmi new file mode 100644 index 0000000000000000000000000000000000000000..4785b0ce074ea9938cd1f03912eeffe2309c243e GIT binary patch literal 2241 zcmb7FeLU0q9{+8c${M|j>Co|TtBa*LM}_QcBM*^>Wu9e7c_>UCE@QUEK`a!BkWD&Q zZjPbcNn`VzicvYzaTqyvj;CQUYn$Eap8I;8Kh8h*pU><2{e0iA@Av)ieSN>VSa&Cw znvNO(05IpX_MQL$QVs#`E)`{+uyFHIHf*u3UJhI?cVKiPvyKy4(dwAn$Qz%^WHd(5 z7!kDUG5+lJDrV%(>Z}J%ws^vO{%lUolZczu5B}X{9~ytsD|~i-@nKuv!{;xG8@WlP zkE07~ihq1wQukDO#PgSL0uwWB1Ft%SCY+DY#$L<1+uYUA)Eg3(RMgas@sG-{Z~wlQ zZ5I@S@(qtIs=ZVC_;Ev5V#&YGC(#OvYEJD^^)vZ<;Pp~WU^Lo4$}xg;;46JSJwpYB z!ZLtco<8TFQQ;DqX6Y7y^uB}%NlZyAu(EMIVq~sRC>RU|27{qeslL=QyRc+S>ocCD zl0Xfp^R-;tOT^^Ve6$^oas}9@>w5Ow1$<}%%GNUu4hJaeIG;#|v;Iylf!0VjI|m;p zmkW;0foIPJfmL>ZKp-oR3n;$`mnhPiGiL~~u{ZPbh{?%H_m2B(Z3_k^db;BP%-s8M z<)kRp%P-OXaza>qR9s>dAr=5qDset>@k!!OxVY8zS;V(P z0K~s`ZMCxSw0LXbLOmFEs9~n4r^w3yXL9VDI%5m#ro$X#)Hi0hT$;s^Cyx#ohrZ~& z=X0m5LM^-koP|r+choleYvkUFCaar0^BI-09?ix1!E3G5bN-#9Jjh}KFl6cIrv=u6 z0D$T(XM0<(l**<1yOV#m*K`~#$M~y-I+?1$v#5Uij6F>sT`T&q_op80Mt01FErota z_=)Dex)^7XDXNf2UrI=wpQs&p9NphesC3Wio{qCRcvL)*HYI-|p{!~kTU%P%TY~Jj zp7}$jBsqE=@g{}H4-ctASy&+<=viCP8($VZCBD`cG$pC6BF~Krs#u~fnhi{C^VLow zK2=iU+Z~r&Zcd7Ef}4wDznxlgL@;xvPd?|yZf2Vr2usAtrC#rM;PGw0Sa!Fs{1{|I z@Q_#q_=OzWT()V>6fQ5-!2^f{qv7_YJ{r$ZC=rXj)n}}>_}%7g6pmkGFtqyG2tLSKkF4ICVadZ(a%-c0v4I1h2pG%XvPPe}s%u~FCGsIpIk)Xl!0s%Mm!Lex9n z6&m{Uj}HD^%A|p9|AE|3^odb5gOY0KMw}AJT#x39<|or}sU@tB#_#vw;Rj}ejcI$9 z-7l%VekzPkfnV+nUuokK;~Su_Y1Ua6ZTgE?+I$Np^spfJ_^pZiY>at9y{hBqXy~a- z7WD8M^Lc5JCdA$2s|5ZB3cHvcPdGJ-QT zL!xSvIlU69qDv{FIhZ-u8z34b2kn)!%j!=C|321he@n(LbG;$E?;}BQj*poclks{K zyIFWKE)jodg$^`>tj!FV^G{!YB8Oq!=DphzHakSLXA?X zoKvY+ZIuvPws!Xl1o8c$eZ()7CbevZ;IFJT1Nj;|ZU^6TAAGSsCVvBg+(4f0VA8jr*2-{Yng|cr2Of@i zWtd#`5|_Cl@~YBNMtXAYyCN2uUY@if(yS_PSrP51(rKj|t<4Jcmjt;;iB$ZHuvoWo zgUq?8P#|=N^XNR?;mIvZstRIb3R*s835z5s(Cr{CsSq+CtWbU0s-RC&^W@@;S@EH_ z064fwLD7QwwJGqoWF1i$npELCLjB8oX+f$OfUS^~02O;q!JPF$yDiA#c<19+#!O4)&j~m? LxZ5|_g=G8(I6`v^ literal 0 HcmV?d00001 diff --git a/icons/obj/module.dmi b/icons/obj/module.dmi index c595399854b9b0c27295bca5d95b8bd6bd5755a5..432ec929bfdbb0048f4ada69a81a5c10c8bb2561 100644 GIT binary patch literal 4561 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 Code File. - // BEGIN_INTERNALS // END_INTERNALS // BEGIN_FILE_DIR #define FILE_DIR . -#define FILE_DIR ".svn" -#define FILE_DIR ".svn/prop-base" -#define FILE_DIR ".svn/text-base" -#define FILE_DIR ".svn/tmp" #define FILE_DIR "code" -#define FILE_DIR "code/.svn" -#define FILE_DIR "code/.svn/text-base" #define FILE_DIR "code/ATMOSPHERICS" -#define FILE_DIR "code/ATMOSPHERICS/.svn" -#define FILE_DIR "code/ATMOSPHERICS/.svn/text-base" #define FILE_DIR "code/ATMOSPHERICS/components" -#define FILE_DIR "code/ATMOSPHERICS/components/.svn" -#define FILE_DIR "code/ATMOSPHERICS/components/.svn/text-base" #define FILE_DIR "code/ATMOSPHERICS/components/binary_devices" -#define FILE_DIR "code/ATMOSPHERICS/components/binary_devices/.svn" -#define FILE_DIR "code/ATMOSPHERICS/components/binary_devices/.svn/text-base" #define FILE_DIR "code/ATMOSPHERICS/components/unary" -#define FILE_DIR "code/ATMOSPHERICS/components/unary/.svn" -#define FILE_DIR "code/ATMOSPHERICS/components/unary/.svn/text-base" -#define FILE_DIR "code/atoms" -#define FILE_DIR "code/atoms/.svn" -#define FILE_DIR "code/atoms/clothing" -#define FILE_DIR "code/atoms/clothing/.svn" -#define FILE_DIR "code/atoms/mob" -#define FILE_DIR "code/atoms/mob/.svn" -#define FILE_DIR "code/atoms/mob/living" -#define FILE_DIR "code/atoms/mob/living/.svn" -#define FILE_DIR "code/atoms/mob/living/sapien" -#define FILE_DIR "code/atoms/mob/living/sapien/.svn" -#define FILE_DIR "code/atoms/objects" -#define FILE_DIR "code/atoms/objects/.svn" -#define FILE_DIR "code/atoms/objects/radio" -#define FILE_DIR "code/atoms/objects/radio/.svn" -#define FILE_DIR "code/atoms/objects/storage" -#define FILE_DIR "code/atoms/objects/storage/.svn" #define FILE_DIR "code/datums" -#define FILE_DIR "code/datums/.svn" -#define FILE_DIR "code/datums/.svn/text-base" #define FILE_DIR "code/datums/diseases" -#define FILE_DIR "code/datums/diseases/.svn" -#define FILE_DIR "code/datums/diseases/.svn/prop-base" -#define FILE_DIR "code/datums/diseases/.svn/text-base" #define FILE_DIR "code/datums/spells" -#define FILE_DIR "code/datums/spells/.svn" -#define FILE_DIR "code/datums/spells/.svn/text-base" #define FILE_DIR "code/defines" -#define FILE_DIR "code/defines/.svn" -#define FILE_DIR "code/defines/.svn/text-base" #define FILE_DIR "code/defines/area" -#define FILE_DIR "code/defines/area/.svn" -#define FILE_DIR "code/defines/area/.svn/text-base" #define FILE_DIR "code/defines/mob" -#define FILE_DIR "code/defines/mob/.svn" -#define FILE_DIR "code/defines/mob/.svn/text-base" #define FILE_DIR "code/defines/mob/dead" -#define FILE_DIR "code/defines/mob/dead/.svn" -#define FILE_DIR "code/defines/mob/dead/.svn/text-base" #define FILE_DIR "code/defines/mob/living" -#define FILE_DIR "code/defines/mob/living/.svn" -#define FILE_DIR "code/defines/mob/living/.svn/text-base" #define FILE_DIR "code/defines/mob/living/carbon" -#define FILE_DIR "code/defines/mob/living/carbon/.svn" -#define FILE_DIR "code/defines/mob/living/carbon/.svn/text-base" #define FILE_DIR "code/defines/mob/living/silicon" -#define FILE_DIR "code/defines/mob/living/silicon/.svn" -#define FILE_DIR "code/defines/mob/living/silicon/.svn/text-base" #define FILE_DIR "code/defines/obj" -#define FILE_DIR "code/defines/obj/.svn" -#define FILE_DIR "code/defines/obj/.svn/text-base" #define FILE_DIR "code/defines/obj/clothing" -#define FILE_DIR "code/defines/obj/clothing/.svn" -#define FILE_DIR "code/defines/obj/clothing/.svn/text-base" #define FILE_DIR "code/defines/obj/spawner" -#define FILE_DIR "code/defines/obj/spawner/.svn" -#define FILE_DIR "code/defines/obj/spawner/.svn/text-base" #define FILE_DIR "code/defines/procs" -#define FILE_DIR "code/defines/procs/.svn" -#define FILE_DIR "code/defines/procs/.svn/text-base" -#define FILE_DIR "code/defines/turf" -#define FILE_DIR "code/defines/turf/.svn" #define FILE_DIR "code/FEA" -#define FILE_DIR "code/FEA/.svn" -#define FILE_DIR "code/FEA/.svn/text-base" #define FILE_DIR "code/game" -#define FILE_DIR "code/game/.svn" -#define FILE_DIR "code/game/.svn/prop-base" -#define FILE_DIR "code/game/.svn/text-base" #define FILE_DIR "code/game/area" -#define FILE_DIR "code/game/area/.svn" -#define FILE_DIR "code/game/area/.svn/text-base" #define FILE_DIR "code/game/asteroid" -#define FILE_DIR "code/game/asteroid/.svn" -#define FILE_DIR "code/game/asteroid/.svn/text-base" #define FILE_DIR "code/game/gamemodes" -#define FILE_DIR "code/game/gamemodes/.svn" -#define FILE_DIR "code/game/gamemodes/.svn/text-base" #define FILE_DIR "code/game/gamemodes/blob" -#define FILE_DIR "code/game/gamemodes/blob/.svn" -#define FILE_DIR "code/game/gamemodes/blob/.svn/text-base" #define FILE_DIR "code/game/gamemodes/changeling" -#define FILE_DIR "code/game/gamemodes/changeling/.svn" -#define FILE_DIR "code/game/gamemodes/changeling/.svn/text-base" #define FILE_DIR "code/game/gamemodes/ctf" -#define FILE_DIR "code/game/gamemodes/ctf/.svn" -#define FILE_DIR "code/game/gamemodes/ctf/.svn/text-base" #define FILE_DIR "code/game/gamemodes/cult" -#define FILE_DIR "code/game/gamemodes/cult/.svn" -#define FILE_DIR "code/game/gamemodes/cult/.svn/text-base" #define FILE_DIR "code/game/gamemodes/deathmatch" -#define FILE_DIR "code/game/gamemodes/deathmatch/.svn" -#define FILE_DIR "code/game/gamemodes/deathmatch/.svn/text-base" #define FILE_DIR "code/game/gamemodes/events" -#define FILE_DIR "code/game/gamemodes/events/.svn" -#define FILE_DIR "code/game/gamemodes/events/.svn/text-base" #define FILE_DIR "code/game/gamemodes/extended" -#define FILE_DIR "code/game/gamemodes/extended/.svn" -#define FILE_DIR "code/game/gamemodes/extended/.svn/text-base" #define FILE_DIR "code/game/gamemodes/malfunction" -#define FILE_DIR "code/game/gamemodes/malfunction/.svn" -#define FILE_DIR "code/game/gamemodes/malfunction/.svn/text-base" #define FILE_DIR "code/game/gamemodes/meteor" -#define FILE_DIR "code/game/gamemodes/meteor/.svn" -#define FILE_DIR "code/game/gamemodes/meteor/.svn/text-base" #define FILE_DIR "code/game/gamemodes/monkey" -#define FILE_DIR "code/game/gamemodes/monkey/.svn" -#define FILE_DIR "code/game/gamemodes/monkey/.svn/text-base" #define FILE_DIR "code/game/gamemodes/nuclear" -#define FILE_DIR "code/game/gamemodes/nuclear/.svn" -#define FILE_DIR "code/game/gamemodes/nuclear/.svn/text-base" #define FILE_DIR "code/game/gamemodes/restructuring" -#define FILE_DIR "code/game/gamemodes/restructuring/.svn" -#define FILE_DIR "code/game/gamemodes/restructuring/.svn/text-base" #define FILE_DIR "code/game/gamemodes/revolution" -#define FILE_DIR "code/game/gamemodes/revolution/.svn" -#define FILE_DIR "code/game/gamemodes/revolution/.svn/text-base" #define FILE_DIR "code/game/gamemodes/ruby" -#define FILE_DIR "code/game/gamemodes/ruby/.svn" -#define FILE_DIR "code/game/gamemodes/ruby/.svn/text-base" #define FILE_DIR "code/game/gamemodes/sandbox" -#define FILE_DIR "code/game/gamemodes/sandbox/.svn" -#define FILE_DIR "code/game/gamemodes/sandbox/.svn/text-base" #define FILE_DIR "code/game/gamemodes/traitor" -#define FILE_DIR "code/game/gamemodes/traitor/.svn" -#define FILE_DIR "code/game/gamemodes/traitor/.svn/text-base" #define FILE_DIR "code/game/gamemodes/wizard" -#define FILE_DIR "code/game/gamemodes/wizard/.svn" -#define FILE_DIR "code/game/gamemodes/wizard/.svn/text-base" #define FILE_DIR "code/game/jobs" -#define FILE_DIR "code/game/jobs/.svn" -#define FILE_DIR "code/game/jobs/.svn/text-base" #define FILE_DIR "code/game/machinery" -#define FILE_DIR "code/game/machinery/.svn" -#define FILE_DIR "code/game/machinery/.svn/prop-base" -#define FILE_DIR "code/game/machinery/.svn/text-base" -#define FILE_DIR "code/game/machinery/antimatter_engine" -#define FILE_DIR "code/game/machinery/antimatter_engine/.svn" #define FILE_DIR "code/game/machinery/atmoalter" -#define FILE_DIR "code/game/machinery/atmoalter/.svn" -#define FILE_DIR "code/game/machinery/atmoalter/.svn/text-base" #define FILE_DIR "code/game/machinery/bots" -#define FILE_DIR "code/game/machinery/bots/.svn" -#define FILE_DIR "code/game/machinery/bots/.svn/text-base" #define FILE_DIR "code/game/machinery/computer" -#define FILE_DIR "code/game/machinery/computer/.svn" -#define FILE_DIR "code/game/machinery/computer/.svn/text-base" #define FILE_DIR "code/game/machinery/doors" -#define FILE_DIR "code/game/machinery/doors/.svn" -#define FILE_DIR "code/game/machinery/doors/.svn/text-base" #define FILE_DIR "code/game/machinery/embedded_controller" -#define FILE_DIR "code/game/machinery/embedded_controller/.svn" -#define FILE_DIR "code/game/machinery/embedded_controller/.svn/text-base" #define FILE_DIR "code/game/machinery/pipe" -#define FILE_DIR "code/game/machinery/pipe/.svn" -#define FILE_DIR "code/game/machinery/pipe/.svn/text-base" -#define FILE_DIR "code/game/machinery/power" -#define FILE_DIR "code/game/machinery/power/.svn" #define FILE_DIR "code/game/magic" -#define FILE_DIR "code/game/magic/.svn" -#define FILE_DIR "code/game/magic/.svn/text-base" #define FILE_DIR "code/game/magic/cultist" -#define FILE_DIR "code/game/magic/cultist/.svn" -#define FILE_DIR "code/game/magic/cultist/.svn/prop-base" -#define FILE_DIR "code/game/magic/cultist/.svn/text-base" #define FILE_DIR "code/game/mecha" -#define FILE_DIR "code/game/mecha/.svn" -#define FILE_DIR "code/game/mecha/.svn/text-base" #define FILE_DIR "code/game/mecha/combat" -#define FILE_DIR "code/game/mecha/combat/.svn" -#define FILE_DIR "code/game/mecha/combat/.svn/text-base" #define FILE_DIR "code/game/mecha/combat/weapons" -#define FILE_DIR "code/game/mecha/combat/weapons/.svn" -#define FILE_DIR "code/game/mecha/combat/weapons/.svn/text-base" #define FILE_DIR "code/game/mecha/working" -#define FILE_DIR "code/game/mecha/working/.svn" -#define FILE_DIR "code/game/mecha/working/.svn/text-base" #define FILE_DIR "code/game/mecha/working/tools" -#define FILE_DIR "code/game/mecha/working/tools/.svn" -#define FILE_DIR "code/game/mecha/working/tools/.svn/text-base" #define FILE_DIR "code/game/objects" -#define FILE_DIR "code/game/objects/.svn" -#define FILE_DIR "code/game/objects/.svn/text-base" #define FILE_DIR "code/game/objects/alien" -#define FILE_DIR "code/game/objects/alien/.svn" -#define FILE_DIR "code/game/objects/alien/.svn/text-base" #define FILE_DIR "code/game/objects/closets" -#define FILE_DIR "code/game/objects/closets/.svn" -#define FILE_DIR "code/game/objects/closets/.svn/text-base" #define FILE_DIR "code/game/objects/closets/secure" -#define FILE_DIR "code/game/objects/closets/secure/.svn" -#define FILE_DIR "code/game/objects/closets/secure/.svn/text-base" #define FILE_DIR "code/game/objects/devices" -#define FILE_DIR "code/game/objects/devices/.svn" -#define FILE_DIR "code/game/objects/devices/.svn/text-base" #define FILE_DIR "code/game/objects/devices/PDA" -#define FILE_DIR "code/game/objects/devices/PDA/.svn" -#define FILE_DIR "code/game/objects/devices/PDA/.svn/text-base" #define FILE_DIR "code/game/objects/items" -#define FILE_DIR "code/game/objects/items/.svn" -#define FILE_DIR "code/game/objects/items/.svn/text-base" #define FILE_DIR "code/game/objects/items/weapons" -#define FILE_DIR "code/game/objects/items/weapons/.svn" -#define FILE_DIR "code/game/objects/items/weapons/.svn/text-base" #define FILE_DIR "code/game/objects/radio" -#define FILE_DIR "code/game/objects/radio/.svn" -#define FILE_DIR "code/game/objects/radio/.svn/text-base" #define FILE_DIR "code/game/objects/secstorage" -#define FILE_DIR "code/game/objects/secstorage/.svn" -#define FILE_DIR "code/game/objects/secstorage/.svn/text-base" #define FILE_DIR "code/game/objects/spawners" -#define FILE_DIR "code/game/objects/spawners/.svn" -#define FILE_DIR "code/game/objects/spawners/.svn/text-base" #define FILE_DIR "code/game/objects/stacks" -#define FILE_DIR "code/game/objects/stacks/.svn" -#define FILE_DIR "code/game/objects/stacks/.svn/text-base" #define FILE_DIR "code/game/objects/storage" -#define FILE_DIR "code/game/objects/storage/.svn" -#define FILE_DIR "code/game/objects/storage/.svn/text-base" #define FILE_DIR "code/game/research" -#define FILE_DIR "code/game/research/.svn" -#define FILE_DIR "code/game/research/.svn/text-base" #define FILE_DIR "code/game/spacecraft" -#define FILE_DIR "code/game/spacecraft/.svn" -#define FILE_DIR "code/game/spacecraft/.svn/text-base" #define FILE_DIR "code/game/verbs" -#define FILE_DIR "code/game/verbs/.svn" -#define FILE_DIR "code/game/verbs/.svn/text-base" #define FILE_DIR "code/modules" -#define FILE_DIR "code/modules/.svn" #define FILE_DIR "code/modules/admin" -#define FILE_DIR "code/modules/admin/.svn" -#define FILE_DIR "code/modules/admin/.svn/text-base" #define FILE_DIR "code/modules/admin/verbs" -#define FILE_DIR "code/modules/admin/verbs/.svn" -#define FILE_DIR "code/modules/admin/verbs/.svn/text-base" -#define FILE_DIR "code/modules/assembly" -#define FILE_DIR "code/modules/assembly/.svn" -#define FILE_DIR "code/modules/ban" -#define FILE_DIR "code/modules/ban/.svn" -#define FILE_DIR "code/modules/build" -#define FILE_DIR "code/modules/build/.svn" -#define FILE_DIR "code/modules/chemical" -#define FILE_DIR "code/modules/chemical/.svn" -#define FILE_DIR "code/modules/combat" -#define FILE_DIR "code/modules/combat/.svn" -#define FILE_DIR "code/modules/combat/guns" -#define FILE_DIR "code/modules/combat/guns/.svn" -#define FILE_DIR "code/modules/computer" -#define FILE_DIR "code/modules/computer/.svn" -#define FILE_DIR "code/modules/door" -#define FILE_DIR "code/modules/door/.svn" -#define FILE_DIR "code/modules/gas" -#define FILE_DIR "code/modules/gas/.svn" -#define FILE_DIR "code/modules/genetic" -#define FILE_DIR "code/modules/genetic/.svn" -#define FILE_DIR "code/modules/hud" -#define FILE_DIR "code/modules/hud/.svn" -#define FILE_DIR "code/modules/login" -#define FILE_DIR "code/modules/login/.svn" -#define FILE_DIR "code/modules/medical" -#define FILE_DIR "code/modules/medical/.svn" #define FILE_DIR "code/modules/mob" -#define FILE_DIR "code/modules/mob/.svn" -#define FILE_DIR "code/modules/mob/.svn/text-base" #define FILE_DIR "code/modules/mob/dead" -#define FILE_DIR "code/modules/mob/dead/.svn" #define FILE_DIR "code/modules/mob/dead/observer" -#define FILE_DIR "code/modules/mob/dead/observer/.svn" -#define FILE_DIR "code/modules/mob/dead/observer/.svn/text-base" #define FILE_DIR "code/modules/mob/living" -#define FILE_DIR "code/modules/mob/living/.svn" -#define FILE_DIR "code/modules/mob/living/.svn/text-base" #define FILE_DIR "code/modules/mob/living/carbon" -#define FILE_DIR "code/modules/mob/living/carbon/.svn" -#define FILE_DIR "code/modules/mob/living/carbon/.svn/text-base" #define FILE_DIR "code/modules/mob/living/carbon/alien" -#define FILE_DIR "code/modules/mob/living/carbon/alien/.svn" -#define FILE_DIR "code/modules/mob/living/carbon/alien/.svn/text-base" #define FILE_DIR "code/modules/mob/living/carbon/alien/humanoid" -#define FILE_DIR "code/modules/mob/living/carbon/alien/humanoid/.svn" -#define FILE_DIR "code/modules/mob/living/carbon/alien/humanoid/.svn/text-base" #define FILE_DIR "code/modules/mob/living/carbon/alien/humanoid/caste" -#define FILE_DIR "code/modules/mob/living/carbon/alien/humanoid/caste/.svn" -#define FILE_DIR "code/modules/mob/living/carbon/alien/humanoid/caste/.svn/text-base" #define FILE_DIR "code/modules/mob/living/carbon/alien/larva" -#define FILE_DIR "code/modules/mob/living/carbon/alien/larva/.svn" -#define FILE_DIR "code/modules/mob/living/carbon/alien/larva/.svn/text-base" #define FILE_DIR "code/modules/mob/living/carbon/beast" -#define FILE_DIR "code/modules/mob/living/carbon/beast/.svn" -#define FILE_DIR "code/modules/mob/living/carbon/beast/.svn/text-base" #define FILE_DIR "code/modules/mob/living/carbon/human" -#define FILE_DIR "code/modules/mob/living/carbon/human/.svn" -#define FILE_DIR "code/modules/mob/living/carbon/human/.svn/text-base" #define FILE_DIR "code/modules/mob/living/carbon/monkey" -#define FILE_DIR "code/modules/mob/living/carbon/monkey/.svn" -#define FILE_DIR "code/modules/mob/living/carbon/monkey/.svn/text-base" #define FILE_DIR "code/modules/mob/living/silicon" -#define FILE_DIR "code/modules/mob/living/silicon/.svn" -#define FILE_DIR "code/modules/mob/living/silicon/.svn/text-base" #define FILE_DIR "code/modules/mob/living/silicon/ai" -#define FILE_DIR "code/modules/mob/living/silicon/ai/.svn" -#define FILE_DIR "code/modules/mob/living/silicon/ai/.svn/text-base" #define FILE_DIR "code/modules/mob/living/silicon/aihologram" -#define FILE_DIR "code/modules/mob/living/silicon/aihologram/.svn" -#define FILE_DIR "code/modules/mob/living/silicon/aihologram/.svn/text-base" #define FILE_DIR "code/modules/mob/living/silicon/decoy" -#define FILE_DIR "code/modules/mob/living/silicon/decoy/.svn" -#define FILE_DIR "code/modules/mob/living/silicon/decoy/.svn/text-base" #define FILE_DIR "code/modules/mob/living/silicon/hivebot" -#define FILE_DIR "code/modules/mob/living/silicon/hivebot/.svn" -#define FILE_DIR "code/modules/mob/living/silicon/hivebot/.svn/text-base" #define FILE_DIR "code/modules/mob/living/silicon/robot" -#define FILE_DIR "code/modules/mob/living/silicon/robot/.svn" -#define FILE_DIR "code/modules/mob/living/silicon/robot/.svn/text-base" #define FILE_DIR "code/modules/mob/new_player" -#define FILE_DIR "code/modules/mob/new_player/.svn" -#define FILE_DIR "code/modules/mob/new_player/.svn/text-base" #define FILE_DIR "code/modules/power" -#define FILE_DIR "code/modules/power/.svn" -#define FILE_DIR "code/modules/power/.svn/text-base" #define FILE_DIR "code/modules/power/antimatter" -#define FILE_DIR "code/modules/power/antimatter/.svn" -#define FILE_DIR "code/modules/power/antimatter/.svn/text-base" #define FILE_DIR "code/modules/power/singularity" -#define FILE_DIR "code/modules/power/singularity/.svn" -#define FILE_DIR "code/modules/power/singularity/.svn/text-base" -#define FILE_DIR "code/modules/radio" -#define FILE_DIR "code/modules/radio/.svn" -#define FILE_DIR "code/modules/shuttle" -#define FILE_DIR "code/modules/shuttle/.svn" #define FILE_DIR "code/unused" -#define FILE_DIR "code/unused/.svn" -#define FILE_DIR "code/unused/.svn/text-base" -#define FILE_DIR "code/unused/game" -#define FILE_DIR "code/unused/game/.svn" -#define FILE_DIR "code/unused/game/verbs" -#define FILE_DIR "code/unused/game/verbs/.svn" -#define FILE_DIR "code/unused/modules" -#define FILE_DIR "code/unused/modules/.svn" -#define FILE_DIR "code/unused/modules/admin" -#define FILE_DIR "code/unused/modules/admin/.svn" #define FILE_DIR "code/WorkInProgress" -#define FILE_DIR "code/WorkInProgress/.svn" -#define FILE_DIR "code/WorkInProgress/.svn/text-base" #define FILE_DIR "code/WorkInProgress/computer2" -#define FILE_DIR "code/WorkInProgress/computer2/.svn" -#define FILE_DIR "code/WorkInProgress/computer2/.svn/text-base" #define FILE_DIR "code/WorkInProgress/experimental" -#define FILE_DIR "code/WorkInProgress/experimental/.svn" -#define FILE_DIR "code/WorkInProgress/experimental/.svn/text-base" #define FILE_DIR "code/WorkInProgress/optics" -#define FILE_DIR "code/WorkInProgress/optics/.svn" -#define FILE_DIR "code/WorkInProgress/optics/.svn/text-base" #define FILE_DIR "code/WorkInProgress/pda2" -#define FILE_DIR "code/WorkInProgress/pda2/.svn" -#define FILE_DIR "code/WorkInProgress/pda2/.svn/text-base" #define FILE_DIR "code/WorkInProgress/recycling" -#define FILE_DIR "code/WorkInProgress/recycling/.svn" -#define FILE_DIR "code/WorkInProgress/recycling/.svn/text-base" -#define FILE_DIR "config" -#define FILE_DIR "config/.svn" -#define FILE_DIR "config/.svn/text-base" -#define FILE_DIR "config/names" -#define FILE_DIR "config/names/.svn" -#define FILE_DIR "config/names/.svn/text-base" -#define FILE_DIR "data" -#define FILE_DIR "data/.svn" -#define FILE_DIR "data/.svn/text-base" -#define FILE_DIR "data/logs" -#define FILE_DIR "data/logs/2011" -#define FILE_DIR "data/logs/2011/02-February" -#define FILE_DIR "data/player_saves" -#define FILE_DIR "data/player_saves/v" -#define FILE_DIR "data/player_saves/v/veyveyr" #define FILE_DIR "icons" -#define FILE_DIR "icons/.svn" -#define FILE_DIR "icons/.svn/prop-base" -#define FILE_DIR "icons/.svn/text-base" #define FILE_DIR "icons/effects" -#define FILE_DIR "icons/effects/.svn" -#define FILE_DIR "icons/effects/.svn/prop-base" -#define FILE_DIR "icons/effects/.svn/text-base" #define FILE_DIR "icons/misc" -#define FILE_DIR "icons/misc/.svn" -#define FILE_DIR "icons/misc/.svn/prop-base" -#define FILE_DIR "icons/misc/.svn/text-base" #define FILE_DIR "icons/mob" -#define FILE_DIR "icons/mob/.svn" -#define FILE_DIR "icons/mob/.svn/prop-base" -#define FILE_DIR "icons/mob/.svn/text-base" #define FILE_DIR "icons/obj" -#define FILE_DIR "icons/obj/.svn" -#define FILE_DIR "icons/obj/.svn/prop-base" -#define FILE_DIR "icons/obj/.svn/text-base" #define FILE_DIR "icons/obj/atmospherics" -#define FILE_DIR "icons/obj/atmospherics/.svn" -#define FILE_DIR "icons/obj/atmospherics/.svn/prop-base" -#define FILE_DIR "icons/obj/atmospherics/.svn/text-base" #define FILE_DIR "icons/obj/clothing" -#define FILE_DIR "icons/obj/clothing/.svn" -#define FILE_DIR "icons/obj/clothing/.svn/prop-base" -#define FILE_DIR "icons/obj/clothing/.svn/text-base" #define FILE_DIR "icons/obj/doors" -#define FILE_DIR "icons/obj/doors/.svn" -#define FILE_DIR "icons/obj/doors/.svn/prop-base" -#define FILE_DIR "icons/obj/doors/.svn/text-base" #define FILE_DIR "icons/obj/machines" -#define FILE_DIR "icons/obj/machines/.svn" -#define FILE_DIR "icons/obj/machines/.svn/prop-base" -#define FILE_DIR "icons/obj/machines/.svn/text-base" #define FILE_DIR "icons/obj/pipes" -#define FILE_DIR "icons/obj/pipes/.svn" -#define FILE_DIR "icons/obj/pipes/.svn/prop-base" -#define FILE_DIR "icons/obj/pipes/.svn/text-base" #define FILE_DIR "icons/pda_icons" -#define FILE_DIR "icons/pda_icons/.svn" -#define FILE_DIR "icons/pda_icons/.svn/prop-base" -#define FILE_DIR "icons/pda_icons/.svn/text-base" -#define FILE_DIR "icons/PSD files" -#define FILE_DIR "icons/PSD files/.svn" -#define FILE_DIR "icons/PSD files/.svn/prop-base" -#define FILE_DIR "icons/PSD files/.svn/text-base" #define FILE_DIR "icons/Testing" -#define FILE_DIR "icons/Testing/.svn" -#define FILE_DIR "icons/Testing/.svn/prop-base" -#define FILE_DIR "icons/Testing/.svn/text-base" #define FILE_DIR "icons/turf" -#define FILE_DIR "icons/turf/.svn" -#define FILE_DIR "icons/turf/.svn/prop-base" -#define FILE_DIR "icons/turf/.svn/text-base" #define FILE_DIR "interface" -#define FILE_DIR "interface/.svn" -#define FILE_DIR "interface/.svn/text-base" #define FILE_DIR "maps" -#define FILE_DIR "maps/.svn" -#define FILE_DIR "maps/.svn/prop-base" -#define FILE_DIR "maps/.svn/text-base" -#define FILE_DIR "maps/.svn/tmp" #define FILE_DIR "maps/backup" -#define FILE_DIR "maps/backup/.svn" -#define FILE_DIR "maps/backup/.svn/text-base" -#define FILE_DIR "music" -#define FILE_DIR "music/.svn" -#define FILE_DIR "music/.svn/text-base" #define FILE_DIR "sound" -#define FILE_DIR "sound/.svn" #define FILE_DIR "sound/ambience" -#define FILE_DIR "sound/ambience/.svn" -#define FILE_DIR "sound/ambience/.svn/prop-base" -#define FILE_DIR "sound/ambience/.svn/text-base" #define FILE_DIR "sound/announcer" -#define FILE_DIR "sound/announcer/.svn" -#define FILE_DIR "sound/announcer/.svn/prop-base" -#define FILE_DIR "sound/announcer/.svn/text-base" #define FILE_DIR "sound/bots" -#define FILE_DIR "sound/bots/.svn" -#define FILE_DIR "sound/bots/.svn/prop-base" -#define FILE_DIR "sound/bots/.svn/text-base" #define FILE_DIR "sound/effects" -#define FILE_DIR "sound/effects/.svn" -#define FILE_DIR "sound/effects/.svn/prop-base" -#define FILE_DIR "sound/effects/.svn/text-base" #define FILE_DIR "sound/items" -#define FILE_DIR "sound/items/.svn" -#define FILE_DIR "sound/items/.svn/prop-base" -#define FILE_DIR "sound/items/.svn/text-base" #define FILE_DIR "sound/machines" -#define FILE_DIR "sound/machines/.svn" -#define FILE_DIR "sound/machines/.svn/prop-base" -#define FILE_DIR "sound/machines/.svn/text-base" #define FILE_DIR "sound/misc" -#define FILE_DIR "sound/misc/.svn" -#define FILE_DIR "sound/misc/.svn/prop-base" -#define FILE_DIR "sound/misc/.svn/text-base" #define FILE_DIR "sound/piano" -#define FILE_DIR "sound/piano/.svn" -#define FILE_DIR "sound/piano/.svn/prop-base" -#define FILE_DIR "sound/piano/.svn/text-base" #define FILE_DIR "sound/spells" -#define FILE_DIR "sound/spells/.svn" -#define FILE_DIR "sound/spells/.svn/prop-base" -#define FILE_DIR "sound/spells/.svn/text-base" #define FILE_DIR "sound/voice" -#define FILE_DIR "sound/voice/.svn" -#define FILE_DIR "sound/voice/.svn/prop-base" -#define FILE_DIR "sound/voice/.svn/text-base" #define FILE_DIR "sound/weapons" -#define FILE_DIR "sound/weapons/.svn" -#define FILE_DIR "sound/weapons/.svn/prop-base" -#define FILE_DIR "sound/weapons/.svn/text-base" -#define FILE_DIR "SQL" -#define FILE_DIR "SQL/.svn" -#define FILE_DIR "SQL/.svn/text-base" // END_FILE_DIR - // BEGIN_PREFERENCES #define DEBUG // END_PREFERENCES - // BEGIN_INCLUDE #include "code\names.dm" #include "code\setup.dm" @@ -815,6 +432,7 @@ #include "code\game\mecha\construction_datum.dm" #include "code\game\mecha\global_iterator.dm" #include "code\game\mecha\mech_bay.dm" +#include "code\game\mecha\mech_fabricator.dm" #include "code\game\mecha\mecha.dm" #include "code\game\mecha\mecha_construction.dm" #include "code\game\mecha\mecha_wreckage.dm"