diff --git a/README.md b/README.md index 0e62da0..acee224 100644 --- a/README.md +++ b/README.md @@ -76,9 +76,9 @@ Anthro Survivors works by adding a full-body piece of clothing to the character You can probably see where this is going. Anthro Zeds Extended (as well as the original, Anthro Zeds) combines these together. We inject a list of "underwear" that comprises every possible furry model into UnderwearDefinitions, set the underwear chance to 100%, and make the spawn weight massive. This causes the game to spawn and equip a random furry model to every zombie (with an extremely small leftover chance of being human with underwear). The only downside to this is that zombies now only extremely rarely spawn with underwear, but since bras/underpants don't actually do anything in Zomboid, this is not really a problem. -The main thing that Anthro Zeds Extended does is we do **not** use the "_Deceased" version of furry heads. For some reason, the base Anthro Survivors mod requires four versions of every species: male, female, male deceased, and female deceased. Here's the thing, though: **the deceased versions are literally the same model and texture.** There is no difference. The *only* change is that the "deceased" version is a different item that is equipped to the "bandage" layer rather than the "fur" layer. +The main thing that Anthro Zeds Extended changes is we do **not** use the "_Deceased" version of furry heads. For some reason, the base Anthro Survivors mod requires four versions of every species: male, female, male deceased, and female deceased. Thing is, **the deceased versions are literally the same model and texture.** There is no difference. The *only* change is that the "deceased" version is a different item that is equipped to the "bandage" layer rather than the "fur" layer. -Why? Quite frankly, I have absolutely *zero idea*. I cannot find a reason why this is done, especially since Anthro Survivors only uses this "deceased" version on the game over screen when the player is zombified. +Why? Quite frankly, I have absolutely *zero idea*. I cannot find a reason why this is done, especially since Anthro Survivors only uses this "deceased" version on the game over screen when the player is zombified. I have attempted to reach out to the creators, Wuffwick and Jaql, to try and ask why this is done but neither will accept my messages on Steam and have no other public contact info. The problem with this is that the "bandage" layer is "multi item". Meaning, you can have multiple "bandage" layer clothing equipped (because you have different bandage locations). This was (partially) the cause of the "hybrid" glitch in the original Anthro Zeds mod; if a zombie had two "deceased" furry heads, both could be equipped at the same time. The "fur" layer doesn't have this issue, as it is a unique slot (like almost every piece of clothing in Zomboid). diff --git a/media/lua/client/anthrozedsEX.lua b/media/lua/client/anthrozedsEX.lua index d3aeaaf..885f493 100644 --- a/media/lua/client/anthrozedsEX.lua +++ b/media/lua/client/anthrozedsEX.lua @@ -4,7 +4,7 @@ UnderwearDefinition = UnderwearDefinition or {}; AnthroZedsEX = {} -- create empty table to fill - +-- Does this "F_Black" section actually do anything, or is this just a case of "everyone does it beacuse everyone does it"? Find out. UnderwearDefinition.Female_F_Black = { chanceToSpawn = 10000, gender = "female", @@ -21,133 +21,87 @@ UnderwearDefinition.Male_F_Black = { bottom = "", } --- Ungulates list -AnthroZedsEX.AnthroUngulatesF = { -"Furry_AnthroUngulates_FemaleBlackSheep", -"Furry_AnthroUngulates_FemaleWhiteSheep", -"Furry_AnthroUngulates_FemaleBlackWhiteSheep", -"Furry_AnthroUngulates_FemaleHerdwickSheep", -"Furry_AnthroUngulates_FemaleJacobsSheep", -"Furry_AnthroUngulates_FemaleScottishBlackSheep", -"Furry_AnthroUngulates_FemalePinkSheep", -"Furry_AnthroUngulates_FemaleWildBoar", -"Furry_AnthroUngulates_FemaleCowBrown", -"Furry_AnthroUngulates_FemaleCowBlackWhite", -"Furry_AnthroUngulates_FemaleCowBlack", -"Furry_AnthroUngulates_FemaleCowBlue", -"Furry_AnthroUngulates_FemaleGoatBrown" -} -AnthroZedsEX.AnthroUngulatesM = { -"Furry_AnthroUngulates_MaleBlackSheep", -"Furry_AnthroUngulates_MaleWhiteSheep", -"Furry_AnthroUngulates_MaleBlackWhiteSheep", -"Furry_AnthroUngulates_MaleHerdwickSheep", -"Furry_AnthroUngulates_MaleJacobsSheep", -"Furry_AnthroUngulates_MaleScottishBlackSheep", -"Furry_AnthroUngulates_MalePinkSheep", -"Furry_AnthroUngulates_MaleWildBoar", -"Furry_AnthroUngulates_MaleCowBrown", -"Furry_AnthroUngulates_MaleCowBlackWhite", -"Furry_AnthroUngulates_MaleCowBlack", -"Furry_AnthroUngulates_MaleCowBlue", -"Furry_AnthroUngulates_MaleGoatBrown" +-- Ungulates list +AnthroZedsEX.Ungulates = {} +AnthroZedsEX.Ungulates.start = "Furry_AnthroUngulates" +AnthroZedsEX.Ungulates.types = { + "BlackSheep", + "WhiteSheep", + "BlackWhiteSheep", + "JacobsSheep", + "ScottishBlackSheep", + "PinkSheep", + "WildBoar", + "CowBrown", + "CowBlackWhite", + "CowBlack", + "CowBlue", + "GoatBrown" } -- Loong list - -AnthroZedsEX.LoongF = { -"Furry_Loong_FemaleLunarLoong", -"Furry_Loong_FemaleRedLoong", -"Furry_Loong_FemaleGreenLoong", -"Furry_Loong_FemaleTransLoong", -"Furry_Loong_FemaleGoldLoong", -"Furry_Loong_FemaleBlueLoong" -} - -AnthroZedsEX.LoongM = { -"Furry_Loong_MaleLunarLoong", -"Furry_Loong_MaleRedLoong", -"Furry_Loong_MaleGreenLoong", -"Furry_Loong_MaleTransLoong", -"Furry_Loong_MaleGoldLoong", -"Furry_Loong_MaleBlueLoong" +AnthroZedsEX.Loong = {} +AnthroZedsEX.Loong.start = "Furry_Loong_" +AnthroZedsEX.Loong.types = { + "LunarLoong", + "RedLoong", + "GreenLoong", + "TransLoong", + "GoldLoong", + "BlueLoong" } -- Cobra/Jackalope list - -AnthroZedsEX.CJF = { -"Furry_CobraJackalope_FemaleLunarJackalope", -"Furry_CobraJackalope_FemaleDuskCobra", -"Furry_CobraJackalope_FemaleDuskJackalopeRitual", -"Furry_CobraJackalope_FemaleLunarCobraHorned" -} - -AnthroZedsEX.CJM = { -"Furry_CobraJackalope_MaleLunarJackalope", -"Furry_CobraJackalope_MaleDuskCobra", -"Furry_CobraJackalope_MaleDuskJackalopeRitual", -"Furry_CobraJackalope_MaleLunarCobraHorned" +AnthroZedsEX.CJ = {} +AnthroZedsEX.CJ.start = "Furry_CobraJackalope_" +AnthroZedsEX.CJ.types = { + "LunarJackalope", + "DuskCobra", + "DuskJackalopeRitual", + "LunarCobraHorned" } -- Anthro Survivors base mod list - -AnthroZedsEX.baseSpeciesF = { -"Furry_FemaleCat", -"Furry_FemaleDeer", -"Furry_FemaleDog", -"Furry_FemaleFox", -"Furry_FemaleFox_Black", -"Furry_FemaleFox_White", -"Furry_FemaleJackal", -"Furry_FemaleRabbit", -"Furry_FemaleTrashPanda", -"Furry_FemaleSpiffy", -"Furry_FemaleSnep", -"Furry_FemaleWolf", -"Furry_FemaleWolf_Black", -"Furry_FemaleWolf_White", -"Furry_FemaleWolf_Red", -"Furry_FemaleLeggy", -"Furry_FemaleTubeRat", -"Furry_FemaleMarten" +AnthroZedsEX.baseSpecies = {} +AnthroZedsEX.baseSpecies.start = "Furry_" +AnthroZedsEX.baseSpecies.types = { + "Cat", + "Deer", + "Dog", + "Fox", + "Fox_Black", + "Fox_White", + "Jackal", + "Rabbit", + "TrashPanda", + "Spiffy", + "Snep", + "Wolf", + "Wolf_Black", + "Wolf_White", + "Wolf_Red", + "Leggy", + "TubeRat", + "Marten" } -AnthroZedsEX.baseSpeciesM = { -"Furry_MaleCat", -"Furry_MaleDeer", -"Furry_MaleDog", -"Furry_MaleFox", -"Furry_MaleFox_Black", -"Furry_MaleFox_White", -"Furry_MaleJackal", -"Furry_MaleRabbit", -"Furry_MaleTrashPanda", -"Furry_MaleSpiffy", -"Furry_MaleSnep", -"Furry_MaleWolf", -"Furry_MaleWolf_Black", -"Furry_MaleWolf_White", -"Furry_MaleWolf_Red", -"Furry_MaleLeggy", -"Furry_MaleTubeRat", -"Furry_MaleMarten" -} + --Define which mod uses which list AnthroZedsEX.modList = { -AnthroUngulates = {AnthroZedsEX.AnthroUngulatesF, AnthroZedsEX.AnthroUngulatesM}, -Loong = {AnthroZedsEX.LoongF, AnthroZedsEX.LoongM}, -CobraJackalope = {AnthroZedsEX.CJF, AnthroZedsEX.CJM} + AnthroUngulates = AnthroZedsEX.Ungulates, + Loong = AnthroZedsEX.Loong, + CobraJackalope = AnthroZedsEX.CJ } --Add models to the spawn list -function AnthroZedsEX.addToSpawn(femaleList, maleList) - for i = 1, #femaleList do - table.insert(UnderwearDefinition.Female_F_Black.top, {name=""..femaleList[i], chance=1}); - print(""..femaleList[i].." added to female spawns."); - table.insert(UnderwearDefinition.Male_F_Black.top, {name=""..maleList[i], chance=1}); - print(""..maleList[i].." added to male spawns."); +function AnthroZedsEX.addToSpawn(modTable) + for i = 1, #modTable.types do + table.insert(UnderwearDefinition.Female_F_Black.top, {name=""..modTable.start.."Female"..modTable.types[i], chance=1}) + print(""..modTable.start.."Female"..modTable.types[i].." added to female spawns.") + table.insert(UnderwearDefinition.Male_F_Black.top, {name=""..modTable.start.."Male"..modTable.types[i], chance=1}) + print(""..modTable.start.."Male"..modTable.types[i].." added to male spawns.") end end @@ -156,7 +110,7 @@ function AnthroZedsEX.checkMod(modID) print("Checking for mod "..modID..".") if getActivatedMods():contains(modID) then print("" .. modID .. " detected, adding to spawn list."); - AnthroZedsEX.addToSpawn(AnthroZedsEX.modList[modID][1], AnthroZedsEX.modList[modID][2]); + AnthroZedsEX.addToSpawn(AnthroZedsEX.modList[modID]); end end @@ -173,7 +127,7 @@ end --Add the default models, then check for every submod and whether it is installed or not function AnthroZedsEX.onGameBoot() print("Anthro Zeds Expanded has loaded.") - AnthroZedsEX.addToSpawn(AnthroZedsEX.baseSpeciesF, AnthroZedsEX.baseSpeciesM); + AnthroZedsEX.addToSpawn(AnthroZedsEX.baseSpecies); AnthroZedsEX.checkMod("AnthroUngulates"); AnthroZedsEX.checkMod("Loong"); AnthroZedsEX.checkMod("CobraJackalope")