From 6d02d523aaa1c75ec7ed49db9dabf6d876e3057a Mon Sep 17 00:00:00 2001 From: MsrSgtShooterPerson Date: Sat, 27 Jul 2024 03:50:03 +0800 Subject: [PATCH 01/29] Added alternative table printing method --- scripts/util.lua | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/scripts/util.lua b/scripts/util.lua index dceb4ff50..afc5c44d0 100644 --- a/scripts/util.lua +++ b/scripts/util.lua @@ -442,6 +442,32 @@ function table.tostr(t, depth, prefix) return result end +function table.alt_print_table(t, max_depth, indent) + local indent = indent or 0 + local max_depth = max_depth or 0 + local prefix = string.rep(" ", indent) + + if not t then error("Table doesn't exist!") end + --if type(t) == "table" and table.size(t) then error ("Table has no elements!") end + if type(t) ~= "table" then error("Not a table!") end + + for key, value in pairs(t) do + if type(value) == "table" then + if indent > max_depth then + gui.printf(prefix .. tostring(key) .. ":") + gui.printf(" {" .. table.size(value) .. " items}\n") + else + gui.printf(prefix .. tostring(key) .. ":\n") + table.alt_print_table(value, max_depth, indent + 1) + end + else + gui.printf(prefix .. tostring(key) .. ": " .. tostring(value) .. "\n") + end + end + + return +end + function table.list_str(t) if not t then return "NIL" end if #t < 1 then return "{}" end From 67067661b2818d28298013ae0435a7a9c5081228 Mon Sep 17 00:00:00 2001 From: MsrSgtShooterPerson Date: Sat, 27 Jul 2024 03:50:52 +0800 Subject: [PATCH 02/29] New Resource Pack feature: room theme synthesizer. Builds room themes by combining random flats and textures from other themes, including addons if available. --- games/doom/data/ObAddon_Textures_2.wad | Bin 2850734 -> 2851011 bytes games/doom/fabs/wall/gtd_wall_AI_sets.wad | Bin 0 -> 2296 bytes modules/zdoom_armaetus_epic_textures.lua | 68 ++++++++++++++++++++++ 3 files changed, 68 insertions(+) create mode 100644 games/doom/fabs/wall/gtd_wall_AI_sets.wad diff --git a/games/doom/data/ObAddon_Textures_2.wad b/games/doom/data/ObAddon_Textures_2.wad index 1ff37bb281120a6fa12095af3dfe09483709b1fb..393dd825659fe0b82ae4ab6c180a7dcd0a7e2fbf 100644 GIT binary patch delta 9709 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 EKf@^Ung9R* delta 8345 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 DK(9LV diff --git a/games/doom/fabs/wall/gtd_wall_AI_sets.wad b/games/doom/fabs/wall/gtd_wall_AI_sets.wad new file mode 100644 index 0000000000000000000000000000000000000000..cba90c5fc97469d94de17278e8aefd7eb93afe1f GIT binary patch literal 2296 zcmcJQy>1&v5XXn)@k1Y!C{dPWAVr!4X$*+63R7>8vMej>!!y- z4Xf*xHKVQxYFHLg3)HqwL>Z`K-H6(tuJt17fO^)Bs0+$$DWV=|$(AEp0xjE0M9bcC zg@_s}w(4idvyX1o`q6R?)VH;W)diiJ0N3+AS9F5|?n{rL`cJJrLeDX!}H z{+w0yxA&Sn-|qeYIXC}9&M8i!DgNE}o3!D)X-}d_`+fHg2%eea#W<+mP*uB{X%!M? zJ)i^Z`k7gQzJR~-GrVYrhl*ZMp>x<9vw$n`Rx!ag#NMh7{9Cv!L|u6EFVn_gMw>Tn zSyWoX7m^J84YzC^Hb|Oyz(*MI}}}GpgJFK zYDI$H=^e`(`fAJbO}dD=(6hGbkIL5U1KdtLm;Cqf!(^z7nV(vTTPe2Ul8^Hd@lUOe zL%r_k9F_i`D<*L&2xHTbjdiy7aOz#5tEuza*tdMRW#nLnx~^5iIy?JZ=)zap5uHmfdS}y#jU#S4qjjtwe(?Am} zSFv}#qJoVS4PQfM*L+h{Q&&E+)Kdk=*WO6U%^Jwj+bj^$S>(C&fZ0KVUzr1_VjY^hJL_S*2Rq^Syca` zG5f<(*H1Kf)4S7M^r^co>gp#O*}na1&wM0(Z;foU>I*HZO3|0C=W9T6gycD)mgSBJ&!2%50}Je2|eOaaYK=J_=Lt=xlOrF_bhsmBNW zxo_C_dwzPBU*zQ{@JDRQ{D|FV2mHyuK+7_poGnhv*WhdLd@;>s@F$N-`=i?a3Jt Date: Sat, 27 Jul 2024 03:51:07 +0800 Subject: [PATCH 03/29] Added new shape rules, adding corner pieces to some old sets. --- scripts/shapes.lua | 96 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 92 insertions(+), 4 deletions(-) diff --git a/scripts/shapes.lua b/scripts/shapes.lua index dfd220336..ffbdc78cc 100644 --- a/scripts/shapes.lua +++ b/scripts/shapes.lua @@ -3249,8 +3249,8 @@ GROW_COLONNADE_TINY = GROW_COLONNADE_PARTHENON = { - prob = 10, - skip_prob = 50, + prob = 7, + skip_prob = 80, structure = { @@ -3265,8 +3265,8 @@ GROW_COLONNADE_PARTHENON = GROW_COLONNADE_PARTHENON_3P = { - prob = 10, - skip_prob = 50, + prob = 7, + skip_prob = 75, structure = { @@ -6651,6 +6651,57 @@ GROW_CAUSEWAY_SINGLE_WATERBOUND = }, }, +GROW_CAUSEWAY_SINGLE_CORNER_PILLAR = +{ + prob = 15, + skip_prob = 75, + + structure = + { + "........1","%11111111", + "........1","111111111", + "........x","11/#v~~~x", + "........x","11#/AAAAx", + "........x","11>AAAAAx", + "........x","11~AAAAAx", + "........x","11~AAAAAx", + "........x","11~AAAAAx" + }, + + diagonals = + { + "1.", + "1.", + ".A" + } +}, + +GROW_CAUSEWAY_SINGLE_THICC_CORNER_PILLAR = +{ + prob = 15, + skip_prob = 80, + + structure = + { + ".........1","%111111111", + ".........1","1111111111", + ".........x","11/##v~~~x", + ".........x","11###v~~~x", + ".........x","11##/AAAAx", + ".........x","11>>AAAAAx", + ".........x","11~~AAAAAx", + ".........x","11~~AAAAAx", + ".........x","11~~AAAAAx" + }, + + diagonals = + { + "1.", + "1.", + ".A" + } +}, + GROW_CAUSEWAY_SINGLE_WATERBOUND_OFF_RAMP = { prob = 30, @@ -6977,6 +7028,43 @@ GROW_CAUSEWAY_TIP = }, }, +GROW_CAUSEWAY_KNIFE = +{ + prob = 10, + skip_prob = 75, + + structure = + { + "..xx","/%xx", + "...x","AA%x", + "....","AA1%", + "....","AA%1", + "....","AA/1", + "....","AA%1", + "....","AA/1", + "....","AA%1", + "....","AA/1", + "..xx","11xx", + "..xx","11xx", + "..xx","11xx", + "..xx","11xx", + "11xx","11xx" + }, + + diagonals = + { + ".A","A.", + "1.", + "1.", + "A1", + "A1", + "A1", + "A1", + "A1", + "A1" + } +}, + GROW_GATED_RAMP = { prob = 20, From 96cc7b46c3047c35e8f36311a76ec3bf0a19275f Mon Sep 17 00:00:00 2001 From: MsrSgtShooterPerson Date: Sat, 27 Jul 2024 03:51:26 +0800 Subject: [PATCH 04/29] Very edgy names that actually came from No Man's Sky character dialogue. --- games/doom/names.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/games/doom/names.lua b/games/doom/names.lua index 2b582a581..84791fb11 100644 --- a/games/doom/names.lua +++ b/games/doom/names.lua @@ -3682,10 +3682,12 @@ DOOM.NAMES = ["Stranglehold"]=10, ["Suicide Mission"]=10, ["Tears in the Rain"]=10, + ["Too Late to Make a Difference"]=10, ["Time to Kill"]=10, ["Tip of the Spear"]=10, ["The Fate of All Things"]=10, ["The Game Is On"]=10, + ["These Are the Last Days, Are They Not?"]=10, ["Pulling the Short Straw"]=10, ["The Part Where He Gets You"]=10, ["The Sentinel's Playground"]=10, From d2bffcaaa7e871f330df3aabb2df5425d2f6c77d Mon Sep 17 00:00:00 2001 From: MsrSgtShooterPerson Date: Mon, 29 Jul 2024 18:08:18 +0800 Subject: [PATCH 05/29] Rebalanced probabilities on some secret fabs. --- games/doom/fabs/item/dem_secret_closets_urban.lua | 2 +- games/doom/fabs/item/scionox_secrets_hell.lua | 5 ++++- games/doom/fabs/item/scionox_secrets_tech.lua | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/games/doom/fabs/item/dem_secret_closets_urban.lua b/games/doom/fabs/item/dem_secret_closets_urban.lua index a4cf779dd..337683bc6 100644 --- a/games/doom/fabs/item/dem_secret_closets_urban.lua +++ b/games/doom/fabs/item/dem_secret_closets_urban.lua @@ -300,7 +300,7 @@ PREFABS.Item_secret_hanging_vent_closet = in_porches = "never", jump_crouch = false, - prob = 50, + prob = 20, seed_w = 1, seed_h = 1, diff --git a/games/doom/fabs/item/scionox_secrets_hell.lua b/games/doom/fabs/item/scionox_secrets_hell.lua index fddeeed0e..f11cbc1d9 100644 --- a/games/doom/fabs/item/scionox_secrets_hell.lua +++ b/games/doom/fabs/item/scionox_secrets_hell.lua @@ -25,6 +25,9 @@ PREFABS.Item_hell_alcove_window_secret = { template = "Item_hell_alcove_tomb_secret", map = "MAP02", + + prob = 150, port = "zdoom", - seed_w = 3, + + seed_w = 3 } diff --git a/games/doom/fabs/item/scionox_secrets_tech.lua b/games/doom/fabs/item/scionox_secrets_tech.lua index 38e227539..82570a3f8 100644 --- a/games/doom/fabs/item/scionox_secrets_tech.lua +++ b/games/doom/fabs/item/scionox_secrets_tech.lua @@ -122,7 +122,7 @@ PREFABS.Item_wallmachines_secret_5 = file = "item/scionox_secrets_tech.wad", map = "MAP06", - prob = 7, + prob = 4, skip_prob = 50, port = "!zdoom", From b83a8adac853d58d05918193309b17ce2d652b45 Mon Sep 17 00:00:00 2001 From: MsrSgtShooterPerson Date: Mon, 29 Jul 2024 18:08:50 +0800 Subject: [PATCH 06/29] - New prefab sets using gen AI textures. --- games/doom/fabs/picture/gtd_pic_AI_sets.lua | 51 +++++++++++ games/doom/fabs/picture/gtd_pic_AI_sets.wad | Bin 0 -> 22626 bytes games/doom/fabs/wall/gtd_wall_AI_sets.lua | 84 ++++++++++++++++++ games/doom/fabs/wall/gtd_wall_AI_sets.wad | Bin 2296 -> 12222 bytes modules/prefab_controller.lua | 5 +- modules/zdoom_orp_generative_resources.lua | 91 ++++++++++---------- 6 files changed, 182 insertions(+), 49 deletions(-) create mode 100644 games/doom/fabs/picture/gtd_pic_AI_sets.lua create mode 100644 games/doom/fabs/picture/gtd_pic_AI_sets.wad create mode 100644 games/doom/fabs/wall/gtd_wall_AI_sets.lua diff --git a/games/doom/fabs/picture/gtd_pic_AI_sets.lua b/games/doom/fabs/picture/gtd_pic_AI_sets.lua new file mode 100644 index 000000000..84e2f8906 --- /dev/null +++ b/games/doom/fabs/picture/gtd_pic_AI_sets.lua @@ -0,0 +1,51 @@ +PREFABS.Pic_goth_comp_yellow_stained_glass = +{ + file = "picture/gtd_pic_AI_sets.wad", + map = "MAP01", + + prob = 50, + group = "gtd_AI_goth_comp_yellow_stained_glass", + + texture_pack = "armaetus", + + seed_w = 2, + seed_h = 1, + + where = "seeds", + deep = 16, + + height = 128, + + x_fit = {104,108 , 148,152}, + y_fit = "top", + z_fit = {53,95}, + + bound_z1 = 0, + bound_z2 = 128 +} + +PREFABS.Pic_goth_comp_yellow_stained_glass_3x = +{ + template = "Pic_goth_comp_yellow_stained_glass", + map = "MAP02", + + rank = 2, + + seed_w = 3, + + x_fit = { 84,108 , 276,300 } +} + +-- + +PREFABS.Pic_AI_boiler_room_pipes = +{ + template = "Pic_goth_comp_yellow_stained_glass", + map = "MAP10", + + group = "gtd_AI_boiler_room", + + x_fit = "frame", + y_fit = "top", + z_fit = {39,41 , 79,81} +} diff --git a/games/doom/fabs/picture/gtd_pic_AI_sets.wad b/games/doom/fabs/picture/gtd_pic_AI_sets.wad new file mode 100644 index 0000000000000000000000000000000000000000..9c291d379ba70a015bb5865b221f16ef8fefc4ab GIT binary patch literal 22626 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 a%6pea{{9?!kG~*k*aemCE4VgC-v0;2@Y*5( literal 0 HcmV?d00001 diff --git a/games/doom/fabs/wall/gtd_wall_AI_sets.lua b/games/doom/fabs/wall/gtd_wall_AI_sets.lua new file mode 100644 index 000000000..b53f4d20a --- /dev/null +++ b/games/doom/fabs/wall/gtd_wall_AI_sets.lua @@ -0,0 +1,84 @@ +PREFABS.Wall_AI_goth_comp_yellow_stained_glass_1 = +{ + file = "wall/gtd_wall_AI_sets.wad", + map = "MAP01", + + prob = 50, + group = "gtd_AI_goth_comp_yellow_stained_glass", + + where = "edge", + deep = 16, + height = 96, + + bound_z1 = 0, + bound_z2 = 96, + + z_fit = {8,9} +} + +PREFABS.Wall_AI_goth_comp_yellow_stained_glass_1_stretchable = +{ + template = "Wall_AI_goth_comp_yellow_stained_glass_1", + map = "MAP02", + + rank = 2, + + height = 148, + + bound_z2 = 148, + + z_fit = {139,140} +} + +PREFABS.Wall_AI_goth_comp_yellow_stained_glass_1_lite_pillar = +{ + template = "Wall_AI_goth_comp_yellow_stained_glass_1", + map = "MAP03", + + prob = 5, + + z_fit = {86,87} +} + +PREFABS.Wall_AI_goth_comp_yellow_stained_glass_1_lite_pillar_stretchable = +{ + template = "Wall_AI_goth_comp_yellow_stained_glass_1", + map = "MAP03", + + height = 128, + + prob = 5, + rank = 2, + + z_fit = {86,87} +} + +-- +-- boiler room +-- + +PREFABS.Wall_AI_boiler_room_pipes = +{ + file = "wall/gtd_wall_AI_sets.wad", + map = "MAP10", + + prob = 50, + group = "gtd_AI_boiler_room", + + where = "edge", + deep = 16, + height = 96, + + bound_z1 = 0, + bound_z2 = 96, + + z_fit = "top" +} + +PREFABS.Wall_AI_boiler_room_dashboards = +{ + template = "Wall_AI_boiler_room_pipes", + map = "MAP11", + + prob = 8 +} diff --git a/games/doom/fabs/wall/gtd_wall_AI_sets.wad b/games/doom/fabs/wall/gtd_wall_AI_sets.wad index cba90c5fc97469d94de17278e8aefd7eb93afe1f..a639e9ef1b45fc08b8575b3fbb6ae6fefde56cd0 100644 GIT binary patch literal 12222 zcmeI2U5H&*701_|d*}P>WP;N3a&BRV;hRkS2P*Z)7T8aem zK}wO0WMMPAJi1;K$>YK=U79V`{L9j?4R4f$CgGlK0_uuQR+?$y@H#KP=#O&eR zz1Lp*W9@y`UTf|DnT^ZmmQI`5+6jKF!k?#RvnSJ{D%NaPt*7MmKvk?(QdOv4>no`m zRG;;iR4-J&4U|+L)PVJtR6kVB21{xHYS4yCY7lD3hD&NFw;X0hrC}S%kIOj#tPpIcp}u6keGN#uzUBi~%Qva+~%`6-_;Y9qh0w!XD;aqYq$^L}L9^Ox2yubo<0 zkiP7e`NHbC&COG%%H0iFBX9M6v-!7XtS|Ct)p@kwXROB&6=e{wo^muQXrS+}% z8Y8#*-n+~_A3)}qC-RuT^ZO01uQ&Qc9^8+%Z=K0&mN+qqTxY0grY4US)bKRxSb&rH zso4hn4a!&Z<0m>XLV+zP;3e7{&jzIpMk{!rZIbp@^ih75(iBzwlr5i3Ye18FIn&ng zF{gEUbDM&9%@_qdlFqi*H>ll5&19~ZJ&V&@!@kJQD9PGbe)Ky|S@Kx69hzOKE0ZP(Xnl9q-yd#y@>`$Z?ZP! zHWfJDa)kCNYm~PUqmp&V>=r&nI(0SAoLG2o>PrbKYZCbeb&^VXElI+GERp)vS&!Np z+<`R6z$)KlF6ptA^KV#x>ZL^u9un|qEN`RQzFe=KE?@8p*4|IuwkbQwCvWFB zXlwM_xLp%1io0;kUa+wGk^5*mcX}72=-m{0^@yFa1v_J(VZ<78G+B@T%0r8irpU7m zWF3&MPw?)#Nptvr) zbUyaGqQBrih#h2e^*o3j-1k0+9sWOJhwHl{goquk?cx;Ki1gWB9JAN|Ct`=VmkW2O z5s4`7G;-b213wV%&_Wt&P%WfEafxCY@2BWwkjTX;MLxZ^kp|%o!%&LsJQ8l93B&Nl z;5bk9L&QWrijanJB4nq8G}MWeJhqnqALeo11iW4-A4PGL%FdgH*TNlyG>j5~Id2A@ z?j}whgqk82bLtS(G$T1R3#GWtsl%BPSLuiyCBmC7c@M#>($Zy_vxjq=@G+79|6&>1 zj@X5rd1qW8T2;8~?8X!p*Pq|mBJlUV5%)wMeLF`PbMKw}AlOaJ6M2k$H<{n(JVo2cH$S(rv3_amsUD(--BPu*{YzbU zvir!L)*Cmvn*Fu;`@p#t%Dq|)>0CEr2O|%zpVXitZ;gDCiDLzkN2~68rIG7Ay3f|R zp?1e_gxAbq{f_Y@dc8=lbd~<|l;`RHMe=Q)z;Z0#*>!JEv{b#GI+hsxprQGVF}XV@ z;UNXPk35CrGzWx76uMWxN(tN|w-FXXzlLKo2Zf#F`UX8)c!_+3Pzj})>I=8iV;Vm> zIxLIq>lbDtS$1PN@;rgB9Af<*cNLUCL$YkbNWe;xV<#EE5lxb(cxS@*NPc4W-O*ex z`yQB+?70b#%D=ML!c~OXsE)Ofswfn(4s2uW+3nWLF7Av6c3Rfvzi^xvnKxqXGqj3IbP({otTh#!i)T! z?!=M`*p3&y!Du7QTF>Z_@Sm$Dyhxak@F0zLTHD?~rlFLe z{+J~Mt3=bi&9)7sUf$pcf0|EYT}49mm-Ky1y5L#B-|TI z+RZ5#MVQTQ&L1+zY%eV747gEPnaFSCK1g{7%Ji5$ZD*}vi*WZsnOYdr2=Ba}HD`)b zG=ugDK@!?D$SG;zP19(vzO^{NFSojX)Jc1;cdC&h9#pK@iX$~sD~?pG*!p6nSkZl# zM$tE_!912IolRk?ewy79?CopRmv`F-+AQV`uPtk@<3}k_x*6V6`R}bmzTEA zuRVA9v`ZB$i9Dq1ELCvT_s`AfbK%mtFPx?(xOeYco-=e(Cs0ZHt&><#!$V1RoKE-& z+T5#An|SB#UnPXh%achru(l2N3i-=I0Znpi?(>X7dHVvpFj|%ymXZ0=i{yJk!*4^< zJkxxnDl=H&_nSd_Sn@BY?Oz1OWaTvnlJ_HNc&vP*D5xe4Ss!vr9(^5l;~uK>LLnSCPC*iym2jQu5zy4}FzxvBQG8MU$P#`)IP*zVCNhbM3!-E4`m~ zG+uPd7CZVWPkK}2>Q_tJC)MTO9Tv1k?Orx-06Y2Y>bb2`Pq$*K&Ngq(9<|5qli=%` z!?AS#-Hoj4>$O`rN7+Tm%BW}H=b~hhyru8ELFqj>)%gp&R&&4hEN;pE%{{(zyFD9j zvuDy#mu2@?c6}pop1!i{{_E5}s4;ZIDcyuy_f&mn(APNU>FdHYn&g!3#rn$c>(jk> z7=PflRbF8~V><5;v5EN3Q*Z^dCbsxyIZRAzX3Y;{pjty zOBE}LJY?=HRd8jO?$yrs*x#E+ckRZed!OZs{j)3g*Il?(`?Brn*A{xw+HUi9>szze zyUzRLu3YV9?A*@0vu;GI3Yvbe`|M{TM%tPCx!YMAbcHXK_d0L)k-KxNwtCO=x=)W4 z?9APh?yL>EYA@gOyuDqut|wc#m?!d5+fUcJ_O01h_SWaqTG8F(rR>RRse7cX?F@0k zNuC#Zgcf{@=M2wTo)sQ_(OIDFD$mP2OVlmVvuIv#zGd?4*YV*(8B|xtPtKMxi_p!8 zziv`OzB2xjM`+!qb+47&sv%C9bANCE%F_O9$>lTbZNJIN^6Q?fB)hL!l-gsf!}xrU ziEdJYUl2!;hG-RWpS+9Z+qL>qF5@+M$N0|<`6HY2oAMAlr5m?SkvxoHJCx+X0u4AI zd0se>+ssJj{?M?TjI0Uz$+^TFP^~HmFRD{DLFZ`_(=9kDIbOR5cx6c9^sj%`~>+4_@82wSfSt8HSU5mI#p7OC;d*$<#{#L z62+`x%2(lvw^AY!It!94+6PZ}<-~hc1YPHE2}-zt`t_%Qq+Z%FZ?Bd*PYGES6RTDT z-gP470-nyBV)Wj87Hj-B4Xw(U`FeASHrgR2odi!)c@)(QrQswg6r0j|4155lFR4Q`Svlz(|;q$UJR7~*`qqGa~?^@(s(A%pzrQc+eUtcbIox;dz+xWf ze|?^@^R}GVbGLhmPNOV@zDWshnMKq61|l>@Sd9KlR<_iU7)94dbBn(G+v)xy%~N{* z+{Q`Wj)Knrq`K+!ag5XI#kJ+71R-p7wPx;R+<$cYYzaOUs|7gJt?V@XxQV zFFuEmE3Twj-Y2OKI^-4IF7G!me(mzU!U8p4$om)Qc6ndn@;onjN`Za~-7fD>Flg!@ z^7gr-x-GBhc6qOreC_X3^b0!V75z%v{=SdFzty(C|Hk=!yG`D2VtD`6w!bgoNKUlL z`+evc__4pg#94i}P2Q6wL>&7o`Zf5mzrQW{$b0G}^+AWcqJKzz=)*S7{b!P=)Q4Lb z@do_Z-?KQ|_n<=`PT;U)=VO0Ypnm}!^1cVH(;fSJEV~Q4y}zPgf*oWd@_$TGQ> QT@pf0-oQR%vY*Zd0F(I?7ytkO diff --git a/modules/prefab_controller.lua b/modules/prefab_controller.lua index 72a703bd3..4e886ea6c 100644 --- a/modules/prefab_controller.lua +++ b/modules/prefab_controller.lua @@ -142,9 +142,8 @@ function PREFAB_CONTROL.fine_tune_filters() } local new_fab_groups_multipliers = { - gtd_mscottpaper = 1.25, - -- - gtd_pools = 1.25 + gtd_AI_goth_comp_yellow_stained_glass = 1.5, + gtd_AI_boiler_room = 1.5 } local new_themes_multipliers = { diff --git a/modules/zdoom_orp_generative_resources.lua b/modules/zdoom_orp_generative_resources.lua index 7af41a65d..12226bc2c 100644 --- a/modules/zdoom_orp_generative_resources.lua +++ b/modules/zdoom_orp_generative_resources.lua @@ -107,8 +107,8 @@ OBS_RESOURCE_PACK_GENAI_MATERIALS = -- computers 256px SDMSRCP1 = { t="SDMSRCP1", f="SDOM_FT1"}, - SDMSRCP2 = { t="SDMSRCP1", f="SDOM_FT4"}, - SDMSRCP3 = { t="SDMSRCP1", f="SDOM_FT6"}, + SDMSRCP2 = { t="SDMSRCP2", f="SDOM_FT4"}, + SDMSRCP3 = { t="SDMSRCP3", f="SDOM_FT6"}, -- flats SDOM_FT1 = { t="SDOM_WL1", f="SDOM_FT1"}, SDOM_FT2 = { t="SDOM_WL2", f="SDOM_FT2"}, @@ -1832,8 +1832,7 @@ OBS_RESOURCE_PACK_GENAI_ROOM_THEMES = SDTBNKWA = 5, SDTBNKWB = 5, SDTBNKWC = 5, - SDTBNKWD = 5, - SDTBNKWE = 5 + SDTBNKWD = 5 }, floors = @@ -1961,25 +1960,15 @@ OBS_RESOURCE_PACK_GENAI_ROOM_THEMES = SD_TSGF4 = 15, SD_TSGF5 = 15, SD_TSGF6 = 15, - SD_TSGF7 = 15, - SD_TSGF8 = 15, SD_TSGF9 = 15, SD_TSGFA = 15, SD_TSGFB = 15, SD_TSGFC = 15, - SD_TBBF1 = 15, - SD_TBBF2 = 15, - SD_TBBF3 = 15, SD_TBBF4 = 15, SD_TBBF5 = 15, - SD_TBBF6 = 15, SD_TBBF7 = 15, - SD_TBBF8 = 15, - SD_TBBF9 = 15, SD_TBBFA = 15, - SD_TBBFB = 15, - SD_TBBFC = 15, SD_TBBFD = 15, -- @@ -3118,6 +3107,7 @@ OBS_RESOURCE_PACK_GENAI_ROOM_THEMES = SDMHAZF6 = 15 }, }, + -- START OF URBAN THEMES urban_greenFloorsGreyWalls = --40 { @@ -3859,30 +3849,6 @@ OBS_RESOURCE_PACK_GENAI_ROOM_THEMES = } }, - urban_Outdoors_generic = --50 - { - env = "outdoor", - prob = 50, - is_generative = true, - - floors = - { - SDOM_FT1 = 7, - SDOM_FT2 = 7, - SDOM_FT3 = 7, - SDOM_FT4 = 7, - SDOM_FT5 = 7, - SDOM_FT6 = 7, - SDOM_FT7 = 7, - SDOM_FT8 = 7, - SDOM_FT9 = 7, - SDOM_FTA = 7, - - SDOM_FG1 = 10, - SDOM_FG2 = 10 - } - }, - urban_whiteWallsDarkFloors = --30 { env = "building", @@ -4391,8 +4357,7 @@ OBS_RESOURCE_PACK_GENAI_ROOM_THEMES = SDTBNKWA = 5, SDTBNKWB = 5, SDTBNKWC = 5, - SDTBNKWD = 5, - SDTBNKWE = 5 + SDTBNKWD = 5 }, floors = @@ -4486,6 +4451,35 @@ OBS_RESOURCE_PACK_GENAI_ROOM_THEMES = } }, + urban_Outdoors_generic = --50 + { + env = "outdoor", + prob = 50, + + floors = + { + S_W2WFR1 = 7, + S_W2WFR2 = 7, + S_W2WFR3 = 7, + S_W2WFR4 = 7, + S_W2WFR5 = 7, + S_W2WFR6 = 7, + S_W2WFR7 = 7, + S_W2WFR8 = 7, + + SDOM_FT1 = 7, + SDOM_FT2 = 7, + SDOM_FT3 = 7, + SDOM_FT4 = 7, + SDOM_FT5 = 7, + SDOM_FT6 = 7, + SDOM_FT9 = 7, + SDOM_FTA = 7, + + SDOM_FG1 = 10, + SDOM_FG2 = 10 + } + }, -- END OF THEMES TABLES } @@ -4597,8 +4591,7 @@ OBS_RESOURCE_PACK_GENAI_THEMES = SDTBNKWA = 15, SDTBNKWB = 15, SDTBNKWC = 15, - SDTBNKWD = 15, - SDTBNKWE = 15 + SDTBNKWD = 15 }, wall_groups = @@ -4611,6 +4604,9 @@ OBS_RESOURCE_PACK_GENAI_THEMES = gtd_wall_tech_gothic_inset_gargoyle = 20, gtd_wall_tech_gothic_inset_engine = 20, gtd_wall_tech_gothic_inset_red_lite = 20, + -- + gtd_AI_goth_comp_yellow_stained_glass = 50, + gtd_AI_boiler_room = 50 } }, @@ -4654,8 +4650,7 @@ OBS_RESOURCE_PACK_GENAI_THEMES = SDTBNKWA = 6, SDTBNKWB = 6, SDTBNKWC = 6, - SDTBNKWD = 6, - SDTBNKWE = 6 + SDTBNKWD = 6 }, fences = @@ -4679,7 +4674,9 @@ OBS_RESOURCE_PACK_GENAI_THEMES = -- gtd_wall_tech_gothic_inset_gargoyle = 9, gtd_wall_tech_gothic_inset_engine = 9, - gtd_wall_tech_gothic_inset_red_lite = 9 + gtd_wall_tech_gothic_inset_red_lite = 9, + -- + gtd_AI_boiler_room = 50 } }, @@ -4714,7 +4711,9 @@ OBS_RESOURCE_PACK_GENAI_THEMES = { gtd_wall_tech_gothic_inset_gargoyle = 20, gtd_wall_tech_gothic_inset_engine = 20, - gtd_wall_tech_gothic_inset_red_lite = 20 + gtd_wall_tech_gothic_inset_red_lite = 20, + -- + gtd_AI_goth_comp_yellow_stained_glass = 50 } } } From 96ebdb7c81315062cd0e910451675fa2d7af7c8f Mon Sep 17 00:00:00 2001 From: MsrSgtShooterPerson Date: Wed, 31 Jul 2024 22:16:16 +0800 Subject: [PATCH 07/29] - New prefab set using gen AI textures, removed some materials already used by wall sets from room theme walls. --- games/doom/data/ObAddon_Textures_2.wad | Bin 2851011 -> 2864358 bytes .../doom/data/ObAddon_Textures_Brightmaps.wad | Bin 162080 -> 161094 bytes games/doom/fabs/wall/gtd_wall_AI_sets.lua | 34 ++++++++++++++++-- games/doom/fabs/wall/gtd_wall_AI_sets.wad | Bin 12222 -> 19506 bytes modules/prefab_controller.lua | 3 +- modules/zdoom_orp_generative_resources.lua | 13 ++++--- 6 files changed, 40 insertions(+), 10 deletions(-) diff --git a/games/doom/data/ObAddon_Textures_2.wad b/games/doom/data/ObAddon_Textures_2.wad index 393dd825659fe0b82ae4ab6c180a7dcd0a7e2fbf..cbd1affa0d27655711c9d8f275043c845c99eede 100644 GIT binary patch delta 21447 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 J=lZ(_{2%`7!Q21< diff --git a/games/doom/data/ObAddon_Textures_Brightmaps.wad b/games/doom/data/ObAddon_Textures_Brightmaps.wad index a2bd00971bf442606b19c06172174957be1d939b..b5ea71f2cda3090ceae864b2ae213fd755a561bf 100644 GIT binary patch delta 2193 zcmYM!c{tQt9{})kvV}rTi;$(bM3x!bOvKC>1~ZK@OA~b?BqB`p4lTDC%S|TPdR=d_ zl!|mkmXc(XP!^Zc&OC^t_iuc31Y zq;LSh`G{4Zx?BzZ7gk<_F>m?6nNDT7A^~G#V;l}=X=%B*xTvkI?cw2}q@;vGp;T2> zj~qGTU1la0alZLiaP;Pt47bWuc@fI}jFod2Fb&`b-x;3wKPssUFC3U3>?;IJPa`9} zIQ4q=Ey^V?gNK78Uyh?mP!`d2PT6&JzT9xe*$CK^Ln*b@JCVGjEwuH+zRk{w@eUfP z-u4QkDEks{bMeyvZu42;6RXZ4%^Phek`gtap)b8oQ+yJ5yG~iR(YETs9r}K2_WciP zAsZd|8V#Gc7qb+_&OdXgdun+$_0G(s&D&!R@o4@MxxTuyr_=lciwd`PQ1#UGds;qA z&FrSsoEpzO*tWXP%E*!t0(Xk0-2p}}4OHtN9C-uYj!%^n@i-hm6; zFLd=pLCS~g!3RP#*paPcCWdww($NpvPoqO#@+WPIAG|&Rti_(E_6M9wb<*J;BD|Vg z$Q!E3_mOzkHNY7wHHF-*S-xH1=nM52H4aC*sX{E=Wxs_+B5?`#DgJD&@>tWC`aQdH z(P;zLF>`NJ|J2i|4-O6}Wc74{cLMA-wdBfXL$rZgN_%t5p>_u-&Q%#1-y^rX!`qG@ z@f%Zb%jTq~Ppcw+|8jB+u5ud6RnaP;qfkceW_B9m{kTs_gjZ&9H%>%dzr;G9xEG&E zl(+9kIxPky?UuO!4Jk*;9rsyWx{ zp2pji({#A$V$ex7P$qEeVGAav6z=eEXP3inLElWA#10=_w@O%+Hri_Yq#5X6pv?3F zUwJ8KmuVS4y z8$%x`0R)prk^s1Ey_L(Sd$GgW$N$K1$vx0|`L)gP+j*QJS822{=wb7RyOsRZuyuFI zA2%H9p3w-2x-7-uuCV$I3wC)pC=+soCI{Wy;A8cG*)%ir4Ou~^p*)LBy3KA)fffFm zKrS|JElae^mVIY7m^Jxs+%%%Y=$V{W%6;9ky{~5p1pV;&E@tTCd(5KTk`1F4x~7bJ3Pw5K|?#5w%;5mBWb(*CQtoG7zrn(AW#@!ASkr$-Mi4&l6<;sj=W zYpq1>*BwL;2Nm;Qfpb9y<%&(}I;&mC3+w(Gc=LDqbON^tn}3>E{rJ$9DITfh!e2Cj zxRP8g;x*qLnAW0wn7ky>|e4i;tE3u zDwJimM;v4U!OuuRB#uTS9=C=de2vT)#B4kScvYFL5oc2P5OjW9SSk?4fwC8xlf78( z=H^RITlMuqWGaDa|JetEQ?eH=8GF(Xg6Au7-0lDfLS!!_Q<+5atzZZeznewf83sW! zQUd81nT0`v8GbkfJ+cGnG$IA_G7>2u_jSXPtzAz*5HCw$Vq9pT0xbt6#G7WokHSB$w^f_#z{Tkn4KEuThUu^F!BOP(jnTFjs^ oD0crspyj)4CX3ENsw0E7&(D=cS`Wa|g572S$W)T68xw&41Nq`zEdT%j delta 2385 zcmYM#c|26>8vyY4jCHbB12svF3Lr=7HQwMqmectE1&pGFFc<<50^JqzXCXN^g0PqS% z0nX0N&`(fJF~ojZ)6Cr|1dDv35OEB40pEoceSP1i!nY}u#Yq0_z(6S`*^MB(@|9yC zC!b<1A&U#ww&XJ&ZZ0?6|BH6XpR{Fe!{v=fJTZ2@Jv!=r`(#9n|$+EC}xL3)Z!&^vo^RASZl2 zuX+1o?Yy31-br|C`LJ53RO*ac1v6`0H7r+7-g~O$rre2<{Jrh%$Aj+J6}Sx?{;rNwk#IUN?%WUC3Nvy~UEMV&%H5{BHA`-KC9XBMOZ8BC z0Pc^{;2q??E#7X2BJ=_R4#v~lcoI&fqFdOxpH+;Nh%#H?qyUrC1BvdDPSYVTgrGC; zGqvxKy(n(~bTg#(Nk}-AMWsjSjZB-yPm!C&_N<^|uZVI;{!1y5OMY?Qb>`}Y%Wl^n zcxJM1NdMfX)A2P(ple{VRKhv+} zP$Dwo2Ke2LaNdjqj#MnHI6QbWJ>yZe;oHnWVP`)br{44TNn`TuS~j&O!;|>HEM?o5 z>a)|a*2DdY$8=jxUNr2^ITU;?LgJFOzqiSgMe8uH zeQdO`8{R*xEa(_Z^JVS!w>Poz19|#98#=|(A)Tq^45xlTD~|cxI@Nkol{eh7w>3X4 z&Szy)Tcpy}3qN(wG;rcs39ezGbJ`vDmA_zm5`}AX3G7=Uw!MaIO|3d>26+an+#TIN zndiOPX8wwn)Jt;(NpU~Z#{;a6XpHryUm*|0l=!<(uX-K!t;O-}-B_vtHRc-}M-`tI zDRVW%HQ*lCQ|I#))rz}^+l_TjB>z^F8#!8U+81}%JsS;LlSX+w4X8JEc3>9sjG5?u z3dVSjdKw&7x~%9YZ4S$sNTXIBMMEhMI^gLNoC-QE6lS|S5>QT@h^r3DMdXR>Fs`U* zSZI{9g?{)S&EY*&z9&349evo#9$TX2WYoH*Rj|SX(R^-dd!)yM{R$gbaFy+wb;n$^ zjQl8kw@U9K5mYSke)_eQGT{onuG`kE+8yCaUm7{-7GW!i(~9-ui8^|Y_&3C5IGOc~ zt6E#cgZ4BwY&?+D_(XQjKd~XAFK5JeA9*4EtRsv*Wf^yl*1`J?Zz#$Di*N` z7G?z9M*_EVQXi}#Kj*(rUL=b7+G_qoEhfsn-lNtt9A$}HT0 zdgcG|bxkJMK`7zQB)hD(YN&=CiKz;MQrahDcN# z-K5_g0+FjH64=z%2Leyl<7NuJ5b#?)A&E-Ili&adB>gahDta0MJfsBDF%ko-4?5u> z2n?-mU~h}J!Ip<01%$pW5ZFK^0s;xE33M#M7F=gT;N5qV$RITe0{2(*=~#OPAe@DO z=xRP4>tF*YaS-tT9;e%Y>T?i~L-OfFJdI3X>cefw?&|9k*y-~Sut!?Hw!pyb5(H|I z4c2VP&w#)p(xWvSzrGBC%ypZDXF@>mnykf5eXl?Oc`d%%%ry%FTh{l331_Y%)scar zQXCv9M2x^WQr|j2wZc*L#Y-UouN#|m2YDpxHc)6<%eTcb9BGyqf&a#@wwPv1v)Kfp kfRf91(;0hQk?P1`IC)yy5@i7pOc*NwK%x>Yt>^&!2RGWb%>V!Z diff --git a/games/doom/fabs/wall/gtd_wall_AI_sets.lua b/games/doom/fabs/wall/gtd_wall_AI_sets.lua index b53f4d20a..f8daaa29c 100644 --- a/games/doom/fabs/wall/gtd_wall_AI_sets.lua +++ b/games/doom/fabs/wall/gtd_wall_AI_sets.lua @@ -23,7 +23,7 @@ PREFABS.Wall_AI_goth_comp_yellow_stained_glass_1_stretchable = rank = 2, - height = 148, + height = {96,9001}, bound_z2 = 148, @@ -45,7 +45,7 @@ PREFABS.Wall_AI_goth_comp_yellow_stained_glass_1_lite_pillar_stretchable = template = "Wall_AI_goth_comp_yellow_stained_glass_1", map = "MAP03", - height = 128, + height = {96,9001}, prob = 5, rank = 2, @@ -82,3 +82,33 @@ PREFABS.Wall_AI_boiler_room_dashboards = prob = 8 } + +PREFABS.Wall_AI_boiler_room_pipes_diag = +{ + template = "Wall_AI_boiler_room_pipes", + map = "MAP19", + + where = "diagonal" +} + +-- +-- +-- + +PREFABS.Wall_AI_boiler_control_unit = +{ + file = "wall/gtd_wall_AI_sets.wad", + map = "MAP20", + + prob = 50, + group = "gtd_AI_boiler_control_unit", + + where = "edge", + deep = 16, + height = 96, + + bound_z1 = 0, + bound_z2 = 96, + + z_fit = {71,73} +} diff --git a/games/doom/fabs/wall/gtd_wall_AI_sets.wad b/games/doom/fabs/wall/gtd_wall_AI_sets.wad index a639e9ef1b45fc08b8575b3fbb6ae6fefde56cd0..118164321d0e5273724800fce844597450d43964 100644 GIT binary patch delta 4288 zcmai%&u?5;701t;U!Jii_SiH2HU5z_KU^nqij#&P4S|jmPts7=Nn?w6ft2a4iwKNl zRav0ST_91U3WdHdA{G!N7Ho=|Hp;Hy{Q(GeT@^G)SyZS%kSbWDFnqrEzL%uJ5_j}w z&hLB9x#yhw=Kj_9Z$;HhS5{WH%!Xl4!j{Mqd+QOLZgeC@{{l#+VQ0z*!nak1E(@X%LB`Rn%Z}6W;!) zY
k7&?Z5@ynb&0|#O{U%gsttgd|_c}wxF-&?@L`pTfE}L)2C!UNI>c`u83urGy zWz2wPQ@CYad`4LwmQ^Y|dCY0Dm-%HA{Lhh<9H}mFEIE`5m@e3UoLb=bS!hT3J%;9S z;FDNUc0Q->@r9}nrRyx`@(z;uFW(WIK@f5lK@E&T{O95EuF_w_NZCuM;R@P{`>q~w`1qlRyL2nz-V2+xcSnB_47BqxqbH1V@@XVp6Ar;e|2vEAI@&p{66Eh z8|&@bMBHi~{CY%Gdfm{3s}iYNv`*1ZGB5k2RxdHifM$T&QFCO1VxG2{_!rGr?wl&+ za{YdMWAF_w*Ogp7z8%fSzZonSa;QUY#! zc_byEwW!=xD?8Pm=24z+8P&IDlN4wuLbW7JV?Tp>VHzu0){~BkfpO9cBSopRUKlA= z&8r^ztP$Dog}J8JF>8&5YhzR!biydl<3^aMGOD{L+%q~8>xH|>-#-aB%fA41hGdSD zV7PV!eP2)t|A<@>ZA-zlqLKz@I=@I%m&m|bV~7QzlaXdrFl2};I~sV~K-0)8b!r_A z(Qpl@AgmXrw7(vbFr`P7iH?ueG!0ciT6#GQcIH}<{K^q)WEzzNKzbLgqtJ+dI$ZDS zgm3n@z2Y{tqP1gT1Ulf)ID4#7of%IPP;fYc(1$?=s*8N>OxY*>4)xTaqB_1>maX85 z4pnN7@2G>#Wn+Hrc;h8E;8dP+H&e`n^s1zi)MQ)6x;Fk&`TPf;Hpg6VE24|glkybhn&N< zw`tKmEGMRGSUc>{0Pmt**4c|0e=>jOslz{DM|f*E!9R{a4jhglats2z2ep*N9mHfp0xINeES>5e+aYSaJRit{-)V26f%!* zzo^%QCm#O}eCmnE_MjCEWDc*bAk4}f7XCJP=J20VJ`U@Cw+#0VcgcYWKZB8_`1%>M zUqw$mo?TUwWFEISw!j~NXAYlk>tE9ohqu6g4W6dh?40?x#?0Z9;97FHp%ja7148EU Fe*w%&n^yn; delta 33 pcmdlqgK=LxPe8b%i#Y=WgP#rq!{$6o6Q<1$Onh3KH@Ous0|21!2`vBs diff --git a/modules/prefab_controller.lua b/modules/prefab_controller.lua index 4e886ea6c..63172bc12 100644 --- a/modules/prefab_controller.lua +++ b/modules/prefab_controller.lua @@ -143,7 +143,8 @@ function PREFAB_CONTROL.fine_tune_filters() local new_fab_groups_multipliers = { gtd_AI_goth_comp_yellow_stained_glass = 1.5, - gtd_AI_boiler_room = 1.5 + gtd_AI_boiler_room = 1.5, + gtd_AI_boiler_control_unit = 1.5 } local new_themes_multipliers = { diff --git a/modules/zdoom_orp_generative_resources.lua b/modules/zdoom_orp_generative_resources.lua index 12226bc2c..10cbc50e2 100644 --- a/modules/zdoom_orp_generative_resources.lua +++ b/modules/zdoom_orp_generative_resources.lua @@ -1826,7 +1826,6 @@ OBS_RESOURCE_PACK_GENAI_ROOM_THEMES = SDTBNKW4 = 5, SDTBNKW5 = 5, SDTBNKW6 = 5, - SDTBNKW7 = 5, SDTBNKW8 = 5, SDTBNKW9 = 5, SDTBNKWA = 5, @@ -4351,7 +4350,6 @@ OBS_RESOURCE_PACK_GENAI_ROOM_THEMES = SDTBNKW4 = 5, SDTBNKW5 = 5, SDTBNKW6 = 5, - SDTBNKW7 = 5, SDTBNKW8 = 5, SDTBNKW9 = 5, SDTBNKWA = 5, @@ -4585,7 +4583,6 @@ OBS_RESOURCE_PACK_GENAI_THEMES = SDTBNKW4 = 15, SDTBNKW5 = 15, SDTBNKW6 = 15, - SDTBNKW7 = 15, SDTBNKW8 = 15, SDTBNKW9 = 15, SDTBNKWA = 15, @@ -4605,8 +4602,10 @@ OBS_RESOURCE_PACK_GENAI_THEMES = gtd_wall_tech_gothic_inset_engine = 20, gtd_wall_tech_gothic_inset_red_lite = 20, -- - gtd_AI_goth_comp_yellow_stained_glass = 50, - gtd_AI_boiler_room = 50 + gtd_AI_goth_comp_yellow_stained_glass = 35, + -- + gtd_AI_boiler_room = 35, + gtd_AI_boiler_control_unit = 35 } }, @@ -4644,7 +4643,6 @@ OBS_RESOURCE_PACK_GENAI_THEMES = SDTBNKW4 = 6, SDTBNKW5 = 6, SDTBNKW6 = 6, - SDTBNKW7 = 6, SDTBNKW8 = 6, SDTBNKW9 = 6, SDTBNKWA = 6, @@ -4676,7 +4674,8 @@ OBS_RESOURCE_PACK_GENAI_THEMES = gtd_wall_tech_gothic_inset_engine = 9, gtd_wall_tech_gothic_inset_red_lite = 9, -- - gtd_AI_boiler_room = 50 + gtd_AI_boiler_room = 35, + gtd_AI_boiler_control_unit = 35 } }, From 9d55c579450d7b02371cac5ed1be211262e1d981 Mon Sep 17 00:00:00 2001 From: MsrSgtShooterPerson Date: Fri, 2 Aug 2024 22:50:39 +0800 Subject: [PATCH 08/29] New shape rule, with a lot of jagged tiles. --- scripts/shapes.lua | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/scripts/shapes.lua b/scripts/shapes.lua index ffbdc78cc..5b129766d 100644 --- a/scripts/shapes.lua +++ b/scripts/shapes.lua @@ -7065,6 +7065,43 @@ GROW_CAUSEWAY_KNIFE = } }, +GROW_CAUSEWAY_KNIFE_SERRATED = +{ + prob = 10, + skip_prob = 80, + + structure = + { + "..xxx","/%xxx", + "...xx","AA%xx", + "....x","AA1%x", + ".....","AA%1%", + ".....","AA/1/", + ".....","AA%1%", + ".....","AA/1/", + ".....","AA%1%", + ".....","AA/1/", + "..xxx","11xxx", + "..xxx","11xxx", + "..xxx","11xxx", + "..xxx","11xxx", + "11xxx","11xxx" + }, + + diagonals = + { + ".A","A.", + "1.", + "1.", + "A1","1.", + "A1","1.", + "A1","1.", + "A1","1.", + "A1","1.", + "A1","1." + } +}, + GROW_GATED_RAMP = { prob = 20, From 35c8768b38694c8d6dff85e900e88b5d0e5f4eb5 Mon Sep 17 00:00:00 2001 From: MsrSgtShooterPerson Date: Fri, 2 Aug 2024 22:50:59 +0800 Subject: [PATCH 09/29] Reduced restriction for size_limit on start rooms. --- scripts/room.lua | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/scripts/room.lua b/scripts/room.lua index 38b855f12..8ae0ad6cf 100644 --- a/scripts/room.lua +++ b/scripts/room.lua @@ -2235,22 +2235,22 @@ function Room_choose_size(LEVEL, R, not_big) elseif R.is_big then R. size_limit = sum * rand.range( 2,2.7 ) R.floor_limit = math.round(R.floor_limit * rand.key_by_probs( - { - [1]=1, - [1.5]=2, - [2]=3, - [2.5]=4, - [3]=2, - [4]=2, - [5]=1, - [6]=1, - [8]=1, - [10]=1, - [14]=1, - [18]=1, - } - ) - ) + { + [1]=1, + [1.5]=2, + [2]=3, + [2.5]=4, + [3]=2, + [4]=2, + [5]=1, + [6]=1, + [8]=1, + [10]=1, + [14]=1, + [18]=1, + } + ) + ) --Trying a different formula for is_big rooms --[[rand.key_by_probs( @@ -2316,8 +2316,9 @@ function Room_choose_size(LEVEL, R, not_big) elseif not LEVEL.is_procedural_gotcha then if R.is_start then - R.size_limit = int(R.size_limit / 3) + R.size_limit = int(R.size_limit / 2) R.floor_limit = int(R.floor_limit / 2) + R.size_limit = math.clamp(rand.pick({8,16,24,32}),R.size_limit,EXTREME_H) end end From f4373142a8e8ececb98cd8685ad865a5076b13ea Mon Sep 17 00:00:00 2001 From: MsrSgtShooterPerson Date: Fri, 2 Aug 2024 22:53:05 +0800 Subject: [PATCH 10/29] New hell and tech gen AI room theme: catacomb walls and... computer sockets? --- games/doom/data/ObAddon_Textures_2.wad | Bin 2864358 -> 2954051 bytes .../doom/data/ObAddon_Textures_Brightmaps.wad | Bin 161094 -> 163921 bytes modules/miscellaneous.lua | 4 +- modules/prefab_controller.lua | 8 +- modules/zdoom_armaetus_materials.lua | 50 ++++ modules/zdoom_orp_generative_resources.lua | 233 ++++++++++++++++++ 6 files changed, 289 insertions(+), 6 deletions(-) diff --git a/games/doom/data/ObAddon_Textures_2.wad b/games/doom/data/ObAddon_Textures_2.wad index cbd1affa0d27655711c9d8f275043c845c99eede..afa559773972a908e914e7cbe5d5fd02fb18b26a 100644 GIT binary patch delta 103056 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 jgYvrLf=NIvQhSBEZ;`*)lmSpYuIhx^#{9) zV(jSR?dVXjpkbl>P7ezMEZbmVgoOzfW>{EYVTFYa7Is)TVBv&?3l?rzw!^Zc#*U6B zR;ap`c@_-`yIYzVI-Wr>G_jYBGa9OmPb@*7D{4n7vc1)|O*VcURIj_YSS`iR%Uq(& zF|ljHcUj%=Ug_L5i)zQ#95+JtZP9@Y&!D!C>_hF$5-dODO`-=EWMwZ1q$Is^d~7qr zdo7EO_i48Ro{Q<@RL;`YkA<`{|O=RIWn1cbxQSPFn6N@zim16 z>~+We!fEw^jA?@EP8Qfj??_*_e`iQ}CF>#j;s9=&$7fy<-*?>KYm;6r+MPf7$*v<_ zqcZ|$(-D6~X&|ON`kT7harPiVc9YhK4bi_^Yx9BhE$ zQb7;kA=?{RDA5}@(J}PwA^e4y@ONvOr5IodNQL`jh)`!;fDNzV^bA* zFo59A&cMs#c(=cOx04g^0lN=H-{wy_q0*e1W(rzey>6eco;tHc8+$WMuVF(==0W^fxV$93Hh8o#JjKlk4QXjHhK?gTGWmInDd->36WOqvS! ze7bdAd|Q*^H@SV)WPiW@YNNcA0vr3)$v5jCEA-aNy`b@r_nds=6fZSFf$k zlMj0I$n8jS4~;gF(u#gX^e@OOnQXI8>B;VKRfXJ_qpfhcY|h0k5b=s-yl0O01M9e$ z+cCF`Tn9xsu5r9gh{z&{w>KqTRdmzP=#Ps(7hSrpwl(n861W9y2R0lJ&i<~{jyOJ& z5zi@lINfHuYwI)JcWtL}s#bB6&CQ7yCq2^DbH%TW5<^5@uB^LdiHjW4A;O(9P>00rUbKheKy*SeQ-FSYaHaO#bjkE;&AK-BvFi z1*BKk9Yku^A8(0Dp-!+oe0c1`Au!q~Dt9PrR!`#5(JS>cbw6kGd}nVqY}G2=LGwmT3kBO;{8E_owMNEjiTSGQG>f)f6SO%{!(i`BfwF# zUw_BXgWs|lKX1&=GTZ@pBDJ}a!$|IoHCBLGrD=f`fZ8Pw!1F-WtrCU^#`;T z8)k0T{PtQa%F(MUpL4Uy#YcV~$P)9J@;-2}#kodrLvZxR^>($-bL|T{Q9}==RPODn z4hdP=(upiJvBPZkMHT0vtakVYKh#9=K_4dBU#ROY_s;A-6vGZBG5XE+E}0SP1M$M4_K2rT;H!@2olV4+cm&!_9WoxJw1v5I6fd0utLJaFk^zLWR`@q4qq z^SwI#GGV#ZQQ2Hgg;A4l_4;*eazo5#*5lQ(SH9o$xjM6y&fSe=vK*Bu0Pj8=@(gC( z-uhy4=0an@>cZGB$SiB$uY_+^v5eV6kILWo+Pw%oo-ko3!yh%utp+`6k+~}7ldRE? z>lYd8{?S#5+7^4yi9wu)AeH~raWYQACinNSS>&+c?%NVAJri2S?kyR06JPI|Tip*e zwlB1>D(&L3z!a4xc(5j2*tsz_DbI3pr5Vpf&tCj;rAmvWr3(pIzKL9){oZ2h?z8y( zYC?_Y>NEU=`Lze)OX~{_r-uEuJPne~$kVwyA8Y%ab5|AcwImbxm>puy+~$1h$mCm+ z!1m7gO{Q+it%tj|D(rQfb3*5(#W(BPp);SIw|=^AOr&Gt&)*dT;4)1}MIUg*y zh(phnHaAmq&zn>-*`okm8Jk;;b{&@cxgX(KV~lWHOxSGGSko1I;UmO>GsM`ybRnHy zbv8k{77rX7Gs^`>RxbK^2W@RnA9b5?<;^aSf?M~Gw~qvRf7lO&eNVI{ri-y1?Z7LCX8H!ls+=B9+*(Nr90_N2z90TwurDs*n$=5z z2cGU4y20r&b6w3<4J+mH4a?VlA8k-_)7Th%zVY07bz#@#h@V3T6Mk+O$vGKY7F;K3 z{d{_WUZZ*3?HEHlv$yW_2uI7aB#|6tWwv)MtPVHxlP6`~#X@Z(9uEU#*drDF=WiLg ztgc+In=7={Tbb9Yn>0UEJI>Isyhlco>%*m{qHA4^WZr5+iKLRa)95AY{PovGnATZ|Lmti7>5S6e@O zkH3CyvhT2>b~->Es-N6paH)smZna^ad{V?uLGhK*KIqqygyEH*K#_@-!aWOt5lP!W z$r$BBbD!70a&Fe-ZZ%ElF7Xd(i$rbN)`uME=0PPU1B+^?y69kVt^bH~Nch zKfa3g)oC!7v4TMB*h$Tr&GS4ZOF2VKr23I^(vuC@8K~{{)?Qgf_+8t+)Ym2-#niT^ zXo2qCT&sxC;uYwl^Lj?i>IecII2V!J60aH~V6x0tV85r4`+Z!OfOo*-4C zBAc~+r1!W3?qTvP|Fn2p+`2bZYH~L-A3dSBlS_)3ZQpez`u9@Y*Q5;Zi)mz9#9PGK z+Kd-Oym-KDNiI{q=E=pAnkR_M@-sTe^$_J2pE;dgjvq+-XmgvVy}I1@#@Fnxeg+I= zP&PFl?;nMSSO9jQ%{N@IQPpGLTb>S3?M2Q$=B#&Y<&yLvZS;MSx4sn-UmYs41*Z(s zr}I1q(2Z<5p1x`=9BH8-YQoXR1r?ij`K& zS3-xT)D8#E@uYqD%B^)+_etoh=U1l=pT2Y%fPm9#?flwL;-5z2N z(|z;9l6!uBJoq$8c6e&j+<&F@_e{5nz{kMPKS9?2J|T45Hw zt-vm=2HO9E04hW?{8&9hJl(=GvX!Sp%-&^Zl;P>h>U@jcKH9Kw;alTe_k>*kfa-Ab ziW`)5^YZNL{<*z&Pl(D#SM-!>`DNKD<&Vs=cpXn2yxU8*5YMRt=-Oeau^S1^V#Tu; z*8E=>|E%Zy`65zFe{B3_xH)Q2|HMrG4e=*y^|er7Ztcvd|EJ~F|HM#BgMM3Zd-EV! zSp0Dy^K0~)`BDOU>Z|6_Yhl|)O}2)=EfsB5+e*J43XR(#rZ?gqa4x=y`BrXs*TBa3 z-LU0n#r|v7b#-A4zvwx2nu?#UIt2KkK;P3)eEnMKj7VF4@%@3>2OPVC$0m*Y`05vvYCQE;?hS}PUHddR+S9_AtQ)!f zD%e@{dmkxa(N0Iis=tGOJVprJTke?+X+B=+fmUv2a2DdOgju(wS32lTumA=VIy*GE zqOa)l)|T$<&zfBAhTerx%?0DhPjF9S#V^Rc55kHi7F@38CRtQEU{%NGjldB6E* z?teS$aucQT!wV!X;+Y~PyyB`JoGR))FcCC9J1h20ry|NTvla!uUo?-namC(1(XRE~E;{WKGwCm{ zhKW22KdhSPcY;OZl5AMu&5`n>S4E*iqH5r(5|=iI!8^wk*oZ}Bd{Uare|THnh+kIT zk{|j)EAx?@{OoVdUJ&$U*z3WrmE5e&q~`B^VM`ac`ft^h6{)l~Ht9n6PU7I)s}^X{ zSbw3bQ~bv3_{TBVeHIGFUb%}YSxB5xV-5Z4svoH?;*oI2np1Ek0O2Um^hj0lwi;k^z+$XPbc@kIoqq>Ec6473#dwDwtN(S zCHVfdkMRD{b>bv3oktK25{I@|GSRWn|Dr2f8=2W?fAGTDs1R`EN57+KpP{R`YUxe#JsE-x?-Bun{@D_O!sT6 z)WX-Y&#v-nj{kTX%sxH=Rmc2{71a@ z?nC%nUcR=TieI`S8r}nY+tryq1%Ezk$bCy75k%YOYlnCw%CxQStIp8RrUMa1kp6tbn!`i?^-sDViRmJ%>*Bua zZ{x!^#7m*&Z|qQH3rSo*C-$xD9lL^Ub_K-CHJ2^6Uur!<&zdlZ{RuZ!CNf- z#6FsyENNgjyBIp)c#iE+z{oR>kg$P7Ch|*(Y#U!_6cZk?q+5E^F3I1%^iea52`Uvu z4_pjQ&f$GNb}Usq%V6aO#iZ|j&BYLz#Ggj%;&m>-cn=vAK>iQ&8*pwyLD{a4bMp$k;yfe!RNl_Z2jeo+K!Hd zrH&O=0PdG}Mt!TG=ZYO0JvY5GVn)&)$O`O6r&OE?y+A&y^6N_3!rooUjDVbeUs>`$ zm!qP`{jfh;6!#^R1!?j-4>ClPB_RxIczO!hIZg}-)|Z3|0q}9iWO~{e2s~s7*=Jiy z{9)|Qh`GQ;XK;-2g4wW5ZV}X;ac&KDhW)k5c!|d@@*=Tf^4Cwr8)rWZ zsU4|a-nA411Z1SnyNP;oyTp~l4moo*FZ;Q{!x44=Avza2%k4fV8(Acvhi_bQbouTE z{vUugL_3;LthQ( zZW6tIKHZ8kICL<_hVaG`3h+GrBF^gEvR1KkNA<^%efVKjl;H{3w=|mERo$Nus}m+1 z;HAw`E+n1CFR85`u@W8lo^?5`CE;n)h#-7*6;4oQ0cbjUK<0!-SV_yx{Pc}3V^$K%y{`IEC-^RJTDx(aQlUe4**nn7G#+*l^2Xib}1sgtWC z;+rGlQEht~v0W@)-_asVdtV0et52VP`Lh69>=R`u9@H`#`Y>Xw$N9sGY1CY6yxzF9 z^ZD>jDX^`8{OoMH_73t<(7!Kxq&e*6$WhXm$c5$7gJFxG@9EE0LDvs|TaE4K_Ka4l zDG1=~239dC=w9ga>*~j&S4D3gy=oTyoi6K)=BEFDdkB%&+(UOq{C0Yz1y}ydT@F9UcnLqLTph0iQpH4+d?yk{4rqSW!TN z3C9w~-liK9*gW>-t9H21<+ZI}PggwjR$k8J+TK@Le>ov|c)4d~ES3~G;(Yj5>fG|? znFzH4_1x1U&`yqs(PN}t0-KX7qi;8`F=6syZ-)RF+p7P~uclRGt#iu(O}=US$xlE? zOkAji7(qJHs_!#p{o%%X&(cON2iw*ME7MXPyoRXt=IG+hh9^U_xeG2Y+(o*_%b9=- zV9LJ4B$XZcdnZ%TeQ`cq+xus?c3?F%1#@QB68U9NP;YN`pvA7wzs?qAcnEY`Y|D@X zz(32_U>lIt;c86uXjNx}&y$u!_f~b8wnWKf)(OMD*Yf;E*CYkw+|v)G!&({mHzoii z$cBdW{FdbNOo;$p#!G$XolYMP zT=XlD^wd$FQ6K0{d7Fs+{A}-3(_8pP((vf&^T^BL#fN@%brv^X8<0`p_g#|1!#9nN>SG~<-_N8#8UN)^KJvm@yF$~1-7mT-qeAjJLRiQjU;8pLBwqW- zk+>anr%!j3)t+~~I{ZTRb+dNuiX8l>sBpKp|A__q!xtfDpaaM62m$b&PRCQKthSOB zTzxdhJvI7GOk^!Uqd~ zO}~Ud8GlXJYyLTOd~%H-EJCmd!y*EUC@f;Ih{GZQizF;kut>uq1B)yya1VdI5>zU03K{5ut1aEp=v z%|Rn{4=+eXSd-107pzb^r0EF^aWKQ@$sg9*%;N?Ah&|D_o)_?n|I=$n5AuR(#NN<< z8R7+lNI;`KynLV%$=G;Hl@D~m@9KX#FnP0^44lWIcUU;@c{xQLmF#7-sA&T z691UMAkGiE5qqt^o%|pd2}lfa_N=$t)qp63Wbls37Kn=%x%qWup-g|;41u# z|1j?EP61#J$NR(h`F#SwSecTLwT0mUX9%kqBLH?H4Y-pJ1i(*(@vff)Ko!Co+nEJH zGs2qhH3dNv!i3Z#f?ykb*ZR|e){XxJfv75#Nfw6A*hjU3V1znJtzm|oaT#9)!6+>N z#Q-0%T?h!$0#H~Zb(awEMOYK%Ed#s2o;F{L&U(Su}1{_ zMgkaDZxaP>w0*+d(ZU(aCo2k)X|tNbxZ4(@z*Clz0ExnQPIwLKA*^AYEDDcES#{bxi5N*nSG`khab(j2)b@og5NC2Voo&Rsxv+^>=W_ z+uBP2qrd(R&KgO962OZ(3E_ktoHds-B*0;K4nfoo9h?dKS|ot#9|LRoO z?34o#wPM(Th+>ceOn)kXS({l-3REEh4D0tuflGfXhV@1k{!+jYNyzwOsuW;>Uu-A^ z!FrSAS}D+i6lA(@ObV3K?42yEow1B;(jZp>qB>9-a7CKZz@6qmVLanuX%I$BfWjK& z7-?{dHmNAAIbSRdj?yL_g$YhQ(!c>>trD~h*n@OPTu_h!;j|H;*lYVc%77~n(t+V> zm<-570vM$f%Ya3sL*t7bFu)%bYg21e*p9+%EC4v#nwc5dx?od#Wq=>oKgOXaWI)|E z8r#8hreRtJY|#H>+|zj(c>LjyqYKH@#smOL1Lb2za&R=XcciibGrV^bNk;ZIX4v&L z8L-Oqk8!{0WkDaJ$9Hnbf=jU8*2vMw!ORNl%r6V<5XKdY%YqEXe|o%uyetG>(;6K1 z8JS@@)MSAY!Z>Y$EO>-4er}g6NP*eG#K_#y%n=)FDhnzZ{xME_k1X&-^!P%1Sx|(q z#-0PRz!6U9kH2Q_5qSJp5CcN`30ZIoVJ((ZvcL--!aokgz%#Ny0j}7=#L~_JP9QT{ z7F?tTq%uzWk}NQ#`coNyJV_R)A@&;AGi8AwqSq{g@@2tqY6VmWLQyfT;y)c|9eyAS zB&ZJ7#*X%8*r;k*piJ%1)|zByj=fVa3(Vm;;9x>!++6EldkQ;Zxw~Y+bE-d;alL)A zK$qGdmGRK_L0NDCY0$|0A`4;=2TjrMZ~*EEP#p+gW??Qv$!qvdnsW%AYWysiyaIH}e`2TG%w$cKx;2}afB)ay<0S{_|Bx5Id4m1tQfrkj=g2v@QG1Z@{ z#|zEM0Z)WA$SZPS7O~e1K+FFbags3v2P90f%7Z*BT>$OGaQ4RJa|fLpfJA4 zSsu920#H~((oG(uBCJ_`Tpm==I;7|c-lyP-5Pz+&Ve()Bu_t~wCl5xbkA!minPDGa zl?ON2DUXP9{yUiA9JA%YUg{*FGQRMxJeWdQBk74eSf)-Ys$TQrb9wNd8i2|K*LU(j zk^0C;jz;iC7C$5pj?faIFm7^O9_S#9mzj|VPbjMnKL05O8biP2!2wzY6xJlJ%Y$7A z6N2e5ppm*vsrFi$%oy;QHl!4LA`ce^%p$B!&yN9ah`phQ2nJXodZRKa3= z1B5j%x?;d<#Gc>`zl{_#(awL0gVyFr4EX)0Vwj1)LNUM^anLr5#(-fY0Yk}482DQm z$}=QU{EZB+VSoYRZycS00iu8O&L(EqoO}#u`ZFRh<4DCAaBdsz{C9*K@FVvyz#B2p z*j)h!Kv>i35e7K^NeH$l)HY$jPNV~^#WoCx`7^|@o_MAU12q5ITbW_+eZ+vwzj`Y( zocS>PNT9y~tjzGq-!Ok?IeZ;A)4HZ^cq*d+Jm43GKMtA_ z3JTyEVow;uDgZK~*YY4JfLDk=QFW&R^?l;+?U=%qw1nZirWy8&0sQ{;5NW`rm@5D* ztwM?c{<)O`c#P;Zq8t=}9KxEn_A7u4gbBOc6u>0HT5?_rpcG+Zx1Yk_M+m=ync?I@ zAqCL%#{h1?PedvJ0&Nme3^YVz6@VCRyBPysa4 zW<7<8lMnum0PVI+;ooq7wA-*5_A^wi0F0;|P_DyfSjiRz;EOQszc&itDZ+TmPYS?_ z+9B0mBXt6Su^Ul0{BHufXakZC`FJ$W0D2DjJL5Vf=q;QP#&Km_=z;&6C@RZ zJGBG&vIrlyGs=pf4q;p=Q4zeLCPdZaPnjwLW<;+MZl?%psqv_KO~OG%FpV%l+7tfA zW!kEMFE(Zn76ac3WT^)5R%&d9vkp@Pml4K)i1|O(IGUgc$cSEZG+hxuNI=4o0!0vk z=(UDQ|0YC@Pt2%M1SZr1DE9=&3_I8YXZWwd4EL%_5$r}7&olV9Vu}O2vrQ@j!#^Fs ztSS6U5j6fe3t%P;pp-y9;;$9Kp#(M%CWZ+sfe@O#lLcgLjGe(Kfo+`dGK0UPv9LDA zEov!&qQ3^##`qhiO5g~>8XNXXV3HP)Vy`()QUZMl6YAh^D>@O@x)i1a)O%O#nH*$)Zu@wYV@oC diff --git a/games/doom/data/ObAddon_Textures_Brightmaps.wad b/games/doom/data/ObAddon_Textures_Brightmaps.wad index b5ea71f2cda3090ceae864b2ae213fd755a561bf..29e5f40c22a2a151021591ebd4aab38b9e33a1c4 100644 GIT binary patch delta 2974 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 diff --git a/modules/miscellaneous.lua b/modules/miscellaneous.lua index 90a87be97..3dec3c20b 100644 --- a/modules/miscellaneous.lua +++ b/modules/miscellaneous.lua @@ -160,10 +160,10 @@ function MISC_STUFF.setup(self) module_param_up(self) --Brightness sliders - if not gui.check_simple_mode() then + --if not gui.check_simple_mode() then PARAM["wad_minimum_brightness"] = math.min(PARAM.float_minimum_brightness, PARAM.float_maximum_brightness) PARAM["wad_maximum_brightness"] = math.max(PARAM.float_minimum_brightness, PARAM.float_maximum_brightness) - end + --end end function MISC_STUFF.begin_level(self, LEVEL) diff --git a/modules/prefab_controller.lua b/modules/prefab_controller.lua index 63172bc12..78ccb6979 100644 --- a/modules/prefab_controller.lua +++ b/modules/prefab_controller.lua @@ -150,9 +150,9 @@ function PREFAB_CONTROL.fine_tune_filters() { any_copperRust = 1.25, - tech_iStuff = 1.125, - tech_wood_lab = 2.25, - tech_bunker = 2.5, + tech_wood_lab = 1.5, + tech_bunker = 2, + tech_cableSocketCatacombs = 2.5, -- urban_computerCatacombs = 1.125, @@ -160,7 +160,7 @@ function PREFAB_CONTROL.fine_tune_filters() urban_bunker = 2.5, -- - hell_computerCatacombs = 1.5 + hell_cableSocketCatacombs = 2 } local themes = { diff --git a/modules/zdoom_armaetus_materials.lua b/modules/zdoom_armaetus_materials.lua index 3e4a0b44c..d216a6268 100644 --- a/modules/zdoom_armaetus_materials.lua +++ b/modules/zdoom_armaetus_materials.lua @@ -2718,6 +2718,56 @@ brightmap texture SD_TSGFA { map SDTSFBRA } + +brightmap texture SDHCCBW1 +{ + map SDHCCBR1 +} + +brightmap texture SDHCCBW2 +{ + map SDHCCBR2 +} + +brightmap texture SDHCCBW3 +{ + map SDHCCBR3 +} + +brightmap texture SDHCCBW4 +{ + map SDHCCBR4 +} + +brightmap texture SDHCCBW5 +{ + map SDHCCBR5 +} + +brightmap texture SDHCCBW8 +{ + map SDHCCBR8 +} + +brightmap texture SDHCCBW9 +{ + map SDHCCBR9 +} + +brightmap texture SDHCCBWA +{ + map SDHCCBRA +} + +brightmap texture SDHCCBWB +{ + map SDHCCBRB +} + +brightmap texture SDHCCBWC +{ + map SDHCCBRC +} ]] -- aliases - when you're too lazy to write down wall and flat names in every diff --git a/modules/zdoom_orp_generative_resources.lua b/modules/zdoom_orp_generative_resources.lua index 10cbc50e2..606b2c3bd 100644 --- a/modules/zdoom_orp_generative_resources.lua +++ b/modules/zdoom_orp_generative_resources.lua @@ -477,6 +477,23 @@ OBS_RESOURCE_PACK_GENAI_MATERIALS = SD_HCCF7 = { t="SD_HCCWA", f="SD_HCCF7"}, SD_HCCF8 = { t="SD_HCCWC", f="SD_HCCF8"}, + -- cable/socket catacombs (lolwhat?2) + -- walls + SDHCCBW1 = { t="SDHCCBW1", f="S_W2WFR1"}, + SDHCCBW2 = { t="SDHCCBW2", f="S_W2WFR2"}, + SDHCCBW3 = { t="SDHCCBW3", f="S_W2WFR3"}, + SDHCCBW4 = { t="SDHCCBW4", f="S_W2WFR4"}, + SDHCCBW5 = { t="SDHCCBW5", f="S_W2WFR5"}, + SDHCCBW6 = { t="SDHCCBW6", f="S_W2WFR6"}, + SDHCCBW7 = { t="SDHCCBW7", f="S_W2WFR7"}, + SDHCCBW8 = { t="SDHCCBW8", f="S_W2WFR8"}, + SDHCCBW9 = { t="SDHCCBW9", f="S_W2WFR1"}, + SDHCCBWA = { t="SDHCCBWA", f="S_W2WFR2"}, + SDHCCBWB = { t="SDHCCBWB", f="S_W2WFR3"}, + SDHCCBWC = { t="SDHCCBWC", f="S_W2WFR5"}, + SDHCCBWD = { t="SDHCCBWD", f="S_W2WFR6"}, + SDHCCBWE = { t="SDHCCBWE", f="S_W2WFR8"}, + -- TOFFBOX1 = {t="TOFFBOX1", f="FLAT23"}, TOFFBOX2 = {t="TOFFBOX2", f="FLAT23"}, @@ -1925,6 +1942,114 @@ OBS_RESOURCE_PACK_GENAI_ROOM_THEMES = } }, + tech_cableSocketCatacombs = --10 + { + prob = 10, + env = "building", + + theme_override = "deimos", + + walls = + { + SDHCCBW1 = 5, + SDHCCBW2 = 5, + SDHCCBW3 = 5, + SDHCCBW4 = 5, + SDHCCBW5 = 5, + SDHCCBW6 = 5, + SDHCCBW7 = 5, + SDHCCBW8 = 5, + SDHCCBW9 = 5, + SDHCCBWA = 5, + SDHCCBWB = 5, + SDHCCBWC = 5, + SDHCCBWD = 5, + SDHCCBWE = 5 + }, + + floors = + { + OBTSVBF1 = 10, + OBTSVBF2 = 10, + OBTSVBF3 = 10, + S_WDWFR1 = 10, + S_WDWFR2 = 10, + S_WDWFR3 = 10, + S_WDWFR4 = 10, + S_WDWFR5 = 10, + S_WDWFR6 = 10, + S_WDWFR7 = 10, + S_WDWFR8 = 10, + SD_GTHF1 = 10, + SD_GTHF2 = 10, + SD_HCCF5 = 10, + SD_UHMF3 = 7, + SD_UHMF4 = 7, + + DARKF01 = 6, + DARKF02 = 6, + DARKF03 = 6, + G06 = 6, + G07 = 6, + G08 = 6, + G15 = 6, + G19 = 6, + GRATE2 = 6, + GRATE3 = 6, + GSTN02 = 6, + MEM01 = 5, + QFLAT06 = 5, + QFLAT09 = 5, + + FLAT3 = 5, + FLOOR0_3 = 5, + FLOOR0_5 = 5, + MFLR8_1 = 5, + SLIME14 = 5 + }, + + ceilings = + { + OBTSVBF1 = 10, + OBTSVBF2 = 10, + OBTSVBF3 = 10, + S_WDWFR1 = 10, + S_WDWFR2 = 10, + S_WDWFR3 = 10, + S_WDWFR4 = 10, + S_WDWFR5 = 10, + S_WDWFR6 = 10, + S_WDWFR7 = 10, + S_WDWFR8 = 10, + SD_GTHF1 = 10, + SD_GTHF2 = 10, + SD_HCCF5 = 10, + SD_UHMF3 = 7, + SD_UHMF4 = 7, + + DARKF01 = 6, + DARKF02 = 6, + DARKF03 = 6, + G06 = 6, + G07 = 6, + G08 = 6, + G15 = 6, + G19 = 6, + GRATE2 = 6, + GRATE3 = 6, + GSTN02 = 6, + MEM01 = 5, + QFLAT06 = 5, + QFLAT09 = 5, + + FLAT3 = 5, + FLOOR0_3 = 5, + FLOOR0_5 = 5, + MFLR8_1 = 5, + SLIME14 = 5 + } + }, + tech_Outdoors_generic = --50 { env = "outdoor", @@ -3087,6 +3212,114 @@ OBS_RESOURCE_PACK_GENAI_ROOM_THEMES = } }, + hell_cableSocketCatacombs = --50 + { + prob = 50, + env = "building", + + theme_override = "deimos", + + walls = + { + SDHCCBW1 = 5, + SDHCCBW2 = 5, + SDHCCBW3 = 5, + SDHCCBW4 = 5, + SDHCCBW5 = 5, + SDHCCBW6 = 5, + SDHCCBW7 = 5, + SDHCCBW8 = 5, + SDHCCBW9 = 5, + SDHCCBWA = 5, + SDHCCBWB = 5, + SDHCCBWC = 5, + SDHCCBWD = 5, + SDHCCBWE = 5 + }, + + floors = + { + OBTSVBF1 = 10, + OBTSVBF2 = 10, + OBTSVBF3 = 10, + S_WDWFR1 = 10, + S_WDWFR2 = 10, + S_WDWFR3 = 10, + S_WDWFR4 = 10, + S_WDWFR5 = 10, + S_WDWFR6 = 10, + S_WDWFR7 = 10, + S_WDWFR8 = 10, + SD_GTHF1 = 10, + SD_GTHF2 = 10, + SD_HCCF5 = 10, + SD_UHMF3 = 7, + SD_UHMF4 = 7, + + DARKF01 = 6, + DARKF02 = 6, + DARKF03 = 6, + G06 = 6, + G07 = 6, + G08 = 6, + G15 = 6, + G19 = 6, + GRATE2 = 6, + GRATE3 = 6, + GSTN02 = 6, + MEM01 = 5, + QFLAT06 = 5, + QFLAT09 = 5, + + FLAT3 = 5, + FLOOR0_3 = 5, + FLOOR0_5 = 5, + MFLR8_1 = 5, + SLIME14 = 5 + }, + + ceilings = + { + OBTSVBF1 = 10, + OBTSVBF2 = 10, + OBTSVBF3 = 10, + S_WDWFR1 = 10, + S_WDWFR2 = 10, + S_WDWFR3 = 10, + S_WDWFR4 = 10, + S_WDWFR5 = 10, + S_WDWFR6 = 10, + S_WDWFR7 = 10, + S_WDWFR8 = 10, + SD_GTHF1 = 10, + SD_GTHF2 = 10, + SD_HCCF5 = 10, + SD_UHMF3 = 7, + SD_UHMF4 = 7, + + DARKF01 = 6, + DARKF02 = 6, + DARKF03 = 6, + G06 = 6, + G07 = 6, + G08 = 6, + G15 = 6, + G19 = 6, + GRATE2 = 6, + GRATE3 = 6, + GSTN02 = 6, + MEM01 = 5, + QFLAT06 = 5, + QFLAT09 = 5, + + FLAT3 = 5, + FLOOR0_3 = 5, + FLOOR0_5 = 5, + MFLR8_1 = 5, + SLIME14 = 5 + } + }, + hell_Outdoors_generic = { env = "outdoor", From 511a9bb063cea66562db564cd8e1a878fe368412 Mon Sep 17 00:00:00 2001 From: MsrSgtShooterPerson Date: Sat, 3 Aug 2024 14:03:39 +0800 Subject: [PATCH 11/29] Fixed wrong material assignment in room theme. --- modules/zdoom_orp_generative_resources.lua | 64 +++++++++++----------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/modules/zdoom_orp_generative_resources.lua b/modules/zdoom_orp_generative_resources.lua index 606b2c3bd..e95b1b469 100644 --- a/modules/zdoom_orp_generative_resources.lua +++ b/modules/zdoom_orp_generative_resources.lua @@ -1972,14 +1972,14 @@ OBS_RESOURCE_PACK_GENAI_ROOM_THEMES = OBTSVBF1 = 10, OBTSVBF2 = 10, OBTSVBF3 = 10, - S_WDWFR1 = 10, - S_WDWFR2 = 10, - S_WDWFR3 = 10, - S_WDWFR4 = 10, - S_WDWFR5 = 10, - S_WDWFR6 = 10, - S_WDWFR7 = 10, - S_WDWFR8 = 10, + S_W2WFR1 = 10, + S_W2WFR2 = 10, + S_W2WFR3 = 10, + S_W2WFR4 = 10, + S_W2WFR5 = 10, + S_W2WFR6 = 10, + S_W2WFR7 = 10, + S_W2WFR8 = 10, SD_GTHF1 = 10, SD_GTHF2 = 10, SD_HCCF5 = 10, @@ -2013,14 +2013,14 @@ OBS_RESOURCE_PACK_GENAI_ROOM_THEMES = OBTSVBF1 = 10, OBTSVBF2 = 10, OBTSVBF3 = 10, - S_WDWFR1 = 10, - S_WDWFR2 = 10, - S_WDWFR3 = 10, - S_WDWFR4 = 10, - S_WDWFR5 = 10, - S_WDWFR6 = 10, - S_WDWFR7 = 10, - S_WDWFR8 = 10, + S_W2WFR1 = 10, + S_W2WFR2 = 10, + S_W2WFR3 = 10, + S_W2WFR4 = 10, + S_W2WFR5 = 10, + S_W2WFR6 = 10, + S_W2WFR7 = 10, + S_W2WFR8 = 10, SD_GTHF1 = 10, SD_GTHF2 = 10, SD_HCCF5 = 10, @@ -3242,14 +3242,14 @@ OBS_RESOURCE_PACK_GENAI_ROOM_THEMES = OBTSVBF1 = 10, OBTSVBF2 = 10, OBTSVBF3 = 10, - S_WDWFR1 = 10, - S_WDWFR2 = 10, - S_WDWFR3 = 10, - S_WDWFR4 = 10, - S_WDWFR5 = 10, - S_WDWFR6 = 10, - S_WDWFR7 = 10, - S_WDWFR8 = 10, + S_W2WFR1 = 10, + S_W2WFR2 = 10, + S_W2WFR3 = 10, + S_W2WFR4 = 10, + S_W2WFR5 = 10, + S_W2WFR6 = 10, + S_W2WFR7 = 10, + S_W2WFR8 = 10, SD_GTHF1 = 10, SD_GTHF2 = 10, SD_HCCF5 = 10, @@ -3283,14 +3283,14 @@ OBS_RESOURCE_PACK_GENAI_ROOM_THEMES = OBTSVBF1 = 10, OBTSVBF2 = 10, OBTSVBF3 = 10, - S_WDWFR1 = 10, - S_WDWFR2 = 10, - S_WDWFR3 = 10, - S_WDWFR4 = 10, - S_WDWFR5 = 10, - S_WDWFR6 = 10, - S_WDWFR7 = 10, - S_WDWFR8 = 10, + S_W2WFR1 = 10, + S_W2WFR2 = 10, + S_W2WFR3 = 10, + S_W2WFR4 = 10, + S_W2WFR5 = 10, + S_W2WFR6 = 10, + S_W2WFR7 = 10, + S_W2WFR8 = 10, SD_GTHF1 = 10, SD_GTHF2 = 10, SD_HCCF5 = 10, From 49b49ae435f62c4daedd5708e6082dc5a455fc3d Mon Sep 17 00:00:00 2001 From: MsrSgtShooterPerson Date: Sat, 3 Aug 2024 23:59:51 +0800 Subject: [PATCH 12/29] Removed duplicate textures that were still being referenced in recent room theme changes. --- games/doom/data/ObAddon_Textures_2.wad | Bin 2954051 -> 2949187 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/games/doom/data/ObAddon_Textures_2.wad b/games/doom/data/ObAddon_Textures_2.wad index afa559773972a908e914e7cbe5d5fd02fb18b26a..77b1055897a3d302f1b80aa0acfb4fe5e1f9a889 100644 GIT binary patch delta 2732 zcmY+F32YTr6o&s&T5Ty56gLp4D9qeDgURf#5SOmrNd^Uj zu`Vd65tqcq4cviPcc~E9P&HtT(nJtUL;;Np5)u>7+<%p!|c94+ITY1k(=FG3X4HqmxkIp=Ej8@=AAUi zsijLbtYp9WzzPjFGpD<5*YKm_jzTUhTFq-ToK+v^E4JGo(D2~ML3Z{(twmVD0q&el z8kUV14DjCV)o>0M^ar+UxK1^!3I>;areV8kP;sj6YYi_AE9Ykm*0uo+uUGtR!Crh& z!~w$RDF|<#j3$lwzEC7 zmg_pUFxyR*ju%wE@|{njsXCVMfIB6p<9AN*#F?8mI6n#=-l^kHPDtIoOUHh7B&B?|Bea%$ zuj7f~s-c+es-JbtQFlc7PWv$(hnd|AYXpv~JEeTjA1Sbh^Zokq0#Y4WshG(`q2&sJ zE0P9iAhaK~1g0@NUpEW9Q==M)eYg7}fd$D5V)lLt1ukIrC(aVs&hf#I9RfcjI~vEQ z`W6WMUg0PcHovh*U?C@@M=cd7R01+#=CbPqZeTy#f1|)X%(=O@2~143xY*GWTDRRP z&{JLju|4KqS`hnA=XwD<*`Z=Y0q)wT1YRo-5PSZM0{xue58Wd00v8NkdPm?`dBqf; zdgdd6R*r8z`h~zgj!*aR5olu0932q2ILVLVj&v(x!94FTVCucgzh)fB-U`eH$Nkhsx(vx{fAm4u4g~MED1ZV z7v-pdLYT7WO6-mkN?mqW*lyKaDp4PAQNniPl`=Vkgq=69k=R;2=(|^6FR^&&AbY!R zlGqtfki`2Bt&~{BelY4ziO(rNDhH(Yu91lUrZjc7XVSBpV&0Z?+?l2$d9Yhz3$vYm zSi(wH82iqRk4e1EzH2-!F`3z$^Q^?<%>FN%B@Wdhia#`QfnfI=5-)Q=Dtc@13_J6! zp}o6LqOa@|I~zWg@RLgv`|jsoN{mmw8!>x7@0Hk)99hi%%7YT~l6N0-u;(|4kLn}Z zB5HsJQjeaf>_E%xV!mlg%*SZLmY~!!o1WEuRR%I@g4TR`L1^_4H*hVpJ#~zM_n4hy zlMNKqgeu<6*ai-%50zriNE`SoQqN8e_!9~SHY8li(}Y{+8raBew=Obpl-Zeft${^q zf;RfD6s;$3HSj*OJ%6=zYWH>r=k>>4he?m;V0|oTV{XR>|PVQcpwONn$Vb2mw#pAr(^~3CAG49P4!H}()3w5`W5p&de_D2^NOAA H(>wkH4RN<3 delta 6830 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 From 6633d80be178eba45e543b64d7fe87e3a1a018f5 Mon Sep 17 00:00:00 2001 From: MsrSgtShooterPerson Date: Sun, 4 Aug 2024 00:00:04 +0800 Subject: [PATCH 13/29] Added new prefabs to recently added prefab sets. --- games/doom/fabs/decor/gtd_decor_AI_sets.lua | 50 ++++++++++++++++++++ games/doom/fabs/decor/gtd_decor_AI_sets.wad | Bin 0 -> 14936 bytes games/doom/fabs/wall/gtd_wall_AI_sets.lua | 11 +++++ games/doom/fabs/wall/gtd_wall_AI_sets.wad | Bin 19506 -> 24224 bytes modules/prefab_controller.lua | 2 +- 5 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 games/doom/fabs/decor/gtd_decor_AI_sets.lua create mode 100644 games/doom/fabs/decor/gtd_decor_AI_sets.wad diff --git a/games/doom/fabs/decor/gtd_decor_AI_sets.lua b/games/doom/fabs/decor/gtd_decor_AI_sets.lua new file mode 100644 index 000000000..8574afb66 --- /dev/null +++ b/games/doom/fabs/decor/gtd_decor_AI_sets.lua @@ -0,0 +1,50 @@ +PREFABS.Decor_AI_goth_comp_yellow_computer_2x = +{ + file = "decor/gtd_decor_AI_sets.wad", + map = "MAP01", + + prob = 5000, + + group = "gtd_AI_goth_comp_yellow_stained_glass", + + height = 161, + where = "point", + size = 108, + + bound_z1 = 0 +} + +PREFABS.Decor_AI_goth_comp_yellow_computer = +{ + template = "Decor_AI_goth_comp_yellow_computer_2x", + map = "MAP02", + + prob = 2500, + + height = 152, + size = 76 +} + +-- + +PREFABS.Decor_AI_boiler_machine_A = +{ + template = "Decor_AI_goth_comp_yellow_computer_2x", + map = "MAP10", + + group = "gtd_AI_boiler_room", + + height = 128, + size = 72 +} + +PREFABS.Decor_AI_boiler_machine_B = +{ + template = "Decor_AI_goth_comp_yellow_computer_2x", + map = "MAP11", + + group = "gtd_AI_boiler_room", + + height = 128, + size = 76 +} diff --git a/games/doom/fabs/decor/gtd_decor_AI_sets.wad b/games/doom/fabs/decor/gtd_decor_AI_sets.wad new file mode 100644 index 0000000000000000000000000000000000000000..4fa60c27474d4fe964e6a473f14b9face2faa93a GIT binary patch literal 14936 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 I1$WB(zft|UyZ`_I literal 0 HcmV?d00001 diff --git a/games/doom/fabs/wall/gtd_wall_AI_sets.lua b/games/doom/fabs/wall/gtd_wall_AI_sets.lua index f8daaa29c..6c7ef4951 100644 --- a/games/doom/fabs/wall/gtd_wall_AI_sets.lua +++ b/games/doom/fabs/wall/gtd_wall_AI_sets.lua @@ -112,3 +112,14 @@ PREFABS.Wall_AI_boiler_control_unit = z_fit = {71,73} } + +PREFABS.Wall_AI_boiler_control_box = +{ + template = "Wall_AI_boiler_control_unit", + map = "MAP21", + + prob = 10, + group = "gtd_AI_boiler_control_unit", + + z_fit = {71,73} +} diff --git a/games/doom/fabs/wall/gtd_wall_AI_sets.wad b/games/doom/fabs/wall/gtd_wall_AI_sets.wad index 118164321d0e5273724800fce844597450d43964..92977f847ea97268eac54c1fc65661a371953c37 100644 GIT binary patch delta 2778 zcmZuzJ8WB382+w(o!E|(IPWyE*vnn!UnkOLw}47 za@Wr@&pE{100!gTFn5EL@Yo1<3Emb;2}W^>Hx4&qaE#yx4?Q@J0!Cx!BMLxzZVTC%A@eQlEOf4ydX%~z&T(RY# zX#bqQVt-xkv5zxpYZgui8T(^-Ey&uwsh922)P#GY#X^v_4+_O(CvvvDu*%)N#WlXE zA=QB=?TWoIHQKR}z<2E>Plk9K?liHH5?j#auKQ-Z!m0}~qogjrGKFrqLcs8k+r|glkt{s}f+wore@hGvNwa6^V#4T)sA^9G#>D%#7pdz&J1CgFXzg!(t$?SZL%y;&~mLD*-*(iMcooGSx2i+&?-0{HHlPfv3>a-aI|_C^jk|E z2$r{2xAfNwPS2S1n4+Uc$E4_ZBEBF`)@dg&j>yiPpKfR>^}CZS7`%#aYBexg^pQ&w z2`%{oo|3;l?zE{N!Lgu~7r&Wy=OGIN6~>dR#8mi1e5@`co%CkO?5M=>kSUZ;X37C- zR$x}LJf(le4>?UKM1F*7M#+1vQ<6O{IaxOVo9>ur=Q?8tTG(lA79Ba%__k`|j`ciu0aX5{D@S5b1!L zEmOP^P50H92^bao_~I~US=wYybVyUPt$C&jju@z{F;pQXI+H*89+B!YIa7Ct$BtsG z&N-JsH+3rD&p6klGjeiu$CIUWo?g=9hI4w5tQsVv=rwusJP;bE3Pe7}dQ6TSs?}%o zK$v!Eo)wtaz7s=rCPVeTL#p2l7>!;z;maGE8rIFFB8Oxuyvi+LPkb9;Tiyc+*ZQuLUQBJ)3peX>%rPgln5T|U+Lxw~@SwpQ|)d0gd>=oYqZ zDPOe1tAm$DI8F7ZsmQjP=HDLQHJS@@QEfNG!KD9OMgG>5SQJxixmo+=Sn1KjO_ORo z+;q0!&GqZcWs=YL``5O1Ufc8gL6-3L)=sTj+uVD44LHpP-rK6W{U5u)=ajouySZOG ztnHcWz delta 34 qcmZ3mmvPe!MxKChN0$f&28K;;3=Es|EKQg;J1`ZwY%YjsU Date: Sun, 4 Aug 2024 22:02:40 +0800 Subject: [PATCH 14/29] Attempted to fix issue with table.insert inputs for Doom 1 resource pack being reversed --- modules/zdoom_armaetus_doom1_themes.lua | 60 ++++++++++++------------ modules/zdoom_armaetus_epic_textures.lua | 25 ++++++---- 2 files changed, 45 insertions(+), 40 deletions(-) diff --git a/modules/zdoom_armaetus_doom1_themes.lua b/modules/zdoom_armaetus_doom1_themes.lua index 1c7eda93e..4f32cb1ae 100644 --- a/modules/zdoom_armaetus_doom1_themes.lua +++ b/modules/zdoom_armaetus_doom1_themes.lua @@ -852,44 +852,44 @@ OBS_RESOURCE_PACK_DOOM1_ROOM_THEMES = walls = { - ASH01 = 30, - ASH02 = 15, - ASH03 = 30, - ASH05 = 40, - ROK02 = 20, - SP_ROCK1 = 50, - SP_ROCK2 = 10, - ROK04 = 20, - ROK05 = 30, - ROK06 = 50, - ROK07 = 15, - ROK12 = 30, - ROK13 = 30, - ROK14 = 60, - ROK15 = 60, - ROK20 = 20, - ROK21 = 25, - ROK22 = 30, - ROK23 = 30, - ROK24 = 10, - ROK25 = 15, - ROK26 = 15, + ASH01 = 30, + ASH02 = 15, + ASH03 = 30, + ASH05 = 40, + ROK02 = 20, + SP_ROCK1 = 50, + SP_ROCK2 = 10, + ROK04 = 20, + ROK05 = 30, + ROK06 = 50, + ROK07 = 15, + ROK12 = 30, + ROK13 = 30, + ROK14 = 60, + ROK15 = 60, + ROK20 = 20, + ROK21 = 25, + ROK22 = 30, + ROK23 = 30, + ROK24 = 10, + ROK25 = 15, + ROK26 = 15 }, floors = { - FLAT10 = 80, - MFLR8_3 = 40, - RROCK03 = 50, - RROCK09 = 20, + FLAT10 = 80, + MFLR8_3 = 40, + RROCK03 = 50, + RROCK09 = 20 }, ceilings = { - FLAT10 = 60, - MFLR8_3 = 50, - RROCK03 = 40, - RROCK09 = 40, + FLAT10 = 60, + MFLR8_3 = 50, + RROCK03 = 40, + RROCK09 = 40 }, }, diff --git a/modules/zdoom_armaetus_epic_textures.lua b/modules/zdoom_armaetus_epic_textures.lua index 919ae3922..dc1daefe0 100644 --- a/modules/zdoom_armaetus_epic_textures.lua +++ b/modules/zdoom_armaetus_epic_textures.lua @@ -1078,18 +1078,23 @@ function OBS_RESOURCE_PACK_EPIC_TEXTURES.put_new_materials() OBS_RESOURCE_PACK_DOOM1_ROOM_THEMES, 2) -- NATURALS - OBS_RESOURCE_PACK_EPIC_TEXTURES.table_insert(OBS_RESOURCE_PACK_DOOM1_TECH_NATURALS, - GAME.ROOM_THEMES.tech_Outdoors.naturals) - OBS_RESOURCE_PACK_EPIC_TEXTURES.table_insert(OBS_RESOURCE_PACK_DOOM1_DEIMOS_NATURALS, - GAME.ROOM_THEMES.deimos_Outdoors.naturals) - OBS_RESOURCE_PACK_EPIC_TEXTURES.table_insert(OBS_RESOURCE_PACK_DOOM1_HELL_NATURALS, - GAME.ROOM_THEMES.hell_Outdoors.naturals) - OBS_RESOURCE_PACK_EPIC_TEXTURES.table_insert(OBS_RESOURCE_PACK_DOOM1_FLESH_NATURALS, - GAME.ROOM_THEMES.flesh_Outdoors.naturals) + OBS_RESOURCE_PACK_EPIC_TEXTURES.table_insert( + GAME.ROOM_THEMES.tech_Outdoors.naturals, + OBS_RESOURCE_PACK_DOOM1_TECH_NATURALS) + OBS_RESOURCE_PACK_EPIC_TEXTURES.table_insert( + GAME.ROOM_THEMES.deimos_Outdoors.naturals, + OBS_RESOURCE_PACK_DOOM1_DEIMOS_NATURALS) + OBS_RESOURCE_PACK_EPIC_TEXTURES.table_insert( + GAME.ROOM_THEMES.hell_Outdoors.naturals, + OBS_RESOURCE_PACK_DOOM1_HELL_NATURALS) + OBS_RESOURCE_PACK_EPIC_TEXTURES.table_insert( + GAME.ROOM_THEMES.flesh_Outdoors.naturals, + OBS_RESOURCE_PACK_DOOM1_FLESH_NATURALS) -- SINKS - OBS_RESOURCE_PACK_EPIC_TEXTURES.table_insert(OBS_RESOURCE_PACK_DOOM1_SINK_DEFS, - GAME.SINKS) + OBS_RESOURCE_PACK_EPIC_TEXTURES.table_insert( + GAME.SINKS, + OBS_RESOURCE_PACK_DOOM1_SINK_DEFS) -- inserts for hallways GAME.THEMES.tech.wide_halls = OBS_RESOURCE_PACK_TECH_WIDE_HALLS From e2fac10550d67a61d4d77ebd84bc67470462104c Mon Sep 17 00:00:00 2001 From: MsrSgtShooterPerson Date: Mon, 5 Aug 2024 16:47:04 +0800 Subject: [PATCH 15/29] Fixed texture misalignments due to wrong texture pegging on new fabs --- games/doom/fabs/decor/gtd_decor_AI_sets.wad | Bin 14936 -> 14936 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/games/doom/fabs/decor/gtd_decor_AI_sets.wad b/games/doom/fabs/decor/gtd_decor_AI_sets.wad index 4fa60c27474d4fe964e6a473f14b9face2faa93a..d6052020c328cdecf910214813263b0704d479f4 100644 GIT binary patch delta 219 zcmcana-(EIA0x}e{#r(s$-IoNKr)yyn2}}ka>imNM#jz3EYd(~vNVh2<^VP!Mkup} z-4Dpze43+MV4_?OD-Q!N1Iy&&lIB3&|0RLCCkIRA^RqC3fDwZ+gERvVQ2wHnCQ#6jOOj46$q?IPW1JeqVcSwJl+{7w1`HzCa!Q!0Z@lkhs-kKDjSoOI;@~Fc#Px jA>YLa*8WF92}&zW7Lc==d_X~N@&-jEsQcb1=12elNUcAW delta 247 zcmcana-(EIAEV5~{#r(v$-IoNKr)yym{Df)a>imNMuE-JEYd(~vNVh2<^VP!Mkup} z-4Dpze43+MfM13I1eh3@fslnkW}l|o8;seX(c#IVe$^?Pf*?;1%=5^WVWHmSxx4X`vP{1>*NK- i0-Gb`yBOihVa9+o3dmVaKA<2sd4r-7)a`E+b0h#dW Date: Mon, 5 Aug 2024 18:03:16 +0800 Subject: [PATCH 16/29] Added brightmaps for CONSOLE textures in resource pack --- .../doom/data/ObAddon_Textures_Brightmaps.wad | Bin 163921 -> 164207 bytes games/doom/fabs/decor/gtd_decor_AI_sets.lua | 10 ++++---- games/doom/fabs/decor/gtd_decor_AI_sets.wad | Bin 14936 -> 14936 bytes modules/zdoom_armaetus_materials.lua | 22 ++++++++++++++++++ 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/games/doom/data/ObAddon_Textures_Brightmaps.wad b/games/doom/data/ObAddon_Textures_Brightmaps.wad index 29e5f40c22a2a151021591ebd4aab38b9e33a1c4..ab2c0d59e590863300acee3d74236079fe41e771 100644 GIT binary patch delta 2131 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 Date: Thu, 8 Aug 2024 23:12:45 +0800 Subject: [PATCH 17/29] - New shape rule adding to jagged-edge theme. --- scripts/shapes.lua | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/scripts/shapes.lua b/scripts/shapes.lua index 5b129766d..bb0ad9db3 100644 --- a/scripts/shapes.lua +++ b/scripts/shapes.lua @@ -7102,6 +7102,43 @@ GROW_CAUSEWAY_KNIFE_SERRATED = } }, +GROW_CAUSEWAY_KNIFE_SERRATED_LIQUID = +{ + prob = 7, + skip_prob = 80, + + structure = + { + "..xxxxx","/%xxxxx", + "...xxxx","AA%xxxx", + "....xxx","AA1%xxx", + ".......","AA%1%~%", + ".......","AA/1/~/", + ".......","AA%1%~%", + ".......","AA/1/~/", + ".......","AA%1%~%", + ".......","AA/1/~/", + "..xxxxx","11xxxxx", + "..xxxxx","11xxxxx", + "..xxxxx","11xxxxx", + "..xxxxx","11xxxxx", + "11xxxxx","11xxxxx" + }, + + diagonals = + { + ".A","A.", + "1.", + "1.", + "A1","1~","~.", + "A1","1~","~.", + "A1","1~","~.", + "A1","1~","~.", + "A1","1~","~.", + "A1","1~","~." + } +}, + GROW_GATED_RAMP = { prob = 20, From 86718301203ec8dcc0dd4a347007c1ae0adb04da Mon Sep 17 00:00:00 2001 From: MsrSgtShooterPerson Date: Thu, 8 Aug 2024 23:13:06 +0800 Subject: [PATCH 18/29] - New prefab set based on genAI textures on resource pack. --- .../doom/data/ObAddon_Textures_Brightmaps.wad | Bin 164207 -> 164051 bytes games/doom/fabs/decor/gtd_decor_AI_sets.lua | 35 ++++++++++++++++++ games/doom/fabs/decor/gtd_decor_AI_sets.wad | Bin 14936 -> 37024 bytes games/doom/fabs/wall/gtd_wall_AI_sets.lua | 23 ++++++++++++ games/doom/fabs/wall/gtd_wall_AI_sets.wad | Bin 24224 -> 26376 bytes modules/prefab_controller.lua | 22 +++++------ modules/zdoom_orp_generative_resources.lua | 12 ++++-- 7 files changed, 76 insertions(+), 16 deletions(-) diff --git a/games/doom/data/ObAddon_Textures_Brightmaps.wad b/games/doom/data/ObAddon_Textures_Brightmaps.wad index ab2c0d59e590863300acee3d74236079fe41e771..07c1b105e88d04f5e2a6fdf6a67bab4fb19938db 100644 GIT binary patch delta 379 zcmaFg#C5rmizgu5(WRV$fg!n)iD9zh4dq7tt@@0dGwNBGfr5qtH9vq9e}GSjE0F&G z|G%%V?~^A_RrWJ3D7hKPgg&e zbxsLQos-vXRhr&5i;;hO%S=Z3=k?QolEE$>&dyFjmfL19G6*ul`HshDGBR94@SWz) zW@NaIQ14ta2Pg>yx;~zPp`I?fApUe-1_pnpARjkJA4Bd{j12V%zERh9MurIpzOmF% zMqh{levTobL9V($0fwJWU<2HP{DQoNIhYuvqG0^s5Zxpuu=7`%I3%Rny41v zf76(OV)2?;e|e{SC)WRbF+(r%{O>pFhOyJm-G6jNdzF8PtkrMN*i)|)f7~#=mgd_h zwZ&w8+*QLVa&viK@9j^Uez~}^eD~K=vnFO;J8&;~XHwYXSJzHO@SC45c6~9s{KRI> zf2X{rTnJqIrsdSlt-HS(yKG;1?>j?o<#k4oYbqFjo?%+H`{magAl~GqTeYXZn#st& z{lyGM`RDaUKsCWG9?s5AL6$)?85sl-e8=Qjj11Qhd?(8}j11R-WzKW5d9>F(K+rh{%0l_!kc9hW<JAXijTQCCy03rjw A-v9sr diff --git a/games/doom/fabs/decor/gtd_decor_AI_sets.lua b/games/doom/fabs/decor/gtd_decor_AI_sets.lua index 4c48c94dd..b0ddf0a26 100644 --- a/games/doom/fabs/decor/gtd_decor_AI_sets.lua +++ b/games/doom/fabs/decor/gtd_decor_AI_sets.lua @@ -27,6 +27,17 @@ PREFABS.Decor_AI_goth_comp_yellow_computer = -- +PREFABS.Decor_AI_boiler_tank_1 = +{ + template = "Decor_AI_goth_comp_yellow_computer_2x", + map = "MAP20", + + group = "gtd_AI_boiler_room", + + height = 128, + size = 80 +} + -- PREFABS.Decor_AI_boiler_machine_A = @@ -50,3 +61,27 @@ PREFABS.Decor_AI_boiler_machine_B = height = 128, size = 76 } + +-- + +PREFABS.Decor_AI_corpse_inset_pillar = +{ + template = "Decor_AI_goth_comp_yellow_computer_2x", + map = "MAP30", + + group = "gtd_AI_corpse_inset", + + height = 128, + size = 96, + + z_fit = "top", + bound_z2 = 128, + + tex_SDPBBWLA = + { + SDPBBWL8 = 1, + SDPBBWL9 = 1, + SDPBBWLA = 4, + SDPBBWLB = 4 + } +} diff --git a/games/doom/fabs/decor/gtd_decor_AI_sets.wad b/games/doom/fabs/decor/gtd_decor_AI_sets.wad index cce5249d01720d1bbea14365934123abf75bfd99..f3bdaf3ab0e53da604446a44af4e75bc5c62b565 100644 GIT binary patch literal 37024 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 X+H!yQ`Qd;59j7Pg1^%}R3jY3If)LsF delta 25 hcmZ3mkm*JVS3tO>j6wpeY{Mj}XtAR(e6#rAGWim^?0MN%nhB5~n_IB?*A zNLx`dLFaV36kp6uCtkH8FTbYW+8okk~7Dg z3cbE!p4I{?D7nlE7Fe@5i7hg=$V#7CrBx)7&#YmIh}B7~&RCTwKC?k%CrgFD#@N&E@p9xzjX+3WvkpI2n$nd-^n3E3{Ed zZ++J&kGkExeh1hWz_%v==&>*klkVWg-lggO?Aj0C2l$d3TyRt3WS>GCtYSsDUwd5R zrk>VMcjA-`Mm}@XXZ|;Cz;6C!5IetCf0Kiay16@t+kMWOzFS^v0_WJ{KLcaHGGKXk za0_Tr%W|7@A!CFqU#G8)BAYDYh@d zBo49}Y8JC&J)b@00%8w%LlSWZWP(KO0NEqag9}2U=LQ;1Cp!tsMOgyD-C>rR;+|V# zD_T69BHjv(^XnJ_y=RA%nhvvdUay+qVYcD)Ir(4CI$cyo%eN~cD^pTttFWHtO-*iv z@)H;LEpC)$XjnCrQLFR(OjiNUOAzb7CVc^LOaFP$drhrl*!9tpYr^mY@CWD)mKhaj zQ*H7t^gUHjx>uOAE=KLs^FWq5!iy&8@F77d!i+s-Eq%(?ZaKAf#Y(n-(U>Jge4c9Q6|Zidou!&_5W4 h5fd&VJOu92F^S`M+LGPq7goU8k7#%M!`=;c`8Vi_7*)*Z{R^36%f< diff --git a/modules/prefab_controller.lua b/modules/prefab_controller.lua index d77c5474f..531971480 100644 --- a/modules/prefab_controller.lua +++ b/modules/prefab_controller.lua @@ -142,24 +142,20 @@ function PREFAB_CONTROL.fine_tune_filters() } local new_fab_groups_multipliers = { - gtd_AI_goth_comp_yellow_stained_glass = 1.2, - gtd_AI_boiler_room = 1.5, - gtd_AI_boiler_control_unit = 1.5 + gtd_AI_goth_comp_yellow_stained_glass = 1.12, + gtd_AI_boiler_room = 1.25, + gtd_AI_boiler_control_unit = 1.25, + gtd_AI_corpse_inset = 1.5 } local new_themes_multipliers = { - any_copperRust = 1.25, - - tech_wood_lab = 1.5, - tech_bunker = 2, - tech_cableSocketCatacombs = 2.5, + tech_wood_lab = 1.25, + tech_bunker = 1.5, + tech_cableSocketCatacombs = 2, -- - - urban_computerCatacombs = 1.125, - urban_wood_lab = 2.25, - urban_bunker = 2.5, + urban_wood_lab = 1.25, + urban_bunker = 1.5, -- - hell_cableSocketCatacombs = 2 } local themes = diff --git a/modules/zdoom_orp_generative_resources.lua b/modules/zdoom_orp_generative_resources.lua index e95b1b469..d81e9bcd3 100644 --- a/modules/zdoom_orp_generative_resources.lua +++ b/modules/zdoom_orp_generative_resources.lua @@ -4838,7 +4838,9 @@ OBS_RESOURCE_PACK_GENAI_THEMES = gtd_AI_goth_comp_yellow_stained_glass = 35, -- gtd_AI_boiler_room = 35, - gtd_AI_boiler_control_unit = 35 + gtd_AI_boiler_control_unit = 35, + -- + gtd_AI_corpse_inset = 10 } }, @@ -4908,7 +4910,9 @@ OBS_RESOURCE_PACK_GENAI_THEMES = gtd_wall_tech_gothic_inset_red_lite = 9, -- gtd_AI_boiler_room = 35, - gtd_AI_boiler_control_unit = 35 + gtd_AI_boiler_control_unit = 35, + -- + gtd_AI_corpse_inset = 20, } }, @@ -4945,7 +4949,9 @@ OBS_RESOURCE_PACK_GENAI_THEMES = gtd_wall_tech_gothic_inset_engine = 20, gtd_wall_tech_gothic_inset_red_lite = 20, -- - gtd_AI_goth_comp_yellow_stained_glass = 50 + gtd_AI_goth_comp_yellow_stained_glass = 50, + -- + gtd_AI_corpse_inset = 40 } } } From 7e6a0163c4da82371b025106e35ea86e1f314078 Mon Sep 17 00:00:00 2001 From: MsrSgtShooterPerson Date: Fri, 9 Aug 2024 17:47:56 +0800 Subject: [PATCH 19/29] Removed debug print for room theme synthesizer in resource pack. --- modules/zdoom_armaetus_epic_textures.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/zdoom_armaetus_epic_textures.lua b/modules/zdoom_armaetus_epic_textures.lua index dc1daefe0..81e48c68e 100644 --- a/modules/zdoom_armaetus_epic_textures.lua +++ b/modules/zdoom_armaetus_epic_textures.lua @@ -666,7 +666,6 @@ end function OBS_RESOURCE_PACK_EPIC_TEXTURES.synthesize_procedural_themes() local function pick_element(lev_theme, texture_type) - gui.printf(lev_theme .." ".. texture_type .. "\n" ) local t, RT = {} local result RT = table.copy(GAME.ROOM_THEMES) From ae5d1e0738839455f3be771ad729b0d9e101e8cc Mon Sep 17 00:00:00 2001 From: MsrSgtShooterPerson Date: Tue, 13 Aug 2024 14:21:22 +0800 Subject: [PATCH 20/29] - Altered various wall fabs to have better texture alignments. --- games/doom/fabs/wall/gtd_wall_AI_sets.wad | Bin 26376 -> 27320 bytes .../fabs/wall/gtd_wall_generic_artsy_set.wad | Bin 49122 -> 49122 bytes games/doom/fabs/wall/mid_band.wad | Bin 2356 -> 3053 bytes games/doom/fabs/window/gtd_window_bay.wad | Bin 10816 -> 10816 bytes .../window/gtd_window_bulletproof_glass.wad | Bin 12122 -> 12122 bytes .../window/gtd_window_bunker_mid_space.wad | Bin 10084 -> 10084 bytes .../fabs/window/gtd_windows_tall_octagon.wad | Bin 28586 -> 28586 bytes modules/zdoom_orp_generative_resources.lua | 7 ------- 8 files changed, 7 deletions(-) diff --git a/games/doom/fabs/wall/gtd_wall_AI_sets.wad b/games/doom/fabs/wall/gtd_wall_AI_sets.wad index 1ff374130d8cb06af5181998db4520403994ca70..9ad4dc91b8849104bcb93c57d1e8cbc0b96b65fa 100644 GIT binary patch delta 609 zcmXw0Jud`N6g@M>&d#o|N+KgjSQ5!fGzziUhxM_$b~a2ScIic{+E?mGUgJmTwoy){ z)M-VjqtcFZ->f&eALrb2@7ykqHnlc}k`5@(J`6jM8jb{ht?q{xF?g|B*Y`4}cjQ_ZEP;cx< z8NMZdTyLnF+KZmLzz=a$uUUNG1ElXvwL2!X-6L-K2bF!^=I+GLJ1tu3TaWFG5uuN7o7M|>< fBM+2Uoot{U!w3`Mn7l$=Ve%qfz0Kd$-%JMpg*F?c delta 82 zcmaF#pXt$mrVUPNlNWG{POk6boy?IWIQhI9=j1xIC?MvUte`G1nJGyeDhA@`z{MBn YvP@p1E;IRyqTFN^8G+5;)Za`801^8hZvX%Q diff --git a/games/doom/fabs/wall/mid_band.wad b/games/doom/fabs/wall/mid_band.wad index 40568e24f91db3cef3b945f97a95b4159cf76e73..663fa45bfdb65f0d560ae1a93793bb43db4c9ca7 100644 GIT binary patch literal 3053 zcmcImL2nyH6n<;(+Ri#oQdEgbRKlVXLP8K4Diom#*(BR0t#PW@G~65~apDAmEjJMo z64IOzRGbh$0CD8V5$!MFzz;zF2^9x~xR~#ox34yrmQXsY**D*NGjHC!ee>D(cIxXd zipUo+UJ~HZHksr+CJJOS$xE2oazK&fGn5A^NR*)vD3n5mBA}v_GE@MXlQ=^~ppul~ zm8~Rm=<}H^hOG>Z#!?2VV5XvZpjdJlssII2%+LbRyi_u@2t?m+@P%fwvr}(0R5hdh zm)7Q1dthy+F)%K9d%m#%x-XX4UK(GTGXw?=)9f0c@r$(M9sH_7Dm zzWwjk=f{ap_WTdVwDXy?bNgh9X-%3{Gib=1(Nn=YE?sb}W{bDpyV?}D75 z93A-0-yV!4=%Z2=pzq_h_Q7Uu@(8OC^R8cvssf*+p$DunRy~{Nx-st`xdKe!$aUXg zR1v9>8CdP$m9g?0D@}H_Dp_+v8yYK4#>#u115@Rw3gS{fLvS5@r^;ixqvkZi&blwX z!7^6vVkDuDun27#oxkQ}&l7s}?*dLM!4N0LeRg@L`S}Z{XAWq??*U}sEy_;VEVBq! z4<&SwW8Or_Te?nH31ZHX3vW5x-cT-sxvt1dV6InCIoBa?$SUN! z@*bW#cFp6g$}qD$qdI=wobY!@c}kgyTFwo#yG^DbAMtzZx+t?#UaKbOqu$5e>TonT z>Fu9Yk3T&e#7EuJUiDxwI9-W{gV9-a55suWdoVa3?f0t7{lRH(x!WC{^$wN?d!HO1 z^_EYMAM9u2&S7`&&Cj|A7h7&ASKnDD^X9_4wMu?I?M7a{!bZvX-FsA$`aNB=a$% zdb#>UR1;UhcAZi8Nvh}0q#|zInRHYIcjl^V+?i}Z1{*Rl?>yaOfY^B~=^EFYi)!L} zxf42j4(O^g+%>-M2X*KQrOw52!6sB^&>3xFjZpOnd05wNwmJv(=Dx@ef$t9OQunyp zXaI@)6j*qB5S~PehgOSLq(uJf){y@-dDpN?eIlhY9a*#@#j58dNThhhTjM$3Ad%t~KXsmJ++6QlYCd&eIhH^5 z&fNaY8oxR9%%L-Jt%2uFwoTug&a57e=F~m+=F`4wl}FyhEjx}sa|dOw_j){Z%aieW zKRkC&o!-N@&S1R@^Wn(UO$zqs)uXLPD>(QuvI*}BqAysDdQ;WZQ@fHRx$KXDuGy*u&bQM<6}JCqrnY(pjgH0plSXUr5F|yz ze76Na3g5fn_7Pb49w7e33g6E-Z^8bjeDP{oi|^MA(R<|UcGZivI;?*C317$iQav)>_8`ES57LLg+{9-_wZ?X~7k;w%-T$7le0V$rzpO|x?(&CfjS=c9kU}W3e z#nQtLQZu95zJV^I|s~QWStx+BRly3zue>xJYpcVo0sq(;R34R+FT@+ z!!&t=EXXFa$x5;XAVEf*$%0JMlXu9znEXMKi}~$;hRKdRl0d%L&ClebxB-k% BHwyp& delta 170 zcmX>Qav)>_8`I-rP diff --git a/games/doom/fabs/window/gtd_window_bulletproof_glass.wad b/games/doom/fabs/window/gtd_window_bulletproof_glass.wad index 9194b0a173504596e5db7630a2c199117df41cd9..1059b42372c66782eed2d5f05052691e8a712f2c 100644 GIT binary patch delta 122 zcmcZ=cPnm#3-jazR<6k=f<}`aRQM+UkoN)7a+B`~$^pgsHmk6(@e)vw#5nl@E8paG WA{?8WgmrlEsh+IDa%ORqA|C*gU?%VY delta 122 zcmcZ=cPnm#3-ja)0vwZ#1WhJSVB(nkNj?ZnKVmikiEox;;o&8qAcJx816IDt>qIy< THwo+T;8Q(Wj^)zgC`CR1f=4Qz diff --git a/games/doom/fabs/window/gtd_window_bunker_mid_space.wad b/games/doom/fabs/window/gtd_window_bunker_mid_space.wad index 3745ad252c9df44dc84e2bb963e6c26ca5a16221..c83b3d4ac5cb6b54bab852b85772e9329a4d70a0 100644 GIT binary patch delta 254 zcmaFj_r!0*Dke^+ApdYbk5G4}$s6TlCtqL^qaW259q@nWI}Xf z7sUgCWU-qPhJkdVx>O3h=w?Vr7lBdGRfrgPS-s~y>n0Fl-E`pa{@>?3|K~mL`~IHd z1}SckrBM#^CM_14G-!1DvA`M8-c*a*kxSU29>DQxzw{~EpkhfSYY3NYM(ngbpsyP@ ztvuE??Pz0}#C|hIYIteArlA@$ek0cfIZXRaoCT)XxXT<< z7p!QX@JS`Zri$ahi7O3R&ItmxHZBk^zH6M*3802k1mG%M1Fv+&_>=teCUD*A|MTDR z2i?mSua}FHS~R#tG}?`9seJ!523yQnY~j(}?8Aaei(!`ruOAJ`=Sb?1w23(BWZ9C_ zp;7+O=?LM)mPJW&FtXUlplk`)0j%Jg3`C)qN-}1 za(Y{Oczj<~Zxmt_mkh&&-U8JlOvhjk)sy9Tgd&_~Itns!BNX8;r{f~ck4&(5O!h*C zp*aXc)O&`-hvfQ^9Mee{r15d4qte9a8$tj(#!Q4r{bK>86I}4S6K1pZ#3JWXNT@B& iYj{60Zj*uMy delta 2188 zcmd6oUr5tY6vxlqZ_a6{znN|`+E2}Gwkh~0P2@MlEy6!-PN$Ypx%Co(J}7||h)sxI zdRd-cBqO6gf)q$MOnOQRBqH$9Cl%_!Cy{#TtY`6{ zWW>n|@QLEW1&{12s@`Flvrt-Jcw^$augk|+#x#_`8=N??R9pd&tOZ6rb%PJ!eU
SMyn-NKZeBi^pm*~5{d2O2!F2FsNjG{@ z5skjA5@GQ=Z(Xt5E~# zjjm0Rk~t;P!kg^O#qn|jX@AT>TG*?545aBGalnGfhL0UCUeY^i%D6+QPV30@rx+gD7 z9Txdp5>iLW1IepWhxp*74~)JtRRazNymg?#7zOma$WNT}d+{Tzh+YoZ#F5E}ycWGW ivd{>?w+Wr%ekAT&(-W+|v_(FRZ-y&2GY<`2Q+@-w$N!)J diff --git a/modules/zdoom_orp_generative_resources.lua b/modules/zdoom_orp_generative_resources.lua index d81e9bcd3..e00b0d86f 100644 --- a/modules/zdoom_orp_generative_resources.lua +++ b/modules/zdoom_orp_generative_resources.lua @@ -1846,8 +1846,6 @@ OBS_RESOURCE_PACK_GENAI_ROOM_THEMES = SDTBNKW8 = 5, SDTBNKW9 = 5, SDTBNKWA = 5, - SDTBNKWB = 5, - SDTBNKWC = 5, SDTBNKWD = 5 }, @@ -4586,8 +4584,6 @@ OBS_RESOURCE_PACK_GENAI_ROOM_THEMES = SDTBNKW8 = 5, SDTBNKW9 = 5, SDTBNKWA = 5, - SDTBNKWB = 5, - SDTBNKWC = 5, SDTBNKWD = 5 }, @@ -4819,8 +4815,6 @@ OBS_RESOURCE_PACK_GENAI_THEMES = SDTBNKW8 = 15, SDTBNKW9 = 15, SDTBNKWA = 15, - SDTBNKWB = 15, - SDTBNKWC = 15, SDTBNKWD = 15 }, @@ -4881,7 +4875,6 @@ OBS_RESOURCE_PACK_GENAI_THEMES = SDTBNKW8 = 6, SDTBNKW9 = 6, SDTBNKWA = 6, - SDTBNKWB = 6, SDTBNKWC = 6, SDTBNKWD = 6 }, From 87f449c0d52dd47ae5007fff96ca9dbe25ddfdd8 Mon Sep 17 00:00:00 2001 From: MsrSgtShooterPerson Date: Tue, 13 Aug 2024 14:22:04 +0800 Subject: [PATCH 21/29] Selecting Episodic or Progressive while in Single map length now returns average of selected map bound sizes. --- scripts/level.lua | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/scripts/level.lua b/scripts/level.lua index 01a778f78..79ab21e6e 100644 --- a/scripts/level.lua +++ b/scripts/level.lua @@ -149,7 +149,7 @@ function Level_determine_map_size(LEV) -- now. -Reisal, July 9th, 2019, local ob_size = PARAM.float_size - + local W, H if LEV.custom_size then @@ -173,7 +173,9 @@ function Level_determine_map_size(LEV) if OB_CONFIG.length == "single" then if ob_size == gui.gettext("Episodic") or ob_size == gui.gettext("Progressive") then - ob_size = 36 + ob_size = (PARAM.float_level_lower_bound + + PARAM.float_level_upper_bound) / 2 + or 36 end end @@ -194,7 +196,7 @@ function Level_determine_map_size(LEV) result_skew = 1.20 end end - + ob_size = math.clamp(low, int(rand.irange(low, high) * result_skew), high) end From 2a4b4d546996d0041e52e820ff70e755735620ac Mon Sep 17 00:00:00 2001 From: MsrSgtShooterPerson Date: Tue, 13 Aug 2024 14:22:19 +0800 Subject: [PATCH 22/29] - New shape rules... currency signs? --- scripts/shapes.lua | 56 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/scripts/shapes.lua b/scripts/shapes.lua index bb0ad9db3..9e166eab1 100644 --- a/scripts/shapes.lua +++ b/scripts/shapes.lua @@ -12305,6 +12305,34 @@ GROW_3x_C_LIQUID = }, }, +GROW_3x_C_CENT = +{ + prob = 15, + skip_prob = 80, + + structure = + { + "xxxx11xx","xxxx11xx", + "x......x","x/1111%x", + "x......x","x111111x", + "x..xx..x","x11xx11x", + "x..xxxxx","x11xxxxx", + "........","AAAAAAAA", + "x..xxxxx","x11xxxxx", + "........","AAAAAAAA", + "x..xxxxx","x11xxxxx", + "x..xx..x","x11xx11x", + "x......x","x111111x", + "x......x","x%1111/x" + }, + + diagonals = + { + ".1","1.", + ".1","1.", + }, +}, + GROW_3x_D = { prob = 40, @@ -13524,6 +13552,34 @@ GROW_3x_S_STAIRS_LIQUID = }, }, +GROW_3x_S_DOLLAR = +{ + prob = 40, + skip_prob = 75, + + structure = + { + "xxxx.x.xxx","xxxxAxAxxx", + "x.........","x/11A1A111", + "x.........","x111A1A111", + "x..x.x.xxx","x11xAxAxxx", + "x.........","x111A1A11%", + "x.........","x%11A1A111", + "xxxx.x.x..","xxxxAxAx11", + "1.........","1111A1A111", + "1.........","1111A1A11/", + "xxxx.x.xxx","xxxxAxAxxx" + }, + + diagonals = + { + ".1", + "1.", + ".1", + "1.", + }, +}, + GROW_3x_T = { prob = 40, From 2d31eef1f8188ed058fcdedfaad70be1bce2bcf4 Mon Sep 17 00:00:00 2001 From: MsrSgtShooterPerson Date: Tue, 13 Aug 2024 14:23:03 +0800 Subject: [PATCH 23/29] Polygon coordinates in prefab reading now contain flag for world-alignment, or pre-aligned. --- scripts/prefab.lua | 68 ++++++++++++++++++++++------------------------ 1 file changed, 32 insertions(+), 36 deletions(-) diff --git a/scripts/prefab.lua b/scripts/prefab.lua index 064aae5dd..0e4bfac7e 100644 --- a/scripts/prefab.lua +++ b/scripts/prefab.lua @@ -1228,10 +1228,23 @@ function Fab_load_wad(def) C2.u1 = convert_offset(side.x_offset) C2.v1 = convert_offset(side.y_offset) end - + + if not C2.u1 then + C2.align = "world" + else + C2.align = "prealigned" + end + if side and side.sidedef_index then C2.sidedef_index = side.sidedef_index end + + --[[if side then + table.alt_print_table(side) + gui.printf("--\n") + end + table.alt_print_table(C2) + gui.printf("\n")]] return C2 end @@ -1359,6 +1372,12 @@ function Fab_load_wad(def) C2.v1 = convert_offset(side.y_offset) end + if not C2.u1 then + C2.align = "world" + else + C2.align = "prealigned" + end + if side and side.sidedef_index then C2.sidedef_index = side.sidedef_index end @@ -1707,18 +1726,11 @@ function Fab_load_wad(def) local z2 = S2.floor_h if S1.special == WADFAB_DELTA_12 then - if (def.delta) then - z1 = z1 - def.delta - else - z1 = z1 - 12 - end + z1 = z1 - (def.delta or 12) end + if S2.special == WADFAB_DELTA_12 then - if (def.delta) then - z2 = z2 - def.delta - else - z2 = z2 - 12 - end + z2 = z2 - (def.delta or 12) end z = math.max(z1, z2) @@ -1749,23 +1761,10 @@ function Fab_load_wad(def) local props = { tex = tex } - if not def.forced_offsets then - props.u1 = convert_offset(side.x_offset) - props.v1 = convert_offset(side.y_offset) - else - if def.forced_offsets[side.sidedef_index] then - if def.forced_offsets[side.sidedef_index].x then - props.u1 = def.forced_offsets[side.sidedef_index].x - else - props.u1 = convert_offset(side.x_offset) - end - if def.forced_offsets[side.sidedef_index].y then - props.v1 = def.forced_offsets[side.sidedef_index].y - else - props.v1 = convert_offset(side.y_offset) - end - end - end + -- add forced offsets as per def declarations + local offsets = def.forced_offsets and def.forced_offsets[side.sidedef_index] or {} + props.u1 = offsets.x or convert_offset(side.x_offset) + props.v1 = offsets.y or convert_offset(side.y_offset) local B = brushlib.rail_brush(x1,y1, x2,y2, z, props) @@ -2275,14 +2274,11 @@ function Fab_replacements(LEVEL, fab) local function forced_offset_check(C) if C.sidedef_index and fab.fields["forced_offsets"] then - if fab.fields["forced_offsets"][C.sidedef_index] then - if fab.fields["forced_offsets"][C.sidedef_index].x then - C.u1 = fab.fields["forced_offsets"][C.sidedef_index].x - end - if fab.fields["forced_offsets"][C.sidedef_index].y then - C.v1 = fab.fields["forced_offsets"][C.sidedef_index].y - end - end + local offset = fab.fields["forced_offsets"][C.sidedef_index] + if offset then + if offset.x then C.u1 = offset.x end + if offset.y then C.v1 = offset.y end + end end end From 3934253e02a6d98a49bcbf4d3e67b21b1e852ce4 Mon Sep 17 00:00:00 2001 From: MsrSgtShooterPerson Date: Wed, 14 Aug 2024 00:48:45 +0800 Subject: [PATCH 24/29] New shape rules based on arrow shapes. --- scripts/shapes.lua | 56 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/scripts/shapes.lua b/scripts/shapes.lua index 9e166eab1..900305721 100644 --- a/scripts/shapes.lua +++ b/scripts/shapes.lua @@ -14786,6 +14786,62 @@ GROW_SHARP_LIQUID = "1A","A1" } }, + +GROW_ARROW = +{ + prob = 15, + prob = 75, + + structure = + { + "xx/%xx","xx..xx", + "x/11%x","x....x", + "/1111%","......", + "xx11xx","xx..xx", + "xx11xx","xx..xx", + "xx11xx","xx..xx", + "xx11xx","xx..xx", + "xx11xx","xx11xx" + }, + + diagonals = + { + ".1","1.", + ".1","1.", + ".1","1." + } +}, + +GROW_ARROW_DOUBLE = +{ + prob = 20, + prob = 80, + + structure = + { + "xx/%xx","xx..xx", + "x/11%x","x....x", + "/1111%","......", + "xx11xx","xx..xx", + "1111xx","1...xx", + "1111xx","1...xx", + "xx11xx","xx..xx", + "%1111/","......", + "x%11/x","x....x", + "xx%/xx","xx..xx" + }, + + diagonals = + { + ".1","1.", + ".1","1.", + ".1","1.", + ".1","1.", + ".1","1.", + ".1","1." + } +}, + -- MSSP's huge-arse rooms. [HUGE] GROW_EXTRUSION_CORNER_4x4 = From 4e8500ec4f90230ef32f56151c6fc0766ac30661 Mon Sep 17 00:00:00 2001 From: MsrSgtShooterPerson Date: Wed, 14 Aug 2024 00:49:31 +0800 Subject: [PATCH 25/29] Retextured some objects to more likely have unusual misalignments. --- .../fabs/picture/gtd_pic_tall_glass_EPIC.wad | Bin 28674 -> 28674 bytes .../wall/gtd_wall_gothic_bottom_glass_set.wad | Bin 4454 -> 4454 bytes ...gtd_wall_gothic_churchy_glass_EPIC_set.wad | Bin 10150 -> 10150 bytes .../wall/gtd_wall_gothic_tall_glass_EPIC.wad | Bin 3554 -> 3554 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/games/doom/fabs/picture/gtd_pic_tall_glass_EPIC.wad b/games/doom/fabs/picture/gtd_pic_tall_glass_EPIC.wad index 00bb825520a4e0744c2e7be7614970a5fd0edf57..19c5bfee7df506ced6f4e70e63d6766a971ab117 100644 GIT binary patch delta 246 zcmZpAz}WPFaYF^mZBR2U13)kcj*0{+n z_7am5*yJX^U`>Fs>%jB_8L>$$9GgYhPjODZkS)e2FnOV|@Z<;CY|H`-8I#Xvi%-@N zv;fJ#_>*!}Hg6HU!8UnOlnf)&WJ6Bb$;TvSKzW7A){_l5ZGbM|+azVe2z8a%WC3Q5 z%~8^G7$?PWP2LbK0u<+(+`uL^*+NzV$mW|IVJ84|#pFM7AjeEzW2XR?JtrFiHo?hW KX0w~zoQ&eF9 delta 342 zcmZpAz}WPFaYF^mWCMAw$xSRqlLeSLCL6KaO#Z>5GP#UZVltnM*yIl^T$4jszpu(@2?75j4Kmei% ir0flg+~g9L1cb)TZ&(`GAvz0qEMN?k%@=s4u>b(YbRmxb delta 111 zcmaE+^h{|(920ANxTBBHZ&2Ly5*ulz6cub(Q!sZJ+(^vpXq9D2e diff --git a/games/doom/fabs/wall/gtd_wall_gothic_churchy_glass_EPIC_set.wad b/games/doom/fabs/wall/gtd_wall_gothic_churchy_glass_EPIC_set.wad index 2e9d15de35408f2665c082ae06fe4bb3b0932fbd..caaa199d025bbdfe56e8b58526d9bce7f727985b 100644 GIT binary patch delta 373 zcmZ4Hzs!F_0u!&VYlx!{0|Nsig9HP|WJPAN$<0iXEFjUz3z$kcVbV;K<3(gATQQ44 zq$Y50Uy#vLB1oo2j>!kOByc(Df-Ka?C=pa6qaZf%iH59D{M;V5FXVL%w delta 317 zcmZ4Hzs!F_0@LIKE)G^k1_=g^$%@Qklbe|&K_ZivFcpAkMyAQ}BC?aMfHEM_DcoSu z$rqSS!2Ba}Vv{$B=xp|5@neH%8Yl!1y0VWFw!-uJa2PERdz`(%7z{oH;k3(v*4W}4bb`$d>E&!9N B4WIx3 delta 45 ycmaDP{YZKP57Xoej2x3im`uR*G7g)`dK@+^Obm<+lk+&FCfjhTZ02IV!36+Eq71kI From ffdeb0a324f3f488c3e0e22ec1b42d9737086d95 Mon Sep 17 00:00:00 2001 From: MsrSgtShooterPerson Date: Wed, 14 Aug 2024 00:50:18 +0800 Subject: [PATCH 26/29] Initial version of OTEX module, dynamically creates material mappings and room themes based on an extracted resource table. Not guaranteed at all to make sensible themes. --- modules/zdoom_otex.lua | 199 ++++++++++ modules/zdoom_otex_db.lua | 794 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 993 insertions(+) create mode 100644 modules/zdoom_otex.lua create mode 100644 modules/zdoom_otex_db.lua diff --git a/modules/zdoom_otex.lua b/modules/zdoom_otex.lua new file mode 100644 index 000000000..57823d6fd --- /dev/null +++ b/modules/zdoom_otex.lua @@ -0,0 +1,199 @@ +------------------------------------------------------------------------ +-- MODULE: OTEX Theme Generator +------------------------------------------------------------------------ +-- +-- Copyright (C) 2024-2024 MsrSgtShooterPerson +-- +-- This program is free software; you can redistribute it and/or +-- modify it under the terms of the GNU General Public License +-- as published by the Free Software Foundation; either version 2 +-- of the License, or (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +------------------------------------------------------------------- +gui.import("zdoom_otex_db.lua") + + +OTEX_PROC_MODULE = { } + +OTEX_MATERIALS = { } +OTEX_ROOM_THEMES = { } + +OTEX_EXCLUSIONS = +{ + +} + +function OTEX_PROC_MODULE.setup(self) + PARAM.OTEX_module_activated = true + module_param_up(self) + OTEX_PROC_MODULE.synthesize_procedural_themes() +end + + +function OTEX_PROC_MODULE.synthesize_procedural_themes() + local resource_tab = {} + + resource_tab = table.copy(OTEX_RESOURCE_DB) + table.name_up(resource_tab) + + for _,resource_group in pairs(resource_tab) do + if resource_group.has_all then + for _,T in pairs(resource_group.textures) do + OTEX_MATERIALS[T]= + { + t=T, + f=rand.pick(resource_group.flats) + } + end + for _,F in pairs(resource_group.flats) do + OTEX_MATERIALS[F]= + { + f=F, + t=rand.pick(resource_group.textures) + } + end + end + + if resource_group.has_textures and + not resource_group.has_flats then + for _,T in pairs(resource_group.textures) do + OTEX_MATERIALS[T]= + { + t=T, + f="CEIL5_2" + } + end + end + + if resource_group.has_flats and + not resource_group.has_textures then + for _,F in pairs(resource_group.flats) do + OTEX_MATERIALS[F] = + { + f=F, + t="BROWNHUG" + } + end + end + end + + + -- create room themes + local group_choices = {} + for k,GN in pairs(resource_tab) do + table.insert(group_choices, k) + end + + -- try to create a consistent theme + for i = 1, 8 do + local grouping = {} + local room_theme = {} + while grouping and not grouping.has_all == true do + grouping = resource_tab[rand.pick(group_choices)] + end + + room_theme = + { + name = "any_OTEX_cons_" .. i, + env = "building", + prob = rand.pick({40,50,60}), + } + room_theme.walls = {} + room_theme.floors = {} + room_theme.ceilings = {} + + room_theme.walls[rand.pick(grouping.textures)] = 5 + + if rand.odds(25) then + grouping = resource_tab[rand.pick(group_choices)] + while grouping and not grouping.has_all == true do + grouping = resource_tab[rand.pick(group_choices)] + end + end + room_theme.floors[rand.pick(grouping.flats)] = 5 + room_theme.floors[rand.pick(grouping.flats)] = 5 + + if rand.odds(25) then + grouping = resource_tab[rand.pick(group_choices)] + while grouping and not grouping.has_all == true do + grouping = resource_tab[rand.pick(group_choices)] + end + end + room_theme.ceilings[rand.pick(grouping.flats)] = 5 + room_theme.ceilings[rand.pick(grouping.flats)] = 5 + + OTEX_ROOM_THEMES[room_theme.name] = room_theme + end + + -- try a completely random theme + for i = 1, 8 do + local RT_name = "any_OTEX_rand_" .. i + local room_theme, tab_pick = {} + + room_theme = + { + name = RT_name, + env = "building", + prob = rand.pick({40,50,60}), + } + room_theme.walls = {} + room_theme.floors = {} + room_theme.ceilings = {} + + tab_pick = rand.pick(group_choices) + while not resource_tab[tab_pick].has_textures == true do + tab_pick = rand.pick(group_choices) + end + room_theme.walls[rand.pick(resource_tab[tab_pick].textures)] = 5 + + tab_pick = rand.pick(group_choices) + while not resource_tab[tab_pick].has_flats == true do + tab_pick = rand.pick(group_choices) + end + room_theme.floors[rand.pick(resource_tab[tab_pick].flats)] = 5 + + tab_pick = rand.pick(group_choices) + while not resource_tab[tab_pick].has_flats == true do + tab_pick = rand.pick(group_choices) + end + room_theme.ceilings[rand.pick(resource_tab[tab_pick].flats)] = 5 + + OTEX_ROOM_THEMES[RT_name] = room_theme + end +end + + +function OTEX_PROC_MODULE.get_levels_after_themes() + table.deep_merge(GAME.MATERIALS, OTEX_MATERIALS, 2) + table.deep_merge(GAME.ROOM_THEMES, OTEX_ROOM_THEMES, 2) +end + +---------------------------------------------------------------- + +OB_MODULES["otex_proc_module"] = +{ + + name = "otex_proc_module", + + label = _("OTEX Resource Pack"), + + where = "other", + priority = 75, + + port = "zdoom", + + game = "doomish", + + hooks = + { + setup = OTEX_PROC_MODULE.setup, + get_levels_after_themes = OTEX_PROC_MODULE.get_levels_after_themes + }, + + tooltip = _("If enabled, generates room themes using OTEX based on a resource table."), +} diff --git a/modules/zdoom_otex_db.lua b/modules/zdoom_otex_db.lua new file mode 100644 index 000000000..0a2fba80b --- /dev/null +++ b/modules/zdoom_otex_db.lua @@ -0,0 +1,794 @@ +------------------------------------------------------------------------ +-- MODULE: OTEX Theme Generator Resource Tables +------------------------------------------------------------------------ +-- +-- Copyright (C) 2024-2024 MsrSgtShooterPerson +-- +-- This program is free software; you can redistribute it and/or +-- modify it under the terms of the GNU General Public License +-- as published by the Free Software Foundation; either version 2 +-- of the License, or (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +------------------------------------------------------------------- + +-- auto-generated via ChatGPT Python script based on the 4 characters +-- per texture lump name after the first +-- welcome to a brave new world, folks + +OTEX_RESOURCE_DB = { + ["CONC"] = { + has_flats = true, + has_textures = true, + has_all = true, + flats = {'0CONCU00', '0CONCL44', '0CONCD02', '0CONCF34', '0CONCL33', '0CONCQ01', '0CONCH01', '0CONCB15', '0CONCE01', '0CONCB50', '0CONCP01', '0CONCD01', '0CONCP02', '0CONCE03', '0CONCG33', '0CONCC01', '0CONCF01', '0CONCF33', '0CONCF00', '0CONCF43', '0CONCU33', '0CONCI01', '0CONCL01'}, + textures = {'OCONCK59', 'OCONCL20', 'OCONCK29', 'OCONCR43', 'OCONCR40', 'OCONCU43', 'OCONCD32', 'OCONCR24', 'OCONCN01', 'OCONCR33', 'OCONCI30', 'OCONCF23', 'OCONCC15', 'OCONCS43', 'OCONCS24', 'OCONCV49', 'OCONCD43', 'OCONCA33', 'OCONCE15', 'OCONCU13', 'OCONCE01', 'OCONCF90', 'OCONCK20', 'OCONCT49', 'OCONCD30', 'OCONCR44', 'OCONCW30', 'OCONCA20', 'OCONCD23', 'OCONCE40', 'OCONCF42', 'OCONCA49', 'OCONCP01', 'OCONCI15', 'OCONCG43', 'OCONCB15', 'OCONCE06', 'OCONCI40', 'OCONCL90', 'OCONCD34', 'OCONCT56', 'OCONCF37', 'OCONCD01', 'OCONCG22', 'OCONCA50', 'OCONCB59', 'OCONCG28', 'OCONCV46', 'OCONCU30', 'OCONCS34', 'OCONCE50', 'OCONCE49', 'OCONCE90', 'OCONCG39', 'OCONCO01', 'OCONCF34', 'OCONCF32', 'OCONCQ20', 'OCONCP14', 'OCONCB50', 'OCONCD40', 'OCONCG23', 'OCONCM03', 'OCONCG24', 'OCONCW47', 'OCONCD49', 'OCONCW48', 'OCONCN33', 'OCONCE58', 'OCONCD42', 'OCONCS33', 'OCONCG48', 'OCONCF38', 'OCONCI14', 'OCONCF49', 'OCONCE11', 'OCONCF33', 'OCONCM01', 'OCONCI13', 'OCONCP40', 'OCONCS40', 'OCONCE12', 'OCONCH01', 'OCONCN02', 'OCONCD24', 'OCONCD20', 'OCONCS44', 'OCONCU40', 'OCONCO05', 'OCONCE05', 'OCONCW46', 'OCONCG33', 'OCONCI50', 'OCONCW40', 'OCONCG38', 'OCONCF39', 'OCONCE13', 'OCONCA40', 'OCONCF43', 'OCONCA30', 'OCONCW49', 'OCONCD33', 'OCONCJ20', 'OCONCR34', 'OCONCF29', 'OCONCQ40', 'OCONCO03', 'OCONCT40', 'OCONCA43', 'OCONCV30', 'OCONCQ14', 'OCONCE14', 'OCONCR39', 'OCONCO04', 'OCONCN44', 'OCONCC59', 'OCONCQ90', 'OCONCA01', 'OCONCL40', 'OCONCB19', 'OCONCV40', 'OCONCF24', 'OCONCA22', 'OCONCU20', 'OCONCF22', 'OCONCE16', 'OCONCL44', 'OCONCD22', 'OCONCI01', 'OCONCN43', 'OCONCG42', 'OCONCL49', 'OCONCI20', 'OCONCR49', 'OCONCQ12', 'OCONCG47', 'OCONCL43', 'OCONCU14', 'OCONCE03', 'OCONCU34', 'OCONCG34', 'OCONCQ30', 'OCONCG32', 'OCONCC19', 'OCONCF47', 'OCONCA44', 'OCONCF48', 'OCONCA48', 'OCONCG37', 'OCONCF28', 'OCONCK58', 'OCONCE02', 'OCONCQ13', 'OCONCL33', 'OCONCN34', 'OCONCA23', 'OCONCS39', 'OCONCU00', 'OCONCM02', 'OCONCN49', 'OCONCG49', 'OCONCV47', 'OCONCC50', 'OCONCL48', 'OCONCD48', 'OCONCA34', 'OCONCA15', 'OCONCG29', 'OCONCG90', 'OCONCV48', 'OCONCL30', 'OCONCO02', 'OCONCN48', 'OCONCE59', 'OCONCE04', 'OCONCD44'} + }, + ["BKMT"] = { + has_flats = true, + has_textures = true, + has_all = true, + flats = {'0BKMTA05', '0BKMTA07', '0BKMTD01', '0BKMTA06', '0BKMTB05', '0BKMTA03', '0BKMTA01', '0BKMTB06', '0BKMTA02', '0BKMTD10', '0BKMTD11', '0BKMTD33', '0BKMTD75', '0BKMTD57', '0BKMTB01', '0BKMTB03', '0BKMTB02', '0BKMTA04', '0BKMTB04', '0BKMTD00'}, + textures = {'OBKMTA91', 'OBKMTD03', 'OBKMTC02', 'OBKMTE48', 'OBKMTE43', 'OBKMTD58', 'OBKMTD37', 'OBKMTA94', 'OBKMTD01', 'OBKMTE49', 'OBKMTD40', 'OBKMTB02', 'OBKMTD48', 'OBKMTB05', 'OBKMTA97', 'OBKMTC01', 'OBKMTD38', 'OBKMTA39', 'OBKMTB04', 'OBKMTD47', 'OBKMTB01', 'OBKMTD17', 'OBKMTD70', 'OBKMTA23', 'OBKMTD97', 'OBKMTD16', 'OBKMTE38', 'OBKMTD28', 'OBKMTD02', 'OBKMTD90', 'OBKMTB90', 'OBKMTE39', 'OBKMTB03', 'OBKMTD92', 'OBKMTD50', 'OBKMTE24', 'OBKMTE33', 'OBKMTA22', 'OBKMTD91', 'OBKMTD15', 'OBKMTE34', 'OBKMTD60', 'OBKMTD59', 'OBKMTA90', 'OBKMTD49', 'OBKMTA33', 'OBKMTD32', 'OBKMTB10', 'OBKMTA92', 'OBKMTD33', 'OBKMTD39', 'OBKMTA38', 'OBKMTB06', 'OBKMTE47', 'OBKMTD14', 'OBKMTD96', 'OBKMTA93', 'OBKMTD04', 'OBKMTD95', 'OBKMTD75', 'OBKMTD57'} + }, + ["TLPT"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0TLPTB09', '0TLPTA43', '0TLPTA39', '0TLPTC14', '0TLPTA48', '0TLPTA41', '0TLPTB07', '0TLPTA57', '0TLPTA55', '0TLPTB00', '0TLPTDB8', '0TLPTBD3', '0TLPTC05', '0TLPTC04', '0TLPTDD8', '0TLPTC12', '0TLPTA47', '0TLPTDA3', '0TLPTBC2', '0TLPTDB2', '0TLPTDCA', '0TLPTDA6', '0TLPTC07', '0TLPTBC3', '0TLPTA15', '0TLPTA25', '0TLPTBD9', '0TLPTBC6', '0TLPTBC4', '0TLPTA07', '0TLPTDA9', '0TLPTDD2', '0TLPTA22', '0TLPTA44', '0TLPTDB7', '0TLPTA54', '0TLPTC09', '0TLPTBD7', '0TLPTA56', '0TLPTA51', '0TLPTA05', '0TLPTB01', '0TLPTBD1', '0TLPTA24', '0TLPTDC4', '0TLPTBA1', '0TLPTA29', '0TLPTBB7', '0TLPTBB1', '0TLPTDAA', '0TLPTC17', '0TLPTBD5', '0TLPTBC1', '0TLPTA04', '0TLPTDC2', '0TLPTBB0', '0TLPTDC7', '0TLPTBB9', '0TLPTDC5', '0TLPTA21', '0TLPTA27', '0TLPTBA7', '0TLPTBB6', '0TLPTBA2', '0TLPTBA5', '0TLPTBC0', '0TLPTC13', '0TLPTBD2', '0TLPTC11', '0TLPTA37', '0TLPTA11', '0TLPTDD1', '0TLPTDA1', '0TLPTC02', '0TLPTC16', '0TLPTA03', '0TLPTA12', '0TLPTC19', '0TLPTA36', '0TLPTDB3', '0TLPTC01', '0TLPTBC5', '0TLPTA13', '0TLPTB02', '0TLPTA45', '0TLPTBB4', '0TLPTDB5', '0TLPTBD6', '0TLPTB08', '0TLPTA35', '0TLPTDB9', '0TLPTA02', '0TLPTDC6', '0TLPTA53', '0TLPTDBA', '0TLPTDA0', '0TLPTA42', '0TLPTDA4', '0TLPTDD9', '0TLPTC08', '0TLPTA18', '0TLPTA34', '0TLPTA46', '0TLPTBD4', '0TLPTA59', '0TLPTA32', '0TLPTB06', '0TLPTA23', '0TLPTDA5', '0TLPTC03', '0TLPTDA7', '0TLPTDC9', '0TLPTA58', '0TLPTBA6', '0TLPTA06', '0TLPTDD3', '0TLPTDD5', '0TLPTBD8', '0TLPTDB0', '0TLPTC00', '0TLPTA16', '0TLPTB05', '0TLPTDD7', '0TLPTA01', '0TLPTBB3', '0TLPTA52', '0TLPTA08', '0TLPTB03', '0TLPTC06', '0TLPTC10', '0TLPTA28', '0TLPTDB4', '0TLPTA17', '0TLPTDC3', '0TLPTDC8', '0TLPTBC8', '0TLPTA19', '0TLPTA09', '0TLPTB04', '0TLPTBC9', '0TLPTA14', '0TLPTBB5', '0TLPTDD4', '0TLPTC18', '0TLPTDB6', '0TLPTA31', '0TLPTA26', '0TLPTDDA', '0TLPTDA2', '0TLPTBA8', '0TLPTDA8', '0TLPTBA4', '0TLPTA33', '0TLPTDB1', '0TLPTDC1', '0TLPTA49', '0TLPTDC0', '0TLPTBD0', '0TLPTBB2', '0TLPTBC7', '0TLPTBB8', '0TLPTC15', '0TLPTDD6', '0TLPTA38', '0TLPTBA3', '0TLPTBA9', '0TLPTDD0', '0TLPTBA0'}, + textures = {} + }, + ["WARP"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'OWARPB04', 'OWARPA13', 'OWARPE25', 'OWARPE08', 'OWARPB01', 'OWARPB16', 'OWARPE01', 'OWARPA17', 'OWARPB03', 'OWARPB11', 'OWARPA05', 'OWARPC03', 'OWARPA04', 'OWARPB14', 'OWARPB08', 'OWARPC09', 'OWARPE07', 'OWARPA02', 'OWARPD01', 'OWARPD08', 'OWARPA03', 'OWARPE04', 'OWARPE09', 'OWARPE11', 'OWARPE29', 'OWARPD07', 'OWARPD06', 'OWARPB17', 'OWARPE30', 'OWARPD02', 'OWARPE27', 'OWARPE06', 'OWARPE02', 'OWARPC02', 'OWARPA16', 'OWARPE28', 'OWARPB12', 'OWARPE22', 'OWARPC04', 'OWARPA12', 'OWARPE32', 'OWARPD04', 'OWARPB10', 'OWARPE10', 'OWARPE05', 'OWARPC01', 'OWARPB13', 'OWARPD05', 'OWARPD09', 'OWARPC07', 'OWARPB05', 'OWARPB07', 'OWARPA06', 'OWARPB02', 'OWARPC05', 'OWARPA10', 'OWARPE26', 'OWARPE21', 'OWARPC10', 'OWARPB09', 'OWARPE12', 'OWARPE24', 'OWARPC11', 'OWARPA14', 'OWARPB15', 'OWARPA15', 'OWARPC12', 'OWARPD10', 'OWARPC08', 'OWARPA07', 'OWARPA08', 'OWARPD03', 'OWARPE23', 'OWARPE03', 'OWARPC06', 'OWARPA01', 'OWARPB06', 'OWARPE31', 'OWARPA11', 'OWARPA09'} + }, + ["VENT"] = { + has_flats = true, + has_textures = true, + has_all = true, + flats = {'0VENTE04', '0VENTF02', '0VENTE11', '0VENTB01', '0VENTB08', '0VENTB05', '0VENTE12', '0VENTA13', '0VENTB04', '0VENTB07', '0VENTF01', '0VENTE01', '0VENTE02', '0VENTE03', '0VENTA30', '0VENTB03', '0VENTE14', '0VENTE13', '0VENTB02', '0VENTB06'}, + textures = {'OVENTE01', 'OVENTB02', 'OVENTB04', 'OVENTB08', 'OVENTB05', 'OVENTE13', 'OVENTB01', 'OVENTA39', 'OVENTA19', 'OVENTA99', 'OVENTA13', 'OVENTC01', 'OVENTC43', 'OVENTD01', 'OVENTF70', 'OVENTE03', 'OVENTB03', 'OVENTE02', 'OVENTD90', 'OVENTE11', 'OVENTD34', 'OVENTD33', 'OVENTA30', 'OVENTA90', 'OVENTD14', 'OVENTB06', 'OVENTD13', 'OVENTE14', 'OVENTE12', 'OVENTB07', 'OVENTE04'} + }, + ["WRNG"] = { + has_flats = true, + has_textures = true, + has_all = true, + flats = {'0WRNGA01', '0WRNGA21', '0WRNGB33', '0WRNGA33', '0WRNGA31', '0WRNGA13', '0WRNGA12', '0WRNGA23', '0WRNGA22', '0WRNGC04', '0WRNGC01', '0WRNGB02', '0WRNGA11', '0WRNGA03', '0WRNGA24', '0WRNGA02', '0WRNGB44', '0WRNGC02', '0WRNGA32', '0WRNGA34', '0WRNGA14', '0WRNGB01', '0WRNGA04', '0WRNGC03'}, + textures = {'OWRNGC1A', 'OWRNGC57', 'OWRNGD60', 'OWRNGC18', 'OWRNGC39', 'OWRNGC51', 'OWRNGC29', 'OWRNGC3B', 'OWRNGC1B', 'OWRNGF01', 'OWRNGC2A', 'OWRNGC5B', 'OWRNGD50', 'OWRNGC20', 'OWRNGB60', 'OWRNGC5C', 'OWRNGC14', 'OWRNGC5F', 'OWRNGC3D', 'OWRNGC35', 'OWRNGC50', 'OWRNGC31', 'OWRNGC23', 'OWRNGC3A', 'OWRNGC56', 'OWRNGA00', 'OWRNGC2F', 'OWRNGF00', 'OWRNGC19', 'OWRNGE01', 'OWRNGD01', 'OWRNGC55', 'OWRNGB50', 'OWRNGC12', 'OWRNGC17', 'OWRNGC30', 'OWRNGC1D', 'OWRNGC59', 'OWRNGC5D', 'OWRNGC25', 'OWRNGC1E', 'OWRNGC52', 'OWRNGC32', 'OWRNGC1F', 'OWRNGC16', 'OWRNGC22', 'OWRNGD00', 'OWRNGC44', 'OWRNGC4D', 'OWRNGE50', 'OWRNGC4E', 'OWRNGC26', 'OWRNGE00', 'OWRNGC28', 'OWRNGC3F', 'OWRNGC47', 'OWRNGC49', 'OWRNGC3C', 'OWRNGC5A', 'OWRNGC10', 'OWRNGC46', 'OWRNGF60', 'OWRNGC24', 'OWRNGC54', 'OWRNGB01', 'OWRNGC4B', 'OWRNGC2B', 'OWRNGC1C', 'OWRNGC58', 'OWRNGC3E', 'OWRNGC53', 'OWRNGC11', 'OWRNGE60', 'OWRNGC4F', 'OWRNGC45', 'OWRNGC13', 'OWRNGF50', 'OWRNGA01', 'OWRNGC48', 'OWRNGC38', 'OWRNGC4A', 'OWRNGC41', 'OWRNGC15', 'OWRNGC4C', 'OWRNGC2D', 'OWRNGC37', 'OWRNGC34', 'OWRNGB00', 'OWRNGC40', 'OWRNGC2E', 'OWRNGC27', 'OWRNGC21', 'OWRNGC33', 'OWRNGC36', 'OWRNGC42', 'OWRNGC43', 'OWRNGC2C', 'OWRNGC5E'} + }, + ["TL16"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0TL16C04', '0TL16B09', '0TL16A04', '0TL16A09', '0TL16B12', '0TL16B06', '0TL16A06', '0TL16A08', '0TL16A05', '0TL16A01', '0TL16B03', '0TL16A03', '0TL16B14', '0TL16A07', '0TL16B05', '0TL16B13', '0TL16C03', '0TL16B02', '0TL16C02', '0TL16C05', '0TL16B08', '0TL16A02', '0TL16B10', '0TL16C01', '0TL16B07', '0TL16B04', '0TL16B11', '0TL16B01'}, + textures = {} + }, + ["HEXA"] = { + has_flats = true, + has_textures = true, + has_all = true, + flats = {'0HEXAB05', '0HEXAN04', '0HEXAM12', '0HEXAB04', '0HEXAD10', '0HEXAH02', '0HEXAM03', '0HEXAD11', '0HEXAL05', '0HEXAL07', '0HEXAM14', '0HEXAL03', '0HEXAA12', '0HEXAF02', '0HEXAI02', '0HEXAF04', '0HEXAJ01', '0HEXAH90', '0HEXAF05', '0HEXAJ08', '0HEXAC02', '0HEXAN03', '0HEXAM11', '0HEXAC09', '0HEXAH05', '0HEXAC01', '0HEXAK04', '0HEXAE02', '0HEXAK02', '0HEXAF03', '0HEXAG04', '0HEXAG05', '0HEXAG07', '0HEXAJ05', '0HEXAA13', '0HEXAM01', '0HEXAG06', '0HEXAJ04', '0HEXAA04', '0HEXAD03', '0HEXAC11', '0HEXAG02', '0HEXAA03', '0HEXAH03', '0HEXAD02', '0HEXAB02', '0HEXAJ06', '0HEXAC12', '0HEXAM02', '0HEXAG03', '0HEXAN05', '0HEXAG01', '0HEXAA10', '0HEXAL04', '0HEXAD08', '0HEXAN01', '0HEXAE01', '0HEXAK01', '0HEXAI01', '0HEXAD01', '0HEXAE04', '0HEXAA09', '0HEXAC08', '0HEXAA06', '0HEXAA01', '0HEXAD12', '0HEXAJ03', '0HEXAC03', '0HEXAD07', '0HEXAD05', '0HEXAB01', '0HEXAA02', '0HEXAM04', '0HEXAD04', '0HEXAC05', '0HEXAG08', '0HEXAC04', '0HEXAL01', '0HEXAC10', '0HEXAA05', '0HEXAL06', '0HEXAJ02', '0HEXAN02', '0HEXAD09', '0HEXAA11', '0HEXAH01', '0HEXAL02', '0HEXAE05', '0HEXAD06', '0HEXAM15', '0HEXAM13', '0HEXAM05', '0HEXAB03', '0HEXAH91', '0HEXAA07', '0HEXAC06', '0HEXAE03', '0HEXAK03', '0HEXAJ07', '0HEXAA08', '0HEXAC07', '0HEXAF01', '0HEXAH04'}, + textures = {'OHEXAM02', 'OHEXAE02', 'OHEXAE05', 'OHEXAM01', 'OHEXAM03', 'OHEXAE04', 'OHEXAE03', 'OHEXAE01'} + }, + ["IRON"] = { + has_flats = true, + has_textures = true, + has_all = true, + flats = {'0IRONP44', '0IRONP33', '0IRONF91', '0IRONE43', '0IRONJ33', '0IRONM15', '0IRONE33', '0IRONM50', '0IRONK33', '0IRONA50', '0IROND44', '0IRONA40', '0IRONE01', '0IRONB33', '0IRONA00', '0IRONM33', '0IRONM16', '0IRONM60', '0IRONM01', '0IRONB43', '0IRONE34', '0IRONM00', '0IRONB34', '0IRONF92', '0IRONA01', '0IRONM40', '0IRONM44', '0IRONM14', '0IRONA14', '0IRONE39', '0IROND00', '0IRONP37', '0IRONI33', '0IRONC01', '0IRONF90', '0IRONP43', '0IRONA15', '0IRONP00'}, + textures = {'OIRONI22', 'OIRONB33', 'OIRONN49', 'OIRONJ28', 'OIRONF92', 'OIRONE49', 'OIRONC90', 'OIRONL86', 'OIRONI23', 'OIRONO15', 'OIRONN26', 'OIRONA15', 'OIRONF15', 'OIRONL91', 'OIRONO48', 'OIROND39', 'OIRONM33', 'OIRONN27', 'OIRONI33', 'OIRONB34', 'OIRONL95', 'OIRONI49', 'OIRONN15', 'OIRONN13', 'OIRONN20', 'OIRONP50', 'OIRONL93', 'OIRONC93', 'OIRONM69', 'OIRONP27', 'OIRONI48', 'OIRONL94', 'OIRONM60', 'OIRONP40', 'OIRONF51', 'OIRONP90', 'OIRONN43', 'OIRONG40', 'OIRONI29', 'OIRONL87', 'OIRONF45', 'OIRONF91', 'OIRONO20', 'OIRONF01', 'OIROND44', 'OIRONI28', 'OIRONC94', 'OIRONP29', 'OIRONE43', 'OIRONN28', 'OIRONF50', 'OIRONN18', 'OIRONM16', 'OIRONN90', 'OIRONP39', 'OIRONN19', 'OIRONP38', 'OIRONL43', 'OIRONM50', 'OIROND37', 'OIRONM00', 'OIRONO43', 'OIRONO01', 'OIRONN16', 'OIRONM18', 'OIRONN01', 'OIRONL81', 'OIRONL92', 'OIRONP28', 'OIRONC91', 'OIRONO14', 'OIRONP43', 'OIRONL90', 'OIRONE90', 'OIRONL83', 'OIRONK28', 'OIRONF13', 'OIRONO30', 'OIRONL33', 'OIRONE91', 'OIRONE33', 'OIRONM15', 'OIRONE34', 'OIRONK29', 'OIRONJ23', 'OIRONC01', 'OIRONQ44', 'OIRONQ43', 'OIRONE22', 'OIRONK22', 'OIROND54', 'OIRONL39', 'OIRONF14', 'OIRONE39', 'OIRONK23', 'OIRONL89', 'OIRONF30', 'OIRONM49', 'OIRONO13', 'OIRONP15', 'OIRONA50', 'OIRONI43', 'OIRONF59', 'OIRONO17', 'OIRONP33', 'OIRONP91', 'OIRONM44', 'OIRONK33', 'OIROND38', 'OIRONP44', 'OIRONN30', 'OIRONO16', 'OIRONL96', 'OIRONF02', 'OIRONA40', 'OIRONJ22', 'OIRONH40', 'OIRONP22', 'OIRONJ29', 'OIRONC92', 'OIRONO49', 'OIRONL40', 'OIRONN14', 'OIRONP14', 'OIROND34', 'OIRONL85', 'OIRONP37', 'OIRONN29', 'OIRONN48', 'OIRONL82', 'OIRONN17', 'OIRONM14', 'OIRONJ33', 'OIRONO23', 'OIRONL80', 'OIRONN23', 'OIRONM40', 'OIRONA14', 'OIRONL84', 'OIRONB43', 'OIRONP49', 'OIRONO90', 'OIRONA59', 'OIRONL88'} + }, + ["SKY2"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'OSKY20', 'OSKY29', 'OSKY28', 'OSKY23', 'OSKY25', 'OSKY24', 'OSKY22', 'OSKY21', 'OSKY27', 'OSKY26'} + }, + ["STAR"] = { + has_flats = true, + has_textures = true, + has_all = true, + flats = {'0STARA04', '0STARA01', '0STARA05', '0STARA07', '0STARA02', '0STARA03', '0STARA08', '0STARA06'}, + textures = {'OSTARD04', 'OSTARA02', 'OSTARC03', 'OSTARA04', 'OSTARB40', 'OSTARC91', 'OSTARC40', 'OSTARA44', 'OSTARD90', 'OSTARA91', 'OSTARB90', 'OSTARD03', 'OSTARD91', 'OSTARC90', 'OSTARA40', 'OSTARB02', 'OSTARD01', 'OSTARC04', 'OSTARB01', 'OSTARC44', 'OSTARD02', 'OSTARC01', 'OSTARA90', 'OSTARB04', 'OSTARB03', 'OSTARA01', 'OSTARB44', 'OSTARD44', 'OSTARA03', 'OSTARD40', 'OSTARB91', 'OSTARC02'} + }, + ["FALL"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'OFALLW15', 'OFALLB05', 'OFALLW17', 'OFALLP06', 'OFALLW08', 'OFALLS03', 'OFALLB01', 'OFALLB02', 'OFALLG03', 'OFALLS04', 'OFALLW18', 'OFALLM05', 'OFALLW07', 'OFALLB08', 'OFALLL17', 'OFALLP08', 'OFALLM04', 'OFALLN08', 'OFALLP04', 'OFALLL04', 'OFALLL03', 'OFALLL06', 'OFALLW12', 'OFALLL01', 'OFALLT08', 'OFALLS01', 'OFALLT07', 'OFALLN01', 'OFALLW02', 'OFALLW04', 'OFALLM03', 'OFALLW11', 'OFALLM08', 'OFALLS02', 'OFALLM01', 'OFALLM02', 'OFALLP05', 'OFALLP07', 'OFALLS07', 'OFALLG01', 'OFALLB03', 'OFALLP03', 'OFALLT04', 'OFALLL16', 'OFALLL05', 'OFALLW03', 'OFALLS06', 'OFALLG08', 'OFALLG06', 'OFALLW01', 'OFALLL02', 'OFALLP02', 'OFALLT02', 'OFALLN05', 'OFALLM06', 'OFALLB04', 'OFALLL11', 'OFALLT03', 'OFALLS05', 'OFALLB07', 'OFALLT01', 'OFALLN02', 'OFALLN04', 'OFALLL14', 'OFALLL08', 'OFALLL13', 'OFALLT06', 'OFALLW13', 'OFALLM07', 'OFALLP01', 'OFALLN06', 'OFALLS08', 'OFALLW16', 'OFALLB06', 'OFALLW05', 'OFALLG02', 'OFALLG05', 'OFALLL12', 'OFALLN07', 'OFALLW06', 'OFALLG07', 'OFALLN03', 'OFALLT05', 'OFALLG04', 'OFALLL07', 'OFALLL18', 'OFALLW14', 'OFALLL15'} + }, + ["SPRT"] = { + has_flats = true, + has_textures = true, + has_all = true, + flats = {'0SPRTG30', '0SPRTG40', '0SPRTN50', '0SPRTG18', '0SPRTA91', '0SPRTG17', '0SPRTE17', '0SPRTI00', '0SPRTH14', '0SPRTB14', '0SPRTB90', '0SPRTE49', '0SPRTC33', '0SPRTA90', '0SPRTJ40', '0SPRTE93', '0SPRTE18', '0SPRTN14', '0SPRTC02', '0SPRTJ14', '0SPRTN19', '0SPRTG47', '0SPRTA49', '0SPRTL00', '0SPRTG19', '0SPRTE19', '0SPRTN90', '0SPRTA18', '0SPRTB19', '0SPRTA50', '0SPRTG14', '0SPRTE48', '0SPRTE50', '0SPRTE47', '0SPRTE14', '0SPRTE01', '0SPRTE92', '0SPRTI40', '0SPRTG48', '0SPRTC01', '0SPRTG13', '0SPRTH13', '0SPRTG91', '0SPRTB49', '0SPRTE44', '0SPRTA40', '0SPRTA39', '0SPRTN40', '0SPRTJ00', '0SPRTH01', '0SPRTI14', '0SPRTA15', '0SPRTG50', '0SPRTE40', '0SPRTB50', '0SPRTC03', '0SPRTA14', '0SPRTH00', '0SPRTE15', '0SPRTA19', '0SPRTB40', '0SPRTH30', '0SPRTN49', '0SPRTH40', '0SPRTN15', '0SPRTB15'}, + textures = {'OSPRTL91', 'OSPRTH40', 'OSPRTG94', 'OSPRTD49', 'OSPRTN91', 'OSPRTN19', 'OSPRTH16', 'OSPRTE14', 'OSPRTF50', 'OSPRTB94', 'OSPRTE19', 'OSPRTB14', 'OSPRTN14', 'OSPRTG95', 'OSPRTI14', 'OSPRTN40', 'OSPRTA15', 'OSPRTD92', 'OSPRTL50', 'OSPRTB15', 'OSPRTM39', 'OSPRTC39', 'OSPRTC15', 'OSPRTB50', 'OSPRTN95', 'OSPRTN30', 'OSPRTA40', 'OSPRTD50', 'OSPRTD96', 'OSPRTC30', 'OSPRTE15', 'OSPRTE50', 'OSPRTG48', 'OSPRTF01', 'OSPRTL30', 'OSPRTM30', 'OSPRTL15', 'OSPRTE40', 'OSPRTB95', 'OSPRTG30', 'OSPRTG47', 'OSPRTD91', 'OSPRTE47', 'OSPRTD17', 'OSPRTH18', 'OSPRTD40', 'OSPRTA49', 'OSPRTM14', 'OSPRTL40', 'OSPRTE92', 'OSPRTG19', 'OSPRTL90', 'OSPRTA19', 'OSPRTD19', 'OSPRTB30', 'OSPRTM13', 'OSPRTB91', 'OSPRTN15', 'OSPRTG17', 'OSPRTL14', 'OSPRTB13', 'OSPRTC18', 'OSPRTD90', 'OSPRTN93', 'OSPRTG13', 'OSPRTB93', 'OSPRTD93', 'OSPRTG93', 'OSPRTM50', 'OSPRTM40', 'OSPRTF18', 'OSPRTG96', 'OSPRTB49', 'OSPRTB19', 'OSPRTN92', 'OSPRTH14', 'OSPRTC14', 'OSPRTA92', 'OSPRTD94', 'OSPRTC50', 'OSPRTH13', 'OSPRTA90', 'OSPRTJ91', 'OSPRTG92', 'OSPRTH50', 'OSPRTG50', 'OSPRTE91', 'OSPRTH15', 'OSPRTL13', 'OSPRTN13', 'OSPRTH30', 'OSPRTG14', 'OSPRTD48', 'OSPRTN50', 'OSPRTE18', 'OSPRTG18', 'OSPRTF14', 'OSPRTC13', 'OSPRTD18', 'OSPRTB92', 'OSPRTG40', 'OSPRTD47', 'OSPRTD95', 'OSPRTF15', 'OSPRTN94', 'OSPRTA91', 'OSPRTE17', 'OSPRTF40', 'OSPRTJ14', 'OSPRTA39', 'OSPRTJ40', 'OSPRTN49', 'OSPRTD15', 'OSPRTG91', 'OSPRTM15', 'OSPRTF00', 'OSPRTA14', 'OSPRTC40', 'OSPRTD14', 'OSPRTI40', 'OSPRTE44', 'OSPRTA18', 'OSPRTM18', 'OSPRTB40'} + }, + ["NDST"] = { + has_flats = true, + has_textures = true, + has_all = true, + flats = {'0NDSTN01', '0NDSTM01', '0NDSTF44', '0NDSTN00', '0NDSTI44', '0NDSTH44', '0NDSTG44', '0NDSTM00'}, + textures = {'ONDSTB49', 'ONDSTA49', 'ONDSTD48', 'ONDSTJ92', 'ONDSTL49', 'ONDSTN30', 'ONDSTC14', 'ONDSTK34', 'ONDSTA33', 'ONDSTM00', 'ONDSTE44', 'ONDSTA90', 'ONDSTJ96', 'ONDSTC44', 'ONDSTP49', 'ONDSTC48', 'ONDSTJ95', 'ONDSTF44', 'ONDSTE19', 'ONDSTG44', 'ONDSTA43', 'ONDSTM50', 'ONDSTM20', 'ONDSTH44', 'ONDSTE18', 'ONDSTJ91', 'ONDSTK43', 'ONDSTD90', 'ONDSTD44', 'ONDSTO33', 'ONDSTD14', 'ONDSTD18', 'ONDSTB33', 'ONDSTK33', 'ONDSTP43', 'ONDSTL40', 'ONDSTP33', 'ONDSTI44', 'ONDSTK24', 'ONDSTM39', 'ONDSTN20', 'ONDSTC18', 'ONDSTK00', 'ONDSTD49', 'ONDSTC15', 'ONDSTM30', 'ONDSTE14', 'ONDSTE49', 'ONDSTO90', 'ONDSTN39', 'ONDSTN50', 'ONDSTJ94', 'ONDSTB43', 'ONDSTP90', 'ONDSTO43', 'ONDSTN00', 'ONDSTC40', 'ONDSTO49', 'ONDSTB90', 'ONDSTJ98', 'ONDSTC49', 'ONDSTC17', 'ONDSTC19', 'ONDSTE40', 'ONDSTJ90', 'ONDSTE48', 'ONDSTJ93', 'ONDSTD19', 'ONDSTJ97', 'ONDSTJ99', 'ONDSTD40'} + }, + ["PLUS"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0PLUSB07', '0PLUSB05', '0PLUSB09', '0PLUSB01', '0PLUSB02', '0PLUSB03', '0PLUSB06', '0PLUSB04', '0PLUSA03', '0PLUSA04', '0PLUSA02', '0PLUSB08', '0PLUSA01'}, + textures = {} + }, + ["LGHT"] = { + has_flats = true, + has_textures = true, + has_all = true, + flats = {'0LGHTN02', '0LGHTD06', '0LGHTF04', '0LGHTN03', '0LGHTD05', '0LGHTD02', '0LGHTF09', '0LGHTI15', '0LGHTN04', '0LGHTD01', '0LGHTG11', '0LGHTI02', '0LGHTI01', '0LGHTD03', '0LGHTF08', '0LGHTK06', '0LGHTI13', '0LGHTG01', '0LGHTE06', '0LGHTN07', '0LGHTG03', '0LGHTD04', '0LGHTG06', '0LGHTG09', '0LGHTI14', '0LGHTF07', '0LGHTK08', '0LGHTG12', '0LGHTI04', '0LGHTN06', '0LGHTG13', '0LGHTJ07', '0LGHTJ06', '0LGHTF05', '0LGHTK01', '0LGHTN05', '0LGHTF02', '0LGHTG08', '0LGHTK02', '0LGHTK05', '0LGHTJ04', '0LGHTI05', '0LGHTK07', '0LGHTF10', '0LGHTJ03', '0LGHTE03', '0LGHTE04', '0LGHTG05', '0LGHTG02', '0LGHTF11', '0LGHTF03', '0LGHTE02', '0LGHTG07', '0LGHTN01', '0LGHTJ08', '0LGHTI12', '0LGHTI03', '0LGHTF06', '0LGHTK04', '0LGHTE05', '0LGHTJ01', '0LGHTF01', '0LGHTK03', '0LGHTJ02', '0LGHTE01', '0LGHTF12', '0LGHTG14', '0LGHTG10', '0LGHTI11', '0LGHTG04', '0LGHTJ05'}, + textures = {'OLGHTC01', 'OLGHTD04', 'OLGHTK04', 'OLGHTE06', 'OLGHTM11', 'OLGHTQ14', 'OLGHTM71', 'OLGHTK06', 'OLGHTM39', 'OLGHTC08', 'OLGHTO13', 'OLGHTG37', 'OLGHTG36', 'OLGHTF04', 'OLGHTO15', 'OLGHTL05', 'OLGHTM22', 'OLGHTM82', 'OLGHTC21', 'OLGHTQ11', 'OLGHTP05', 'OLGHTA07', 'OLGHTA05', 'OLGHTC11', 'OLGHTM21', 'OLGHTQ06', 'OLGHTD05', 'OLGHTM59', 'OLGHTB08', 'OLGHTE01', 'OLGHTP01', 'OLGHTC23', 'OLGHTQ03', 'OLGHTK02', 'OLGHTO03', 'OLGHTK07', 'OLGHTJ08', 'OLGHTM29', 'OLGHTB02', 'OLGHTG39', 'OLGHTC24', 'OLGHTC02', 'OLGHTK03', 'OLGHTQ0X', 'OLGHTO12', 'OLGHTC06', 'OLGHTO05', 'OLGHTJ07', 'OLGHTA04', 'OLGHTM51', 'OLGHTM79', 'OLGHTO01', 'OLGHTD02', 'OLGHTJ04', 'OLGHTD01', 'OLGHTF07', 'OLGHTL01', 'OLGHTF12', 'OLGHTM89', 'OLGHTK01', 'OLGHTM19', 'OLGHTG34', 'OLGHTJ01', 'OLGHTC25', 'OLGHTC07', 'OLGHTJ06', 'OLGHTC26', 'OLGHTQ17', 'OLGHTC04', 'OLGHTC03', 'OLGHTB07', 'OLGHTP03', 'OLGHTP04', 'OLGHTJ03', 'OLGHTK08', 'OLGHTQ15', 'OLGHTF10', 'OLGHTM32', 'OLGHTM31', 'OLGHTB01', 'OLGHTB05', 'OLGHTM69', 'OLGHTC22', 'OLGHTM72', 'OLGHTQ01', 'OLGHTC13', 'OLGHTB04', 'OLGHTD06', 'OLGHTC27', 'OLGHTA03', 'OLGHTC17', 'OLGHTQ07', 'OLGHTC15', 'OLGHTF09', 'OLGHTM81', 'OLGHTJ05', 'OLGHTK05', 'OLGHTQ16', 'OLGHTQ04', 'OLGHTQ02', 'OLGHTA01', 'OLGHTL07', 'OLGHTC05', 'OLGHTL06', 'OLGHTM12', 'OLGHTM62', 'OLGHTM41', 'OLGHTM42', 'OLGHTL08', 'OLGHTP02', 'OLGHTQ12', 'OLGHTF06', 'OLGHTQ18', 'OLGHTJ02', 'OLGHTF01', 'OLGHTG35', 'OLGHTO14', 'OLGHTA06', 'OLGHTA02', 'OLGHTF11', 'OLGHTO02', 'OLGHTE03', 'OLGHTL02', 'OLGHTG38', 'OLGHTO04', 'OLGHTO11', 'OLGHTF03', 'OLGHTL03', 'OLGHTB03', 'OLGHTM52', 'OLGHTM61', 'OLGHTL04', 'OLGHTF02', 'OLGHTE04', 'OLGHTM49', 'OLGHTF08', 'OLGHTE02', 'OLGHTQ05', 'OLGHTE05', 'OLGHTC28', 'OLGHTQ13', 'OLGHTG3A', 'OLGHTD03', 'OLGHTQ08', 'OLGHTF05', 'OLGHTB06'} + }, + ["WOOD"] = { + has_flats = true, + has_textures = true, + has_all = true, + flats = {'0WOODD02', '0WOODF01', '0WOODC02', '0WOODG02', '0WOODF90', '0WOODC04', '0WOODF33', '0WOODG04', '0WOODG01', '0WOODG03', '0WOODF38', '0WOODD53', '0WOODI02', '0WOODE13', '0WOODF39', '0WOODI03', '0WOODE03', '0WOODE11', '0WOODF02', '0WOODE12', '0WOODF53', '0WOODD35', '0WOODD00', '0WOODE02', '0WOODF35', '0WOODC01', '0WOODC03', '0WOODE01', '0WOODD03', '0WOODI01', '0WOODD01', '0WOODD04'}, + textures = {'OWOODG38', 'OWOODF35', 'OWOODF24', 'OWOODF39', 'OWOODL14', 'OWOODG24', 'OWOODF34', 'OWOODE24', 'OWOODF90', 'OWOODB40', 'OWOODH35', 'OWOODF25', 'OWOODH38', 'OWOODF57', 'OWOODF29', 'OWOODH90', 'OWOODF15', 'OWOODE19', 'OWOODD01', 'OWOODE39', 'OWOODE34', 'OWOODF19', 'OWOODA03', 'OWOODI22', 'OWOODF14', 'OWOODF49', 'OWOODL39', 'OWOODF50', 'OWOODH39', 'OWOODA01', 'OWOODA02', 'OWOODE29', 'OWOODF59', 'OWOODF18', 'OWOODH25', 'OWOODB19', 'OWOODB14', 'OWOODL24', 'OWOODF93', 'OWOODK50', 'OWOODC03', 'OWOODL34', 'OWOODB49', 'OWOODC02', 'OWOODB90', 'OWOODF00', 'OWOODG40', 'OWOODF38', 'OWOODI15', 'OWOODD00', 'OWOODH33', 'OWOODH92', 'OWOODF91', 'OWOODG34', 'OWOODE59', 'OWOODC01', 'OWOODJ22', 'OWOODG14', 'OWOODF58', 'OWOODH36', 'OWOODE14', 'OWOODG00', 'OWOODF28', 'OWOODF92', 'OWOODF55', 'OWOODD15', 'OWOODH91', 'OWOODH37', 'OWOODF40', 'OWOODH93', 'OWOODF56', 'OWOODD35'} + }, + ["3DMD"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'03DMDA05', '03DMDA01', '03DMDA04', '03DMDA07', '03DMDA02', '03DMDA03', '03DMDA06'}, + textures = {} + }, + ["ROCK"] = { + has_flats = true, + has_textures = true, + has_all = true, + flats = {'0ROCKC02', '0ROCKR04', '0ROCKD02', '0ROCKD01', '0ROCKL04', '0ROCKD04', '0ROCKG01', '0ROCKC01', '0ROCKR02', '0ROCKR01', '0ROCKL02', '0ROCKO01', '0ROCKL13', '0ROCKL10', '0ROCKL01', '0ROCKR03', '0ROCKL11', '0ROCKL03', '0ROCKD03', '0ROCKD05', '0ROCKL14', '0ROCKL12'}, + textures = {'OROCKL02', 'OROCKM02', 'OROCKG02', 'OROCKR03', 'OROCKR02', 'OROCKP03', 'OROCKO3A', 'OROCKH01', 'OROCKQ04', 'OROCKO2B', 'OROCKD04', 'OROCKR04', 'OROCKO2C', 'OROCKA01', 'OROCKQ01', 'OROCKO3D', 'OROCKN01', 'OROCKB01', 'OROCKO2A', 'OROCKD05', 'OROCKA02', 'OROCKJ01', 'OROCKB02', 'OROCKD03', 'OROCKP01', 'OROCKH02', 'OROCKE01', 'OROCKS01', 'OROCKG01', 'OROCKS02', 'OROCKO2D', 'OROCKD02', 'OROCKE02', 'OROCKD06', 'OROCKL01', 'OROCKP02', 'OROCKD07', 'OROCKD01', 'OROCKF01', 'OROCKK01', 'OROCKQ02', 'OROCKQ05', 'OROCKE03', 'OROCKQ03', 'OROCKB11', 'OROCKS03', 'OROCKJ02', 'OROCKR01', 'OROCKO3B', 'OROCKO3C', 'OROCKC01', 'OROCKI01', 'OROCKP90', 'OROCKO01', 'OROCKM01', 'OROCKP04', 'OROCKC02'} + }, + ["BASE"] = { + has_flats = true, + has_textures = true, + has_all = true, + flats = {'0BASEP44', '0BASEL33', '0BASEK33', '0BASEL37', '0BASED00', '0BASEM44', '0BASEL44', '0BASEQ33', '0BASEN00', '0BASEC00', '0BASEK44', '0BASEM37', '0BASEK37', '0BASEO33', '0BASEA00', '0BASEO44', '0BASEP33', '0BASEM33', '0BASEQ44', '0BASEN01', '0BASEB00'}, + textures = {'OBASEM22', 'OBASES30', 'OBASEO43', 'OBASEF80', 'OBASEP34', 'OBASEQ44', 'OBASEM33', 'OBASEA38', 'OBASEG39', 'OBASEK34', 'OBASEJ50', 'OBASEM49', 'OBASEP39', 'OBASEA39', 'OBASEF70', 'OBASEL48', 'OBASEM29', 'OBASEH59', 'OBASEF34', 'OBASEL29', 'OBASEE39', 'OBASEG33', 'OBASEQ34', 'OBASEO34', 'OBASEK39', 'OBASEB30', 'OBASEB39', 'OBASEE34', 'OBASEL44', 'OBASEP36', 'OBASEP44', 'OBASEK33', 'OBASES33', 'OBASEF39', 'OBASEM38', 'OBASEI30', 'OBASEL39', 'OBASEM44', 'OBASEO44', 'OBASEO36', 'OBASEM48', 'OBASEL34', 'OBASEK49', 'OBASEK22', 'OBASER30', 'OBASEJ30', 'OBASEH50', 'OBASEQ39', 'OBASEK38', 'OBASEP33', 'OBASEJ19', 'OBASER50', 'OBASEE70', 'OBASES34', 'OBASEF33', 'OBASEL38', 'OBASEL49', 'OBASEK44', 'OBASEC40', 'OBASEA30', 'OBASEQ43', 'OBASEK36', 'OBASEO39', 'OBASEB50', 'OBASEL33', 'OBASED40', 'OBASEK29', 'OBASEM36', 'OBASEQ36', 'OBASER19', 'OBASEI19', 'OBASEE33', 'OBASEG20', 'OBASEL36', 'OBASEN30', 'OBASEQ33', 'OBASEB38', 'OBASEH30', 'OBASEJ59', 'OBASEL3A', 'OBASEM37', 'OBASES39', 'OBASEC50', 'OBASEM39', 'OBASEF38', 'OBASEA50', 'OBASEA40', 'OBASED50', 'OBASEE30', 'OBASEE80', 'OBASES80', 'OBASES38', 'OBASEF30', 'OBASEH19', 'OBASEI59', 'OBASEP43', 'OBASEG30', 'OBASEM34', 'OBASEK37', 'OBASEB40', 'OBASEO33', 'OBASER59', 'OBASEL22', 'OBASEL37', 'OBASEG90', 'OBASEK48', 'OBASEI50', 'OBASEE38'} + }, + ["TUDR"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'OTUDRA24', 'OTUDRB80', 'OTUDRB42', 'OTUDRA20', 'OTUDRB48', 'OTUDRA39', 'OTUDRA37', 'OTUDRA82', 'OTUDRB2B', 'OTUDRB3A', 'OTUDRA27', 'OTUDRB3F', 'OTUDRB31', 'OTUDRB2C', 'OTUDRB3D', 'OTUDRA34', 'OTUDRB40', 'OTUDRA26', 'OTUDRA30', 'OTUDRB24', 'OTUDRB35', 'OTUDRA47', 'OTUDRA81', 'OTUDRB4C', 'OTUDRB33', 'OTUDRB26', 'OTUDRA42', 'OTUDRA48', 'OTUDRB90', 'OTUDRA35', 'OTUDRA4A', 'OTUDRA44', 'OTUDRB39', 'OTUDRB44', 'OTUDRA46', 'OTUDRA22', 'OTUDRB38', 'OTUDRA2A', 'OTUDRA28', 'OTUDRB30', 'OTUDRA3A', 'OTUDRB28', 'OTUDRB22', 'OTUDRB21', 'OTUDRA3E', 'OTUDRA23', 'OTUDRA40', 'OTUDRA4C', 'OTUDRB47', 'OTUDRA2B', 'OTUDRB37', 'OTUDRB49', 'OTUDRA45', 'OTUDRA90', 'OTUDRB25', 'OTUDRA3C', 'OTUDRA41', 'OTUDRA4B', 'OTUDRB41', 'OTUDRB81', 'OTUDRA38', 'OTUDRA31', 'OTUDRB32', 'OTUDRA3F', 'OTUDRA36', 'OTUDRA25', 'OTUDRB46', 'OTUDRB3E', 'OTUDRB82', 'OTUDRA21', 'OTUDRA43', 'OTUDRB4A', 'OTUDRB20', 'OTUDRB45', 'OTUDRB2A', 'OTUDRA33', 'OTUDRA80', 'OTUDRA3B', 'OTUDRA32', 'OTUDRA29', 'OTUDRB27', 'OTUDRA2C', 'OTUDRB36', 'OTUDRB3B', 'OTUDRA49', 'OTUDRB34', 'OTUDRB23', 'OTUDRB29', 'OTUDRA3D', 'OTUDRB3C', 'OTUDRB4B', 'OTUDRB43'} + }, + ["STON"] = { + has_flats = true, + has_textures = true, + has_all = true, + flats = {'0STONI02', '0STONA04', '0STONF02', '0STONF01', '0STONH02', '0STONA14', '0STONH01', '0STONH03', '0STONA01', '0STONA02', '0STONA11', '0STONI01', '0STONI03', '0STONA03', '0STONA13', '0STONA12'}, + textures = {'OSTONA04', 'OSTONE20', 'OSTONB01', 'OSTONJ04', 'OSTONB03', 'OSTOND01', 'OSTONA02', 'OSTONG02', 'OSTONB02', 'OSTONI01', 'OSTONJ02', 'OSTONG01', 'OSTONG90', 'OSTONB05', 'OSTONF01', 'OSTOND02', 'OSTONC01', 'OSTONI03', 'OSTOND03', 'OSTONB04', 'OSTONJ01', 'OSTONI02', 'OSTONC02', 'OSTONG91', 'OSTONA01', 'OSTONJ03', 'OSTONE90', 'OSTONF02', 'OSTONA03'} + }, + ["COMP"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'OCOMPA13', 'OCOMPA9K', 'OCOMPA04', 'OCOMPA9M', 'OCOMPA21', 'OCOMPA06', 'OCOMPA9B', 'OCOMPA07', 'OCOMPA00', 'OCOMPA14', 'OCOMPA9I', 'OCOMPA9C', 'OCOMPA80', 'OCOMPA9F', 'OCOMPA34', 'OCOMPA02', 'OCOMPA01', 'OCOMPA15', 'OCOMPA35', 'OCOMPA28', 'OCOMPA9A', 'OCOMPA31', 'OCOMPA18', 'OCOMPA91', 'OCOMPA12', 'OCOMPA17', 'OCOMPA32', 'OCOMPA9H', 'OCOMPA9G', 'OCOMPA33', 'OCOMPA03', 'OCOMPA38', 'OCOMPA23', 'OCOMPA36', 'OCOMPA26', 'OCOMPA11', 'OCOMPA9L', 'OCOMPA24', 'OCOMPA25', 'OCOMPA08', 'OCOMPA9D', 'OCOMPA90', 'OCOMPA9J', 'OCOMPA37', 'OCOMPA05', 'OCOMPA9E', 'OCOMPA16', 'OCOMPA27', 'OCOMPA9N', 'OCOMPA22'} + }, + ["BNKR"] = { + has_flats = true, + has_textures = true, + has_all = true, + flats = {'0BNKRE00', '0BNKRC01', '0BNKRE33', '0BNKRN01'}, + textures = {'OBNKRM39', 'OBNKRB20', 'OBNKRN30', 'OBNKRC01', 'OBNKRC40', 'OBNKRH00', 'OBNKRC33', 'OBNKRN20', 'OBNKRA40', 'OBNKRH39', 'OBNKRK40', 'OBNKRG39', 'OBNKRM40', 'OBNKRM23', 'OBNKRD33', 'OBNKRB39', 'OBNKRK50', 'OBNKRA33', 'OBNKRJ01', 'OBNKRD39', 'OBNKRN22', 'OBNKRB33', 'OBNKRN01', 'OBNKRI01', 'OBNKRG37', 'OBNKRN13', 'OBNKRB40', 'OBNKRH49', 'OBNKRE33', 'OBNKRC29', 'OBNKRE44', 'OBNKRB30', 'OBNKRA49', 'OBNKRA30', 'OBNKRN40', 'OBNKRA20', 'OBNKRN59', 'OBNKRA01', 'OBNKRM20', 'OBNKRL40', 'OBNKRN14', 'OBNKRG38', 'OBNKRF20', 'OBNKRL39', 'OBNKRN50', 'OBNKRE39', 'OBNKRL20', 'OBNKRC39', 'OBNKRG33', 'OBNKRF39', 'OBNKRF30', 'OBNKRC20', 'OBNKRB49', 'OBNKRC49', 'OBNKRH01', 'OBNKRA39', 'OBNKRB01', 'OBNKRC30', 'OBNKRL23'} + }, + ["MRBL"] = { + has_flats = true, + has_textures = true, + has_all = true, + flats = {'0MRBLJ49', '0MRBLR33', '0MRBLJ44', '0MRBLD81', '0MRBLG33', '0MRBLL59', '0MRBLF00', '0MRBLD91', '0MRBLA48', '0MRBLM33', '0MRBLM00', '0MRBLD01', '0MRBLJ01', '0MRBLL44', '0MRBLA90', '0MRBLA33', '0MRBLG39', '0MRBLG49', '0MRBLR90', '0MRBLA01', '0MRBLR39', '0MRBLR91', '0MRBLJ33', '0MRBLA59', '0MRBLK01', '0MRBLO00', '0MRBLD82', '0MRBLR49', '0MRBLD44', '0MRBLG44', '0MRBLR00', '0MRBLL01', '0MRBLN00', '0MRBLA38', '0MRBLR44', '0MRBLA49', '0MRBLL33', '0MRBLG59', '0MRBLI01', '0MRBLK33', '0MRBLA58', '0MRBLH01', '0MRBLD83', '0MRBLA00', '0MRBLB00', '0MRBLD33', '0MRBLL39', '0MRBLR92', '0MRBLK44', '0MRBLK39', '0MRBLQ00', '0MRBLD80', '0MRBLM44', '0MRBLK59', '0MRBLK90', '0MRBLA39', '0MRBLK49', '0MRBLD90', '0MRBLJ91', '0MRBLG01', '0MRBLA44'}, + textures = {'OMRBLD90', 'OMRBLF22', 'OMRBLG44', 'OMRBLO33', 'OMRBLL44', 'OMRBLD59', 'OMRBLI92', 'OMRBLN30', 'OMRBLM81', 'OMRBLQ97', 'OMRBLN23', 'OMRBLF90', 'OMRBLA93', 'OMRBLB59', 'OMRBLM90', 'OMRBLQ00', 'OMRBLK48', 'OMRBLB19', 'OMRBLA49', 'OMRBLA91', 'OMRBLR49', 'OMRBLR40', 'OMRBLK39', 'OMRBLD58', 'OMRBLI93', 'OMRBLQ90', 'OMRBLR43', 'OMRBLB48', 'OMRBLL93', 'OMRBLL91', 'OMRBLJ33', 'OMRBLK90', 'OMRBLR92', 'OMRBLF14', 'OMRBLO49', 'OMRBLL49', 'OMRBLJ39', 'OMRBLH92', 'OMRBLJ30', 'OMRBLA90', 'OMRBLI49', 'OMRBLA22', 'OMRBLQ96', 'OMRBLG40', 'OMRBLR93', 'OMRBLM93', 'OMRBLR22', 'OMRBLO90', 'OMRBLD39', 'OMRBLJ13', 'OMRBLH39', 'OMRBLR00', 'OMRBLG48', 'OMRBLH49', 'OMRBLI48', 'OMRBLB44', 'OMRBLP91', 'OMRBLQ93', 'OMRBLH38', 'OMRBLN22', 'OMRBLE43', 'OMRBLC50', 'OMRBLC40', 'OMRBLK37', 'OMRBLG47', 'OMRBLD29', 'OMRBLK36', 'OMRBLG22', 'OMRBLM00', 'OMRBLC44', 'OMRBLO39', 'OMRBLB46', 'OMRBLB18', 'OMRBLH40', 'OMRBLF33', 'OMRBLF01', 'OMRBLH48', 'OMRBLG39', 'OMRBLK33', 'OMRBLR48', 'OMRBLO91', 'OMRBLH91', 'OMRBLL48', 'OMRBLM40', 'OMRBLM44', 'OMRBLP90', 'OMRBLJ22', 'OMRBLK91', 'OMRBLK40', 'OMRBLO22', 'OMRBLI90', 'OMRBLG49', 'OMRBLB22', 'OMRBLI96', 'OMRBLO29', 'OMRBLC90', 'OMRBLQ91', 'OMRBLR91', 'OMRBLN20', 'OMRBLM88', 'OMRBLQ92', 'OMRBLB49', 'OMRBLR94', 'OMRBLJ43', 'OMRBLF28', 'OMRBLG01', 'OMRBLO14', 'OMRBLC33', 'OMRBLA43', 'OMRBLC01', 'OMRBLC59', 'OMRBLL30', 'OMRBLR95', 'OMRBLA94', 'OMRBLN13', 'OMRBLO00', 'OMRBLN40', 'OMRBLO28', 'OMRBLF44', 'OMRBLB15', 'OMRBLD50', 'OMRBLN90', 'OMRBLM33', 'OMRBLK49', 'OMRBLA33', 'OMRBLR19', 'OMRBLK38', 'OMRBLI22', 'OMRBLI39', 'OMRBLK43', 'OMRBLF48', 'OMRBLM92', 'OMRBLF18', 'OMRBLN47', 'OMRBLQ94', 'OMRBLJ90', 'OMRBLB40', 'OMRBLQ95', 'OMRBLF43', 'OMRBLR14', 'OMRBLF29', 'OMRBLI40', 'OMRBLI95', 'OMRBLG43', 'OMRBLO43', 'OMRBLF40', 'OMRBLC49', 'OMRBLE40', 'OMRBLH47', 'OMRBLN14', 'OMRBLD01', 'OMRBLF38', 'OMRBLA92', 'OMRBLJ19', 'OMRBLJ93', 'OMRBLQ43', 'OMRBLO40', 'OMRBLN00', 'OMRBLB90', 'OMRBLL90', 'OMRBLQ98', 'OMRBLK35', 'OMRBLB33', 'OMRBLL92', 'OMRBLF49', 'OMRBLB50', 'OMRBLA01', 'OMRBLB39', 'OMRBLD49', 'OMRBLB14', 'OMRBLR90', 'OMRBLO48', 'OMRBLM91', 'OMRBLL40', 'OMRBLH90', 'OMRBLN33', 'OMRBLI91', 'OMRBLN91', 'OMRBLM14', 'OMRBLL47', 'OMRBLB01', 'OMRBLO30', 'OMRBLQ54', 'OMRBLG90', 'OMRBLB47', 'OMRBLE69', 'OMRBLI94', 'OMRBLB30'} + }, + ["SLNT"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0SLNTB01', '0SLNTB04', '0SLNTB06', '0SLNTC03', '0SLNTB07', '0SLNTA08', '0SLNTB05', '0SLNTA07', '0SLNTB02', '0SLNTC01', '0SLNTC04', '0SLNTA02', '0SLNTA04', '0SLNTA03', '0SLNTC02', '0SLNTA09', '0SLNTA05', '0SLNTA01', '0SLNTA10', '0SLNTC07', '0SLNTA06', '0SLNTC05', '0SLNTC06', '0SLNTB03'}, + textures = {} + }, + ["METL"] = { + has_flats = true, + has_textures = true, + has_all = true, + flats = {'0METLG44', '0METLB04', '0METLJ33', '0METLG01', '0METLA04', '0METLG59', '0METLG33', '0METLK33', '0METLG02'}, + textures = {'OMETLO39', 'OMETLM90', 'OMETLL97', 'OMETLH39', 'OMETLE34', 'OMETLH33', 'OMETLG34', 'OMETLC95', 'OMETLC37', 'OMETLP44', 'OMETLE90', 'OMETLD37', 'OMETLC38', 'OMETLP92', 'OMETLN34', 'OMETLF47', 'OMETLF37', 'OMETLF34', 'OMETLB01', 'OMETLD93', 'OMETLF96', 'OMETLC92', 'OMETLH93', 'OMETLB90', 'OMETLL96', 'OMETLH34', 'OMETLF91', 'OMETLA01', 'OMETLC99', 'OMETLD96', 'OMETLD39', 'OMETLI23', 'OMETLE39', 'OMETLL93', 'OMETLC59', 'OMETLE93', 'OMETLP35', 'OMETLO48', 'OMETLC82', 'OMETLD33', 'OMETLP36', 'OMETLF94', 'OMETLH24', 'OMETLJ33', 'OMETLI39', 'OMETLC33', 'OMETLC80', 'OMETLL02', 'OMETLL40', 'OMETLI92', 'OMETLN37', 'OMETLK39', 'OMETLL48', 'OMETLL49', 'OMETLP38', 'OMETLC57', 'OMETLC94', 'OMETLN36', 'OMETLL43', 'OMETLH90', 'OMETLC43', 'OMETLC98', 'OMETLL95', 'OMETLE91', 'OMETLD38', 'OMETLF33', 'OMETLD43', 'OMETLH95', 'OMETLE43', 'OMETLF43', 'OMETLE38', 'OMETLL03', 'OMETLP39', 'OMETLF93', 'OMETLC34', 'OMETLP34', 'OMETLL04', 'OMETLL05', 'OMETLF39', 'OMETLD91', 'OMETLF98', 'OMETLP33', 'OMETLE48', 'OMETLL99', 'OMETLL47', 'OMETLE94', 'OMETLM43', 'OMETLK34', 'OMETLP37', 'OMETLA02', 'OMETLJ34', 'OMETLL98', 'OMETLD90', 'OMETLC39', 'OMETLH91', 'OMETLM01', 'OMETLC81', 'OMETLM92', 'OMETLN91', 'OMETLO44', 'OMETLL06', 'OMETLL91', 'OMETLP91', 'OMETLG43', 'OMETLD47', 'OMETLK33', 'OMETLF92', 'OMETLG44', 'OMETLN33', 'OMETLN44', 'OMETLD92', 'OMETLE98', 'OMETLE95', 'OMETLE37', 'OMETLO91', 'OMETLF90', 'OMETLE96', 'OMETLH43', 'OMETLO90', 'OMETLH23', 'OMETLI38', 'OMETLM02', 'OMETLN38', 'OMETLH97', 'OMETLF38', 'OMETLC83', 'OMETLD97', 'OMETLD34', 'OMETLG33', 'OMETLN92', 'OMETLO36', 'OMETLD95', 'OMETLO38', 'OMETLM91', 'OMETLC93', 'OMETLN48', 'OMETLE33', 'OMETLN39', 'OMETLN35', 'OMETLL90', 'OMETLC97', 'OMETLC36', 'OMETLH96', 'OMETLL92', 'OMETLH37', 'OMETLE92', 'OMETLJ39', 'OMETLO37', 'OMETLN90', 'OMETLF97', 'OMETLE97', 'OMETLI33', 'OMETLC90', 'OMETLO34', 'OMETLH38', 'OMETLD94', 'OMETLD98', 'OMETLC58', 'OMETLH92', 'OMETLO35', 'OMETLF95', 'OMETLP90', 'OMETLD48', 'OMETLO33', 'OMETLE47', 'OMETLG39', 'OMETLC91', 'OMETLL01', 'OMETLO92', 'OMETLP48', 'OMETLI94', 'OMETLF48', 'OMETLC96'} + }, + ["ICYW"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0ICYWA03', '0ICYWA08', '0ICYWA04', '0ICYWA02', '0ICYWA05', '0ICYWA01', '0ICYWA06', '0ICYWA07'}, + textures = {} + }, + ["4DMD"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'04DMDB02', '04DMDA05', '04DMDA04', '04DMDA07', '04DMDB01', '04DMDB06', '04DMDB07', '04DMDA03', '04DMDB04', '04DMDA01', '04DMDB05', '04DMDB03', '04DMDA06', '04DMDA02', '04DMDA08'}, + textures = {} + }, + ["SKY0"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'OSKY07', 'OSKY04', 'OSKY01', 'OSKY06', 'OSKY09', 'OSKY08', 'OSKY05', 'OSKY02', 'OSKY03'} + }, + ["MECH"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'OMECHA01', 'OMECHA03', 'OMECHA02', 'OMECHA04'} + }, + ["BRCK"] = { + has_flats = true, + has_textures = true, + has_all = true, + flats = {'0BRCKB02', '0BRCKB21', '0BRCKX22', '0BRCKP02', '0BRCKX01', '0BRCKG02', '0BRCKX23', '0BRCKX24', '0BRCKF14', '0BRCKK02', '0BRCKB12', '0BRCKX03', '0BRCKF02', '0BRCKX02', '0BRCKX13', '0BRCKF03', '0BRCKX04', '0BRCKM02', '0BRCKX31', '0BRCKX14', '0BRCKM04', '0BRCKX21', '0BRCKX15', '0BRCKF11', '0BRCKK03', '0BRCKG01', '0BRCKB22', '0BRCKB31', '0BRCKF01', '0BRCKK04', '0BRCKX16', '0BRCKX11', '0BRCKM01', '0BRCKB32', '0BRCKP01', '0BRCKF13', '0BRCKB11', '0BRCKB01', '0BRCKF12', '0BRCKX34', '0BRCKX05', '0BRCKP03', '0BRCKF04', '0BRCKM03', '0BRCKX33', '0BRCKK01', '0BRCKX12', '0BRCKX32', '0BRCKX06'}, + textures = {'OBRCKP03', 'OBRCKU34', 'OBRCKQ32', 'OBRCKE11', 'OBRCKU07', 'OBRCKB12', 'OBRCKF22', 'OBRCKU37', 'OBRCKB03', 'OBRCKW02', 'OBRCKE02', 'OBRCKP02', 'OBRCKV02', 'OBRCKO03', 'OBRCKM02', 'OBRCKU3G', 'OBRCKX01', 'OBRCKQ03', 'OBRCKB20', 'OBRCKI02', 'OBRCKU21', 'OBRCKU30', 'OBRCKB01', 'OBRCKB22', 'OBRCKM03', 'OBRCKU3C', 'OBRCKQ02', 'OBRCKU13', 'OBRCKQ21', 'OBRCKQ23', 'OBRCKC03', 'OBRCKW22', 'OBRCKU20', 'OBRCKA01', 'OBRCKU27', 'OBRCKU3I', 'OBRCKQ44', 'OBRCKK02', 'OBRCKL30', 'OBRCKU19', 'OBRCKR11', 'OBRCKG01', 'OBRCKF32', 'OBRCKQ14', 'OBRCKX02', 'OBRCKJ04', 'OBRCKU3E', 'OBRCKL20', 'OBRCKF14', 'OBRCKU18', 'OBRCKV01', 'OBRCKQ41', 'OBRCKU25', 'OBRCKS03', 'OBRCKL21', 'OBRCKK01', 'OBRCKU3B', 'OBRCKA02', 'OBRCKL01', 'OBRCKQ22', 'OBRCKF23', 'OBRCKG03', 'OBRCKF01', 'OBRCKF02', 'OBRCKU06', 'OBRCKK04', 'OBRCKQ33', 'OBRCKC04', 'OBRCKU36', 'OBRCKB90', 'OBRCKU3A', 'OBRCKS01', 'OBRCKC10', 'OBRCKH01', 'OBRCKU31', 'OBRCKU15', 'OBRCKU10', 'OBRCKQ11', 'OBRCKW12', 'OBRCKL10', 'OBRCKN01', 'OBRCKJ05', 'OBRCKB21', 'OBRCKS04', 'OBRCKL02', 'OBRCKM01', 'OBRCKF13', 'OBRCKW13', 'OBRCKH02', 'OBRCKB10', 'OBRCKQ31', 'OBRCKQ04', 'OBRCKS02', 'OBRCKU03', 'OBRCKD01', 'OBRCKJ02', 'OBRCKI01', 'OBRCKW11', 'OBRCKU38', 'OBRCKU3H', 'OBRCKB11', 'OBRCKC02', 'OBRCKU3F', 'OBRCKL11', 'OBRCKU23', 'OBRCKA04', 'OBRCKU14', 'OBRCKB02', 'OBRCKU16', 'OBRCKC01', 'OBRCKU04', 'OBRCKF11', 'OBRCKQ13', 'OBRCKR01', 'OBRCKV03', 'OBRCKN02', 'OBRCKQ34', 'OBRCKW03', 'OBRCKO02', 'OBRCKQ42', 'OBRCKU26', 'OBRCKW01', 'OBRCKB23', 'OBRCKF03', 'OBRCKP01', 'OBRCKB13', 'OBRCKF21', 'OBRCKQ24', 'OBRCKQ01', 'OBRCKQ12', 'OBRCKU24', 'OBRCKO01', 'OBRCKK03', 'OBRCKA13', 'OBRCKM04', 'OBRCKU39', 'OBRCKU02', 'OBRCKJ03', 'OBRCKU17', 'OBRCKF24', 'OBRCKU35', 'OBRCKU05', 'OBRCKF12', 'OBRCKE01', 'OBRCKQ43', 'OBRCKA23', 'OBRCKU33', 'OBRCKU3D', 'OBRCKT02', 'OBRCKG02', 'OBRCKE12', 'OBRCKA03', 'OBRCKU01', 'OBRCKT01', 'OBRCKU32', 'OBRCKF04', 'OBRCKJ01'} + }, + ["DOOR"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'ODOORE01', 'ODOORE25', 'ODOORF01', 'ODOORA03', 'ODOORC01', 'ODOORE26', 'ODOORA07', 'ODOORA05', 'ODOORA08', 'ODOORD01', 'ODOORF03', 'ODOORG01', 'ODOORE02', 'ODOORE24', 'ODOORE09', 'ODOORB04', 'ODOORE20', 'ODOORC04', 'ODOORE23', 'ODOORD02', 'ODOORD03', 'ODOORE07', 'ODOORD12', 'ODOORC02', 'ODOORE27', 'ODOORA01', 'ODOORA02', 'ODOORE30', 'ODOORD11', 'ODOORE22', 'ODOORA04', 'ODOORE06', 'ODOORD13', 'ODOORF02', 'ODOORE10', 'ODOORE21', 'ODOORC00', 'ODOORE28', 'ODOORB01', 'ODOORB03', 'ODOORE05', 'ODOORE04', 'ODOORC03', 'ODOORE08', 'ODOORB02', 'ODOORA06', 'ODOORE29', 'ODOORE31', 'ODOORE03'} + }, + ["FIRE"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'OFIREA02', 'OFIREA23', 'OFIREA22', 'OFIREA06', 'OFIREA45', 'OFIREA31', 'OFIREA01', 'OFIREA16', 'OFIREA13', 'OFIREA24', 'OFIREA46', 'OFIREA03', 'OFIREA26', 'OFIREA33', 'OFIREA25', 'OFIREA21', 'OFIREA11', 'OFIREA43', 'OFIREA04', 'OFIREA12', 'OFIREA44', 'OFIREA35', 'OFIREA15', 'OFIREA36', 'OFIREA05', 'OFIREA34', 'OFIREA32', 'OFIREA14', 'OFIREA41', 'OFIREA42'} + }, + ["SOIL"] = { + has_flats = true, + has_textures = true, + has_all = true, + flats = {'0SOILA02', '0SOILA01', '0SOILA03', '0SOILB01', '0SOILA04', '0SOILB02'}, + textures = {'OSOILB02', 'OSOILB01'} + }, + ["SWTC"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'OSWTCHI1', 'OSWTCHL4', 'OSWTCHEI', 'OSWTCHI4', 'OSWTCHEW', 'OSWTCHEP', 'OSWTCHEN', 'OSWTCHA3', 'OSWTCHD7', 'OSWTCHE1', 'OSWTCHET', 'OSWTCHD5', 'OSWTCHE6', 'OSWTCHEM', 'OSWTCHD2', 'OSWTCHEA', 'OSWTCHEG', 'OSWTCHJ0', 'OSWTCHL6', 'OSWTCHD1', 'OSWTCHI2', 'OSWTCHL3', 'OSWTCHA0', 'OSWTCHEV', 'OSWTCHER', 'OSWTCHB1', 'OSWTCHE2', 'OSWTCHD0', 'OSWTCHM0', 'OSWTCHA6', 'OSWTCHEX', 'OSWTCHI5', 'OSWTCHA7', 'OSWTCHD3', 'OSWTCHE5', 'OSWTCHI3', 'OSWTCHE7', 'OSWTCHEZ', 'OSWTCHED', 'OSWTCHA5', 'OSWTCHC1', 'OSWTCHEJ', 'OSWTCHE_', 'OSWTCHA1', 'OSWTCHEQ', 'OSWTCHL2', 'OSWTCHF1', 'OSWTCHE-', 'OSWTCHD4', 'OSWTCHF0', 'OSWTCHES', 'OSWTCHG1', 'OSWTCHEE', 'OSWTCHEC', 'OSWTCHEH', 'OSWTCHI0', 'OSWTCHL1', 'OSWTCHEU', 'OSWTCHL0', 'OSWTCHA4', 'OSWTCHJ1', 'OSWTCHG0', 'OSWTCHL5', 'OSWTCHEL', 'OSWTCHK0', 'OSWTCHB0', 'OSWTCHEO', 'OSWTCHE4', 'OSWTCHM1', 'OSWTCHEF', 'OSWTCHEK', 'OSWTCHC0', 'OSWTCHEB', 'OSWTCHE3', 'OSWTCHK1', 'OSWTCHEY', 'OSWTCHD6', 'OSWTCHA2'} + }, + ["GRAT"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0GRATG03', '0GRATB01', '0GRATF01', '0GRATG01', '0GRATA02', '0GRATA01', '0GRATD04', '0GRATD02', '0GRATC01', '0GRATB04', '0GRATG04', '0GRATD01', '0GRATF02', '0GRATE03', '0GRATC04', '0GRATF04', '0GRATB03', '0GRATD03', '0GRATC03', '0GRATF03', '0GRATE02', '0GRATE01', '0GRATB02', '0GRATA03', '0GRATE04', '0GRATC02', '0GRATG02', '0GRATA04'}, + textures = {} + }, + ["ICE_"] = { + has_flats = true, + has_textures = true, + has_all = true, + flats = {'0ICE_A01'}, + textures = {'OICE_B02', 'OICE_A02', 'OICE_D01', 'OICE_E12', 'OICE_C02', 'OICE_E11', 'OICE_A01', 'OICE_B01', 'OICE_C01', 'OICE_E01', 'OICE_E02'} + }, + ["SKY3"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'OSKY35', 'OSKY39', 'OSKY34', 'OSKY37', 'OSKY32', 'OSKY38', 'OSKY30', 'OSKY31', 'OSKY33', 'OSKY36'} + }, + ["LASR"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'OLASRA12', 'OLASRA04', 'OLASRA01', 'OLASRA03', 'OLASRA16', 'OLASRA15', 'OLASRA14', 'OLASRA06', 'OLASRA05', 'OLASRA11', 'OLASRA13', 'OLASRA02'} + }, + ["FNCY"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0FNCYA11', '0FNCYA14', '0FNCYA24', '0FNCYA21', '0FNCYA01', '0FNCYA32', '0FNCYA12', '0FNCYA13', '0FNCYA23', '0FNCYA34', '0FNCYA04', '0FNCYA33', '0FNCYA02', '0FNCYA22', '0FNCYA03', '0FNCYA31'}, + textures = {} + }, + ["DMUD"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0DMUDB01', '0DMUDA01', '0DMUDA02', '0DMUDB02'}, + textures = {} + }, + ["FENC"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'OFENCC64', 'OFENCI32', 'OFENCA02', 'OFENCF20', 'OFENCD01', 'OFENCA01', 'OFENCF01', 'OFENCL02', 'OFENCM11', 'OFENCI11', 'OFENCN01', 'OFENCE01', 'OFENCI02', 'OFENCF06', 'OFENCN11', 'OFENCF10', 'OFENCF21', 'OFENCI01', 'OFENCF12', 'OFENCC96', 'OFENCF11', 'OFENCC01', 'OFENCF02', 'OFENCF13', 'OFENCF07', 'OFENCH01', 'OFENCN12', 'OFENCG02', 'OFENCF05', 'OFENCI21', 'OFENCB01', 'OFENCM12', 'OFENCI22', 'OFENCM02', 'OFENCI31', 'OFENCF14', 'OFENCM01', 'OFENCL01', 'OFENCF08', 'OFENCN02', 'OFENCF09', 'OFENCF04', 'OFENCG01', 'OFENCH02', 'OFENCJ01', 'OFENCI12', 'OFENCJ11', 'OFENCK01', 'OFENCB02', 'OFENCF03'} + }, + ["GRBL"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0GRBLA02', '0GRBLA04', '0GRBLA01', '0GRBLA05', '0GRBLA03'}, + textures = {} + }, + ["SKY1"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'OSKY12', 'OSKY10', 'OSKY16', 'OSKY14', 'OSKY15', 'OSKY11', 'OSKY17', 'OSKY13', 'OSKY19', 'OSKY18'} + }, + ["BLOD"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0BLODA04', '0BLODA08', '0BLODA03', '0BLODA07', '0BLODA01', '0BLODA02', '0BLODA06', '0BLODA05'}, + textures = {} + }, + ["CRPT"] = { + has_flats = true, + has_textures = true, + has_all = true, + flats = {'0CRPTA_E', '0CRPTA_W', '0CRPTA_S', '0CRPTA_N', '0CRPTD03', '0CRPTANE', '0CRPTANW', '0CRPTB01', '0CRPTB02', '0CRPTA02', '0CRPTC02', '0CRPTA05', '0CRPTASW', '0CRPTA01', '0CRPTB03', '0CRPTA03', '0CRPTASE', '0CRPTC03', '0CRPTA06', '0CRPTD02', '0CRPTA07', '0CRPTA04', '0CRPTD01', '0CRPTC01'}, + textures = {'OCRPTA01', 'OCRPTA15'} + }, + ["CRAT"] = { + has_flats = true, + has_textures = true, + has_all = true, + flats = {'0CRATB_2', '0CRATB_1', '0CRATB_4', '0CRATB_3'}, + textures = {'OCRATA23', 'OCRATA16', 'OCRATA13', 'OCRATA12', 'OCRATA21', 'OCRATB11', 'OCRATA02', 'OCRATB24', 'OCRATB12', 'OCRATB26', 'OCRATB04', 'OCRATA15', 'OCRATB22', 'OCRATB15', 'OCRATB25', 'OCRATB02', 'OCRATA03', 'OCRATB14', 'OCRATA06', 'OCRATA01', 'OCRATA04', 'OCRATB01', 'OCRATA05', 'OCRATB05', 'OCRATB28', 'OCRATA11', 'OCRATB18', 'OCRATB13', 'OCRATA22', 'OCRATB27', 'OCRATA14', 'OCRATB16', 'OCRATB17', 'OCRATB21', 'OCRATB23', 'OCRATB03'} + }, + ["SNOW"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0SNOWB01', '0SNOWA01'}, + textures = {} + }, + ["ROOF"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0ROOFA04', '0ROOFA01', '0ROOFA03', '0ROOFA02'}, + textures = {} + }, + ["SOLI"] = { + has_flats = true, + has_textures = true, + has_all = true, + flats = {'0SOLID01'}, + textures = {'OSOLID24', 'OSOLID11', 'OSOLID22', 'OSOLID14', 'OSOLID13', 'OSOLID21', 'OSOLID03', 'OSOLID23', 'OSOLID01', 'OSOLID02', 'OSOLID12', 'OSOLID04'} + }, + ["SLUD"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0SLUDG04', '0SLUDG07', '0SLUDG06', '0SLUDG01', '0SLUDG02', '0SLUDG05', '0SLUDG03', '0SLUDG08'}, + textures = {} + }, + ["DIRT"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0DIRTA03', '0DIRTA02', '0DIRTA04', '0DIRTA01'}, + textures = {} + }, + ["FLAG"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'OFLAGB22', 'OFLAGB21', 'OFLAGD02', 'OFLAGA02', 'OFLAGB13', 'OFLAGA01', 'OFLAGB02', 'OFLAGB11', 'OFLAGB31', 'OFLAGC07', 'OFLAGC06', 'OFLAGD32', 'OFLAGC04', 'OFLAGB12', 'OFLAGC02', 'OFLAGB32', 'OFLAGC03', 'OFLAGD22', 'OFLAGC05', 'OFLAGC01', 'OFLAGB01', 'OFLAGD31', 'OFLAGB03', 'OFLAGB33', 'OFLAGB23', 'OFLAGD12', 'OFLAGD21', 'OFLAGD11', 'OFLAGD01'} + }, + ["FLSH"] = { + has_flats = true, + has_textures = true, + has_all = true, + flats = {'0FLSHF01', '0FLSHH_2', '0FLSHA01', '0FLSHB02', '0FLSHH_1'}, + textures = {'OFLSHE01', 'OFLSHG01', 'OFLSHA01', 'OFLSHG02', 'OFLSHF01', 'OFLSHH01', 'OFLSHH02', 'OFLSHB01', 'OFLSHC01', 'OFLSHD01'} + }, + ["TRAK"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'OTRAKA02', 'OTRAKA01'} + }, + ["CHRM"] = { + has_flats = true, + has_textures = true, + has_all = true, + flats = {'0CHRMA00', '0CHRMC00', '0CHRMB00'}, + textures = {'OCHRMA90', 'OCHRMC33', 'OCHRMB44', 'OCHRMA44', 'OCHRMA33', 'OCHRMC44', 'OCHRMA34', 'OCHRMC40', 'OCHRMC34', 'OCHRMC90', 'OCHRMC43', 'OCHRMA22', 'OCHRMB40', 'OCHRMC13', 'OCHRMB33', 'OCHRMB13', 'OCHRMB43', 'OCHRMB34', 'OCHRMB14', 'OCHRMB22', 'OCHRMA30', 'OCHRMC14', 'OCHRMC30', 'OCHRMA14', 'OCHRMA40', 'OCHRMA13', 'OCHRMB90', 'OCHRMA43', 'OCHRMC22', 'OCHRMB30'} + }, + ["CMBD"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'OCMBDA13', 'OCMBDB01', 'OCMBDB02'} + }, + ["1DMD"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'01DMDA07', '01DMDA05', '01DMDA04', '01DMDA02', '01DMDA06', '01DMDA01', '01DMDA03'}, + textures = {} + }, + ["GOOP"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0GOOPY01', '0GOOPY07', '0GOOPY02', '0GOOPY08', '0GOOPY05', '0GOOPY03', '0GOOPY04', '0GOOPY06'}, + textures = {} + }, + ["EXIT"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'OEXITA01', 'OEXITC05', 'OEXITC03', 'OEXITC04', 'OEXITB02', 'OEXITC02', 'OEXITA02', 'OEXITB01', 'OEXITC01', 'OEXITB03'} + }, + ["LAVA"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0LAVAD08', '0LAVAE05', '0LAVAF07', '0LAVAF04', '0LAVAC07', '0LAVAD07', '0LAVAB01', '0LAVAF06', '0LAVAD01', '0LAVAC01', '0LAVAE02', '0LAVAF10', '0LAVAE08', '0LAVAC06', '0LAVAE07', '0LAVAF08', '0LAVAE04', '0LAVAE06', '0LAVAD04', '0LAVAF03', '0LAVAE01', '0LAVAD05', '0LAVAF05', '0LAVAC03', '0LAVAE03', '0LAVAF09', '0LAVAD02', '0LAVAF02', '0LAVAC04', '0LAVAD06', '0LAVAA02', '0LAVAC02', '0LAVAD03', '0LAVAA01', '0LAVAF01', '0LAVAC05', '0LAVAC08'}, + textures = {} + }, + ["PALC"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'OPALCB40', 'OPALCC28', 'OPALCC40', 'OPALCB34', 'OPALCE40', 'OPALCD34', 'OPALCC23', 'OPALCE28', 'OPALCA03', 'OPALCB28', 'OPALCC48', 'OPALCA34', 'OPALCB23', 'OPALCE34', 'OPALCC49', 'OPALCA49', 'OPALCA30', 'OPALCC43', 'OPALCD23', 'OPALCA20', 'OPALCD28', 'OPALCA40', 'OPALCC29', 'OPALCA01', 'OPALCD49', 'OPALCD29', 'OPALCC34', 'OPALCA23', 'OPALCB29', 'OPALCE29', 'OPALCE49', 'OPALCD40', 'OPALCA02', 'OPALCA29', 'OPALCA28', 'OPALCE23', 'OPALCB49'} + }, + ["8DMD"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'08DMDA04', '08DMDA02', '08DMDA06', '08DMDA01', '08DMDA13', '08DMDA07', '08DMDA03', '08DMDA05', '08DMDA10', '08DMDA08', '08DMDA11', '08DMDA12', '08DMDA09'}, + textures = {} + }, + ["BONE"] = { + has_flats = true, + has_textures = true, + has_all = true, + flats = {'0BONEA01'}, + textures = {'OBONEB01', 'OBONEC05', 'OBONEC03', 'OBONEC04', 'OBONEA01', 'OBONEC02', 'OBONEC01'} + }, + ["TECH"] = { + has_flats = true, + has_textures = true, + has_all = true, + flats = {'0TECHB04', '0TECHB01', '0TECHB05', '0TECHB07', '0TECHB03', '0TECHB06', '0TECHB02'}, + textures = {'OTECHD01', 'OTECHB03', 'OTECHB02', 'OTECHB06', 'OTECHA07', 'OTECHI10', 'OTECHA01', 'OTECHG01', 'OTECHA08', 'OTECHB05', 'OTECHA03', 'OTECHA06', 'OTECHA02', 'OTECHA05', 'OTECHG02', 'OTECHA04', 'OTECHB04', 'OTECHB01', 'OTECHE01', 'OTECHC01', 'OTECHF01', 'OTECHI01'} + }, + ["STCC"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'OSTCCA03', 'OSTCCB02', 'OSTCCA12', 'OSTCCA11', 'OSTCCB01', 'OSTCCC01', 'OSTCCA01', 'OSTCCC03', 'OSTCCC02', 'OSTCCA02', 'OSTCCA04'} + }, + ["TRHX"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0TRHXB02', '0TRHXE05', '0TRHXB03', '0TRHXD08', '0TRHXB01', '0TRHXD06', '0TRHXD04', '0TRHXE03', '0TRHXD07', '0TRHXC02', '0TRHXD03', '0TRHXA01', '0TRHXE04', '0TRHXD05', '0TRHXD02', '0TRHXD01', '0TRHXE07', '0TRHXA02', '0TRHXE01', '0TRHXA03', '0TRHXC01', '0TRHXE02', '0TRHXC03', '0TRHXE06'}, + textures = {} + }, + ["QSLP"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0QSLPB01', '0QSLPD05', '0QSLPD04', '0QSLPB05', '0QSLPC02', '0QSLPA03', '0QSLPD03', '0QSLPC01', '0QSLPA05', '0QSLPD01', '0QSLPA04', '0QSLPB03', '0QSLPB06', '0QSLPB02', '0QSLPB04', '0QSLPA02', '0QSLPD02', '0QSLPB08', '0QSLPA01', '0QSLPC03', '0QSLPB07'}, + textures = {} + }, + ["GRVL"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0GRVLC01', '0GRVLC02', '0GRVLD01', '0GRVLA01', '0GRVLB02', '0GRVLA02', '0GRVLB01'}, + textures = {} + }, + ["SAND"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0SANDB03', '0SANDC01', '0SANDA02', '0SANDA03', '0SANDA01', '0SANDC04', '0SANDC02', '0SANDB02', '0SANDB01', '0SANDC03'}, + textures = {} + }, + ["TL32"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0TL32A06', '0TL32A08', '0TL32A02', '0TL32B03', '0TL32B04', '0TL32A03', '0TL32B02', '0TL32B05', '0TL32A04', '0TL32A01', '0TL32A09', '0TL32A05', '0TL32B01', '0TL32A07'}, + textures = {} + }, + ["CNDR"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'OCNDRA01', 'OCNDRC03', 'OCNDRA02', 'OCNDRB01', 'OCNDRC01', 'OCNDRB02', 'OCNDRC02'} + }, + ["RAIL"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'ORAILB01', 'ORAILB1D', 'ORAILA02', 'ORAILA03', 'ORAILB1U', 'ORAILA01'} + }, + ["FADE"] = { + has_flats = true, + has_textures = true, + has_all = true, + flats = {'0FADEA05', '0FADEA02', '0FADEA06', '0FADEA03', '0FADEA04', '0FADEA07', '0FADEA01'}, + textures = {'OFADEA01', 'OFADEA06', 'OFADEA04', 'OFADEA02', 'OFADEA03', 'OFADEA05', 'OFADEA07'} + }, + ["SKY4"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'OSKY49', 'OSKY47', 'OSKY46', 'OSKY43', 'OSKY42', 'OSKY45', 'OSKY44', 'OSKY40', 'OSKY41', 'OSKY48'} + }, + ["KEYS"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'OKEYSN01', 'OKEYSG01', 'OKEYSB01', 'OKEYSY01', 'OKEYSO01', 'OKEYSR01'} + }, + ["MRLT"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0MRLTA02', '0MRLTA01', '0MRLTA03'}, + textures = {} + }, + ["BOOK"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'OBOOKA03', 'OBOOKA07', 'OBOOKA04', 'OBOOKA02', 'OBOOKA10', 'OBOOKA05', 'OBOOKA06', 'OBOOKA08', 'OBOOKA11', 'OBOOKA12', 'OBOOKA01'} + }, + ["5DMD"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'05DMDB01', '05DMDA01', '05DMDB02', '05DMDB05', '05DMDA02', '05DMDB03', '05DMDB04'}, + textures = {} + }, + ["TMPL"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0TMPLB05', '0TMPLB03', '0TMPLA03', '0TMPLB04', '0TMPLB02', '0TMPLA04', '0TMPLA01', '0TMPLB01', '0TMPLA02'}, + textures = {} + }, + ["TAR_"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0TAR__02', '0TAR__05', '0TAR__01', '0TAR__08', '0TAR__03', '0TAR__04', '0TAR__07', '0TAR__06'}, + textures = {} + }, + ["POOP"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0POOPY08', '0POOPY05', '0POOPY01', '0POOPY07', '0POOPY02', '0POOPY04', '0POOPY03', '0POOPY06'}, + textures = {} + }, + ["VINE"] = { + has_flats = true, + has_textures = true, + has_all = true, + flats = {'0VINED00'}, + textures = {'OVINEC10', 'OVINED00', 'OVINEC00', 'OVINEA02', 'OVINEC01', 'OVINEB01', 'OVINEA01', 'OVINEB02', 'OVINED01', 'OVINED02', 'OVINEC02'} + }, + ["HERR"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0HERRA02', '0HERRA01', '0HERRA04', '0HERRA03'}, + textures = {} + }, + ["RUST"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0RUSTA01'}, + textures = {} + }, + ["LLLL"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0LLLLA04', '0LLLLA05', '0LLLLA06', '0LLLLA03', '0LLLLA01', '0LLLLA09', '0LLLLA08', '0LLLLA07', '0LLLLA02'}, + textures = {} + }, + ["9DMD"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'09DMDA03', '09DMDA01', '09DMDA02'}, + textures = {} + }, + ["PIPE"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'OPIPEA01', 'OPIPEA03', 'OPIPEA04', 'OPIPEB03', 'OPIPEB02', 'OPIPEA02', 'OPIPEB04', 'OPIPEB01'} + }, + ["NMLM"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0NMLMB01', '0NMLMB02', '0NMLMC01', '0NMLMA02', '0NMLMA03', '0NMLMD07', '0NMLMB03', '0NMLMD04', '0NMLMD01', '0NMLMD03', '0NMLMA01', '0NMLMD05', '0NMLMD06', '0NMLMD02'}, + textures = {} + }, + ["HELL"] = { + has_flats = true, + has_textures = true, + has_all = true, + flats = {'0HELLA02', '0HELLA03', '0HELLC01', '0HELLA01'}, + textures = {'OHELLD01', 'OHELLA01', 'OHELLA12', 'OHELLA13', 'OHELLC02', 'OHELLB01', 'OHELLA02', 'OHELLB02', 'OHELLA11', 'OHELLC01'} + }, + ["GRSS"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0GRSSC02', '0GRSSD02', '0GRSSE01', '0GRSSD01', '0GRSSB01', '0GRSSA01', '0GRSSC01'}, + textures = {} + }, + ["BSKT"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0BSKTB06', '0BSKTB01', '0BSKTB02', '0BSKTA02', '0BSKTB03', '0BSKTA01', '0BSKTB05', '0BSKTB04'}, + textures = {} + }, + ["DMND"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0DMNDB01', '0DMNDB02', '0DMNDA05', '0DMNDB04', '0DMNDB07', '0DMNDA01', '0DMNDA02', '0DMNDA04', '0DMNDA06', '0DMNDB03', '0DMNDB05', '0DMNDA03', '0DMNDB06'}, + textures = {} + }, + ["TL08"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0TL08A11', '0TL08A06', '0TL08A03', '0TL08A05', '0TL08A04', '0TL08A01', '0TL08A13', '0TL08A07', '0TL08A14', '0TL08A02', '0TL08A09', '0TL08A12', '0TL08A08', '0TL08A10'}, + textures = {} + }, + ["PENT"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0PENTA19', '0PENTA02', '0PENTA12', '0PENTA14', '0PENTA08', '0PENTA03', '0PENTA15', '0PENTA09', '0PENTA11', '0PENTA18', '0PENTA07', '0PENTA01', '0PENTA05', '0PENTA13', '0PENTA16', '0PENTA06', '0PENTA04', '0PENTA17'}, + textures = {} + }, + ["RTDC"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'ORTDCB13', 'ORTDCC13', 'ORTDCA22', 'ORTDCA01'} + }, + ["WATE"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0WATER06', '0WATER05', '0WATER08', '0WATER01', '0WATER03', '0WATER02', '0WATER07', '0WATER04'}, + textures = {} + }, + ["CBBL"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0CBBLA01', '0CBBLA02', '0CBBLB03', '0CBBLB01', '0CBBLB02', '0CBBLB04'}, + textures = {} + }, + ["2DMD"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'02DMDA05', '02DMDA04', '02DMDA01', '02DMDA02', '02DMDA03'}, + textures = {} + }, + ["TLMX"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0TLMXA02', '0TLMXA03', '0TLMXA01', '0TLMXA05', '0TLMXA04', '0TLMXA07', '0TLMXA06'}, + textures = {} + }, + ["NUKE"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0NUKEA03', '0NUKEA06', '0NUKEA02', '0NUKEA04', '0NUKEA08', '0NUKEA05', '0NUKEA01', '0NUKEA07'}, + textures = {} + }, + ["CHAN"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'OCHANC01', 'OCHANB01', 'OCHANA01', 'OCHANA02', 'OCHANA12', 'OCHANA11'} + }, + ["SKY5"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'OSKY51', 'OSKY50'} + }, + ["DIAG"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0DIAGA01', '0DIAGA02'}, + textures = {} + }, + ["SKIN"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'OSKINA03', 'OSKINA01', 'OSKINA02'} + }, + ["PAVE"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0PAVEA04', '0PAVEA02', '0PAVEA03', '0PAVEA01'}, + textures = {} + }, + ["GATE"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'OGATEA02', 'OGATEA01'} + }, + ["FLUO"] = { + has_flats = true, + has_textures = false, + has_all = false, + flats = {'0FLUOA01'}, + textures = {} + }, + ["EFCT"] = { + has_flats = false, + has_textures = true, + has_all = false, + flats = {}, + textures = {'OEFCTA01'} + }, +} \ No newline at end of file From 13c2a53f25f70e3c4036fde3c2c2c198f4d0d7e8 Mon Sep 17 00:00:00 2001 From: MsrSgtShooterPerson Date: Wed, 14 Aug 2024 00:50:45 +0800 Subject: [PATCH 27/29] Attempt to fix issue with procedural boss maps occasionally having more than 2 rooms --- scripts/grower.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/grower.lua b/scripts/grower.lua index b75adc184..35b202410 100644 --- a/scripts/grower.lua +++ b/scripts/grower.lua @@ -4060,7 +4060,8 @@ function Grower_grow_room(SEEDS, LEVEL, R) end end - if LEVEL.has_linear_start and #LEVEL.rooms == 4 then + if (LEVEL.has_linear_start and #LEVEL.rooms == 4) or + (LEVEL.is_procedural_gotcha and #LEVEL.rooms > 2) then for _,R2 in pairs(LEVEL.rooms) do if #R2.conns == 1 and R2.grow_parent.is_start then if R.prelim_conn_num == 1 then From be9e6fd8a8727b095c97fca47af86ab833e56a44 Mon Sep 17 00:00:00 2001 From: MsrSgtShooterPerson Date: Wed, 14 Aug 2024 00:51:07 +0800 Subject: [PATCH 28/29] Clamped down maximum start room size a bit further on normal levels. --- scripts/room.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/room.lua b/scripts/room.lua index 8ae0ad6cf..d3e59c2d3 100644 --- a/scripts/room.lua +++ b/scripts/room.lua @@ -2318,7 +2318,7 @@ function Room_choose_size(LEVEL, R, not_big) if R.is_start then R.size_limit = int(R.size_limit / 2) R.floor_limit = int(R.floor_limit / 2) - R.size_limit = math.clamp(rand.pick({8,16,24,32}),R.size_limit,EXTREME_H) + R.size_limit = math.clamp(rand.pick({4,8,12,16}),R.size_limit,EXTREME_H) end end From 8a1dda262e2c5ce3caaf51579d4d1a34d40c1743 Mon Sep 17 00:00:00 2001 From: MsrSgtShooterPerson Date: Wed, 14 Aug 2024 00:53:42 +0800 Subject: [PATCH 29/29] Added extra details on new OTEX module. --- modules/zdoom_otex.lua | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/zdoom_otex.lua b/modules/zdoom_otex.lua index 57823d6fd..9b57bb624 100644 --- a/modules/zdoom_otex.lua +++ b/modules/zdoom_otex.lua @@ -180,7 +180,7 @@ OB_MODULES["otex_proc_module"] = name = "otex_proc_module", - label = _("OTEX Resource Pack"), + label = _("OTEX Resource Pack [PRE-ALPHA]"), where = "other", priority = 75, @@ -195,5 +195,8 @@ OB_MODULES["otex_proc_module"] = get_levels_after_themes = OTEX_PROC_MODULE.get_levels_after_themes }, - tooltip = _("If enabled, generates room themes using OTEX based on a resource table."), + tooltip = _("If enabled, generates room themes using OTEX based on a resource table. ".. + "OTEX must be manually loaded in the sourceport. " .. + "Includes textures and flats only, no patches.\n\n" .. + "Currently does not make any kind of sensibly curated room themes."), }