Jump to content

The Bestiary Mod - Full Release!


Recommended Posts

Hello!

I'm proud to announce that a mod I've been working on for a while now is finally ready for a release!

_________________________________

 

The Bestiary, for Don't Starve Together!

_________________________________

?imw=5000&imh=5000&ima=fit&impolicy=Lett

https://steamcommunity.com/sharedfiles/filedetails/?id=2768642680

_________________________________

 

This mod adds a new book, similar to the Cookbook, that has useful information about all the mobs you can encounter throughout your journey through The Constant. It contains mobs' stats, drops, diet and information about their behavior.

But why read a book in-game when you can just go to the wiki and read information there? Well, there is a configuration option called "Discoverable Mobs". This config will lock all the mobs' entries in the bestiary. In order to unlock said mob entries the player will have to find that particular mob and get near it to "discover it". This will unlock some information, like stats and the look of the mob. To learn more about the mob the player will have to kill it, therefore "learning" more about it.

It's a simple mod that I'm surprised hasn't been done before but anyway, Enjoy!

/\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/

Current mod version: 1.0.0
 - Further modified the bestiary look
 - Changed filtering and sorting, all filters now have individual buttons, sorting only has 1
 - Added mob search by name
 - Changed the torn page for shadow creatures back into a full one and added their names (for clarity)
 - Fixed a bug where a player would discover mobs as a ghost
 - Added the ability to add custom mobs into the bestiary, tutorial below

The mod is officially out of beta. That doesn't mean I will stop working on it of course. Full release means the mod is in, what I would call, a stable, playable state. More updates will probably come out in the future.

\/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\

How to add custom mobs to the bestiary:

Spoiler

There is a function in monsterinfo.lua that allows mod creators to add their own mobs into the bestiary.


AddToBestiary(mob_data)

All you need to do is add require("monsterinfo") and use this function with a table of data.

There are 2 types of mob data tables, one containing 'forms' and one without 'forms'. Forms are used if you want to have 2 mobs inside one entry, for example, Clockwork Knight and Damaged Knight. This type of data adds 2 arrows to allow players to switch between different forms.

An entry without forms looks like this:


name = "Spider", -- Name that is displayed in the entry, also used in the Mob Search Bar
prefab = "spider", -- Prefab of the mob
bank = "spider", -- Bank of the mob
build = "spider_build", -- Build of the mob
anim_idle = "idle", -- Idle animation of the mob
anim_action = "atk", -- An animation that should play when clicking on the mob, remove to disable
scale = 0.7, -- Mobs scale, it's usually required to scale the mob down
intent = STRINGS.BESTIARY_AGGRESSIVE, -- Mobs intent (neutral, passive or aggressive), used in filtering
type = STRINGS.BESTIARY_MONSTER, -- Mobs type (animal, monster, boss, raid boss), used in filtering
images = { grid_atlas = "images/monstergrid_bg_forest.xml", grid_image = "monstergrid_bg_forest.tex", atlas = "images/monster_bg_forest.xml", image = "monster_bg_forest.tex" }, -- Images used as background, 'grid' images are used in the scrolling grid, normal images in mob view
rotations = { FACING_DOWN, FACING_RIGHT, FACING_UP, FACING_LEFT }, -- Directions that this mob can face, rotations can start from any rotation but MUST be sorted counter clockwise, remove if not needed

stats = { -- Stats of the mob
	health = 100, -- Health - can be set to a string, for example, "100-200"
	damage = 20, -- Damage
	speed = 5, -- Speed
	diet = { "meat", "horrible" }, -- Diet, remove if not applicable
	drops = "none", -- Guaranteed drops with chance, displays as "Drops", remove if not applicable, spiders have none so here's a Rabbit example
		 -- drops = {
			 -- { prefab = "smallmeat", amount = 1, chance = 1 } -- Name of the prefab that's dropped, the amount, and chance (0.00 - 1.00)
		 -- },

	limited_drops = { -- A list of drops that only drop 1 of the prefabs inside it, displays as "*amount* Drop(s) Of", remove if not applicable
		amount = 1, -- The number of prefabs that can drop chosen from the list below
		loot = { -- loot table
			{ prefab = "monstermeat", amount = 1, chance = 0.5 }, -- Name of the prefab that's dropped, the amount, and chance (0.00 - 1.00)
			{ prefab = "silk", amount = 1, chance = 0.25 }, -- Name of the prefab that's dropped, the amount, and chance (0.00 - 1.00)
			{ prefab = "spidergland", amount = 1, chance = 0.25 }, -- Name of the prefab that's dropped, the amount, and chance (0.00 - 1.00)
		} -- When using limited_drops the cumulative chance should be equal to 100%
	},
  
	info = BESTIARYINFO.SPIDER -- Information text, displayed on the left of the mob view
}

An entry with forms looks like this:


scale = 1, -- Scale, universal for all forms
type = STRINGS.BESTIARY_ANIMAL, -- Type, universal for all forms
images = { grid_atlas = "images/monstergrid_bg_savanna.xml", grid_image = "monstergrid_bg_savanna.tex", atlas = "images/monster_bg_savanna.xml", image = "monster_bg_savanna.tex" }, -- Images, universal for all forms

forms = { -- Forms
	{ -- Each form should be a table, 1st table - Rabbit
		name = "Rabbit",
		prefab = "rabbit",
		bank = "rabbit",
		build = "rabbit_build",
		anim_idle = "idle",
		anim_action = "hit",
		intent = STRINGS.BESTIARY_PASSIVE,
        
		stats = {
			health = 25,
			damage = 0,
			speed = 5,
			diet = { "veggies" },

			drops = {
				{ prefab = "smallmeat", amount = 1, chance = 1 }
			},
        
			info = BESTIARYINFO.RABBIT
		}
	},
	{ -- Each form should be a table, 2nd table - Beardling
		name = "Beardling",
		prefab = "rabbit",
		bank = "rabbit",
		build = "beard_monster",
		anim_idle = "idle",
		anim_action = "hit",
		intent = STRINGS.BESTIARY_PASSIVE,

		stats = {
			health = 25,
			damage = 0,
			speed = 5,
			diet = { "veggies" },
			drops = "none",

			limited_drops = {
				amount = 1,
					loot = {
						{ prefab = "monstermeat", amount = 1, chance = 0.4 },
						{ prefab = "nightmarefuel", amount = 1, chance = 0.4 },
						{ prefab = "beardhair", amount = 1, chance = 0.2 },
					}
				},

			info = BESTIARYINFO.BEARDLING
		}
	}
}

 

 

For interested, this mod is on GitHub: https://github.com/only-t/dst-bestiary-mod

Edited by -t-
Updated adding custom mobs.
  • Like 4
  • Thanks 2
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
  • Create New...