Project Zomboid

Project Zomboid

The Engineer
FailingWasp 20 Sep, 2024 @ 4:15pm
How to add books to loot tables
This is a great mod, the only snag is the book spawning doesn't work/exist. Here's how to add it:

Locate location of zomboid workshop mods (should be \workshop\content\108600\)

Edit the following file using notepad++ or text editor of choice, notepad if you are feeling brave:
\2906633595\mods\TheEngineer\media\lua\server\Items\SpoonEngineerGiveItems.lua

Add the following underneath

require "Items/SuburbsDistributions";

And before:

function GetEngineerInjury_OnCreate(items, result, player) if ZombRand(300) == 0 then player:getBodyDamage():getBodyPart(BodyPartType.Hand_L):SetScratchedWeapon(true); end if ZombRand(300) == 0 then player:getBodyDamage():getBodyPart(BodyPartType.Hand_R):SetScratchedWeapon(true); end end

require 'Items/ProceduralDistributions' table.insert(ProceduralDistributions["list"]["BookstoreBooks"].items, "Radio.RadioMag1"); table.insert(ProceduralDistributions["list"]["BookstoreBooks"].items, 2); table.insert(ProceduralDistributions["list"]["BookstoreBooks"].items, "Radio.RadioMag2"); table.insert(ProceduralDistributions["list"]["BookstoreBooks"].items, 2); table.insert(ProceduralDistributions["list"]["ClassroomMisc"].items, "Radio.RadioMag1"); table.insert(ProceduralDistributions["list"]["ClassroomMisc"].items, 0.01); table.insert(ProceduralDistributions["list"]["ClassroomMisc"].items, "Radio.RadioMag2"); table.insert(ProceduralDistributions["list"]["ClassroomMisc"].items, 0.01); table.insert(ProceduralDistributions["list"]["ClassroomShelves"].items, "Radio.RadioMag1"); table.insert(ProceduralDistributions["list"]["ClassroomShelves"].items, 0.01); table.insert(ProceduralDistributions["list"]["ClassroomShelves"].items, "Radio.RadioMag2"); table.insert(ProceduralDistributions["list"]["ClassroomShelves"].items, 0.01); table.insert(ProceduralDistributions["list"]["CrateBooks"].items, "Radio.RadioMag1"); table.insert(ProceduralDistributions["list"]["CrateBooks"].items, 0.5); table.insert(ProceduralDistributions["list"]["CrateBooks"].items, "Radio.RadioMag2"); table.insert(ProceduralDistributions["list"]["CrateBooks"].items, 0.5); table.insert(ProceduralDistributions["list"]["LibraryBooks"].items, "Radio.RadioMag1"); table.insert(ProceduralDistributions["list"]["LibraryBooks"].items, 1); table.insert(ProceduralDistributions["list"]["LibraryBooks"].items, "Radio.RadioMag2"); table.insert(ProceduralDistributions["list"]["LibraryBooks"].items, 1); table.insert(ProceduralDistributions["list"]["LivingRoomShelf"].items, "Radio.RadioMag1"); table.insert(ProceduralDistributions["list"]["LivingRoomShelf"].items, 0.01); table.insert(ProceduralDistributions["list"]["LivingRoomShelf"].items, "Radio.RadioMag2"); table.insert(ProceduralDistributions["list"]["LivingRoomShelf"].items, 0.01); table.insert(ProceduralDistributions["list"]["LivingRoomShelfNoTapes"].items, "Radio.RadioMag1"); table.insert(ProceduralDistributions["list"]["LivingRoomShelfNoTapes"].items, 0.01); table.insert(ProceduralDistributions["list"]["LivingRoomShelfNoTapes"].items, "Radio.RadioMag2"); table.insert(ProceduralDistributions["list"]["LivingRoomShelfNoTapes"].items, 0.01); table.insert(ProceduralDistributions["list"]["PostOfficeBooks"].items, "Radio.RadioMag1"); table.insert(ProceduralDistributions["list"]["PostOfficeBooks"].items, 0.5); table.insert(ProceduralDistributions["list"]["PostOfficeBooks"].items, "Radio.RadioMag2"); table.insert(ProceduralDistributions["list"]["PostOfficeBooks"].items, 0.5); table.insert(ProceduralDistributions["list"]["ShelfGeneric"].items, "Radio.RadioMag1"); table.insert(ProceduralDistributions["list"]["ShelfGeneric"].items, 0.01); table.insert(ProceduralDistributions["list"]["ShelfGeneric"].items, "Radio.RadioMag2"); table.insert(ProceduralDistributions["list"]["ShelfGeneric"].items, 0.01); table.insert(ProceduralDistributions["list"]["BookstoreBooks"].items, "Radio.RadioMag3"); table.insert(ProceduralDistributions["list"]["BookstoreBooks"].items, 2); table.insert(ProceduralDistributions["list"]["BookstoreBooks"].items, "Radio.SpoonEngineerDegree"); table.insert(ProceduralDistributions["list"]["BookstoreBooks"].items, 2); table.insert(ProceduralDistributions["list"]["ClassroomMisc"].items, "Radio.RadioMag3"); table.insert(ProceduralDistributions["list"]["ClassroomMisc"].items, 0.01); table.insert(ProceduralDistributions["list"]["ClassroomMisc"].items, "Radio.SpoonEngineerDegree"); table.insert(ProceduralDistributions["list"]["ClassroomMisc"].items, 0.01); table.insert(ProceduralDistributions["list"]["ClassroomShelves"].items, "Radio.RadioMag3"); table.insert(ProceduralDistributions["list"]["ClassroomShelves"].items, 0.01); table.insert(ProceduralDistributions["list"]["ClassroomShelves"].items, "Radio.SpoonEngineerDegree"); table.insert(ProceduralDistributions["list"]["ClassroomShelves"].items, 0.01); table.insert(ProceduralDistributions["list"]["CrateBooks"].items, "Radio.RadioMag3"); table.insert(ProceduralDistributions["list"]["CrateBooks"].items, 0.5); table.insert(ProceduralDistributions["list"]["CrateBooks"].items, "Radio.SpoonEngineerDegree"); table.insert(ProceduralDistributions["list"]["CrateBooks"].items, 0.5); table.insert(ProceduralDistributions["list"]["LibraryBooks"].items, "Radio.RadioMag3"); table.insert(ProceduralDistributions["list"]["LibraryBooks"].items, 1); table.insert(ProceduralDistributions["list"]["LibraryBooks"].items, "Radio.SpoonEngineerDegree"); table.insert(ProceduralDistributions["list"]["LibraryBooks"].items, 1); table.insert(ProceduralDistributions["list"]["LivingRoomShelf"].items, "Radio.RadioMag3"); table.insert(ProceduralDistributions["list"]["LivingRoomShelf"].items, 0.01); table.insert(ProceduralDistributions["list"]["LivingRoomShelf"].items, "Radio.SpoonEngineerDegree"); table.insert(ProceduralDistributions["list"]["LivingRoomShelf"].items, 0.01); table.insert(ProceduralDistributions["list"]["LivingRoomShelfNoTapes"].items, "Radio.RadioMag3"); table.insert(ProceduralDistributions["list"]["LivingRoomShelfNoTapes"].items, 0.01); table.insert(ProceduralDistributions["list"]["LivingRoomShelfNoTapes"].items, "Radio.SpoonEngineerDegree"); table.insert(ProceduralDistributions["list"]["LivingRoomShelfNoTapes"].items, 0.01); table.insert(ProceduralDistributions["list"]["PostOfficeBooks"].items, "Radio.RadioMag3"); table.insert(ProceduralDistributions["list"]["PostOfficeBooks"].items, 0.5); table.insert(ProceduralDistributions["list"]["PostOfficeBooks"].items, "Radio.SpoonEngineerDegree"); table.insert(ProceduralDistributions["list"]["PostOfficeBooks"].items, 0.5); table.insert(ProceduralDistributions["list"]["ShelfGeneric"].items, "Radio.RadioMag3"); table.insert(ProceduralDistributions["list"]["ShelfGeneric"].items, 0.01); table.insert(ProceduralDistributions["list"]["ShelfGeneric"].items, "Radio.SpoonEngineerDegree"); table.insert(ProceduralDistributions["list"]["ShelfGeneric"].items, 0.01);

Enjoy :)

Feel free to adjust the loot values.
Last edited by FailingWasp; 20 Sep, 2024 @ 4:17pm
< >
Showing 1-4 of 4 comments
Purple Nebula 14 Oct, 2024 @ 6:28am 
Thank you!! Didn't see this until now, love Steam notifications not notifying :'3
Sleepman 25 Oct, 2024 @ 6:47am 
Вы забыли добавить в рецепты электрические провода!!! Которые, кстати уже есть в игре. Нужно много проводов и больше электрических компонентов !!!
BOBBYCORPS 3 Dec, 2024 @ 6:10pm 
thx
this is not working, also very confusing.
< >
Showing 1-4 of 4 comments
Per page: 1530 50