From acbe97b0a33a0666067373dcef90a2789d2d531e Mon Sep 17 00:00:00 2001 From: Pete Goodfellow Date: Sat, 13 Apr 2013 19:31:08 +0100 Subject: [PATCH 01/13] Added the Hotline gamemode. Name isn't really appropriate. --- code/game/gamemodes/hotline/hotline.dm | 298 +++++++++++++++++++++++++ 1 file changed, 298 insertions(+) create mode 100644 code/game/gamemodes/hotline/hotline.dm diff --git a/code/game/gamemodes/hotline/hotline.dm b/code/game/gamemodes/hotline/hotline.dm new file mode 100644 index 0000000000..eb6670bd52 --- /dev/null +++ b/code/game/gamemodes/hotline/hotline.dm @@ -0,0 +1,298 @@ +var/global/list/animal_masks = list(/obj/item/clothing/mask/horsehead, \ + /obj/item/clothing/mask/pig, \ + /obj/item/clothing/mask/monkeymask, \ + /obj/item/clothing/mask/owl_mask) + +#define GREETING "Hello, mother." + +/datum/game_mode/hotline + name = "Hotline" + config_tag = "hotline" + required_players = 0 + var/datum/sadistic_objective/sadObj = null + var/objectives_completed = 0 + var/list/sadistic_objectives = list() + + +/datum/game_mode/hotline/announce() + world << "The current game mode is - Hotline!" + world << "The singularity is upon us: an AI at Centcomm has achieved superintelligence. Follow it's sadistic instructions and maybe there is some hope of survival." + + +/datum/game_mode/hotline/post_setup() + ..() + //objectives! + for(var/path in typesof(/datum/sadistic_objective)) + if(path == /datum/sadistic_objective) + continue + var/datum/sadistic_objective/S = new path() + sadistic_objectives += S + + //masks! + for(var/mob/living/carbon/human/player in player_list) + var/mask = pick(animal_masks) + var/obj/item/clothing/a_mask = new mask(player) + a_mask.canremove = 0 + if(player.wear_mask) + player.wear_mask.loc = null + player.wear_mask = null + player.equip_to_slot_or_del(a_mask, slot_wear_mask) + + //hallucinations! + player.hallucination += rand(30, 50) + + //blood! + for(var/turf/simulated/floor/F in world) + if(prob(96)) + continue + + new /obj/effect/decal/cleanable/blood(F) + + //lights! + var/list/epicentreList = list() + for(var/obj/machinery/power/apc/A in world) + if(A.z == 1) + epicentreList += A + + if(!epicentreList.len) + return + + for(var/i = 1, i <= 16, i++) + var/obj/machinery/power/apc/A = pick(epicentreList) + A.overload_lighting() + epicentreList -= A + + //cloner! + for(var/obj/machinery/clonepod/C in world) + C.loc.ex_act(3) + C.loc.ex_act(3) + del(C) + + +/datum/game_mode/hotline/declare_completion() + ..() + world << "The despair squid successfully destroyed the station!" + return 1 + + +/datum/game_mode/hotline/process() + if(!sadObj) + sadObj = pick(sort_objective_level(objectives_completed)) + sadObj.Announce() + if(sadObj.CheckCompletion()) + sadObj = null + objectives_completed++ + + +/datum/game_mode/hotline/proc/sort_objective_level(ideallevel = 0) + var/list/matching_objectives = list() + for(var/datum/sadistic_objective/objective in sadistic_objectives) + if(objective.level == ideallevel) + matching_objectives += objective + + return matching_objectives + + +/datum/sadistic_objective + var/level = 0 + var/alert = "I appear to be malfunctioning. You should never see this." + var/mob/target = 0 + +/datum/sadistic_objective/proc/CheckCompletion() + return 0 + +/datum/sadistic_objective/proc/Announce() + var/Ualert = alert + + if(target) + var/list/living_players = living_mob_list + living_players &= player_list + target = pick(living_players) + Ualert = replacetextEx(Ualert, "%target%", "[target]") + Ualert = replacetextEx(Ualert, "%He%", (target.gender == "male" ? "He" : "She")) + Ualert = replacetextEx(Ualert, "%His%", (target.gender == "male" ? "His" : "Her")) + Ualert = replacetextEx(Ualert, "%Him%", (target.gender == "male" ? "Him" : "Her")) + Ualert = replacetextEx(Ualert, "%he%", (target.gender == "male" ? "he" : "she")) + Ualert = replacetextEx(Ualert, "%his%", (target.gender == "male" ? "his" : "her")) + Ualert = replacetextEx(Ualert, "%him%", (target.gender == "male" ? "him" : "her")) + + command_alert("[GREETING] [Ualert]") + + +/datum/sadistic_objective/ian + level = 0 + alert = "Kill Ian." + +/datum/sadistic_objective/ian/CheckCompletion() + if(!target) + target = locate(/mob/living/simple_animal/corgi/Ian) in world + if(target.stat == DEAD) + return 1 + return 0 + + +/datum/sadistic_objective/runtime + level = 0 + alert = "Kill Runtime." + +/datum/sadistic_objective/runtime/CheckCompletion() + if(!target) + target = locate(/mob/living/simple_animal/cat/Runtime) in world + if(target.stat == DEAD) + return 1 + return 0 + + +/datum/sadistic_objective/monkeys + level = 1 + alert = "Gas at least three monkeys." + var/list/targets = null + +/datum/sadistic_objective/monkeys/CheckCompletion() + if(!targets) + targets = list() + for(var/mob/living/carbon/monkey/M in living_mob_list) + targets += M + if(targets) + var/count = 0 + for(var/mob/living/carbon/monkey/M in targets) + if(M.stat) + if(M.oxyloss > 50 || M.toxloss > 50) //magic numbers! + if(!istype(M.loc, /turf/space)) + count++ + if(count >= 3) + return 1 + + return 0 + + +/datum/sadistic_objective/burn + level = 1 + alert = "Burn %target%'s arms and legs. %He% may survive." + target = 1 + +/datum/sadistic_objective/burn/CheckCompletion() + if(!target) + var/list/living_players = living_mob_list + living_players &= player_list + target = pick(living_players) + command_alert("[GREETING] Do it to [target] instead.") + if(target) + var/mob/living/carbon/human/H = target + var/count = 0 + for(var/datum/limb/O in H.organs) + if(istype(O, /datum/limb/r_arm) || istype(O, /datum/limb/l_arm) || istype(O, /datum/limb/r_leg) || istype(O, /datum/limb/l_leg)) + if(O.burn_dam) + count++ + if(count >= 4) + return 1 + + return 0 + + +/datum/sadistic_objective/stab + level = 2 + alert = "Put out %target%'s eyes." + target = 1 + +/datum/sadistic_objective/burn/CheckCompletion() + if(!target) + var/list/living_players = living_mob_list + living_players &= player_list + target = pick(living_players) + command_alert("Hello humans. Do it to [target] instead.") + if(target) + var/mob/living/carbon/human/H = target + if(H.blinded) + return 1 + + return 0 + + +/datum/sadistic_objective/jacket + level = 2 + alert = "%target% wishes you harm. Straightjacket %him% to ensure his cooperation." + target = 1 + +/datum/sadistic_objective/jacket/CheckCompletion() + if(!target) + var/list/living_players = living_mob_list + living_players &= player_list + target = pick(living_players) + command_alert("[GREETING] Do it to [target] instead.") + if(target) + var/mob/living/carbon/human/H = target + if(istype(H.wear_suit, /obj/item/clothing/suit/straight_jacket)) + return 1 + + return 0 + + +/datum/sadistic_objective/gib + level = 3 + alert = "Gib %target%, and then consume %his% meat." + target = 1 + var/meat = 0 + var/targetname = null + +/datum/sadistic_objective/gib/Announce() + ..() + var/mob/living/carbon/C = target + var/mask = C.wear_mask + C.drop_from_inventory(mask) + del(mask) + +/datum/sadistic_objective/gib/CheckCompletion() + if(!target) + var/obj/item/weapon/reagent_containers/food/snacks/meat/human/H = locate() in world + if(H && H.subjectname == targetname && !meat) + meat = 1 + command_alert("[GREETING] Now consume the meat.") + else if(!H) + return 1 + if(target && !targetname) + var/mob/living/carbon/human/H = target + targetname = H.real_name + + return 0 + + +/datum/sadistic_objective/suicide + level = 4 + alert = "Three humans must die." + var/initialhumans = 0 + +/datum/sadistic_objective/suicide/Announce() + ..() + initialhumans = player_list.len + +/datum/sadistic_objective/suicide/CheckCompletion() + if(player_list.len <= initialhumans - 3) + return 1 + + return 0 + + +/datum/sadistic_objective/nuke + level = 5 + alert = "Detonate the station nuke. The code is 00000." + +/datum/sadistic_objective/nuke/Announce() + ..() + var/obj/machinery/nuclearbomb/nuke = locate() in world + nuke.r_code = "00000" + + +//non gas masks +/obj/item/clothing/mask/monkeymask + name = "monkey mask" + desc = "A mask used when acting as a monkey." + icon_state = "monkeymask" + item_state = "monkeymask" + +/obj/item/clothing/mask/owl_mask + name = "owl mask" + desc = "Twoooo!" + icon_state = "owl" + +#undef GREETING \ No newline at end of file From e3798a9ba729d21eda72a254c795fd70523515b0 Mon Sep 17 00:00:00 2001 From: Pete Goodfellow Date: Sat, 13 Apr 2013 19:36:36 +0100 Subject: [PATCH 02/13] Fix for the burn/stab objectives. --- code/game/gamemodes/hotline/hotline.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/hotline/hotline.dm b/code/game/gamemodes/hotline/hotline.dm index eb6670bd52..d34f3bae2c 100644 --- a/code/game/gamemodes/hotline/hotline.dm +++ b/code/game/gamemodes/hotline/hotline.dm @@ -195,12 +195,12 @@ var/global/list/animal_masks = list(/obj/item/clothing/mask/horsehead, \ alert = "Put out %target%'s eyes." target = 1 -/datum/sadistic_objective/burn/CheckCompletion() +/datum/sadistic_objective/stab/CheckCompletion() if(!target) var/list/living_players = living_mob_list living_players &= player_list target = pick(living_players) - command_alert("Hello humans. Do it to [target] instead.") + command_alert("[GREETING] Do it to [target] instead.") if(target) var/mob/living/carbon/human/H = target if(H.blinded) From f818d7604a451b46136795d0fe1a8cebf2c21ac9 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Sat, 13 Apr 2013 21:42:50 +0100 Subject: [PATCH 03/13] Crystal mode. There are 3 crystal zealots each with their own unique crystals, which have powers that you can activate by clicking while in your hand. Each zealot must collect 2 crystals to complete their objective; they can find more crystals by examining their own crystal and it will glow depending on how close other crystals are. --- code/game/gamemodes/crystal/crystal.dm | 134 +++++++++++++++++++++ code/game/gamemodes/crystal/the_crystal.dm | 108 +++++++++++++++++ icons/obj/crystal.dmi | Bin 0 -> 3272 bytes tgstation.dme | 40 +----- 4 files changed, 245 insertions(+), 37 deletions(-) create mode 100644 code/game/gamemodes/crystal/crystal.dm create mode 100644 code/game/gamemodes/crystal/the_crystal.dm create mode 100644 icons/obj/crystal.dmi diff --git a/code/game/gamemodes/crystal/crystal.dm b/code/game/gamemodes/crystal/crystal.dm new file mode 100644 index 0000000000..9084c5bd17 --- /dev/null +++ b/code/game/gamemodes/crystal/crystal.dm @@ -0,0 +1,134 @@ +/datum/game_mode + var/list/datum/mind/crystal_holders = list() + +/datum/game_mode/crystal + name = "crystal" + config_tag = "crystal" + restricted_jobs = list("Cyborg", "AI", "Captain", "Head of Personnel", "Chief Medical Officer", "Research Director", "Chief Engineer", "Head of Security") + protected_jobs = list("Security Officer", "Warden", "Detective") + required_players = 3 + required_enemies = 3 + recommended_enemies = 3 + + var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds) + var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds) + +/datum/game_mode/crystal/announce() + world << "The current game mode is - Crystal!" + world << "There are crystal zealots trying to bring a powerful alien crystal to centcom. Stop them at all costs!" + +/datum/game_mode/crystal/pre_setup() + + if(config.protect_roles_from_antagonist) + restricted_jobs += protected_jobs + + var/list/possible_zealots = get_players_for_role(BE_TRAITOR) // will make a new role type if this mode becomes a serious candidate for being a new mode type + if(!possible_zealots.len) + return 0 + + for(var/i = 0; i < required_enemies; i++) + if(!possible_zealots.len) + break + var/datum/mind/zealot = pick(possible_zealots) + crystal_holders += zealot + zealot.special_role = "crystal zealot" + possible_zealots -= zealot + + if(crystal_holders.len < required_enemies) + return 0 + return 1 + +/datum/game_mode/crystal/post_setup() + for(var/datum/mind/zealot in crystal_holders) + spawn(rand(10,100)) + equip_and_greet_zealots(zealot) + modePlayer += traitors + spawn (rand(waittime_l, waittime_h)) + send_intercept() + ..() + return 1 + +/datum/game_mode/crystal/proc/assign_objectives(var/datum/mind/zealot) + var/datum/objective/crystal_steal/crystal_obj = new + crystal_obj.owner = zealot + crystal_obj.find_target() + zealot.objectives += crystal_obj + + zealot.current << "You are the zealot." + var/obj_count = 1 + for(var/datum/objective/objective in zealot.objectives) + zealot.current << "Objective #[obj_count]: [objective.explanation_text]" + obj_count++ + zealot.current << "\nYou are tasked with smuggling the required number of crystals onto Central Command from their Escape Shuttle." + zealot.current << "If you do not have enough crystals you can steal some from other zealots who have the same task." + zealot.current << "Your crystal glows when other crystals are near, examine it to see how close you are. You can touch your crystal to activate it's alien power." + zealot.current << "All crystals have different powers which you can use to help complete your objective, make sure you aren't seen with it however." + +/datum/game_mode/crystal/proc/equip_and_greet_zealots(var/datum/mind/zealot) + + if(crystal_types.len) + if(zealot && ishuman(zealot.current)) + + var/crystal_type = pick_n_take(crystal_types) + var/mob/living/carbon/human/H = zealot.current + + var/obj/item/crystal/C = new crystal_type(null) + + var/obj/item/weapon/storage/backpack/B = locate() in H + + if(B && B.storage_slots > B.contents.len) + C.loc = B + else + C.loc = H + H.put_in_hands(C) + + assign_objectives(zealot) + + return + + +/datum/game_mode/proc/auto_declare_completion_crystal() + if(crystal_holders.len) + var/text = "The zealots were:" + for(var/datum/mind/zealot in crystal_holders) + var/zealotwin = 1 + + text += "
[zealot.key] was [zealot.name] (" + if(zealot.current) + if(zealot.current.stat == DEAD) + text += "died" + else + text += "survived" + if(zealot.current.real_name != zealot.name) + text += " as [zealot.current.real_name]" + else + text += "body destroyed" + text += ")" + + if(zealot.objectives.len)//If the zealot had no objectives, don't need to process this. + var/count = 1 + for(var/datum/objective/objective in zealot.objectives) + if(objective.check_completion()) + text += "
Objective #[count]: [objective.explanation_text] Success!" + feedback_add_details("traitor_objective","[objective.type]|SUCCESS") + else + text += "
Objective #[count]: [objective.explanation_text] Fail." + feedback_add_details("traitor_objective","[objective.type]|FAIL") + zealotwin = 0 + count++ + + var/special_role_text + if(zealot.special_role) + special_role_text = lowertext(zealot.special_role) + else + special_role_text = "antagonist" + + if(zealotwin) + text += "
The [special_role_text] was successful!" + feedback_add_details("traitor_success","SUCCESS") + else + text += "
The [special_role_text] has failed!" + feedback_add_details("traitor_success","FAIL") + + world << text + return 1 \ No newline at end of file diff --git a/code/game/gamemodes/crystal/the_crystal.dm b/code/game/gamemodes/crystal/the_crystal.dm new file mode 100644 index 0000000000..0a6084f204 --- /dev/null +++ b/code/game/gamemodes/crystal/the_crystal.dm @@ -0,0 +1,108 @@ +var/list/crystals = list() +var/list/crystal_types = typesof(/obj/item/crystal) - /obj/item/crystal + +var/const/CRYSTAL_POWER_EMP = 1 +var/const/CRYSTAL_POWER_FIRE = 2 +var/const/CRYSTAL_POWER_HEAL = 4 + +/obj/item/crystal + name = "crystal" + desc = "A giant mystical alien crystal. The power inside can be activated with a touch." + w_class = 3 + icon = 'icons/obj/crystal.dmi' + + var/powers = 0 + var/cooldown = 0 + var/cooldown_timer = 300 + +/obj/item/crystal/New() + ..() + crystals += src + +/obj/item/crystal/Del() + crystals -= src + ..() + +/obj/item/crystal/attack_self(var/mob/living/L) + ..() + + if(cooldown) + L << "The crystal is recharging..." + return + + L.visible_message("[L] activates the [src]!") + + if(powers & CRYSTAL_POWER_EMP) + empulse(src, 4, 10) + + if(powers & CRYSTAL_POWER_FIRE) + for(var/mob/living/M in oview(7, L)) + M.adjustFireLoss(rand(25, 40)) + M << "You feel your insides burning!" + + if(powers & CRYSTAL_POWER_HEAL) + for(var/mob/living/M in view(7, L)) + var/heal = rand(15, 30) + M.adjustFireLoss(-heal) + M.adjustToxLoss(-heal) + M.adjustBruteLoss(-heal) + M.adjustCloneLoss(-heal) + M << "You suddenly feel better." + + playsound(loc, 'sound/weapons/emitter.ogg', 50, 1) + + cooldown = 1 + spawn(cooldown_timer) + cooldown = 0 + +// Strong glows depending on how close other crystals are. +/obj/item/crystal/examine() + + ..() + var/dist = 255 + var/message = "The crystal isn't glowing at all." + + var/turf/T = get_turf(src) + if(!T) + return + + for(var/obj/item/crystal/C in crystals) + if(C == src) + continue + var/turf/crystal_turf = get_turf(C) + if(!crystal_turf) + continue + + dist = min(get_dist(T, crystal_turf), dist) + + switch(dist) + if(0 to 1) + message = "The crystal is glowing very strongly!" + if(2 to 5) + message = "The crystal is glowing quite strongly." + if(6 to 10) + message = "The crystal is glowing." + if(11 to 25) + message = "The crystal is glowing a little." + if(26 to 40) + message = "The crystal is barely glowing." + + usr << message + + +// TYPES OF CRYSTALS + +/obj/item/crystal/red + name = "red crystal" + powers = CRYSTAL_POWER_FIRE + icon_state = "crystal_red" + +/obj/item/crystal/blue + name = "blue crystal" + powers = CRYSTAL_POWER_EMP + icon_state = "crystal_blue" + +/obj/item/crystal/green + name = "green crystal" + powers = CRYSTAL_POWER_HEAL + icon_state = "crystal_green" \ No newline at end of file diff --git a/icons/obj/crystal.dmi b/icons/obj/crystal.dmi new file mode 100644 index 0000000000000000000000000000000000000000..79dfa899c3e8023ad9effaea7200bf91d6801e0e GIT binary patch literal 3272 zcmV;(3^((MP)V=-0C=3G%drZ=Fce1NIeChob}eGGgG&}kkqqrCNHo_b&^D4>72n=LHy6R} zoZ+jn?+$i=>8-p|E-@|8Xjf|~9?^4v#&#n`pg0D8PhrOdjq04Ah23-;bSh) zP*Pm7o9WXbak(ajhH9H#qrUxVy3rpzlmA`U=mrDRTloSUiAJ+*V6{E~01NO*L_t(| zobB3qv|m+q2k_59Bms+{70M(W0h1th0Y0p)3?2a&h_J+ph=6iMOF_Co!wZ)agoTV>RuG2OT^b0B1Yl9dKX1?oC0lg;Wfj13=Cjk;v$pj3p`*+F+Z@3 zAuzZo(3au}ON#kr%>#prPHx-L`&Ualm#(Ap7Jf|o4`zG&^@D#1b_kWW1| zJf|!#%I3=;%UcF>9v=)&`QID-y==ZrGQu*rk_fG&!YiAhymTf0nA_q1@A5}agjNDD z+6s)etOQ`R6&P(<3BYJ8FxoPrcK8n|znC#?b@ND1)2&G}oBR$uOE-u14)Q#j?dXO` zb4a)LzuVcAC+X(nH^gU%Xeuq@4&-NPhKNs-7GQq=EWd*G*%bhQ6At~@g6;!MIEAta zc_(&zhUPj>*qm}ApL~+;`<#%N5SaBt&fPZ{dv;|fcH1q8pRVFZ$)_-DW6nJwD2G+; zQA{{Dh$mHPchZF5llxcQ#?07!1ppx3LOPE2-GL*kyf;n>npff>()+7sP7trE;+nKi zkS_?#qq(2F1$mYJcJtc;XIJHYLHbKc+g#1<;Sab)1cX_YBpREa=>bI zo6_xHHFr?nM7gnQ9;Mt=*_G~ws(EM7UP%5r@q3latMYN;Kau~rYW5(nQCXexJKFJ- z%Y*WvARQ5OucloC?+BVhs_tL#t`(pcD0{3iraP=EUkSPe_-WPc9Hh5a`Aj@P`e0Dj zs`7=TLK#o{JK~4wP9g6Tl+&tqN1BPG&r^=3dzAPC;sfN_q@UAnjAQXex|u5g0QrzL z#*|$v7YF5=RsL|$ZBgY{<8Jb&8(@`{iHW?b=%ZYn~MAF58cl=fWOcM~rreu5eM2V>t; zee(Wbx3AL`;wE(aRB?!Qd*VFG+ezC6-5Y4Pt@7zXvq#nbG-#fni}-fX4$<5hw42w_ z&jIo1Ab&TAGb=Zd-X63Sw@}_nd^L8eoEI-gy(F+b>B_2`M29$w z_7T!$fr(Y#hVs6k9Z$16X*J4EDFNFMx1~9Ya#2+lV0Yqt()NJ`v`3LPAPhfIbd3vTwlsaaA_cn-Qb8Zaehx;@`I!y+WEcm?UTLo%>v>A+95K`rCpU+F@!07 z2xL8ZD)ak2(i4;+(#hoehR;~gKg&ZsSz00h&l&$xhLTGIVZu5`jEP$XsbZ+=YVWFs zdZXh|U+N_tII>AO47gA26Cla(0fk@2ceSYk>*oY!2`rMk>}9NrPL)P!G(-p zj@N9lsnp_tP!aoM-KdZ7a>0^OYt9B0E!*oyf6t?^(=ys~gWt1NW&3h|jXvPNd zJn~uO*VCV)NC8H3uwlZW|DtfrNhIbJz$Z>zr^qJi}QrtZai{K zoKJd&_BE7QbgT5Y+0Lb{H1la6C(orDpnHVwaXdnt-S-4d?Zc+2J;#p|h=*0}qcrCP zX$ngwr0MIyOB+xt?|$&FZ8hgK~J4KNt9Al{X0DQ&ssWbWp$d$cWIe@yqi6023Dt!i%L@pC-`0f_yIB z^q}3l>SmI5snX^_e6WhM=>CrG8uCniC3rpY96U=-K{uCta1|fzc|w_itFQz4=Bi}! z1e&kW{Y}+5koK+OoIcCvtH~Es%`bZbv-OmVOj?`AHl@3dNr%wf zP5KF2Z^q4Q^4Qf(T9vg=Ve4zSctdVJ6W6iVDx@9R>rU2wg7!xvBtoWO;>f?bKfh)K za`Wdea@w{`n%KMSUO%9`hxS?~ok)BTlWDghegywPvo5AlHl;h7d@T8~zG5^R4=2vs zaS+XEl&Q2g^~06s4%+F&?~>MC0g_<*qrJy=e?j{_+(}!oIc4=ew$r-AOZD@C%Sd0K z9iaOrK7ea!4yW8evkT=g;!%{@eL^g6r~54B0n)pOtJ5AzJpNPF&lW?3{x8d5I`-Nz z`Jukdm3#WJR{9>zJ(x~92Io`uq#HAA{0!P-aURwQ(yyxKYSQ;HgFKb;71C?5PM-*^ zOZ!#I9i%g9zeU<}2~624*TM7!BAK(`S;NFE=Q_g3W$n(Jwg3-Y7bqH1O?h6pVdgk{BG z1XOspxBU5-ZZ`QJNsuv`Ev#dw(T!&SyK?;*v0iqm|a z?h?{9q|eYiOMG+Hemlr#6L;w;vcII9OZypoq$f|^e9}|B(akQzw^iw}Anr^4#A%@& ziyL|(6*r{2X@nD@KV&;RFy=n9>nogI-U46;`APbd>RfUuR(Vr%`voB z6E`4kLwh*Qfs}vf`9e99cm(AHMIbTG=(oZPopX_K3b8NN1409s0ii@2hTyK5=&cO}-i1 z(KLN$>6$9#6@UnJk+>!Ckg9oxy!CL;z81}-s+~)@6YmU~+bU-g9~o|Qr;<(}x1=8j zW%DY}rX5@50opzL36XJCzBg$0tnwvv4^_=IlyNJ-SUlZEb1&vlE(!8uSO*6L?JdOB zhB?5ERarl1epIzT#?@8+0^Mh@I{CsXUmCPuuFB{7uT1HrsynMH`;j)P%C~}Ch&u=I z{(c}b>K;(uLURr6U(@^FxEp}V;%x6(%aX#8&S`lPe_`kl_Z^fq#GlZ8w(2eqy8A2Z2kTwHFNRit9B{%LemkbUo%Xe)uLSm~ zniGTeVd6fN1FCNOz|5*WJBV}o8GknhAF7&hr1NNBr~k;Zd(eKZascrILAi^3MU`*B zL&W=n_HC6*gJ$ALyTL!89AK~UX|9z7lXWj_Tb76 zfmJCVshZ1z^eAz9RZb1s*HrNvxPZ825KGlPO_@e>QPBPjx335Q99@<5Xg3J*$LapH zO24Mvl(-qqf}mZOcFQ2HivgO0EAvQGsxm|@q@5^RRL%&TT*W7e|3&kipj= Date: Sat, 13 Apr 2013 15:46:38 -0700 Subject: [PATCH 04/13] Added Clone Gamemode --- code/__DEFINES.dm | 2 + code/game/gamemodes/clone/clone.dm | 252 +++++++++++++++ code/game/gamemodes/clone/procsclone.dm | 392 ++++++++++++++++++++++++ code/game/gamemodes/factions.dm | 18 ++ code/game/gamemodes/game_mode.dm | 3 +- tgstation.dme | 2 + 6 files changed, 668 insertions(+), 1 deletion(-) create mode 100644 code/game/gamemodes/clone/clone.dm create mode 100644 code/game/gamemodes/clone/procsclone.dm diff --git a/code/__DEFINES.dm b/code/__DEFINES.dm index 9b65116087..dc7054898e 100644 --- a/code/__DEFINES.dm +++ b/code/__DEFINES.dm @@ -419,9 +419,11 @@ var/list/TAGGERLOCATIONS = list("Disposals", #define BE_CULTIST 256 #define BE_MONKEY 512 #define BE_NINJA 1024 +#define BE_CLONE 99999 var/list/be_special_flags = list( "Traitor" = BE_TRAITOR, + "Clone" = BE_CLONE, "Operative" = BE_OPERATIVE, "Changeling" = BE_CHANGELING, "Wizard" = BE_WIZARD, diff --git a/code/game/gamemodes/clone/clone.dm b/code/game/gamemodes/clone/clone.dm new file mode 100644 index 0000000000..c51844b75f --- /dev/null +++ b/code/game/gamemodes/clone/clone.dm @@ -0,0 +1,252 @@ +/datum/game_mode + // this includes admin-appointed clones and multiclones. Easy! + var/list/datum/mind/clones = list() + +/datum/game_mode/clone + name = "clone" + config_tag = "clone" + restricted_jobs = list("Cyborg")//They are part of the AI if he is clone so are they, they use to get double chances + protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "AI") + required_players = 0 + required_enemies = 1 + recommended_enemies = 4 + + + uplink_welcome = "Syndicate Uplink Console:" + uplink_uses = 10 + + var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds) + var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds) + + var/clones_possible = 4 //hard limit on clones if scaling is turned off + var/const/clone_scaling_coeff = 5.0 //how much does the amount of players get divided by to determine clones + + +/datum/game_mode/clone/announce() + world << "The current game mode is - Clone!" + world << "The Syndicate stole the cloning records of all the crew! A clone is on board as well, courtesy of the Syndicate. If anyone dies, they will respawn as a random antagonist! Space Wizards, Changelings, Nuclear Operatives, oh my!" + + +/datum/game_mode/clone/pre_setup() + + if(config.protect_roles_from_antagonist) + restricted_jobs += protected_jobs + + var/list/possible_clones = get_players_for_role(BE_CLONE) + + // stop setup if no possible clones + if(!possible_clones.len) + return 0 + + var/num_clones = 1 + + if(config.traitor_scaling) + num_clones = max(1, round((num_players())/(clone_scaling_coeff))) + else + num_clones = max(1, min(num_players(), clones_possible)) + + for(var/datum/mind/player in possible_clones) + for(var/job in restricted_jobs) + if(player.assigned_role == job) + possible_clones -= player + + for(var/j = 0, j < num_clones, j++) + if (!possible_clones.len) + break + var/datum/mind/clone = pick(possible_clones) + clones += clone + clone.special_role = "clone" + possible_clones.Remove(clone) + + if(!clones.len) + return 0 + return 1 + + +/datum/game_mode/clone/post_setup() + for(var/datum/mind/clone in clones) + forge_clone_objectives(clone) + spawn(rand(10,100)) + finalize_clone(clone) + greet_clone(clone) + modePlayer += clones + spawn (rand(waittime_l, waittime_h)) + send_intercept() + ..() + return 1 + +/datum/game_mode/clone/process() + var/clonespawnantag = 0 + clonespawnantag=rand(1,4) + switch(clonespawnantag) + if(1) + makeCWizard() + if(2) + makeCRevs() + if(3) + makeCTratiors() + else makeCChanglings() + +/datum/game_mode/proc/forge_clone_objectives(var/datum/mind/clone) + if(istype(clone.current, /mob/living/silicon)) + var/datum/objective/assassinate/kill_objective = new + kill_objective.owner = clone + kill_objective.find_target() + clone.objectives += kill_objective + + var/datum/objective/survive/survive_objective = new + survive_objective.owner = clone + clone.objectives += survive_objective + + if(prob(10)) + var/datum/objective/block/block_objective = new + block_objective.owner = clone + clone.objectives += block_objective + + else + switch(rand(1,100)) + if(1 to 50) + var/datum/objective/assassinate/kill_objective = new + kill_objective.owner = clone + kill_objective.find_target() + clone.objectives += kill_objective + else + var/datum/objective/steal/steal_objective = new + steal_objective.owner = clone + steal_objective.find_target() + clone.objectives += steal_objective + return + + +/datum/game_mode/proc/greet_clone(var/datum/mind/clone) + clone.current << "You are the clone." + var/obj_count = 1 + for(var/datum/objective/objective in clone.objectives) + clone.current << "Objective #[obj_count]: [objective.explanation_text]" + obj_count++ + return + + +/datum/game_mode/proc/finalize_clone(var/datum/mind/clone) + if (istype(clone.current, /mob/living/silicon)) + add_law_zero(clone.current) + else + equip_clone(clone.current) + return + + +/datum/game_mode/clone/declare_completion() + ..() + return//clones will be checked as part of check_extra_completion. Leaving this here as a reminder. + + +/datum/game_mode/proc/auto_declare_completion_clone() + if(clones.len) + var/text = "The clones were:" + for(var/datum/mind/clone in clones) + var/clonewin = 1 + + text += "
[clone.key] was [clone.name] (" + if(clone.current) + if(clone.current.stat == DEAD) + text += "died" + else + text += "survived" + if(clone.current.real_name != clone.name) + text += " as [clone.current.real_name]" + else + text += "body destroyed" + text += ")" + + if(clone.objectives.len)//If the clone had no objectives, don't need to process this. + var/count = 1 + for(var/datum/objective/objective in clone.objectives) + if(objective.check_completion()) + text += "
Objective #[count]: [objective.explanation_text] Success!" + feedback_add_details("clone_objective","[objective.type]|SUCCESS") + else + text += "
Objective #[count]: [objective.explanation_text] Fail." + feedback_add_details("clone_objective","[objective.type]|FAIL") + clonewin = 0 + count++ + + var/special_role_text + if(clone.special_role) + special_role_text = lowertext(clone.special_role) + else + special_role_text = "antagonist" + + if(clonewin) + text += "
The [special_role_text] was successful!" + feedback_add_details("clone_success","SUCCESS") + else + text += "
The [special_role_text] has failed!" + feedback_add_details("clone_success","FAIL") + + world << text + return 1 + + +/datum/game_mode/proc/equip_clone(mob/living/carbon/human/clone_mob, var/safety = 0) + if (!istype(clone_mob)) + return + . = 1 + if (clone_mob.mind) + if (clone_mob.mind.assigned_role == "Clown") + clone_mob << "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself." + clone_mob.mutations.Remove(CLUMSY) + + // find a radio! toolbox(es), backpack, belt, headset + var/loc = "" + var/obj/item/R = locate(/obj/item/device/pda) in clone_mob.contents //Hide the uplink in a PDA if available, otherwise radio + if(!R) + R = locate(/obj/item/device/radio) in clone_mob.contents + + if (!R) + clone_mob << "Unfortunately, the Syndicate wasn't able to get you a radio." + . = 0 + else + if (istype(R, /obj/item/device/radio)) + // generate list of radio freqs + var/obj/item/device/radio/target_radio = R + var/freq = 1441 + var/list/freqlist = list() + while (freq <= 1489) + if (freq < 1451 || freq > 1459) + freqlist += freq + freq += 2 + if ((freq % 2) == 0) + freq += 1 + freq = freqlist[rand(1, freqlist.len)] + + var/obj/item/device/uplink/hidden/T = new(R) + target_radio.hidden_uplink = T + target_radio.traitor_frequency = freq + clone_mob << "The Syndicate have cunningly disguised a Syndicate Uplink as your [R.name] [loc]. Simply dial the frequency [format_frequency(freq)] to unlock its hidden features." + clone_mob.mind.store_memory("Radio Freq: [format_frequency(freq)] ([R.name] [loc]).") + else if (istype(R, /obj/item/device/pda)) + // generate a passcode if the uplink is hidden in a PDA + var/pda_pass = "[rand(100,999)] [pick("Alpha","Bravo","Delta","Omega")]" + + var/obj/item/device/uplink/hidden/T = new(R) + R.hidden_uplink = T + var/obj/item/device/pda/P = R + P.lock_code = pda_pass + + clone_mob << "The Syndicate have cunningly disguised a Syndicate Uplink as your [R.name] [loc]. Simply enter the code \"[pda_pass]\" into the ringtone select to unlock its hidden features." + clone_mob.mind.store_memory("Uplink Passcode: [pda_pass] ([R.name] [loc]).") + //Begin code phrase. + if(!safety)//If they are not a rev. Can be added on to. + clone_mob << "The Syndicate provided you with the following information on how to identify other agents:" + if(prob(80)) + clone_mob << "\red Code Phrase: \black [syndicate_code_phrase]" + clone_mob.mind.store_memory("Code Phrase: [syndicate_code_phrase]") + else + clone_mob << "Unfortunetly, the Syndicate did not provide you with a code phrase." + if(prob(80)) + clone_mob << "\red Code Response: \black [syndicate_code_response]" + clone_mob.mind.store_memory("Code Response: [syndicate_code_response]") + else + clone_mob << "Unfortunately, the Syndicate did not provide you with a code response." + clone_mob << "Use the code words in the order provided, during regular conversation, to identify other agents. Proceed with caution, however, as everyone is a potential foe." + //End code phrase. \ No newline at end of file diff --git a/code/game/gamemodes/clone/procsclone.dm b/code/game/gamemodes/clone/procsclone.dm new file mode 100644 index 0000000000..fd557bc5a4 --- /dev/null +++ b/code/game/gamemodes/clone/procsclone.dm @@ -0,0 +1,392 @@ +/datum/game_mode/proc/makeMalfAImode() + + var/list/mob/living/silicon/AIs = list() + var/mob/living/silicon/malfAI = null + var/datum/mind/themind = null + + for(var/mob/living/silicon/ai/ai in player_list) + if(ai.client) + AIs += ai + + if(AIs.len) + malfAI = pick(AIs) + + if(malfAI) + themind = malfAI.mind + themind.make_AI_Malf() + return 1 + + return 0 + + +/datum/game_mode/proc/makeCTratiors() + var/list/mob/dead/observer/candidates = list() + var/mob/dead/observer/theghost = null + var/time_passed = world.time + + for(var/mob/dead/observer/G in player_list) + if(!jobban_isbanned(G, "wizard") && !jobban_isbanned(G, "Syndicate")) + spawn(0) + switch(alert(G, "Your random role is: Traitor","Please answer in 30 seconds!","Become Traitor")) + if("Become Traitor") + if((world.time-time_passed)>300)//If more than 30 game seconds passed. + return + candidates += G + + sleep(50) + + if(candidates.len) + shuffle(candidates) + for(var/mob/i in candidates) + if(!i || !i.client) continue //Dont bother removing them from the list since we only grab one wizard + + theghost = i + break + + if(theghost) + var/mob/living/carbon/human/new_character=makeBody(theghost) + new_character.mind.make_Tratior() + return 1 + + return 0 + + +/datum/game_mode/proc/makeCChanglings() + + var/list/mob/dead/observer/candidates = list() + var/mob/dead/observer/theghost = null + var/time_passed = world.time + + for(var/mob/dead/observer/G in player_list) + if(!jobban_isbanned(G, "wizard") && !jobban_isbanned(G, "Syndicate")) + spawn(0) + switch(alert(G, "Your random role is: Changling","Random Role", "Become Changling")) + if("Become Changling") + if((world.time-time_passed)>300)//If more than 30 game seconds passed. + return + candidates += G + sleep(50) + + if(candidates.len) + shuffle(candidates) + for(var/mob/i in candidates) + if(!i || !i.client) continue //Dont bother removing them from the list since we only grab one wizard + + theghost = i + break + + if(theghost) + var/mob/living/carbon/human/new_character=makeBody(theghost) + new_character.mind.make_Changling() + return 1 + + return 0 +/datum/game_mode/proc/makeCRevs() + var/list/mob/dead/observer/candidates = list() + var/mob/dead/observer/theghost = null + var/time_passed = world.time + + for(var/mob/dead/observer/G in player_list) + if(!jobban_isbanned(G, "wizard") && !jobban_isbanned(G, "Syndicate")) + spawn(0) + switch(alert(G, "Your random role is: Head Revolutionary.","Random Role","Become Head Revolutionary")) + if("Become Head Revolutionary") + if((world.time-time_passed)>300)//If more than 30 game seconds passed. + return + candidates += G + + sleep(50) + + if(candidates.len) + shuffle(candidates) + for(var/mob/i in candidates) + if(!i || !i.client) continue //Dont bother removing them from the list since we only grab one wizard + + theghost = i + break + + if(theghost) + var/mob/living/carbon/human/new_character=makeBody(theghost) + new_character.mind.make_Rev() + return 1 + + return 0 + +/datum/game_mode/proc/makeCWizard() + var/list/mob/dead/observer/candidates = list() + var/mob/dead/observer/theghost = null + var/time_passed = world.time + + for(var/mob/dead/observer/G in player_list) + if(!jobban_isbanned(G, "wizard") && !jobban_isbanned(G, "Syndicate")) + spawn(0) + switch(alert(G, "Your random role is: Space Wizard.","Please answer in 30 seconds!","Become Space Wizard")) + if("Become Space Wizard") + if((world.time-time_passed)>300)//If more than 30 game seconds passed. + return + candidates += G + + sleep(50) + + if(candidates.len) + shuffle(candidates) + for(var/mob/i in candidates) + if(!i || !i.client) continue //Dont bother removing them from the list since we only grab one wizard + + theghost = i + break + + if(theghost) + var/mob/living/carbon/human/new_character=makeBody(theghost) + new_character.mind.make_Wizard() + return 1 + + return 0 + + +/datum/game_mode/proc/makeCCult() + + var/datum/game_mode/cult/temp = new + if(config.protect_roles_from_antagonist) + temp.restricted_jobs += temp.protected_jobs + + var/list/mob/living/carbon/human/candidates = list() + var/mob/living/carbon/human/H = null + + for(var/mob/living/carbon/human/applicant in player_list) + if(applicant.client.prefs.be_special & BE_CULTIST) + if(applicant.stat == CONSCIOUS) + if(applicant.mind) + if(!applicant.mind.special_role) + if(!jobban_isbanned(applicant, "cultist") && !jobban_isbanned(applicant, "Syndicate")) + if(!(applicant.job in temp.restricted_jobs)) + candidates += applicant + + if(candidates.len) + var/numCultists = min(candidates.len, 4) + + for(var/i = 0, i300)//If more than 30 game seconds passed. + return + candidates += G + if("No") + return + else + return + + sleep(300) + + if(candidates.len) + var/numagents = 5 + var/agentcount = 0 + + for(var/i = 0, i300)//If more than 30 game seconds passed. + return + candidates += G + if("No") + return + else + return + sleep(300) + + for(var/mob/dead/observer/G in candidates) + if(!G.key) + candidates.Remove(G) + + if(candidates.len) + var/numagents = 6 + //Spawns commandos and equips them. + for (var/obj/effect/landmark/L in /area/syndicate_mothership/elite_squad) + if(numagents<=0) + break + if (L.name == "Syndicate-Commando") + syndicate_leader_selected = numagents == 1?1:0 + + var/mob/living/carbon/human/new_syndicate_commando = create_syndicate_death_commando(L, syndicate_leader_selected) + + + while((!theghost || !theghost.client) && candidates.len) + theghost = pick(candidates) + candidates.Remove(theghost) + + if(!theghost) + del(new_syndicate_commando) + break + + new_syndicate_commando.key = theghost.key + new_syndicate_commando.internal = new_syndicate_commando.s_store + new_syndicate_commando.internals.icon_state = "internal1" + + //So they don't forget their code or mission. + + + new_syndicate_commando << "\blue You are an Elite Syndicate. [!syndicate_leader_selected?"commando":"LEADER"] in the service of the Syndicate. \nYour current mission is: \red [input]" + + numagents-- + if(numagents >= 6) + return 0 + + for (var/obj/effect/landmark/L in /area/shuttle/syndicate_elite) + if (L.name == "Syndicate-Commando-Bomb") + new /obj/effect/spawner/newbomb/timer/syndicate(L.loc) + + return 1 +*/ + +/datum/game_mode/proc/makeBody(var/mob/dead/observer/G_found) // Uses stripped down and bastardized code from respawn character + if(!G_found || !G_found.key) return + + //First we spawn a dude. + var/mob/living/carbon/human/new_character = new(pick(latejoin))//The mob being spawned. + + new_character.gender = pick(MALE,FEMALE) + + var/datum/preferences/A = new() + A.copy_to(new_character) + + new_character.dna.ready_dna(new_character) + new_character.key = G_found.key + + return new_character +/* DEATH SQUADS +/datum/game_mode/proc/create_syndicate_death_commando(obj/spawn_location, syndicate_leader_selected = 0) + var/mob/living/carbon/human/new_syndicate_commando = new(spawn_location.loc) + var/syndicate_commando_leader_rank = pick("Lieutenant", "Captain", "Major") + var/syndicate_commando_rank = pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant 1st Class", "Master Sergeant", "Sergeant Major") + var/syndicate_commando_name = pick(last_names) + + new_syndicate_commando.gender = pick(MALE, FEMALE) + + var/datum/preferences/A = new()//Randomize appearance for the commando. + A.randomize_appearance_for(new_syndicate_commando) + + new_syndicate_commando.real_name = "[!syndicate_leader_selected ? syndicate_commando_rank : syndicate_commando_leader_rank] [syndicate_commando_name]" + new_syndicate_commando.name = new_syndicate_commando.real_name + new_syndicate_commando.age = !syndicate_leader_selected ? rand(23,35) : rand(35,45) + + new_syndicate_commando.dna.ready_dna(new_syndicate_commando)//Creates DNA. + + //Creates mind stuff. + new_syndicate_commando.mind_initialize() + new_syndicate_commando.mind.assigned_role = "MODE" + new_syndicate_commando.mind.special_role = "Syndicate Commando" + + //Adds them to current traitor list. Which is really the extra antagonist list. + ticker.mode.traitors += new_syndicate_commando.mind + new_syndicate_commando.equip_syndicate_commando(syndicate_leader_selected) + + return new_syndicate_commando + */ \ No newline at end of file diff --git a/code/game/gamemodes/factions.dm b/code/game/gamemodes/factions.dm index 587f75b90e..033ca7568f 100644 --- a/code/game/gamemodes/factions.dm +++ b/code/game/gamemodes/factions.dm @@ -149,6 +149,24 @@ // Neutral to everyone, friendly to Marauders + /datum/faction/syndicate/cloningsquad // these are basically the old vanilla syndicate + + /* Additional notes: + + These are the syndicate that really like their old fashioned, projectile-based + weapons. They are the only member of the syndie coalition that launch + nuclear attacks on Nanotrasen. + */ + + name = "Gorlex Marauders" + desc = "The Gorlex Cloning Squad is an offshoot of the founding fathers of the Syndicates, the Gorlex Marauders. Their primary goal is to steal cloning records of Nanotrasen crew members, and clone them into soldiers for the Syndicate." + + alliances = list("Cybersun Industries", "MI13", "Tiger Cooperative", "S.E.L.F.", "Animal Rights Consortium", "Donk Corporation", "Waffle Corporation") + friendly_identification = 1 + operative_notes = "Those who you kill, will be your comrades." + + // Syndicate Cloning Squad for Clone gamemode, friendly to everyone. + /* ----- Begin defining miscellaneous factions ------ */ diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 18452b0952..a3480f8e0d 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -163,7 +163,7 @@ intercepttext += " Cent. Com has recently been contacted by the following syndicate affiliated organisations in your area, please investigate any information you may have:" var/list/possible_modes = list() - possible_modes.Add("revolution", "wizard", "nuke", "traitor", "malf", "changeling", "cult") + possible_modes.Add("revolution", "wizard", "nuke", "traitor", "malf", "changeling", "cult", "clone") possible_modes -= "[ticker.mode]" var/number = pick(2, 3) var/i = 0 @@ -213,6 +213,7 @@ if(BE_WIZARD) roletext="wizard" if(BE_REV) roletext="revolutionary" if(BE_CULTIST) roletext="cultist" + if(BE_CLONE) roletext="clone" // Ultimate randomizing code right here diff --git a/tgstation.dme b/tgstation.dme index 752c61a42e..4a3b96d594 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -242,6 +242,8 @@ #include "code\game\gamemodes\changeling\changeling_powers.dm" #include "code\game\gamemodes\changeling\modularchangling.dm" #include "code\game\gamemodes\changeling\traitor_chan.dm" +#include "code\game\gamemodes\clone\clone.dm" +#include "code\game\gamemodes\clone\procsclone.dm" #include "code\game\gamemodes\cult\cult.dm" #include "code\game\gamemodes\cult\cult_items.dm" #include "code\game\gamemodes\cult\cult_structures.dm" From b407c8f0d6b5b4669c5a211ca99f562344eccb0e Mon Sep 17 00:00:00 2001 From: Giacomand Date: Sun, 14 Apr 2013 00:17:39 +0100 Subject: [PATCH 05/13] * Fixed the players required. --- code/game/gamemodes/crystal/crystal.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/crystal/crystal.dm b/code/game/gamemodes/crystal/crystal.dm index 9084c5bd17..3853b4028e 100644 --- a/code/game/gamemodes/crystal/crystal.dm +++ b/code/game/gamemodes/crystal/crystal.dm @@ -6,7 +6,7 @@ config_tag = "crystal" restricted_jobs = list("Cyborg", "AI", "Captain", "Head of Personnel", "Chief Medical Officer", "Research Director", "Chief Engineer", "Head of Security") protected_jobs = list("Security Officer", "Warden", "Detective") - required_players = 3 + required_players = 12 required_enemies = 3 recommended_enemies = 3 From 04b811062abdaed983d88e7c1386cf47c3dcdeb6 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Sun, 14 Apr 2013 00:19:04 +0100 Subject: [PATCH 06/13] * Forgot a file. --- .../gamemodes/crystal/crystal_objective.dm | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 code/game/gamemodes/crystal/crystal_objective.dm diff --git a/code/game/gamemodes/crystal/crystal_objective.dm b/code/game/gamemodes/crystal/crystal_objective.dm new file mode 100644 index 0000000000..3faf46cf10 --- /dev/null +++ b/code/game/gamemodes/crystal/crystal_objective.dm @@ -0,0 +1,32 @@ + +// Objectives for the crystal mode. + +/datum/objective/crystal_steal + + var/steal_amount = 2 + + find_target() + explanation_text = "Smuggle aboard [steal_amount] alien crystals to Central Command via the Escape Shuttle. There are other zealots with their own crystals, steal theirs to get more crystals." + + check_completion() + if(!owner.current) return 0 + if(!isliving(owner.current)) return 0 + var/list/all_items = owner.current.GetAllContents() //this should get things in cheesewheels, books, etc. + + var/crystals = 0 + + var/turf/location = get_turf(owner.current.loc) + if(!location) + return 0 + + if(istype(location, /turf/simulated/shuttle/floor4)) + return 0 + + var/area/check_area = location.loc + if(istype(check_area, /area/shuttle/escape/centcom)) + for(var/obj/I in all_items) //Check for items + if(istype(I, /obj/item/crystal)) + crystals += 1 + if(crystals >= steal_amount) + return 1 + return 0 \ No newline at end of file From 48496eeeebf67ec8ec89a0674293eb4abd3be25a Mon Sep 17 00:00:00 2001 From: Iamgoofball Date: Sat, 13 Apr 2013 18:03:12 -0700 Subject: [PATCH 07/13] Made the antags spawn with a random job, minus the space wizard. --- code/game/gamemodes/clone/procsclone.dm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/code/game/gamemodes/clone/procsclone.dm b/code/game/gamemodes/clone/procsclone.dm index fd557bc5a4..13f55e96f2 100644 --- a/code/game/gamemodes/clone/procsclone.dm +++ b/code/game/gamemodes/clone/procsclone.dm @@ -1,3 +1,4 @@ +var/is_wizard = 0 /datum/game_mode/proc/makeMalfAImode() var/list/mob/living/silicon/AIs = list() @@ -122,6 +123,7 @@ spawn(0) switch(alert(G, "Your random role is: Space Wizard.","Please answer in 30 seconds!","Become Space Wizard")) if("Become Space Wizard") + is_wizard = 1 if((world.time-time_passed)>300)//If more than 30 game seconds passed. return candidates += G @@ -359,7 +361,12 @@ new_character.dna.ready_dna(new_character) new_character.key = G_found.key - + if(is_wizard == 1) + is_wizard = 0 + return new_character + else + job_master.GiveRandomJob(new_character) + job_master.EquipRank(new_character, new_character.mind.assigned_role, 1) return new_character /* DEATH SQUADS /datum/game_mode/proc/create_syndicate_death_commando(obj/spawn_location, syndicate_leader_selected = 0) From ecbfe76c9ecf3298fcf450ad21fce18216a60ad4 Mon Sep 17 00:00:00 2001 From: Iamgoofball Date: Sun, 14 Apr 2013 11:33:32 -0700 Subject: [PATCH 08/13] Working build of the Clone gamemode. --- code/game/gamemodes/clone/clone.dm | 14 +++--- code/game/gamemodes/clone/procsclone.dm | 59 +++++++++++++------------ 2 files changed, 37 insertions(+), 36 deletions(-) diff --git a/code/game/gamemodes/clone/clone.dm b/code/game/gamemodes/clone/clone.dm index c51844b75f..80cd0a4b3a 100644 --- a/code/game/gamemodes/clone/clone.dm +++ b/code/game/gamemodes/clone/clone.dm @@ -24,7 +24,7 @@ /datum/game_mode/clone/announce() world << "The current game mode is - Clone!" - world << "The Syndicate stole the cloning records of all the crew! A clone is on board as well, courtesy of the Syndicate. If anyone dies, they will respawn as a random antagonist! Space Wizards, Changelings, Nuclear Operatives, oh my!" + world << "The Syndicate stole the cloning records of all the crew! If anyone dies, they will respawn as a random antagonist! Space Wizards, Changelings, Nuclear Operatives, oh my!" /datum/game_mode/clone/pre_setup() @@ -32,7 +32,7 @@ if(config.protect_roles_from_antagonist) restricted_jobs += protected_jobs - var/list/possible_clones = get_players_for_role(BE_CLONE) + var/list/possible_clones = get_players_for_role(BE_TRAITOR) // stop setup if no possible clones if(!possible_clones.len) @@ -55,7 +55,7 @@ break var/datum/mind/clone = pick(possible_clones) clones += clone - clone.special_role = "clone" + clone.special_role = "traitor" possible_clones.Remove(clone) if(!clones.len) @@ -82,9 +82,9 @@ if(1) makeCWizard() if(2) - makeCRevs() - if(3) makeCTratiors() + if(3) + makeCRevs() else makeCChanglings() /datum/game_mode/proc/forge_clone_objectives(var/datum/mind/clone) @@ -119,7 +119,7 @@ /datum/game_mode/proc/greet_clone(var/datum/mind/clone) - clone.current << "You are the clone." + clone.current << "You are the traitor." var/obj_count = 1 for(var/datum/objective/objective in clone.objectives) clone.current << "Objective #[obj_count]: [objective.explanation_text]" @@ -142,7 +142,7 @@ /datum/game_mode/proc/auto_declare_completion_clone() if(clones.len) - var/text = "The clones were:" + var/text = "The ORIGINAL traitors were:" for(var/datum/mind/clone in clones) var/clonewin = 1 diff --git a/code/game/gamemodes/clone/procsclone.dm b/code/game/gamemodes/clone/procsclone.dm index 13f55e96f2..186f19879c 100644 --- a/code/game/gamemodes/clone/procsclone.dm +++ b/code/game/gamemodes/clone/procsclone.dm @@ -1,4 +1,4 @@ -var/is_wizard = 0 +var/is_gettingdatfukkendiskwithmagic = 0 /datum/game_mode/proc/makeMalfAImode() var/list/mob/living/silicon/AIs = list() @@ -123,7 +123,7 @@ var/is_wizard = 0 spawn(0) switch(alert(G, "Your random role is: Space Wizard.","Please answer in 30 seconds!","Become Space Wizard")) if("Become Space Wizard") - is_wizard = 1 + is_gettingdatfukkendiskwithmagic = 1 if((world.time-time_passed)>300)//If more than 30 game seconds passed. return candidates += G @@ -147,39 +147,40 @@ var/is_wizard = 0 /datum/game_mode/proc/makeCCult() + var/list/mob/dead/observer/candidates = list() + var/mob/dead/observer/theghost = null + var/time_passed = world.time - var/datum/game_mode/cult/temp = new - if(config.protect_roles_from_antagonist) - temp.restricted_jobs += temp.protected_jobs - - var/list/mob/living/carbon/human/candidates = list() - var/mob/living/carbon/human/H = null + for(var/mob/dead/observer/G in player_list) + if(!jobban_isbanned(G, "wizard") && !jobban_isbanned(G, "Syndicate")) + spawn(0) + switch(alert(G, "Your random role is: Cultist.","Random Role","Become Cultist")) + if("Become Head Revolutionary") + if((world.time-time_passed)>300)//If more than 30 game seconds passed. + return + candidates += G - for(var/mob/living/carbon/human/applicant in player_list) - if(applicant.client.prefs.be_special & BE_CULTIST) - if(applicant.stat == CONSCIOUS) - if(applicant.mind) - if(!applicant.mind.special_role) - if(!jobban_isbanned(applicant, "cultist") && !jobban_isbanned(applicant, "Syndicate")) - if(!(applicant.job in temp.restricted_jobs)) - candidates += applicant + sleep(50) if(candidates.len) - var/numCultists = min(candidates.len, 4) + shuffle(candidates) + for(var/mob/i in candidates) + if(!i || !i.client) continue //Dont bother removing them from the list since we only grab one wizard - for(var/i = 0, i300)//If more than 30 game seconds passed. return candidates += G - if("No") - return else return - sleep(300) + sleep(50) if(candidates.len) var/numagents = 5 @@ -361,8 +361,9 @@ var/is_wizard = 0 new_character.dna.ready_dna(new_character) new_character.key = G_found.key - if(is_wizard == 1) - is_wizard = 0 + // Here it determins if you are getting dat fukken disk or if you're a wizard, harry, so it can NOT replace essential items with the assigning a job. + if(is_gettingdatfukkendiskwithmagic == 1) + is_gettingdatfukkendiskwithmagic = 0 return new_character else job_master.GiveRandomJob(new_character) From 6b6cf1d975f082ce3aad97baa5c801108ce5d9ec Mon Sep 17 00:00:00 2001 From: Iamgoofball Date: Sun, 14 Apr 2013 11:40:17 -0700 Subject: [PATCH 09/13] Removed my useless shit from factions.dm that I forgot to remove with the first commit. --- code/game/gamemodes/factions.dm | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/code/game/gamemodes/factions.dm b/code/game/gamemodes/factions.dm index 033ca7568f..587f75b90e 100644 --- a/code/game/gamemodes/factions.dm +++ b/code/game/gamemodes/factions.dm @@ -149,24 +149,6 @@ // Neutral to everyone, friendly to Marauders - /datum/faction/syndicate/cloningsquad // these are basically the old vanilla syndicate - - /* Additional notes: - - These are the syndicate that really like their old fashioned, projectile-based - weapons. They are the only member of the syndie coalition that launch - nuclear attacks on Nanotrasen. - */ - - name = "Gorlex Marauders" - desc = "The Gorlex Cloning Squad is an offshoot of the founding fathers of the Syndicates, the Gorlex Marauders. Their primary goal is to steal cloning records of Nanotrasen crew members, and clone them into soldiers for the Syndicate." - - alliances = list("Cybersun Industries", "MI13", "Tiger Cooperative", "S.E.L.F.", "Animal Rights Consortium", "Donk Corporation", "Waffle Corporation") - friendly_identification = 1 - operative_notes = "Those who you kill, will be your comrades." - - // Syndicate Cloning Squad for Clone gamemode, friendly to everyone. - /* ----- Begin defining miscellaneous factions ------ */ From 5a87e5bd1cad843066db89739702c8bd87b15b13 Mon Sep 17 00:00:00 2001 From: Iamgoofball Date: Sun, 14 Apr 2013 14:23:27 -0700 Subject: [PATCH 10/13] Fixed the clone bitflag. --- code/__DEFINES.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/__DEFINES.dm b/code/__DEFINES.dm index dc7054898e..73afdd42b2 100644 --- a/code/__DEFINES.dm +++ b/code/__DEFINES.dm @@ -419,7 +419,7 @@ var/list/TAGGERLOCATIONS = list("Disposals", #define BE_CULTIST 256 #define BE_MONKEY 512 #define BE_NINJA 1024 -#define BE_CLONE 99999 +#define BE_CLONE 2048 var/list/be_special_flags = list( "Traitor" = BE_TRAITOR, From 76651bff74a6ff9f48cbb34233be2d27abc2f4f1 Mon Sep 17 00:00:00 2001 From: Ikarrus Date: Thu, 25 Apr 2013 20:17:35 -0600 Subject: [PATCH 11/13] Select Equipment update -Renamed 'Strip' to 'Naked' -Added Assistant -Re-added Death Commando -Added job titles to IDs of figures who should have it displayed. Shortened the titles of some of them so it wouldn't make ID and PDA names too long. --- code/modules/admin/verbs/debug.dm | 90 ++++++++++++++++++++++++++----- 1 file changed, 77 insertions(+), 13 deletions(-) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index f23a048683..6cb18b9ec7 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -591,7 +591,8 @@ var/global/list/g_fancy_list_of_safe_types = null return //log_admin("[key_name(src)] has alienized [M.key].") var/list/dresspacks = list( - "strip", + "naked", + "assistant grey", "standard space gear", "tournament standard red", "tournament standard green", @@ -605,7 +606,7 @@ var/global/list/g_fancy_list_of_safe_types = null "masked killer", "assassin", "death commando", - "syndicate commando", +// "syndicate commando", "centcom official", "centcom commander", "special ops officer", @@ -622,8 +623,29 @@ var/global/list/g_fancy_list_of_safe_types = null continue del(I) switch(dresscode) - if ("strip") + if ("naked") //do nothing + + if ("assistant grey") + var/obj/item/weapon/storage/backpack/BPK = new/obj/item/weapon/storage/backpack(M) + new /obj/item/weapon/storage/box/survival(BPK) + M.equip_to_slot_or_del(BPK, slot_back,1) + M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) + M.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(M), slot_w_uniform) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) + + var/obj/item/weapon/card/id/W = new(M) + W.name = "[M.real_name]'s ID Card (Assistant)" + W.assignment = "Assistant" + W.registered_name = M.real_name + M.equip_to_slot_or_del(W, slot_wear_id) + var/obj/item/device/pda/P = new(M) + P.owner = M.real_name + P.ownjob = "Assistant" + P.name = "PDA-[M.real_name] (Assistant)" + M.equip_to_slot_or_del(P, slot_belt) + + if ("standard space gear") M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) @@ -795,10 +817,52 @@ var/global/list/g_fancy_list_of_safe_types = null W.assignment = "Reaper" W.registered_name = M.real_name M.equip_to_slot_or_del(W, slot_wear_id) -/* DEATH SQUADS +// DEATH SQUADS if("death commando")//Was looking to add this for a while. - M.equip_death_commando() + var/obj/item/device/radio/R = new /obj/item/device/radio/headset(M) + R.set_frequency(1441) + M.equip_to_slot_or_del(R, slot_ears) + + M.equip_to_slot_or_del(new /obj/item/clothing/under/color/green(M), slot_w_uniform) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/swat(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/swat(M), slot_wear_suit) + M.equip_to_slot_or_del(new /obj/item/clothing/gloves/swat(M), slot_gloves) + M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/deathsquad(M), slot_head) + M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/swat(M), slot_wear_mask) + M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal(M), slot_glasses) + + M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(M), slot_back) + M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack) + + M.equip_to_slot_or_del(new /obj/item/ammo_magazine/a357(M), slot_in_backpack) + M.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/regular(M), slot_in_backpack) + M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/flashbangs(M), slot_in_backpack) + M.equip_to_slot_or_del(new /obj/item/device/flashlight(M), slot_in_backpack) + + M.equip_to_slot_or_del(new /obj/item/weapon/plastique(M), slot_in_backpack) + + M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword(M), slot_l_store) + M.equip_to_slot_or_del(new /obj/item/weapon/grenade/flashbang(M), slot_r_store) + M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen(M), slot_s_store) + M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/mateba(M), slot_belt) + + M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse_rifle(M), slot_r_hand) + + + var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(M)//Here you go Deuryn + L.imp_in = M + L.implanted = 1 + + var/obj/item/weapon/card/id/W = new(M) + W.name = "[M.real_name]'s ID Card" + W.icon_state = "centcom" + W.access = get_all_accesses()//They get full station access. + W.access += list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage)//Let's add their alloted CentCom access. + W.assignment = "Death Commando" + W.registered_name = M.real_name + M.equip_to_slot_or_del(W, slot_wear_id) +/* if("syndicate commando") M.equip_syndicate_commando() */ @@ -813,7 +877,7 @@ var/global/list/g_fancy_list_of_safe_types = null var/obj/item/device/pda/heads/pda = new(M) pda.owner = M.real_name - pda.ownjob = "CentCom Review Official" + pda.ownjob = "CentCom Official" pda.name = "PDA-[M.real_name] ([pda.ownjob])" M.equip_to_slot_or_del(pda, slot_r_store) @@ -821,11 +885,11 @@ var/global/list/g_fancy_list_of_safe_types = null M.equip_to_slot_or_del(new /obj/item/weapon/clipboard(M), slot_l_hand) var/obj/item/weapon/card/id/W = new(M) - W.name = "[M.real_name]'s ID Card" + W.name = "[M.real_name]'s ID Card (CentCom Official)" W.icon_state = "centcom" W.access = get_all_accesses() W.access += list("VIP Guest","Custodian","Thunderdome Overseer","Intel Officer","Medical Officer","Death Commando","Research Officer") - W.assignment = "CentCom Review Official" + W.assignment = "CentCom Official" W.registered_name = M.real_name M.equip_to_slot_or_del(W, slot_wear_id) @@ -843,11 +907,11 @@ var/global/list/g_fancy_list_of_safe_types = null M.equip_to_slot_or_del(new /obj/item/ammo_magazine/a357(M), slot_l_store) var/obj/item/weapon/card/id/W = new(M) - W.name = "[M.real_name]'s ID Card" + W.name = "[M.real_name]'s ID Card (CentCom Commander)" W.icon_state = "centcom" W.access = get_all_accesses() W.access += get_all_centcom_access() - W.assignment = "CentCom Commanding Officer" + W.assignment = "CentCom Commander" W.registered_name = M.real_name M.equip_to_slot_or_del(W, slot_wear_id) @@ -865,11 +929,11 @@ var/global/list/g_fancy_list_of_safe_types = null M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back) var/obj/item/weapon/card/id/W = new(M) - W.name = "[M.real_name]'s ID Card" + W.name = "[M.real_name]'s ID Card (Special Ops Officer)" W.icon_state = "centcom" W.access = get_all_accesses() W.access += get_all_centcom_access() - W.assignment = "Special Operations Officer" + W.assignment = "Special Ops Officer" W.registered_name = M.real_name M.equip_to_slot_or_del(W, slot_wear_id) @@ -919,7 +983,7 @@ var/global/list/g_fancy_list_of_safe_types = null M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/mateba(M), slot_belt) M.equip_to_slot_or_del(new /obj/item/clothing/under/soviet(M), slot_w_uniform) var/obj/item/weapon/card/id/W = new(M) - W.name = "[M.real_name]'s ID Card" + W.name = "[M.real_name]'s ID Card (Admiral)" W.icon_state = "centcom" W.access = get_all_accesses() W.access += get_all_centcom_access() From 411a0c2d56c6cb7f408c093d19e8751750f382f0 Mon Sep 17 00:00:00 2001 From: Ikarrus Date: Fri, 26 Apr 2013 09:17:08 -0600 Subject: [PATCH 12/13] **This is a remake of https://github.com/tgstation/-tg-station/pull/453 after git imploded on itself. -Removed head jumpsuits from the steal objectives list, as they were hardly taken seriously. -Added Medal of Captaincy to list of steal objectives -Readded Nuke Disk to list of special steal objectives. I've tested it and it DOES work. -Grammar fix for special steal objectives --- code/game/gamemodes/objective.dm | 22 +++++++++++++--------- html/changelog.html | 4 ++++ 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 66de6a861b..ff908c01f6 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -270,29 +270,33 @@ datum/objective/steal "a hand teleporter" = /obj/item/weapon/hand_tele, "an RCD" = /obj/item/weapon/rcd, "a jetpack" = /obj/item/weapon/tank/jetpack, - "a captain's jumpsuit" = /obj/item/clothing/under/rank/captain, "a functional AI" = /obj/item/device/aicard, "a pair of magboots" = /obj/item/clothing/shoes/magboots, "the station blueprints" = /obj/item/blueprints, "28 moles of plasma (full tank)" = /obj/item/weapon/tank, "an unused sample of slime extract" = /obj/item/slime_extract, "a piece of corgi meat" = /obj/item/weapon/reagent_containers/food/snacks/meat/corgi, + "the medal of captaincy" = /obj/item/clothing/tie/medal/gold/captain, + "the hypospray" = /obj/item/weapon/reagent_containers/hypospray, + "the captain's pinpointer" = /obj/item/weapon/pinpointer, + "an ablative armor vest" = /obj/item/clothing/suit/armor/laserproof, +/* +Nobody takes these seriously anyways -- Ikki + "a captain's jumpsuit" = /obj/item/clothing/under/rank/captain, "a research director's jumpsuit" = /obj/item/clothing/under/rank/research_director, "a chief engineer's jumpsuit" = /obj/item/clothing/under/rank/chief_engineer, "a chief medical officer's jumpsuit" = /obj/item/clothing/under/rank/chief_medical_officer, "a head of security's jumpsuit" = /obj/item/clothing/under/rank/head_of_security, "a head of personnel's jumpsuit" = /obj/item/clothing/under/rank/head_of_personnel, - "the hypospray" = /obj/item/weapon/reagent_containers/hypospray, - "the captain's pinpointer" = /obj/item/weapon/pinpointer, - "an ablative armor vest" = /obj/item/clothing/suit/armor/laserproof, +*/ ) var/global/possible_items_special[] = list( - // "nuclear authentication disk" = /obj/item/weapon/disk/nuclear, //Broken with the change to nuke disk making it respawn on z level change. - "advanced energy gun" = /obj/item/weapon/gun/energy/gun/nuclear, - "diamond drill" = /obj/item/weapon/pickaxe/diamonddrill, - "bag of holding" = /obj/item/weapon/storage/backpack/holding, - "hyper-capacity cell" = /obj/item/weapon/cell/hyper, + "the nuclear authentication disk" = /obj/item/weapon/disk/nuclear, + "an advanced energy gun" = /obj/item/weapon/gun/energy/gun/nuclear, + "a diamond drill" = /obj/item/weapon/pickaxe/diamonddrill, + "a bag of holding" = /obj/item/weapon/storage/backpack/holding, + "a hyper-capacity cell" = /obj/item/weapon/cell/hyper, "10 diamonds" = /obj/item/stack/sheet/mineral/diamond, "50 gold bars" = /obj/item/stack/sheet/mineral/gold, "25 refined uranium bars" = /obj/item/stack/sheet/mineral/uranium, diff --git a/html/changelog.html b/html/changelog.html index 133345c8cc..e19605a54b 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,10 @@

Aranclanos updated:

  • Exosuit fabritcators will now need to be manually updated
+

Ikarrus updated:

+
    +
  • Centcom intelligence suggests that the Syndicate no longer seeks to capture Nanotrasen officer jumpsuits. They may be targetting an item of more worth, particularly the Medal of Captaincy issued to Nanotrasen commanders.
  • +
From b3344f416dcabe912559f167f4a729d0b33fe92c Mon Sep 17 00:00:00 2001 From: iamgoofball Date: Fri, 26 Apr 2013 16:13:10 -0700 Subject: [PATCH 13/13] fixing the dme file --- tgstation.dme | 1079 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1079 insertions(+) diff --git a/tgstation.dme b/tgstation.dme index 80672aed9f..fb00268fc8 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -90,5 +90,1084 @@ #include "code\ATMOSPHERICS\components\unary\generator_input.dm" #include "code\ATMOSPHERICS\components\unary\heat_exchanger.dm" #include "code\ATMOSPHERICS\components\unary\heat_source.dm" +#include "code\ATMOSPHERICS\components\unary\outlet_injector.dm" +#include "code\ATMOSPHERICS\components\unary\oxygen_generator.dm" +#include "code\ATMOSPHERICS\components\unary\unary_base.dm" +#include "code\ATMOSPHERICS\components\unary\vent_pump.dm" +#include "code\ATMOSPHERICS\components\unary\vent_scrubber.dm" +#include "code\controllers\_DynamicAreaLighting_TG.dm" +#include "code\controllers\configuration.dm" +#include "code\controllers\failsafe.dm" +#include "code\controllers\lighting_controller.dm" +#include "code\controllers\master_controller.dm" +#include "code\controllers\shuttle_controller.dm" +#include "code\controllers\verbs.dm" +#include "code\controllers\voting.dm" +#include "code\datums\ai_laws.dm" +#include "code\datums\browser.dm" +#include "code\datums\computerfiles.dm" +#include "code\datums\datacore.dm" +#include "code\datums\datumvars.dm" +#include "code\datums\disease.dm" +#include "code\datums\hud.dm" +#include "code\datums\limbs.dm" +#include "code\datums\mind.dm" +#include "code\datums\mixed.dm" +#include "code\datums\modules.dm" +#include "code\datums\recipe.dm" +#include "code\datums\spell.dm" +#include "code\datums\sun.dm" +#include "code\datums\supplypacks.dm" +#include "code\datums\uplink_item.dm" +#include "code\datums\diseases\appendicitis.dm" +#include "code\datums\diseases\beesease.dm" +#include "code\datums\diseases\brainrot.dm" +#include "code\datums\diseases\cold.dm" +#include "code\datums\diseases\cold9.dm" +#include "code\datums\diseases\dna_spread.dm" +#include "code\datums\diseases\fake_gbs.dm" +#include "code\datums\diseases\flu.dm" +#include "code\datums\diseases\fluspanish.dm" +#include "code\datums\diseases\gbs.dm" +#include "code\datums\diseases\jungle_fever.dm" +#include "code\datums\diseases\magnitis.dm" +#include "code\datums\diseases\pierrot_throat.dm" +#include "code\datums\diseases\plasmatoid.dm" +#include "code\datums\diseases\retrovirus.dm" +#include "code\datums\diseases\robotic_transformation.dm" +#include "code\datums\diseases\wizarditis.dm" +#include "code\datums\diseases\xeno_transformation.dm" +#include "code\datums\diseases\advance\advance.dm" +#include "code\datums\diseases\advance\presets.dm" +#include "code\datums\diseases\advance\symptoms\beard.dm" +#include "code\datums\diseases\advance\symptoms\choking.dm" +#include "code\datums\diseases\advance\symptoms\confusion.dm" +#include "code\datums\diseases\advance\symptoms\cough.dm" +#include "code\datums\diseases\advance\symptoms\damage_converter.dm" +#include "code\datums\diseases\advance\symptoms\deafness.dm" +#include "code\datums\diseases\advance\symptoms\dizzy.dm" +#include "code\datums\diseases\advance\symptoms\fever.dm" +#include "code\datums\diseases\advance\symptoms\flesh_eating.dm" +#include "code\datums\diseases\advance\symptoms\hallucigen.dm" +#include "code\datums\diseases\advance\symptoms\headache.dm" +#include "code\datums\diseases\advance\symptoms\heal.dm" +#include "code\datums\diseases\advance\symptoms\itching.dm" +#include "code\datums\diseases\advance\symptoms\oxygen.dm" +#include "code\datums\diseases\advance\symptoms\shedding.dm" +#include "code\datums\diseases\advance\symptoms\shivering.dm" +#include "code\datums\diseases\advance\symptoms\sneeze.dm" +#include "code\datums\diseases\advance\symptoms\stimulant.dm" +#include "code\datums\diseases\advance\symptoms\symptoms.dm" +#include "code\datums\diseases\advance\symptoms\visionloss.dm" +#include "code\datums\diseases\advance\symptoms\voice_change.dm" +#include "code\datums\diseases\advance\symptoms\vomit.dm" +#include "code\datums\diseases\advance\symptoms\weight.dm" +#include "code\datums\diseases\advance\symptoms\youth.dm" +#include "code\datums\helper_datums\construction_datum.dm" +#include "code\datums\helper_datums\events.dm" +#include "code\datums\helper_datums\getrev.dm" +#include "code\datums\helper_datums\global_iterator.dm" +#include "code\datums\helper_datums\teleport.dm" +#include "code\datums\helper_datums\topic_input.dm" +#include "code\datums\spells\area_teleport.dm" +#include "code\datums\spells\conjure.dm" +#include "code\datums\spells\construct_spells.dm" +#include "code\datums\spells\dumbfire.dm" +#include "code\datums\spells\emplosion.dm" +#include "code\datums\spells\ethereal_jaunt.dm" +#include "code\datums\spells\explosion.dm" +#include "code\datums\spells\genetic.dm" +#include "code\datums\spells\horsemask.dm" +#include "code\datums\spells\inflict_handler.dm" +#include "code\datums\spells\knock.dm" +#include "code\datums\spells\mind_transfer.dm" +#include "code\datums\spells\projectile.dm" +#include "code\datums\spells\trigger.dm" +#include "code\datums\spells\turf_teleport.dm" +#include "code\datums\spells\wizard.dm" +#include "code\datums\wires\airlock.dm" +#include "code\datums\wires\apc.dm" +#include "code\datums\wires\camera.dm" +#include "code\datums\wires\explosive.dm" +#include "code\datums\wires\mulebot.dm" +#include "code\datums\wires\particle_accelerator.dm" +#include "code\datums\wires\radio.dm" +#include "code\datums\wires\robot.dm" +#include "code\datums\wires\vending.dm" +#include "code\datums\wires\wires.dm" +#include "code\defines\obj.dm" +#include "code\defines\obj\weapon.dm" +#include "code\defines\procs\AStar.dm" +#include "code\defines\procs\captain_announce.dm" +#include "code\defines\procs\command_alert.dm" +#include "code\defines\procs\dbcore.dm" +#include "code\defines\procs\statistics.dm" +#include "code\FEA\DEBUG_REMOVE_BEFORE_RELEASE.dm" +#include "code\FEA\FEA_airgroup.dm" +#include "code\FEA\FEA_fire.dm" +#include "code\FEA\FEA_gas_mixture.dm" +#include "code\FEA\FEA_group_helpers.dm" +#include "code\FEA\FEA_system.dm" +#include "code\FEA\FEA_turf_tile.dm" +#include "code\game\asteroid.dm" +#include "code\game\atoms.dm" +#include "code\game\atoms_movable.dm" +#include "code\game\communications.dm" +#include "code\game\dna.dm" +#include "code\game\shuttle_engines.dm" +#include "code\game\skincmd.dm" +#include "code\game\smoothwall.dm" +#include "code\game\sound.dm" +#include "code\game\supplyshuttle.dm" +#include "code\game\area\ai_monitored.dm" +#include "code\game\area\areas.dm" +#include "code\game\area\Space Station 13 areas.dm" +#include "code\game\gamemodes\events.dm" +#include "code\game\gamemodes\factions.dm" +#include "code\game\gamemodes\game_mode.dm" +#include "code\game\gamemodes\gameticker.dm" +#include "code\game\gamemodes\intercept_report.dm" +#include "code\game\gamemodes\objective.dm" +#include "code\game\gamemodes\setupgame.dm" +#include "code\game\gamemodes\blob\blob.dm" +#include "code\game\gamemodes\blob\blob_finish.dm" +#include "code\game\gamemodes\blob\blob_report.dm" +#include "code\game\gamemodes\blob\theblob.dm" +#include "code\game\gamemodes\blob\blobs\core.dm" +#include "code\game\gamemodes\blob\blobs\factory.dm" +#include "code\game\gamemodes\blob\blobs\node.dm" +#include "code\game\gamemodes\blob\blobs\shield.dm" +#include "code\game\gamemodes\changeling\changeling.dm" +#include "code\game\gamemodes\changeling\changeling_powers.dm" +#include "code\game\gamemodes\changeling\modularchangling.dm" +#include "code\game\gamemodes\changeling\traitor_chan.dm" +#include "code\game\gamemodes\clone\clone.dm" +#include "code\game\gamemodes\clone\procsclone.dm" +#include "code\game\gamemodes\crystal\crystal.dm" +#include "code\game\gamemodes\crystal\crystal_objective.dm" +#include "code\game\gamemodes\crystal\the_crystal.dm" +#include "code\game\gamemodes\cult\cult.dm" +#include "code\game\gamemodes\cult\cult_items.dm" +#include "code\game\gamemodes\cult\cult_structures.dm" +#include "code\game\gamemodes\cult\ritual.dm" +#include "code\game\gamemodes\cult\runes.dm" +#include "code\game\gamemodes\cult\talisman.dm" +#include "code\game\gamemodes\extended\extended.dm" +#include "code\game\gamemodes\hotline\hotline.dm" +#include "code\game\gamemodes\malfunction\Malf_Modules.dm" +#include "code\game\gamemodes\malfunction\malfunction.dm" +#include "code\game\gamemodes\meteor\meteor.dm" +#include "code\game\gamemodes\meteor\meteors.dm" +#include "code\game\gamemodes\nuclear\nuclear.dm" +#include "code\game\gamemodes\nuclear\nuclearbomb.dm" +#include "code\game\gamemodes\nuclear\pinpointer.dm" +#include "code\game\gamemodes\revolution\revolution.dm" +#include "code\game\gamemodes\sandbox\h_sandbox.dm" +#include "code\game\gamemodes\sandbox\sandbox.dm" +#include "code\game\gamemodes\traitor\double_agents.dm" +#include "code\game\gamemodes\traitor\traitor.dm" +#include "code\game\gamemodes\wizard\artefact.dm" +#include "code\game\gamemodes\wizard\rightandwrong.dm" +#include "code\game\gamemodes\wizard\soulstone.dm" +#include "code\game\gamemodes\wizard\spellbook.dm" +#include "code\game\gamemodes\wizard\wizard.dm" +#include "code\game\jobs\access.dm" +#include "code\game\jobs\job_controller.dm" +#include "code\game\jobs\jobprocs.dm" +#include "code\game\jobs\jobs.dm" +#include "code\game\jobs\whitelist.dm" +#include "code\game\jobs\job\assistant.dm" +#include "code\game\jobs\job\captain.dm" +#include "code\game\jobs\job\civilian.dm" +#include "code\game\jobs\job\civilian_chaplain.dm" +#include "code\game\jobs\job\engineering.dm" +#include "code\game\jobs\job\job.dm" +#include "code\game\jobs\job\medical.dm" +#include "code\game\jobs\job\science.dm" +#include "code\game\jobs\job\security.dm" +#include "code\game\jobs\job\silicon.dm" +#include "code\game\machinery\ai_slipper.dm" +#include "code\game\machinery\airlock_control.dm" +#include "code\game\machinery\alarm.dm" +#include "code\game\machinery\atmo_control.dm" +#include "code\game\machinery\autolathe.dm" +#include "code\game\machinery\Beacon.dm" +#include "code\game\machinery\buttons.dm" +#include "code\game\machinery\cell_charger.dm" +#include "code\game\machinery\cloning.dm" +#include "code\game\machinery\constructable_frame.dm" +#include "code\game\machinery\cryo.dm" +#include "code\game\machinery\deployable.dm" +#include "code\game\machinery\door_control.dm" +#include "code\game\machinery\doppler_array.dm" +#include "code\game\machinery\flasher.dm" +#include "code\game\machinery\Freezer.dm" +#include "code\game\machinery\hologram.dm" +#include "code\game\machinery\igniter.dm" +#include "code\game\machinery\lightswitch.dm" +#include "code\game\machinery\machinery.dm" +#include "code\game\machinery\magnet.dm" +#include "code\game\machinery\mass_driver.dm" +#include "code\game\machinery\navbeacon.dm" +#include "code\game\machinery\newscaster.dm" +#include "code\game\machinery\overview.dm" +#include "code\game\machinery\portable_turret.dm" +#include "code\game\machinery\recharger.dm" +#include "code\game\machinery\rechargestation.dm" +#include "code\game\machinery\requests_console.dm" +#include "code\game\machinery\robot_fabricator.dm" +#include "code\game\machinery\shieldgen.dm" +#include "code\game\machinery\Sleeper.dm" +#include "code\game\machinery\spaceheater.dm" +#include "code\game\machinery\status_display.dm" +#include "code\game\machinery\suit_storage_unit.dm" +#include "code\game\machinery\syndicatebeacon.dm" +#include "code\game\machinery\teleporter.dm" +#include "code\game\machinery\transformer.dm" +#include "code\game\machinery\turrets.dm" +#include "code\game\machinery\vending.dm" +#include "code\game\machinery\washing_machine.dm" +#include "code\game\machinery\wishgranter.dm" +#include "code\game\machinery\atmoalter\area_atmos_computer.dm" +#include "code\game\machinery\atmoalter\canister.dm" +#include "code\game\machinery\atmoalter\meter.dm" +#include "code\game\machinery\atmoalter\portable_atmospherics.dm" +#include "code\game\machinery\atmoalter\pump.dm" +#include "code\game\machinery\atmoalter\scrubber.dm" +#include "code\game\machinery\atmoalter\zvent.dm" +#include "code\game\machinery\bots\bots.dm" +#include "code\game\machinery\bots\cleanbot.dm" +#include "code\game\machinery\bots\ed209bot.dm" +#include "code\game\machinery\bots\floorbot.dm" +#include "code\game\machinery\bots\medbot.dm" +#include "code\game\machinery\bots\mulebot.dm" +#include "code\game\machinery\bots\secbot.dm" +#include "code\game\machinery\camera\camera.dm" +#include "code\game\machinery\camera\camera_assembly.dm" +#include "code\game\machinery\camera\motion.dm" +#include "code\game\machinery\camera\presets.dm" +#include "code\game\machinery\camera\tracking.dm" +#include "code\game\machinery\computer\ai_core.dm" +#include "code\game\machinery\computer\aifixer.dm" +#include "code\game\machinery\computer\arcade.dm" +#include "code\game\machinery\computer\atmos_alert.dm" +#include "code\game\machinery\computer\buildandrepair.dm" +#include "code\game\machinery\computer\camera.dm" +#include "code\game\machinery\computer\card.dm" +#include "code\game\machinery\computer\cloning.dm" +#include "code\game\machinery\computer\communications.dm" +#include "code\game\machinery\computer\computer.dm" +#include "code\game\machinery\computer\crew.dm" +#include "code\game\machinery\computer\HolodeckControl.dm" +#include "code\game\machinery\computer\hologram.dm" +#include "code\game\machinery\computer\law.dm" +#include "code\game\machinery\computer\medical.dm" +#include "code\game\machinery\computer\message.dm" +#include "code\game\machinery\computer\Operating.dm" +#include "code\game\machinery\computer\pod.dm" +#include "code\game\machinery\computer\power.dm" +#include "code\game\machinery\computer\prisoner.dm" +#include "code\game\machinery\computer\prisonshuttle.dm" +#include "code\game\machinery\computer\robot.dm" +#include "code\game\machinery\computer\security.dm" +#include "code\game\machinery\computer\shuttle.dm" +#include "code\game\machinery\computer\station_alert.dm" +#include "code\game\machinery\computer\syndicate_shuttle.dm" +#include "code\game\machinery\doors\airlock.dm" +#include "code\game\machinery\doors\airlock_electronics.dm" +#include "code\game\machinery\doors\alarmlock.dm" +#include "code\game\machinery\doors\brigdoors.dm" +#include "code\game\machinery\doors\checkForMultipleDoors.dm" +#include "code\game\machinery\doors\door.dm" +#include "code\game\machinery\doors\firedoor.dm" +#include "code\game\machinery\doors\poddoor.dm" +#include "code\game\machinery\doors\shutters.dm" +#include "code\game\machinery\doors\unpowered.dm" +#include "code\game\machinery\doors\windowdoor.dm" +#include "code\game\machinery\embedded_controller\access_controller.dm" +#include "code\game\machinery\embedded_controller\airlock_controller.dm" +#include "code\game\machinery\embedded_controller\embedded_controller_base.dm" +#include "code\game\machinery\embedded_controller\simple_vent_controller.dm" +#include "code\game\machinery\kitchen\gibber.dm" +#include "code\game\machinery\kitchen\juicer.dm" +#include "code\game\machinery\kitchen\microwave.dm" +#include "code\game\machinery\kitchen\monkeyrecycler.dm" +#include "code\game\machinery\kitchen\processor.dm" +#include "code\game\machinery\kitchen\smartfridge.dm" +#include "code\game\machinery\pipe\construction.dm" +#include "code\game\machinery\pipe\pipe_dispenser.dm" +#include "code\game\machinery\telecomms\broadcaster.dm" +#include "code\game\machinery\telecomms\logbrowser.dm" +#include "code\game\machinery\telecomms\machine_interactions.dm" +#include "code\game\machinery\telecomms\presets.dm" +#include "code\game\machinery\telecomms\telecomunications.dm" +#include "code\game\machinery\telecomms\telemonitor.dm" +#include "code\game\machinery\telecomms\traffic_control.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_paths.dm" +#include "code\game\mecha\mecha_control_console.dm" +#include "code\game\mecha\mecha_parts.dm" +#include "code\game\mecha\mecha_wreckage.dm" +#include "code\game\mecha\combat\combat.dm" +#include "code\game\mecha\combat\durand.dm" +#include "code\game\mecha\combat\gygax.dm" +#include "code\game\mecha\combat\honker.dm" +#include "code\game\mecha\combat\marauder.dm" +#include "code\game\mecha\combat\phazon.dm" +#include "code\game\mecha\equipment\mecha_equipment.dm" +#include "code\game\mecha\equipment\tools\medical_tools.dm" +#include "code\game\mecha\equipment\tools\tools.dm" +#include "code\game\mecha\equipment\tools\unused_tools.dm" +#include "code\game\mecha\equipment\weapons\weapons.dm" +#include "code\game\mecha\medical\medical.dm" +#include "code\game\mecha\medical\odysseus.dm" +#include "code\game\mecha\working\ripley.dm" +#include "code\game\mecha\working\working.dm" +#include "code\game\objects\empulse.dm" +#include "code\game\objects\explosion.dm" +#include "code\game\objects\explosion_recursive.dm" +#include "code\game\objects\items.dm" +#include "code\game\objects\objs.dm" +#include "code\game\objects\structures.dm" +#include "code\game\objects\weapons.dm" +#include "code\game\objects\effects\aliens.dm" +#include "code\game\objects\effects\bump_teleporter.dm" +#include "code\game\objects\effects\effect_system.dm" +#include "code\game\objects\effects\forcefields.dm" +#include "code\game\objects\effects\gibs.dm" +#include "code\game\objects\effects\glowshroom.dm" +#include "code\game\objects\effects\landmarks.dm" +#include "code\game\objects\effects\manifest.dm" +#include "code\game\objects\effects\mines.dm" +#include "code\game\objects\effects\misc.dm" +#include "code\game\objects\effects\overlays.dm" +#include "code\game\objects\effects\portals.dm" +#include "code\game\objects\effects\spiders.dm" +#include "code\game\objects\effects\step_triggers.dm" +#include "code\game\objects\effects\decals\cleanable.dm" +#include "code\game\objects\effects\decals\contraband.dm" +#include "code\game\objects\effects\decals\crayon.dm" +#include "code\game\objects\effects\decals\misc.dm" +#include "code\game\objects\effects\decals\remains.dm" +#include "code\game\objects\effects\decals\Cleanable\aliens.dm" +#include "code\game\objects\effects\decals\Cleanable\humans.dm" +#include "code\game\objects\effects\decals\Cleanable\misc.dm" +#include "code\game\objects\effects\decals\Cleanable\robots.dm" +#include "code\game\objects\effects\spawners\bombspawner.dm" +#include "code\game\objects\effects\spawners\gibspawner.dm" +#include "code\game\objects\effects\spawners\vaultspawner.dm" +#include "code\game\objects\items\apc_frame.dm" +#include "code\game\objects\items\blueprints.dm" +#include "code\game\objects\items\bodybag.dm" +#include "code\game\objects\items\candle.dm" +#include "code\game\objects\items\crayons.dm" +#include "code\game\objects\items\latexballoon.dm" +#include "code\game\objects\items\shooting_range.dm" +#include "code\game\objects\items\tk_grab.dm" +#include "code\game\objects\items\toys.dm" +#include "code\game\objects\items\trash.dm" +#include "code\game\objects\items\devices\aicard.dm" +#include "code\game\objects\items\devices\chameleonproj.dm" +#include "code\game\objects\items\devices\flash.dm" +#include "code\game\objects\items\devices\flashlight.dm" +#include "code\game\objects\items\devices\lightreplacer.dm" +#include "code\game\objects\items\devices\multitool.dm" +#include "code\game\objects\items\devices\paicard.dm" +#include "code\game\objects\items\devices\powersink.dm" +#include "code\game\objects\items\devices\scanners.dm" +#include "code\game\objects\items\devices\taperecorder.dm" +#include "code\game\objects\items\devices\traitordevices.dm" +#include "code\game\objects\items\devices\transfer_valve.dm" +#include "code\game\objects\items\devices\uplinks.dm" +#include "code\game\objects\items\devices\violin.dm" +#include "code\game\objects\items\devices\PDA\cart.dm" +#include "code\game\objects\items\devices\PDA\chatroom.dm" +#include "code\game\objects\items\devices\PDA\radio.dm" +#include "code\game\objects\items\devices\radio\beacon.dm" +#include "code\game\objects\items\devices\radio\electropack.dm" +#include "code\game\objects\items\devices\radio\encryptionkey.dm" +#include "code\game\objects\items\devices\radio\headset.dm" +#include "code\game\objects\items\devices\radio\intercom.dm" +#include "code\game\objects\items\devices\radio\radio.dm" +#include "code\game\objects\items\robot\robot_items.dm" +#include "code\game\objects\items\robot\robot_parts.dm" +#include "code\game\objects\items\robot\robot_upgrades.dm" +#include "code\game\objects\items\stacks\medical.dm" +#include "code\game\objects\items\stacks\rods.dm" +#include "code\game\objects\items\stacks\stack.dm" +#include "code\game\objects\items\stacks\sheets\glass.dm" +#include "code\game\objects\items\stacks\sheets\leather.dm" +#include "code\game\objects\items\stacks\sheets\light.dm" +#include "code\game\objects\items\stacks\sheets\mineral.dm" +#include "code\game\objects\items\stacks\sheets\sheet_types.dm" +#include "code\game\objects\items\stacks\sheets\sheets.dm" +#include "code\game\objects\items\stacks\tiles\light.dm" +#include "code\game\objects\items\stacks\tiles\plasteel.dm" +#include "code\game\objects\items\stacks\tiles\tile_types.dm" +#include "code\game\objects\items\weapons\AI_modules.dm" +#include "code\game\objects\items\weapons\airlock_painter.dm" +#include "code\game\objects\items\weapons\cards_ids.dm" +#include "code\game\objects\items\weapons\cigs_lighters.dm" +#include "code\game\objects\items\weapons\clown_items.dm" +#include "code\game\objects\items\weapons\cosmetics.dm" +#include "code\game\objects\items\weapons\dice.dm" +#include "code\game\objects\items\weapons\dna_injector.dm" +#include "code\game\objects\items\weapons\explosives.dm" +#include "code\game\objects\items\weapons\extinguisher.dm" +#include "code\game\objects\items\weapons\flamethrower.dm" +#include "code\game\objects\items\weapons\gift_wrappaper.dm" +#include "code\game\objects\items\weapons\handcuffs.dm" +#include "code\game\objects\items\weapons\kitchen.dm" +#include "code\game\objects\items\weapons\manuals.dm" +#include "code\game\objects\items\weapons\mop.dm" +#include "code\game\objects\items\weapons\paint.dm" +#include "code\game\objects\items\weapons\paiwire.dm" +#include "code\game\objects\items\weapons\power_cells.dm" +#include "code\game\objects\items\weapons\RCD.dm" +#include "code\game\objects\items\weapons\RSF.dm" +#include "code\game\objects\items\weapons\scrolls.dm" +#include "code\game\objects\items\weapons\shields.dm" +#include "code\game\objects\items\weapons\singularityhammer.dm" +#include "code\game\objects\items\weapons\stunbaton.dm" +#include "code\game\objects\items\weapons\swords_axes_etc.dm" +#include "code\game\objects\items\weapons\table_rack_parts.dm" +#include "code\game\objects\items\weapons\teleportation.dm" +#include "code\game\objects\items\weapons\tools.dm" +#include "code\game\objects\items\weapons\twohanded.dm" +#include "code\game\objects\items\weapons\weaponry.dm" +#include "code\game\objects\items\weapons\grenades\chem_grenade.dm" +#include "code\game\objects\items\weapons\grenades\emgrenade.dm" +#include "code\game\objects\items\weapons\grenades\flashbang.dm" +#include "code\game\objects\items\weapons\grenades\grenade.dm" +#include "code\game\objects\items\weapons\grenades\smokebomb.dm" +#include "code\game\objects\items\weapons\grenades\spawnergrenade.dm" +#include "code\game\objects\items\weapons\implants\implant.dm" +#include "code\game\objects\items\weapons\implants\implantcase.dm" +#include "code\game\objects\items\weapons\implants\implantchair.dm" +#include "code\game\objects\items\weapons\implants\implanter.dm" +#include "code\game\objects\items\weapons\implants\implantfreedom.dm" +#include "code\game\objects\items\weapons\implants\implantpad.dm" +#include "code\game\objects\items\weapons\implants\implantuplink.dm" +#include "code\game\objects\items\weapons\melee\energy.dm" +#include "code\game\objects\items\weapons\melee\misc.dm" +#include "code\game\objects\items\weapons\storage\backpack.dm" +#include "code\game\objects\items\weapons\storage\bags.dm" +#include "code\game\objects\items\weapons\storage\belt.dm" +#include "code\game\objects\items\weapons\storage\bible.dm" +#include "code\game\objects\items\weapons\storage\boxes.dm" +#include "code\game\objects\items\weapons\storage\briefcase.dm" +#include "code\game\objects\items\weapons\storage\fancy.dm" +#include "code\game\objects\items\weapons\storage\firstaid.dm" +#include "code\game\objects\items\weapons\storage\lockbox.dm" +#include "code\game\objects\items\weapons\storage\secure.dm" +#include "code\game\objects\items\weapons\storage\storage.dm" +#include "code\game\objects\items\weapons\storage\toolbox.dm" +#include "code\game\objects\items\weapons\storage\uplink_kits.dm" +#include "code\game\objects\items\weapons\storage\wallets.dm" +#include "code\game\objects\items\weapons\tanks\jetpack.dm" +#include "code\game\objects\items\weapons\tanks\tank_types.dm" +#include "code\game\objects\items\weapons\tanks\tanks.dm" +#include "code\game\objects\structures\bedsheet_bin.dm" +#include "code\game\objects\structures\displaycase.dm" +#include "code\game\objects\structures\door_assembly.dm" +#include "code\game\objects\structures\dresser.dm" +#include "code\game\objects\structures\electricchair.dm" +#include "code\game\objects\structures\extinguisher.dm" +#include "code\game\objects\structures\false_walls.dm" +#include "code\game\objects\structures\flora.dm" +#include "code\game\objects\structures\girders.dm" +#include "code\game\objects\structures\grille.dm" +#include "code\game\objects\structures\janicart.dm" +#include "code\game\objects\structures\kitchen_spike.dm" +#include "code\game\objects\structures\ladders.dm" +#include "code\game\objects\structures\lamarr_cage.dm" +#include "code\game\objects\structures\lattice.dm" +#include "code\game\objects\structures\mineral_doors.dm" +#include "code\game\objects\structures\mirror.dm" +#include "code\game\objects\structures\mop_bucket.dm" +#include "code\game\objects\structures\morgue.dm" +#include "code\game\objects\structures\musician.dm" +#include "code\game\objects\structures\noticeboard.dm" +#include "code\game\objects\structures\OpTable.dm" +#include "code\game\objects\structures\safe.dm" +#include "code\game\objects\structures\signs.dm" +#include "code\game\objects\structures\tables_racks.dm" +#include "code\game\objects\structures\tank_dispenser.dm" +#include "code\game\objects\structures\target_stake.dm" +#include "code\game\objects\structures\transit_tubes.dm" +#include "code\game\objects\structures\watercloset.dm" +#include "code\game\objects\structures\windoor_assembly.dm" +#include "code\game\objects\structures\window.dm" +#include "code\game\objects\structures\crates_lockers\closets.dm" +#include "code\game\objects\structures\crates_lockers\crates.dm" +#include "code\game\objects\structures\crates_lockers\largecrate.dm" +#include "code\game\objects\structures\crates_lockers\closets\coffin.dm" +#include "code\game\objects\structures\crates_lockers\closets\crittercrate.dm" +#include "code\game\objects\structures\crates_lockers\closets\fireaxe.dm" +#include "code\game\objects\structures\crates_lockers\closets\fitness.dm" +#include "code\game\objects\structures\crates_lockers\closets\gimmick.dm" +#include "code\game\objects\structures\crates_lockers\closets\job_closets.dm" +#include "code\game\objects\structures\crates_lockers\closets\l3closet.dm" +#include "code\game\objects\structures\crates_lockers\closets\malfunction.dm" +#include "code\game\objects\structures\crates_lockers\closets\syndicate.dm" +#include "code\game\objects\structures\crates_lockers\closets\utility_closets.dm" +#include "code\game\objects\structures\crates_lockers\closets\wardrobe.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\bar.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\cargo.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\engineering.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\freezer.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\hydroponics.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\medical.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\personal.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\scientist.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\secure_closets.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\security.dm" +#include "code\game\objects\structures\stool_bed_chair_nest\alien_nests.dm" +#include "code\game\objects\structures\stool_bed_chair_nest\bed.dm" +#include "code\game\objects\structures\stool_bed_chair_nest\chairs.dm" +#include "code\game\objects\structures\stool_bed_chair_nest\stools.dm" +#include "code\game\turfs\simulated.dm" +#include "code\game\turfs\turf.dm" +#include "code\game\turfs\unsimulated.dm" +#include "code\game\turfs\simulated\dirtystation.dm" +#include "code\game\turfs\simulated\floor.dm" +#include "code\game\turfs\simulated\floor_types.dm" +#include "code\game\turfs\simulated\walls.dm" +#include "code\game\turfs\simulated\walls_mineral.dm" +#include "code\game\turfs\simulated\walls_misc.dm" +#include "code\game\turfs\simulated\walls_reinforced.dm" +#include "code\game\turfs\space\space.dm" +#include "code\game\turfs\space\transit.dm" +#include "code\game\turfs\unsimulated\beach.dm" +#include "code\game\turfs\unsimulated\floor.dm" +#include "code\game\turfs\unsimulated\walls.dm" +#include "code\game\verbs\atom_verbs.dm" +#include "code\game\verbs\ooc.dm" +#include "code\game\verbs\suicide.dm" +#include "code\game\verbs\who.dm" +#include "code\js\byjax.dm" +#include "code\js\menus.dm" +#include "code\modules\admin\admin.dm" +#include "code\modules\admin\admin_investigate.dm" +#include "code\modules\admin\admin_memo.dm" +#include "code\modules\admin\admin_ranks.dm" +#include "code\modules\admin\admin_verbs.dm" +#include "code\modules\admin\banappearance.dm" +#include "code\modules\admin\banjob.dm" +#include "code\modules\admin\create_mob.dm" +#include "code\modules\admin\create_object.dm" +#include "code\modules\admin\create_turf.dm" +#include "code\modules\admin\holder2.dm" +#include "code\modules\admin\IsBanned.dm" +#include "code\modules\admin\NewBan.dm" +#include "code\modules\admin\newbanjob.dm" +#include "code\modules\admin\player_notes.dm" +#include "code\modules\admin\player_panel.dm" +#include "code\modules\admin\topic.dm" +#include "code\modules\admin\ToRban.dm" +#include "code\modules\admin\DB ban\functions.dm" +#include "code\modules\admin\permissionverbs\permissionedit.dm" +#include "code\modules\admin\verbs\adminhelp.dm" +#include "code\modules\admin\verbs\adminjump.dm" +#include "code\modules\admin\verbs\adminpm.dm" +#include "code\modules\admin\verbs\adminsay.dm" +#include "code\modules\admin\verbs\atmosdebug.dm" +#include "code\modules\admin\verbs\BrokenInhands.dm" +#include "code\modules\admin\verbs\cinematic.dm" +#include "code\modules\admin\verbs\deadsay.dm" +#include "code\modules\admin\verbs\debug.dm" +#include "code\modules\admin\verbs\diagnostics.dm" +#include "code\modules\admin\verbs\getlogs.dm" +#include "code\modules\admin\verbs\mapping.dm" +#include "code\modules\admin\verbs\massmodvar.dm" +#include "code\modules\admin\verbs\modifyvariables.dm" +#include "code\modules\admin\verbs\one_click_antag.dm" +#include "code\modules\admin\verbs\onlyone.dm" +#include "code\modules\admin\verbs\playsound.dm" +#include "code\modules\admin\verbs\possess.dm" +#include "code\modules\admin\verbs\pray.dm" +#include "code\modules\admin\verbs\randomverbs.dm" +#include "code\modules\admin\verbs\ticklag.dm" +#include "code\modules\admin\verbs\tripAI.dm" +#include "code\modules\assembly\assembly.dm" +#include "code\modules\assembly\bomb.dm" +#include "code\modules\assembly\helpers.dm" +#include "code\modules\assembly\holder.dm" +#include "code\modules\assembly\igniter.dm" +#include "code\modules\assembly\infrared.dm" +#include "code\modules\assembly\mousetrap.dm" +#include "code\modules\assembly\proximity.dm" +#include "code\modules\assembly\shock_kit.dm" +#include "code\modules\assembly\signaler.dm" +#include "code\modules\assembly\timer.dm" +#include "code\modules\awaymissions\bluespaceartillery.dm" +#include "code\modules\awaymissions\corpse.dm" +#include "code\modules\awaymissions\exile.dm" +#include "code\modules\awaymissions\gateway.dm" +#include "code\modules\awaymissions\loot.dm" +#include "code\modules\awaymissions\pamphlet.dm" +#include "code\modules\awaymissions\trigger.dm" +#include "code\modules\awaymissions\zlevel.dm" +#include "code\modules\awaymissions\maploader\dmm_suite.dm" +#include "code\modules\awaymissions\maploader\reader.dm" +#include "code\modules\awaymissions\maploader\swapmaps.dm" +#include "code\modules\awaymissions\maploader\writer.dm" +#include "code\modules\client\client defines.dm" +#include "code\modules\client\client procs.dm" +#include "code\modules\client\preferences.dm" +#include "code\modules\client\preferences_savefile.dm" +#include "code\modules\client\preferences_toggles.dm" +#include "code\modules\clothing\clothing.dm" +#include "code\modules\clothing\glasses\glasses.dm" +#include "code\modules\clothing\glasses\hud.dm" +#include "code\modules\clothing\gloves\boxing.dm" +#include "code\modules\clothing\gloves\color.dm" +#include "code\modules\clothing\gloves\miscellaneous.dm" +#include "code\modules\clothing\head\collectable.dm" +#include "code\modules\clothing\head\hardhat.dm" +#include "code\modules\clothing\head\helmet.dm" +#include "code\modules\clothing\head\jobs.dm" +#include "code\modules\clothing\head\misc.dm" +#include "code\modules\clothing\head\misc_special.dm" +#include "code\modules\clothing\head\soft_caps.dm" +#include "code\modules\clothing\masks\boxing.dm" +#include "code\modules\clothing\masks\breath.dm" +#include "code\modules\clothing\masks\gasmask.dm" +#include "code\modules\clothing\masks\miscellaneous.dm" +#include "code\modules\clothing\shoes\colour.dm" +#include "code\modules\clothing\shoes\magboots.dm" +#include "code\modules\clothing\shoes\miscellaneous.dm" +#include "code\modules\clothing\spacesuits\miscellaneous.dm" +#include "code\modules\clothing\spacesuits\ninja.dm" +#include "code\modules\clothing\spacesuits\rig.dm" +#include "code\modules\clothing\spacesuits\syndi.dm" +#include "code\modules\clothing\suits\armor.dm" +#include "code\modules\clothing\suits\bio.dm" +#include "code\modules\clothing\suits\jobs.dm" +#include "code\modules\clothing\suits\labcoat.dm" +#include "code\modules\clothing\suits\miscellaneous.dm" +#include "code\modules\clothing\suits\utility.dm" +#include "code\modules\clothing\suits\wiz_robe.dm" +#include "code\modules\clothing\under\chameleon.dm" +#include "code\modules\clothing\under\color.dm" +#include "code\modules\clothing\under\miscellaneous.dm" +#include "code\modules\clothing\under\shorts.dm" +#include "code\modules\clothing\under\syndicate.dm" +#include "code\modules\clothing\under\ties.dm" +#include "code\modules\clothing\under\jobs\civilian.dm" +#include "code\modules\clothing\under\jobs\engineering.dm" +#include "code\modules\clothing\under\jobs\medsci.dm" +#include "code\modules\clothing\under\jobs\security.dm" +#include "code\modules\detectivework\detective_work.dm" +#include "code\modules\detectivework\evidence.dm" +#include "code\modules\detectivework\footprints_and_rag.dm" +#include "code\modules\detectivework\scanner.dm" +#include "code\modules\events\alien_infestation.dm" +#include "code\modules\events\blob.dm" +#include "code\modules\events\bluespaceanomaly.dm" +#include "code\modules\events\brand_intelligence.dm" +#include "code\modules\events\carp_migration.dm" +#include "code\modules\events\communications_blackout.dm" +#include "code\modules\events\disease_outbreak.dm" +#include "code\modules\events\dust.dm" +#include "code\modules\events\electrical_storm.dm" +#include "code\modules\events\energetic_flux.dm" +#include "code\modules\events\event.dm" +#include "code\modules\events\event_manager.dm" +#include "code\modules\events\gravitational_anomaly.dm" +#include "code\modules\events\immovable_rod.dm" +#include "code\modules\events\ion_storm.dm" +#include "code\modules\events\mass_hallucination.dm" +#include "code\modules\events\meteor_wave.dm" +#include "code\modules\events\ninja.dm" +#include "code\modules\events\prison_break.dm" +#include "code\modules\events\radiation_storm.dm" +#include "code\modules\events\spacevine.dm" +#include "code\modules\events\spider_infestation.dm" +#include "code\modules\events\spontaneous_appendicitis.dm" +#include "code\modules\events\weightless.dm" +#include "code\modules\events\wormholes.dm" +#include "code\modules\events\holiday\xmas.dm" +#include "code\modules\flufftext\Dreaming.dm" +#include "code\modules\flufftext\Hallucination.dm" +#include "code\modules\flufftext\TextFilters.dm" +#include "code\modules\food\recipes_microwave.dm" +#include "code\modules\hydroponics\biogenerator.dm" +#include "code\modules\hydroponics\grown.dm" +#include "code\modules\hydroponics\growninedible.dm" +#include "code\modules\hydroponics\hydroitemcode.dm" +#include "code\modules\hydroponics\hydroitemdefines.dm" +#include "code\modules\hydroponics\hydroponics.dm" +#include "code\modules\hydroponics\seed_extractor.dm" +#include "code\modules\hydroponics\seeds.dm" +#include "code\modules\library\lib_items.dm" +#include "code\modules\library\lib_machines.dm" +#include "code\modules\library\lib_readme.dm" +#include "code\modules\mining\machine_input_output_plates.dm" +#include "code\modules\mining\machine_processing.dm" +#include "code\modules\mining\machine_stacking.dm" +#include "code\modules\mining\machine_unloading.dm" +#include "code\modules\mining\mine_areas.dm" +#include "code\modules\mining\mine_items.dm" +#include "code\modules\mining\mine_turfs.dm" +#include "code\modules\mining\mint.dm" +#include "code\modules\mining\money_bag.dm" +#include "code\modules\mining\ores_coins.dm" +#include "code\modules\mining\satchel_ore_boxdm.dm" +#include "code\modules\mob\death.dm" +#include "code\modules\mob\inventory.dm" +#include "code\modules\mob\login.dm" +#include "code\modules\mob\logout.dm" +#include "code\modules\mob\mob.dm" +#include "code\modules\mob\mob_cleanup.dm" +#include "code\modules\mob\mob_defines.dm" +#include "code\modules\mob\mob_grab.dm" +#include "code\modules\mob\mob_helpers.dm" +#include "code\modules\mob\mob_movement.dm" +#include "code\modules\mob\mob_transformation_simple.dm" +#include "code\modules\mob\say.dm" +#include "code\modules\mob\screen.dm" +#include "code\modules\mob\transform_procs.dm" +#include "code\modules\mob\update_icons.dm" +#include "code\modules\mob\dead\death.dm" +#include "code\modules\mob\dead\observer\hud.dm" +#include "code\modules\mob\dead\observer\login.dm" +#include "code\modules\mob\dead\observer\logout.dm" +#include "code\modules\mob\dead\observer\observer.dm" +#include "code\modules\mob\dead\observer\say.dm" +#include "code\modules\mob\living\damage_procs.dm" +#include "code\modules\mob\living\living.dm" +#include "code\modules\mob\living\living_defense.dm" +#include "code\modules\mob\living\living_defines.dm" +#include "code\modules\mob\living\login.dm" +#include "code\modules\mob\living\logout.dm" +#include "code\modules\mob\living\say.dm" +#include "code\modules\mob\living\blob\blob.dm" +#include "code\modules\mob\living\carbon\carbon.dm" +#include "code\modules\mob\living\carbon\carbon_defines.dm" +#include "code\modules\mob\living\carbon\inventory.dm" +#include "code\modules\mob\living\carbon\alien\alien.dm" +#include "code\modules\mob\living\carbon\alien\death.dm" +#include "code\modules\mob\living\carbon\alien\login.dm" +#include "code\modules\mob\living\carbon\alien\logout.dm" +#include "code\modules\mob\living\carbon\alien\powers.dm" +#include "code\modules\mob\living\carbon\alien\say.dm" +#include "code\modules\mob\living\carbon\alien\screen.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\alien_powers.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\death.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\emote.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\hud.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\humanoid.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\inventory.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\life.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\login.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\queen.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\update_icons.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\caste\drone.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\caste\hunter.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\caste\sentinel.dm" +#include "code\modules\mob\living\carbon\alien\larva\death.dm" +#include "code\modules\mob\living\carbon\alien\larva\emote.dm" +#include "code\modules\mob\living\carbon\alien\larva\hud.dm" +#include "code\modules\mob\living\carbon\alien\larva\inventory.dm" +#include "code\modules\mob\living\carbon\alien\larva\larva.dm" +#include "code\modules\mob\living\carbon\alien\larva\life.dm" +#include "code\modules\mob\living\carbon\alien\larva\login.dm" +#include "code\modules\mob\living\carbon\alien\larva\powers.dm" +#include "code\modules\mob\living\carbon\alien\larva\update_icons.dm" +#include "code\modules\mob\living\carbon\alien\special\alien_embryo.dm" +#include "code\modules\mob\living\carbon\alien\special\facehugger.dm" +#include "code\modules\mob\living\carbon\brain\brain.dm" +#include "code\modules\mob\living\carbon\brain\brain_item.dm" +#include "code\modules\mob\living\carbon\brain\death.dm" +#include "code\modules\mob\living\carbon\brain\emote.dm" +#include "code\modules\mob\living\carbon\brain\hud.dm" +#include "code\modules\mob\living\carbon\brain\life.dm" +#include "code\modules\mob\living\carbon\brain\login.dm" +#include "code\modules\mob\living\carbon\brain\MMI.dm" +#include "code\modules\mob\living\carbon\brain\say.dm" +#include "code\modules\mob\living\carbon\human\death.dm" +#include "code\modules\mob\living\carbon\human\emote.dm" +#include "code\modules\mob\living\carbon\human\examine.dm" +#include "code\modules\mob\living\carbon\human\hud.dm" +#include "code\modules\mob\living\carbon\human\human.dm" +#include "code\modules\mob\living\carbon\human\human_attackalien.dm" +#include "code\modules\mob\living\carbon\human\human_attackhand.dm" +#include "code\modules\mob\living\carbon\human\human_attackpaw.dm" +#include "code\modules\mob\living\carbon\human\human_damage.dm" +#include "code\modules\mob\living\carbon\human\human_defense.dm" +#include "code\modules\mob\living\carbon\human\human_defines.dm" +#include "code\modules\mob\living\carbon\human\human_movement.dm" +#include "code\modules\mob\living\carbon\human\inventory.dm" +#include "code\modules\mob\living\carbon\human\life.dm" +#include "code\modules\mob\living\carbon\human\login.dm" +#include "code\modules\mob\living\carbon\human\say.dm" +#include "code\modules\mob\living\carbon\human\update_icons.dm" +#include "code\modules\mob\living\carbon\human\whisper.dm" +#include "code\modules\mob\living\carbon\metroid\death.dm" +#include "code\modules\mob\living\carbon\metroid\emote.dm" +#include "code\modules\mob\living\carbon\metroid\examine.dm" +#include "code\modules\mob\living\carbon\metroid\hud.dm" +#include "code\modules\mob\living\carbon\metroid\life.dm" +#include "code\modules\mob\living\carbon\metroid\login.dm" +#include "code\modules\mob\living\carbon\metroid\metroid.dm" +#include "code\modules\mob\living\carbon\metroid\powers.dm" +#include "code\modules\mob\living\carbon\metroid\say.dm" +#include "code\modules\mob\living\carbon\metroid\subtypes.dm" +#include "code\modules\mob\living\carbon\metroid\update_icons.dm" +#include "code\modules\mob\living\carbon\monkey\death.dm" +#include "code\modules\mob\living\carbon\monkey\emote.dm" +#include "code\modules\mob\living\carbon\monkey\examine.dm" +#include "code\modules\mob\living\carbon\monkey\hud.dm" +#include "code\modules\mob\living\carbon\monkey\inventory.dm" +#include "code\modules\mob\living\carbon\monkey\life.dm" +#include "code\modules\mob\living\carbon\monkey\login.dm" +#include "code\modules\mob\living\carbon\monkey\monkey.dm" +#include "code\modules\mob\living\carbon\monkey\powers.dm" +#include "code\modules\mob\living\carbon\monkey\say.dm" +#include "code\modules\mob\living\carbon\monkey\update_icons.dm" +#include "code\modules\mob\living\silicon\death.dm" +#include "code\modules\mob\living\silicon\login.dm" +#include "code\modules\mob\living\silicon\say.dm" +#include "code\modules\mob\living\silicon\silicon.dm" +#include "code\modules\mob\living\silicon\ai\ai.dm" +#include "code\modules\mob\living\silicon\ai\death.dm" +#include "code\modules\mob\living\silicon\ai\examine.dm" +#include "code\modules\mob\living\silicon\ai\hud.dm" +#include "code\modules\mob\living\silicon\ai\laws.dm" +#include "code\modules\mob\living\silicon\ai\life.dm" +#include "code\modules\mob\living\silicon\ai\login.dm" +#include "code\modules\mob\living\silicon\ai\logout.dm" +#include "code\modules\mob\living\silicon\ai\say.dm" +#include "code\modules\mob\living\silicon\ai\freelook\cameranet.dm" +#include "code\modules\mob\living\silicon\ai\freelook\chunk.dm" +#include "code\modules\mob\living\silicon\ai\freelook\eye.dm" +#include "code\modules\mob\living\silicon\ai\freelook\read_me.dm" +#include "code\modules\mob\living\silicon\ai\freelook\update_triggers.dm" +#include "code\modules\mob\living\silicon\decoy\death.dm" +#include "code\modules\mob\living\silicon\decoy\decoy.dm" +#include "code\modules\mob\living\silicon\decoy\life.dm" +#include "code\modules\mob\living\silicon\pai\death.dm" +#include "code\modules\mob\living\silicon\pai\examine.dm" +#include "code\modules\mob\living\silicon\pai\hud.dm" +#include "code\modules\mob\living\silicon\pai\life.dm" +#include "code\modules\mob\living\silicon\pai\pai.dm" +#include "code\modules\mob\living\silicon\pai\personality.dm" +#include "code\modules\mob\living\silicon\pai\recruit.dm" +#include "code\modules\mob\living\silicon\pai\say.dm" +#include "code\modules\mob\living\silicon\pai\software.dm" +#include "code\modules\mob\living\silicon\robot\death.dm" +#include "code\modules\mob\living\silicon\robot\emote.dm" +#include "code\modules\mob\living\silicon\robot\examine.dm" +#include "code\modules\mob\living\silicon\robot\hud.dm" +#include "code\modules\mob\living\silicon\robot\inventory.dm" +#include "code\modules\mob\living\silicon\robot\laws.dm" +#include "code\modules\mob\living\silicon\robot\life.dm" +#include "code\modules\mob\living\silicon\robot\login.dm" +#include "code\modules\mob\living\silicon\robot\robot.dm" +#include "code\modules\mob\living\silicon\robot\robot_modules.dm" +#include "code\modules\mob\living\silicon\robot\robot_movement.dm" +#include "code\modules\mob\living\silicon\robot\say.dm" +#include "code\modules\mob\living\simple_animal\constructs.dm" +#include "code\modules\mob\living\simple_animal\corpse.dm" +#include "code\modules\mob\living\simple_animal\parrot.dm" +#include "code\modules\mob\living\simple_animal\shade.dm" +#include "code\modules\mob\living\simple_animal\simple_animal.dm" +#include "code\modules\mob\living\simple_animal\worm.dm" +#include "code\modules\mob\living\simple_animal\friendly\cat.dm" +#include "code\modules\mob\living\simple_animal\friendly\corgi.dm" +#include "code\modules\mob\living\simple_animal\friendly\crab.dm" +#include "code\modules\mob\living\simple_animal\friendly\farm_animals.dm" +#include "code\modules\mob\living\simple_animal\friendly\lizard.dm" +#include "code\modules\mob\living\simple_animal\friendly\mouse.dm" +#include "code\modules\mob\living\simple_animal\friendly\mushroom.dm" +#include "code\modules\mob\living\simple_animal\friendly\slime.dm" +#include "code\modules\mob\living\simple_animal\friendly\tomato.dm" +#include "code\modules\mob\living\simple_animal\hostile\alien.dm" +#include "code\modules\mob\living\simple_animal\hostile\bear.dm" +#include "code\modules\mob\living\simple_animal\hostile\carp.dm" +#include "code\modules\mob\living\simple_animal\hostile\creature.dm" +#include "code\modules\mob\living\simple_animal\hostile\faithless.dm" +#include "code\modules\mob\living\simple_animal\hostile\giant_spider.dm" +#include "code\modules\mob\living\simple_animal\hostile\hivebot.dm" +#include "code\modules\mob\living\simple_animal\hostile\hostile.dm" +#include "code\modules\mob\living\simple_animal\hostile\mimic.dm" +#include "code\modules\mob\living\simple_animal\hostile\pirate.dm" +#include "code\modules\mob\living\simple_animal\hostile\russian.dm" +#include "code\modules\mob\living\simple_animal\hostile\syndicate.dm" +#include "code\modules\mob\living\simple_animal\hostile\tree.dm" +#include "code\modules\mob\living\simple_animal\hostile\retaliate\clown.dm" +#include "code\modules\mob\living\simple_animal\hostile\retaliate\retaliate.dm" +#include "code\modules\mob\new_player\hud.dm" +#include "code\modules\mob\new_player\login.dm" +#include "code\modules\mob\new_player\logout.dm" +#include "code\modules\mob\new_player\new_player.dm" +#include "code\modules\mob\new_player\poll.dm" +#include "code\modules\mob\new_player\preferences_setup.dm" +#include "code\modules\mob\new_player\sprite_accessories.dm" +#include "code\modules\paperwork\clipboard.dm" +#include "code\modules\paperwork\filingcabinet.dm" +#include "code\modules\paperwork\folders.dm" +#include "code\modules\paperwork\handlabeler.dm" +#include "code\modules\paperwork\paper.dm" +#include "code\modules\paperwork\paperbin.dm" +#include "code\modules\paperwork\pen.dm" +#include "code\modules\paperwork\photocopier.dm" +#include "code\modules\paperwork\photography.dm" +#include "code\modules\paperwork\stamps.dm" +#include "code\modules\power\apc.dm" +#include "code\modules\power\cable.dm" +#include "code\modules\power\cell.dm" +#include "code\modules\power\engine.dm" +#include "code\modules\power\generator.dm" +#include "code\modules\power\generator_type2.dm" +#include "code\modules\power\gravitygenerator.dm" +#include "code\modules\power\lighting.dm" +#include "code\modules\power\port_gen.dm" +#include "code\modules\power\power.dm" +#include "code\modules\power\smes.dm" +#include "code\modules\power\solar.dm" +#include "code\modules\power\switch.dm" +#include "code\modules\power\terminal.dm" +#include "code\modules\power\tracker.dm" +#include "code\modules\power\turbine.dm" +#include "code\modules\power\antimatter\containment_jar.dm" +#include "code\modules\power\antimatter\control.dm" +#include "code\modules\power\antimatter\shielding.dm" +#include "code\modules\power\singularity\collector.dm" +#include "code\modules\power\singularity\containment_field.dm" +#include "code\modules\power\singularity\emitter.dm" +#include "code\modules\power\singularity\field_generator.dm" +#include "code\modules\power\singularity\generator.dm" +#include "code\modules\power\singularity\investigate.dm" +#include "code\modules\power\singularity\singularity.dm" +#include "code\modules\power\singularity\particle_accelerator\particle.dm" +#include "code\modules\power\singularity\particle_accelerator\particle_accelerator.dm" +#include "code\modules\power\singularity\particle_accelerator\particle_chamber.dm" +#include "code\modules\power\singularity\particle_accelerator\particle_control.dm" +#include "code\modules\power\singularity\particle_accelerator\particle_emitter.dm" +#include "code\modules\power\singularity\particle_accelerator\particle_power.dm" +#include "code\modules\projectiles\ammunition.dm" +#include "code\modules\projectiles\gun.dm" +#include "code\modules\projectiles\projectile.dm" +#include "code\modules\projectiles\ammunition\boxes.dm" +#include "code\modules\projectiles\ammunition\bullets.dm" +#include "code\modules\projectiles\guns\energy.dm" +#include "code\modules\projectiles\guns\projectile.dm" +#include "code\modules\projectiles\guns\energy\laser.dm" +#include "code\modules\projectiles\guns\energy\nuclear.dm" +#include "code\modules\projectiles\guns\energy\pulse.dm" +#include "code\modules\projectiles\guns\energy\special.dm" +#include "code\modules\projectiles\guns\energy\stun.dm" +#include "code\modules\projectiles\guns\energy\temperature.dm" +#include "code\modules\projectiles\guns\projectile\automatic.dm" +#include "code\modules\projectiles\guns\projectile\pistol.dm" +#include "code\modules\projectiles\guns\projectile\revolver.dm" +#include "code\modules\projectiles\guns\projectile\shotgun.dm" +#include "code\modules\projectiles\projectile\animate.dm" +#include "code\modules\projectiles\projectile\beams.dm" +#include "code\modules\projectiles\projectile\bullets.dm" +#include "code\modules\projectiles\projectile\change.dm" +#include "code\modules\projectiles\projectile\energy.dm" +#include "code\modules\projectiles\projectile\special.dm" +#include "code\modules\reagents\Chemistry-Colours.dm" +#include "code\modules\reagents\Chemistry-Holder.dm" +#include "code\modules\reagents\Chemistry-Machinery.dm" +#include "code\modules\reagents\Chemistry-Readme.dm" +#include "code\modules\reagents\Chemistry-Reagents.dm" +#include "code\modules\reagents\Chemistry-Recipes.dm" +#include "code\modules\reagents\grenade_launcher.dm" +#include "code\modules\reagents\reagent_containers.dm" +#include "code\modules\reagents\reagent_dispenser.dm" +#include "code\modules\reagents\syringe_gun.dm" +#include "code\modules\reagents\reagent_containers\borghydro.dm" +#include "code\modules\reagents\reagent_containers\dropper.dm" +#include "code\modules\reagents\reagent_containers\food.dm" +#include "code\modules\reagents\reagent_containers\glass.dm" +#include "code\modules\reagents\reagent_containers\hypospray.dm" +#include "code\modules\reagents\reagent_containers\pill.dm" +#include "code\modules\reagents\reagent_containers\spray.dm" +#include "code\modules\reagents\reagent_containers\syringes.dm" +#include "code\modules\reagents\reagent_containers\food\condiment.dm" +#include "code\modules\reagents\reagent_containers\food\drinks.dm" +#include "code\modules\reagents\reagent_containers\food\snacks.dm" +#include "code\modules\reagents\reagent_containers\food\drinks\bottle.dm" +#include "code\modules\reagents\reagent_containers\food\drinks\drinkingglass.dm" +#include "code\modules\reagents\reagent_containers\food\drinks\jar.dm" +#include "code\modules\reagents\reagent_containers\food\drinks\bottle\robot.dm" +#include "code\modules\reagents\reagent_containers\food\snacks\meat.dm" +#include "code\modules\reagents\reagent_containers\glass\bottle.dm" +#include "code\modules\reagents\reagent_containers\glass\bottle\robot.dm" +#include "code\modules\recycling\conveyor2.dm" +#include "code\modules\recycling\disposal-construction.dm" +#include "code\modules\recycling\disposal.dm" +#include "code\modules\recycling\sortingmachinery.dm" +#include "code\modules\research\circuitprinter.dm" +#include "code\modules\research\designs.dm" +#include "code\modules\research\destructive_analyzer.dm" +#include "code\modules\research\message_server.dm" +#include "code\modules\research\protolathe.dm" +#include "code\modules\research\rd-readme.dm" +#include "code\modules\research\rdconsole.dm" +#include "code\modules\research\rdmachines.dm" +#include "code\modules\research\research.dm" +#include "code\modules\research\server.dm" +#include "code\modules\scripting\Errors.dm" +#include "code\modules\scripting\IDE.dm" +#include "code\modules\scripting\Options.dm" +#include "code\modules\scripting\stack.dm" +#include "code\modules\scripting\AST\AST Nodes.dm" +#include "code\modules\scripting\AST\Blocks.dm" +#include "code\modules\scripting\AST\Statements.dm" +#include "code\modules\scripting\AST\Operators\Binary Operators.dm" +#include "code\modules\scripting\AST\Operators\Unary Operators.dm" +#include "code\modules\scripting\Implementations\_Logic.dm" +#include "code\modules\scripting\Implementations\Telecomms.dm" +#include "code\modules\scripting\Interpreter\Evaluation.dm" +#include "code\modules\scripting\Interpreter\Interaction.dm" +#include "code\modules\scripting\Interpreter\Interpreter.dm" +#include "code\modules\scripting\Interpreter\Scope.dm" +#include "code\modules\scripting\Parser\Expressions.dm" +#include "code\modules\scripting\Parser\Keywords.dm" +#include "code\modules\scripting\Parser\Parser.dm" +#include "code\modules\scripting\Scanner\Scanner.dm" +#include "code\modules\scripting\Scanner\Tokens.dm" +#include "code\modules\security levels\keycard authentication.dm" +#include "code\modules\security levels\security levels.dm" +#include "code\modules\surgery\appendectomy.dm" +#include "code\modules\surgery\brain_removal.dm" +#include "code\modules\surgery\cavity_implant.dm" +#include "code\modules\surgery\core_removal.dm" +#include "code\modules\surgery\eye_surgery.dm" +#include "code\modules\surgery\gender_reassignment.dm" +#include "code\modules\surgery\generic_steps.dm" +#include "code\modules\surgery\helpers.dm" +#include "code\modules\surgery\implant_removal.dm" +#include "code\modules\surgery\lipoplasty.dm" +#include "code\modules\surgery\plastic_surgery.dm" +#include "code\modules\surgery\surgery.dm" +#include "code\modules\surgery\surgery_step.dm" +#include "code\modules\surgery\tools.dm" +#include "code\modules\surgery\xenomorph_removal.dm" +#include "code\modules\surgery\organs\helpers.dm" +#include "code\modules\surgery\organs\organ.dm" +#include "maps\MetaStation v27G-II.dmm" +#include "maps\tgstation.2.1.2.dmm" +#include "maps\RandomZLevels\Academy.dm" +#include "maps\RandomZLevels\challenge.dm" +#include "maps\RandomZLevels\stationCollision.dm" +#include "maps\RandomZLevels\wildwest.dm" +#include "maps\RandomZLevels\Academy.dmm" +#include "maps\RandomZLevels\arcticwaste.dmm" +#include "maps\RandomZLevels\beach.dmm" +#include "maps\RandomZLevels\blackmarketpackers.dmm" +#include "maps\RandomZLevels\challenge.dmm" +#include "maps\RandomZLevels\example.dmm" +#include "maps\RandomZLevels\listeningpost.dmm" +#include "maps\RandomZLevels\spacebattle.dmm" +#include "maps\RandomZLevels\stationCollision.dmm" +#include "maps\RandomZLevels\wildwest.dmm" // END_INCLUDE