Table of Contents

Namespace Timbn.GraveyardKeeperTwo.Core.Framework

Classes

TimbnAsk

The answers of one Ask, each with the lines that follow it.

TimbnBalance

Helpers for the game's balance tables. A plugin adds and edits definitions through its Balance property, and this class holds the static pieces around that, like checking whether the balance has loaded and swapping item icons.

TimbnBubble

An icon over a spot in the world, with no key or text, the way the game marks a workstation that needs something. Use it to show what someone wants, such as a beer over a customer's head. By default it sits in the game's small square frame. Set Framed to false for the bare icon, Scale to size it and Tint to color it. Get one from the plugin's UI.CreateBubble, move it with Show as often as you like, and it is hidden when the plugin unloads or the player returns to the main menu. Dispose a bubble the plugin is done with, such as one made per customer.

TimbnClock

Reads the game's calendar and clock for the loaded save, so a mod can ask what day or time it is without digging through EnvironmentEngine and the save, and sets the time of day as a one shot change that needs no undo. Every member reads as zero or empty at the main menu. See the plugin's Clock property for holds on the clock that are undone, such as freezing it or running it faster.

TimbnConfig

Helpers for a plugin's config file, for binding a slider or a hidden setting in one line and carrying a player's values over when a setting is renamed or moved.

TimbnCost

What the player pays for an answer or a quest step, taken when they pick the answer. The game draws each cost as the item's icon or the price with how much the player has, and grays the answer out until they can pay. Something the player only has to have goes in TimbnNeeds instead.

TimbnCraftBuilder

Describes a craft for the plugin's Crafts.Add, with where it runs, what it takes in and what it makes. The craft is copied from one of the game's own, the woodworking bench's wooden plank unless BasedOn(string) names another, so it starts with everything the game expects and the builder changes only what differs. What is not set stays the template's, so a craft that only calls Needs(string, int) and Makes(string, int) keeps the template's station, work time and energy. The exceptions are the unlock, since a craft is open from the start whatever the template did unless NeedsUnlock() or UnlockedBy(string) is called, and the template's rewards. A copy gives no tech points unless TechPoints(int, int, int) sets them, and leaves out the template's linked perks and what it does when it finishes, such as berry_pie unlocking its next tech.

TimbnCraftEvent

What a craft's OnStarted(Action<TimbnCraftEvent>) and OnFinished(Action<TimbnCraftEvent>) handlers are told.

TimbnData<T>

A plugin's own data object that Core reads from and writes to disk. TimbnSaveData<T> belongs to a save and TimbnGlobalData<T> to the player, and both hand out the data through Current.

TimbnExtensionBuilder

Describes a bench extension for the plugin's Stations.AddExtension, like the game's tool rack. An extension is placed straight from the build desk with no construction site, has nothing to interact with, and attaches to a station that lists it in Extensions(string, params string[]) when the two are built next to each other. Core turns it into the extension, its build desk entry and its removal, with their text. Only Model(TimbnModel, Vector3) is required. An extension with no Cost(params (string Item, int Count)[]) is free, and one with no UnlockedBy(string) is on the build desk from the start.

TimbnFeatureAttribute

Names the feature a Harmony patch class belongs to, so a game update that breaks one feature's patches turns off that feature alone and the rest of the plugin keeps running. The name is the key of the config entry that switches the feature, and while the feature is broken the plugin's Settings.Toggle and Settings.While read that entry as off, the main menu popup names the feature, and IsFeatureBroken(string) says so. A patch class with no feature belongs to the plugin itself, and a failure there still turns off the whole plugin.

TimbnFrameworkPlugin

Non generic base of every Timbn plugin. Handles config, the Enabled gate, Harmony patching, and teardown. Plugins derive from TimbnFrameworkPlugin<T> instead.

TimbnFrameworkPlugin<T>

Base class for a Timbn plugin. Pass your plugin type as T to give it its own static Logger, Enabled entry, and Instance.

TimbnGame

Whether a save is loaded and playable, and writes it on demand.

TimbnGameIds

Every id the game defines, grouped by kind, for anything that asks for one by id.

TimbnGameIds.Buffs

The temporary buffs and debuffs, including the talent buffs a talent potion grants.

TimbnGameIds.BuildDesks

The id of every build desk the game defines, named without the builder_ prefix, such as Yard for builder_yard, for anything that asks for one by id.

TimbnGameIds.BuildTabs

The tabs of a build desk's menu, such as BuildingExtension for the bench tab at the yard, for anything that asks for one by id.

TimbnGameIds.Groups

The game's life simulator groups, the sets of places it sends villagers and guards to.

TimbnGameIds.Items

The id of every item the game defines, such as Coal for coal, for anything that asks for an item by id.

TimbnGameIds.Music

The id of every music track the game defines, such as Violin for violin, for Audio.PlayMusic.

TimbnGameIds.NpcAnimations

The animations each kind of person has a clip of their own for, such as Herm.AdjustingJabbot, for the Animate step and a person's Animate. Each value is the trigger to fire. A class covers one body set, shared by every person it lists, and an animation is only listed for the people whose look has its frames, since anyone else vanishes while it plays.

TimbnGameIds.NpcAnimations.Aleksta

Body set npc_aleksta, worn by npc_aleksta.

TimbnGameIds.NpcAnimations.Astrologer

Body set npc_astrologer, worn by npc_astrologer.

TimbnGameIds.NpcAnimations.Bishop

Body set npc_bishop, worn by npc_bishop.

TimbnGameIds.NpcAnimations.Captain

Body set npc_captain, worn by npc_captain.

TimbnGameIds.NpcAnimations.Carpenter

Body set npc_carpenter, worn by npc_carpenter_01, npc_carpenter_02, npc_carpenter_03, npc_carpenter_04.

TimbnGameIds.NpcAnimations.Citizen

Body set npc_citizen, worn by npc_town_A1_citizen_01, npc_town_A1_citizen_02, npc_town_A1_citizen_03, npc_town_A1_citizen_04, npc_town_A1_citizen_05, npc_town_A1_citizen_06, npc_town_A1_citizen_1101_01, npc_town_A1_citizen_1101_02, npc_town_A1_citizen_1103_01, npc_town_A1_citizen_1104_01, npc_town_A1_citizen_1105_01, npc_town_A1_citizen_1105_02 and 50 more.

TimbnGameIds.NpcAnimations.CityGuards

Body set npc_city_guards, worn by npc_city_guard_02, npc_city_guard_03, npc_city_guard_621_01, npc_city_guard_621_02, npc_city_guard_621_03, npc_city_guard_621_04, npc_city_guard_621_05, npc_city_guard_622_01, npc_city_guard_622_02, npc_city_guard_622_03, npc_city_guard_622_04, npc_city_guard_622_05 and 16 more.

TimbnGameIds.NpcAnimations.CityGuardsFightBow

Body set npc_city_guards_fight_bow, worn by npc_city_guards_fight_03, npc_city_guards_fight_04, npc_city_guards_fight_05, npc_city_guards_fight_06.

TimbnGameIds.NpcAnimations.CityGuardsFightPike

Body set npc_city_guards_fight_pike, worn by npc_city_guards_fight_01, npc_city_guards_fight_02, npc_city_guards_fight_pike.

TimbnGameIds.NpcAnimations.Dig

Body set npc_dig, worn by npc_dig.

TimbnGameIds.NpcAnimations.Donkey

Body set npc_donkey, worn by npc_donkey, npc_donkey_demo, npc_donkey_test.

TimbnGameIds.NpcAnimations.FishermanCitizen

Body set npc_fisherman_citizen, worn by npc_fisherman_01, npc_fisherman_02, npc_fisherman_03.

TimbnGameIds.NpcAnimations.Gerry

Body set npc_gerry, worn by npc_gerry.

TimbnGameIds.NpcAnimations.HeadOfTheGuards

Body set npc_head_of_the_guards, worn by npc_head_of_the_guards.

TimbnGameIds.NpcAnimations.HeadOfTheVillage

Body set npc_head_of_the_village, worn by npc_head_of_the_village.

TimbnGameIds.NpcAnimations.HeadOfTheVillageMask

Body set npc_head_of_the_village_mask, worn by npc_head_of_the_village_mask.

TimbnGameIds.NpcAnimations.Heffry

Body set npc_heffry, worn by npc_heffry.

TimbnGameIds.NpcAnimations.Herm

Body set npc_herm, worn by npc_herm.

TimbnGameIds.NpcAnimations.Jeffry

Body set npc_jeffry, worn by npc_fighting_zone_builder, npc_jeffry.

TimbnGameIds.NpcAnimations.KeepersWife

Body set npc_keepers_wife, worn by npc_keepers_wife.

TimbnGameIds.NpcAnimations.Knight

Body set npc_knight, worn by npc_knight.

TimbnGameIds.NpcAnimations.Larry

Body set npc_larry, worn by npc_larry, npc_larry_event.

TimbnGameIds.NpcAnimations.Nun

Body set npc_nun, worn by npc_nun.

TimbnGameIds.NpcAnimations.OldBandit01

Body set npc_old_bandit_01, worn by npc_old_bandit_01.

TimbnGameIds.NpcAnimations.OldBandit02

Body set npc_old_bandit_02, worn by npc_old_bandit_02.

TimbnGameIds.NpcAnimations.PlagueDoctor

Body set npc_plague_doctor, worn by npc_plague_doctor.

TimbnGameIds.NpcAnimations.RedEye

Body set npc_red_eye, worn by npc_red_eye.

TimbnGameIds.NpcAnimations.SecondKeeper

Body set npc_second_keeper, worn by npc_second_keeper.

TimbnGameIds.NpcAnimations.TavernOwner

Body set npc_tavern_owner, worn by npc_tavern_owner.

TimbnGameIds.NpcAnimations.TownBarracksMercenary2

Body set npc_town_barracks_mercenary_2, worn by npc_town_barracks_mercenary_2.

TimbnGameIds.NpcAnimations.TownBarracksMercenary3

Body set npc_town_barracks_mercenary_3, worn by npc_town_barracks_mercenary_3.

TimbnGameIds.NpcAnimations.TownBarracksMercenary4

Body set npc_town_barracks_mercenary_4, worn by npc_town_barracks_mercenary_4.

TimbnGameIds.NpcAnimations.TownBarracksMercenaryLeader

Body set npc_town_barracks_mercenary_leader, worn by npc_town_barracks_mercenary_1.

TimbnGameIds.NpcAnimations.VillageGuard01

Body set npc_village_guard_01, worn by npc_bonfire_guard_01, npc_forest_guard_01, npc_village_guard_01, npc_village_guard_lanterns.

TimbnGameIds.NpcAnimations.VillageGuard02

Body set npc_village_guard_02, worn by npc_bonfire_guard_02, npc_forest_guard_02, npc_village_guard_02.

TimbnGameIds.NpcAnimations.Villager

Body set npc_villager, worn by npc_fisherwoman_01, npc_fisherwoman_02, npc_fisherwoman_03, npc_irishperson_01, npc_irishperson_02, npc_irishperson_03, npc_irishperson_04, npc_irishperson_woman_01, npc_irishperson_woman_02, npc_irishperson_woman_03, npc_villager, npc_villager_01 and 11 more.

TimbnGameIds.NpcAnimations.WarehouseManager

Body set npc_warehouse_manager, worn by npc_warehouse_manager.

TimbnGameIds.NpcAnimations.Woodcarver

Body set npc_woodcarver, worn by npc_woodcarver.

TimbnGameIds.NpcAnimations.WorkshopForeman

Body set npc_workshop_foreman, worn by npc_workshop_foreman.

TimbnGameIds.NpcAnimations.WorkshopForemanWriting

Body set npc_workshop_foreman_writing, worn by npc_workshop_foreman_writing.

TimbnGameIds.NpcAnimations.YoungCount

Body set npc_young_count, worn by npc_young_count.

TimbnGameIds.NpcEvents

The events of each person's own game script, such as Herm.GoHome, for the Event step and FireEvent. Story quest events are left out.

TimbnGameIds.NpcEvents.Aleksta

Script npc_aleksta, run by npc_aleksta.

TimbnGameIds.NpcEvents.Astrologer

Script npc_astrologer, run by npc_astrologer.

TimbnGameIds.NpcEvents.BonfireGuard01

Script npc_bonfire_guard_01, run by npc_bonfire_guard_01.

TimbnGameIds.NpcEvents.BonfireGuard02

Script npc_bonfire_guard_02, run by npc_bonfire_guard_02.

TimbnGameIds.NpcEvents.CityGuard

Script npc_city_guard, run by npc_city_guard_02, npc_city_guard_03, npc_city_guard_621_01, npc_city_guard_621_02, npc_city_guard_621_03, npc_city_guard_621_04, npc_city_guard_621_05, npc_city_guard_622_01, npc_city_guard_622_04, npc_city_guard_622_05.

TimbnGameIds.NpcEvents.Donkey

Script npc_donkey, run by npc_donkey.

TimbnGameIds.NpcEvents.Fisherman

Script npc_fisherman, run by npc_fisherman.

TimbnGameIds.NpcEvents.ForestGuard01

Script npc_forest_guard_01, run by npc_forest_guard_01.

TimbnGameIds.NpcEvents.ForestGuard02

Script npc_forest_guard_02, run by npc_forest_guard_02.

TimbnGameIds.NpcEvents.HeadOfTheGuards

Script npc_head_of_the_guards, run by npc_head_of_the_guards.

TimbnGameIds.NpcEvents.HeadOfTheVillage

Script npc_head_of_the_village, run by npc_head_of_the_village.

TimbnGameIds.NpcEvents.HeadOfTheVillageMask

Script npc_head_of_the_village_mask, run by npc_head_of_the_village_mask.

TimbnGameIds.NpcEvents.Heffry

Script npc_heffry, run by npc_heffry.

TimbnGameIds.NpcEvents.Herm

Script npc_herm, run by npc_herm.

TimbnGameIds.NpcEvents.Homobonus

Script npc_homobonus, run by npc_homobonus.

TimbnGameIds.NpcEvents.Jeffry

Script npc_jeffry, run by npc_jeffry.

TimbnGameIds.NpcEvents.Larry

Script npc_larry, run by npc_larry.

TimbnGameIds.NpcEvents.Looter

Script npc_looter, run by npc_looter_03, npc_looter_05.

TimbnGameIds.NpcEvents.Nun

Script npc_nun, run by npc_nun.

TimbnGameIds.NpcEvents.OldBandit01

Script npc_old_bandit_01, run by npc_old_bandit_01.

TimbnGameIds.NpcEvents.OldBandit02

Script npc_old_bandit_02, run by npc_old_bandit_02.

TimbnGameIds.NpcEvents.PlagueDoctor

Script npc_plague_doctor, run by npc_plague_doctor.

TimbnGameIds.NpcEvents.RedEye

Script npc_red_eye, run by npc_red_eye.

TimbnGameIds.NpcEvents.TavernOwner

Script npc_tavern_owner, run by npc_tavern_owner.

TimbnGameIds.NpcEvents.TinyBuildCharacter

Script t_b_character, run by t_b_apothecary, t_b_tailor, t_b_vegetabler.

TimbnGameIds.NpcEvents.VillageGuard01

Script npc_village_guard_01, run by npc_village_guard_01.

TimbnGameIds.NpcEvents.VillageGuard02

Script npc_village_guard_02, run by npc_village_guard_02.

TimbnGameIds.NpcEvents.VillageGuardLanterns

Script npc_village_guard_lanterns, run by npc_village_guard_lanterns.

TimbnGameIds.NpcEvents.Villager

Script npc_villager, run by npc_villager_01, npc_villager_02, npc_villager_03, npc_villager_04, npc_villager_05, npc_villager_06, npc_villager_woman_01, npc_villager_woman_02, npc_villager_woman_03, npc_villager_woman_04, npc_villager_woman_05, npc_villager_woman_06.

TimbnGameIds.NpcEvents.Villager01Lantern

Script npc_villager_01_lantern, run by npc_villager_01_lantern.

TimbnGameIds.NpcEvents.WarehouseManager

Script npc_warehouse_manager, run by npc_warehouse_manager.

TimbnGameIds.NpcEvents.WorkshopForeman

Script npc_workshop_foreman, run by npc_workshop_foreman.

TimbnGameIds.NpcEvents.YoungCount

Script npc_young_count, run by npc_young_count.

TimbnGameIds.Npcs

The id of every kind of person the game defines, such as Herm for npc_herm.

TimbnGameIds.Perks

The perks a keeper or zombie earns from talents and tech, with zombie perks starting with Zombie.

TimbnGameIds.Sounds

The id of every sound effect the game defines, such as CoinsSound for coins_sound, for Audio.PlaySound.

TimbnGameIds.TechPoints

The red, green and blue tech point resources a player spends in the tech tree, for Resource and HasResource.

TimbnGameIds.Techs

Every unlock in the tech tree, the entries the player pays points for.

TimbnGameIds.Workstations

The id of every crafting station and bench extension the game defines, grouped by the build desk that builds it (Yard.ToolRack for tool_rack) with the ones no build desk builds under Placed, for anything that asks for one by id.

TimbnGameIds.Workstations.AlchemyLab

The stations and bench extensions built at the AlchemyLab build desk.

TimbnGameIds.Workstations.ClaySand

The stations and bench extensions built at the ClaySand build desk.

TimbnGameIds.Workstations.Conveyor

The stations and bench extensions built at the Conveyor build desk.

TimbnGameIds.Workstations.Garden

The stations and bench extensions built at the Garden build desk.

TimbnGameIds.Workstations.Home

The stations and bench extensions built at the Home build desk.

TimbnGameIds.Workstations.Mine

The stations and bench extensions built at the Mine build desk.

TimbnGameIds.Workstations.Morgue

The stations and bench extensions built at the Morgue build desk.

TimbnGameIds.Workstations.Placed

The stations and bench extensions no build desk builds, such as KitchenOven for kitchen_oven.

TimbnGameIds.Workstations.Sawmill

The stations and bench extensions built at the Sawmill build desk.

TimbnGameIds.Workstations.Vineyard

The stations and bench extensions built at the Vineyard build desk.

TimbnGameIds.Workstations.VineyardBasement

The stations and bench extensions built at the VineyardBasement build desk.

TimbnGameIds.Workstations.Writing

The stations and bench extensions built at the Writing build desk.

TimbnGameIds.Workstations.Yard

The stations and bench extensions built at the Yard build desk.

TimbnGlobalData<T>

Holds a plugin's own data that belongs to no save. Core fills Current when the plugin starts and writes it to disk when the game saves, when the player returns to the main menu, when the game quits, when the plugin unloads, and whenever Save() is called. Get one from Saves.RegisterGlobal.

TimbnGui

Draws the IMGUI a plugin registered with UI.DrawGui and UI.DebugWindow, and offers the shared bits of a debug window.

TimbnGuiWindow

An IMGUI box for a plugin's debug or cheat menu, opened and closed with a key from the plugin's config. Core draws the box, a title line that names the key to close it, and a "load a save" note while no save is loaded, so the plugin only draws what goes inside. Get one from the plugin's UI.DebugWindow.

TimbnInput

Tells a mod's hotkeys when the game would take the same key press itself, so a mod key does not fire behind an open window or in the middle of a cutscene. Use it in place of checking IsInGame and LazyWindowsStackController.ActiveWindow by hand.

TimbnInteractionHint

The game's "press a key to do something" hint, drawn over a spot in the world the way it is drawn over a chest or a door, for an interaction the game itself does not know about. Get one from the plugin's UI.CreateHint, move it with Show as often as you like, and it is hidden when the plugin unloads or the player returns to the main menu. It shows one key, or two on two rows the way a cargo lift shows Open and Put. While it shows, its keys belong to the hint the way they do for the game's own hints, so the game ignores those presses and does not, for example, drop what the player is carrying. Dispose a hint the plugin is done with, such as one made per visitor.

TimbnItems

Finds, gives, and drops items in the loaded save. At the main menu every count is zero and nothing moves.

TimbnLines

Lines of a conversation, such as a talk added with Dialog.AddTalk or what follows an answer.

TimbnLook

Builds the conditions for a station's extra models. They use the game's own conditional drawer, the way the autopsy table shows its cloth when it holds a body. Pass one to ShowWhen(TimbnLookCondition, TimbnModel, bool).

TimbnLookCondition

When one of a station's extra models shows, for ShowWhen(TimbnLookCondition, TimbnModel, bool). Build one with TimbnLook. The game checks it again each time the station's items, resources, worker or work change, so the model comes and goes by itself.

TimbnMarkup

Writes the game's text markup for you, for icons and other lines inside a line of text. Use it in any text a plugin adds, such as quest lines or Text.Add. Lang files write the same markup by hand.

TimbnModel

A 3D model built from a plugin's PNGs, drawn with the game's own prop shader so it takes the game's lighting, fog and dithering. Get one from Build(string, Action<TimbnModelFaces>).

TimbnModelFaces

Describes a model made from pictures, for Build(string, Action<TimbnModelFaces>). Every picture is exactly what the player sees, so its own size is the size of the face and you only say where it stands. The game's camera tilts forward and down and never sideways, so only two kinds of face are ever seen, one standing up toward the camera (Front) and one lying face up (Top), and a solid box is just both of them (Block). Sides, backs and undersides are never built.

TimbnNeeds

What has to be true before the player can go on, checked but never taken. On an answer the game draws each need as a lock and grays the answer out until they are all met. On a quest or stage they gate its talk, so the NPC only offers it once they are met. To take something from the player, use TimbnCost.

TimbnNpc

A person in the loaded save that a plugin moves, from the plugin's Npcs.Find or Npcs.Spawn. Every method does nothing and returns false once the person is gone. When the handle is disposed, the plugin unloads or the player returns to the main menu, a walk it started is stopped, its claim is let go, and a person Npcs.Spawn added is removed.

TimbnNpcBlock

One block of a TimbnNpcDay.

TimbnNpcDay

A person's day for the plugin's Npcs.Schedule, made of blocks that each start at a time of day. A block's intro runs once when it starts on time and its loop repeats until the next block starts. A block joined late, after a load, a sleep or a jump of the clock, runs its join late steps in place of the intro. A new block waits for a trip picked by Decide to end. The person stops for a conversation or a story scene, and when the game moves them itself the day leaves them to it until a later block starts. A plugin's RunSteps(TimbnNpcSteps, Action?) on them takes over until it ends, and then the day joins the block of the moment late. Shut a vendor's trade window with the plugin's Npcs.CloseTradeWhen.

TimbnNpcSchedule

A person following a TimbnNpcDay on the game clock, from the plugin's Npcs.Schedule, in every save the player loads. Disposing it, or the plugin unloading, stops the walk it started and lets go of its claim.

TimbnNpcSteps

A list of things for a person to do in order. Build one in a block's Intro, LateIntro or Loop, return one from Decide(Func<TimbnNpc, TimbnNpcSteps?>) to pick a trip, or hand one to RunSteps(TimbnNpcSteps, Action?) to play it on command. A wait names its clock, game minutes that follow the game's speed or real seconds that do not.

TimbnNpcTrip

A trip off a person's origin for the ChainTrips(Func<TimbnNpc, TimbnNpcTrip?, TimbnNpcTrip?>) step, in three parts. Leave runs only when the trip starts from the origin, the body always runs, and Return runs only when no next trip chains on, so trips can follow each other without going back to the origin in between.

TimbnNpcs

Reads the game's own lists of places people go, so a mod never writes a list of point ids, and what the game keeps about a person, such as their reputation resource. To move someone, use the plugin's Npcs property.

TimbnObjectAction

Something the player can do beside an object in the world that the game gives no interaction for, such as petting a cat on a box. Standing by the object shows a hint, and pressing Interaction walks the player straight to a spot beside it, where they face one way and play an animation for a while. Add it with the plugin's UI.AddObjectAction.

TimbnPlayer

Reads where the player is in the loaded save and what they know, and makes the one shot changes that need no undo, such as giving money, changing a resource, unlocking a craft or moving them. See the plugin's Player property for changes that have to be undone, such as holding the player still.

TimbnPluginAudio

Plays the game's own music and sound effects for the plugin, with music put back the way it was when the plugin is done. Reach it through the plugin's Audio property.

TimbnPluginBalance

Adds definitions to the game's balance tables on behalf of a plugin. The balance is where the game keeps every item, buff, quest, vendor, craft, and building, and GameBalance.Me.GetData looks them up by id. Use this for a kind of definition that has no easier Core API. Definitions are removed when the plugin unloads. Reach it through the plugin's Balance property.

TimbnPluginClock

Changes how fast the game's time runs on behalf of a plugin, undone when the plugin unloads or the player returns to the main menu. See TimbnClock to read the day and time. Reach it through the plugin's Clock property.

TimbnPluginCrafts

Adds crafts on behalf of a plugin, at the game's own stations or at ones added with Stations.Add. Each craft is copied from one of the game's, shows up in the station's craft window straight away, and is removed when the plugin unloads. Core keeps a queued one out of the game's save so the save still loads once the plugin is gone. Reach it through the plugin's Crafts property.

TimbnPluginDialog

Gives NPCs conversations on behalf of a plugin, using the game's own speech bubbles and answer choices. Talks are removed when the plugin unloads. Reach it through the plugin's Dialog property.

TimbnPluginEvents

Subscribes a plugin to the game's events without any cleanup code. Every subscription is owned by the plugin and removed when it unloads, so an F6 hot reload never leaves an old handler firing. The named events are the ones Core adds something to and the ones mods commonly need, such as a new day or the player using an item, and those that belong to a save follow every save the player loads. Any other game event is one line of GameEvent(Action, Action<Action>, Action<Action>), or of SaveEvent(Action, Action<Action>, Action<Action>) for an event on an object that belongs to the loaded save. Each handler is wrapped so a throw is logged instead of reaching the game. Reach it through the plugin's Events property.

TimbnPluginMainMenu

Puts a plugin's messages on the main menu using the game's own UI, either as a line of text above the game's credits or as a popup in the game's dialog window. Lines are removed when the plugin unloads. Every Timbn plugin that starts already gets a line with its name and version, so this is for anything beyond that. Reach it through the plugin's MainMenu property.

TimbnPluginModels

Adds 3D models on behalf of a plugin. It builds models from the plugin's PNGs and draws them with the game's own prop shader. Hand a model to the plugin's Stations to make a buildable station or bench extension, or to AddPart for a part hung on a grave. Everything is freed when the plugin unloads. Reach it through the plugin's Models property.

TimbnPluginNpcs

Gives people a day on the game clock, moves them and adds new ones for a plugin. Everything is owned by the plugin, so walks it started stop, claims are let go and added people are removed when it unloads. People, groups, events and animations come from the generated TimbnGameIds.Npcs, TimbnGameIds.Groups, TimbnGameIds.NpcEvents and TimbnGameIds.NpcAnimations, and points are named by their id. Reach it through the plugin's Npcs property.

TimbnPluginPlayer

Acts on the player character, with every change undone when the plugin unloads or the player returns to the main menu. See TimbnPlayer to read where the player is. Reach it through the plugin's Player property.

TimbnPluginPotions

Adds potions to the game on behalf of a plugin. Each potion becomes a real item, buff, and alchemy formula that brews at the mixer and saves like the game's own, and is removed when the plugin unloads. Reach it through the plugin's Potions property.

TimbnPluginQuests

Adds quests to the game on behalf of a plugin, removed again when the plugin unloads. Reach it through the plugin's Quests property.

TimbnPluginSaves

Keeps a plugin's own data with each save. The data goes in a file next to the game's save rather than inside it, so removing the plugin never breaks a save. Core reads the file when a save loads, writes it each time the game saves, and deletes it with the save. Reach it through the plugin's Saves property.

TimbnPluginSettings

Keeps a plugin's changes to the game in step with its config, so a setting changed in a config menu applies straight away instead of on the next start. A setting whose feature is broken, because a game update broke its patches (see TimbnFeatureAttribute), reads as off here whatever its value. Reach it through the plugin's Settings property.

TimbnPluginSprites

Adds custom sprites on behalf of a plugin, such as icons for its items and buffs. The game finds sprites by name, so a sprite added here shows anywhere its name is used as an icon id. Sprites are removed and their textures freed when the plugin unloads. Reach it through the plugin's Sprites property.

TimbnPluginStations

Adds buildable workstations and bench extensions on behalf of a plugin, each offered at a build desk and built, worked and dismantled like the game's own. Core makes every definition the game expects from a few lines, keeps a built one out of the game's save so the save still loads once the plugin is gone, and removes everything when the plugin unloads. Reach it through the plugin's Stations property.

TimbnPluginTechs

Adds technologies to the game's tech tree on behalf of a plugin, bought with tech points like the game's own and removed when the plugin unloads. Reach it through the plugin's Techs property. A save that bought one keeps working once the plugin is gone, since the game drops tech ids it doesn't know when it loads.

TimbnPluginText

Adds or overrides the game's text on behalf of a plugin. Quest names, dialog lines, item names, and any other text the game shows is looked up by localization key, and the keys added here are written into the loaded language and every language loaded later. They are removed when the plugin unloads, putting back any shipped text they overrode. Reach it through the plugin's Text property.

TimbnPluginUI

Puts a plugin's own things on screen (windows, hints and its own GUI) and fades the screen through black with code the plugin can call off, all taken down again when the plugin unloads. See TimbnUI to read the game's windows. Reach it through the plugin's UI property.

TimbnPotion

Describes a potion for a plugin's Potions.Add. The potion becomes a real item, buff, and alchemy formula, and its buff decides what drinking it does.

TimbnPotionBuff

The buff a potion applies, and what it does.

TimbnQuest

A quest added with the plugin's Quests.Add, all its stages included. Keep it to start the quest, mark it ready or complete it from your own code, and pass it to another quest's OfferAfter or ContinuesFrom to chain them.

TimbnQuestBuilder

Describes a quest for the plugin's Quests.Add, with who gives it, when it is offered, and what the player does. A quest is a list of stages. What is written on the builder itself (Description, TalksWith, Needs, Talk and the rest) is its first stage, and each AddStage(string, string, Action<TimbnQuestStage>) adds the next, which Core turns into one game quest per stage, each continuing the one before, the way the game builds its own storylines. Every line is the text itself, and Core turns it into localization keys named after the quest id. To keep the text only in the plugin's lang files, use the Quests.Add that takes no name with Description(), Line, and the Accept and Decline that take no text.

TimbnQuestEvent

Something the player does in the game that moves a quest along, for a quest's ReadyOn or StartsOn. Each one matches the game's own event for it by id.

TimbnQuestOffer

The conversation where the NPC offers the quest. It needs an Accept answer, and picking it starts the quest.

TimbnQuestRun

One play of a quest whose details change each time, such as which villager asks and for what. A quest's Setup fills it when the mod calls NewRun, Core keeps it with the save until the play ends, and every part of the quest that takes a run reads it. Each value has a name, and text anywhere in the quest shows it with that name in braces, such as {dish}. An NPC shows as their name, an item as its name, a text value as its line (all in the player's language, looked up as the text shows), and a number as itself.

TimbnQuestStage

One stage of a quest added with AddStage(string, string, Action<TimbnQuestStage>), with its own goal, talk and rewards. Core makes it a game quest of its own that continues the stage before.

TimbnQuestTalk

The conversation that finishes a quest or a stage, at the NPC from its TalksWith call or the quest giver. The lines play, then the player picks Accept, which takes the stage's cost, gives its reward and completes the stage, or Decline to come back later. Accept with no text completes the stage as soon as the lines are done, for something the NPC simply hands over. When the NPC has a menu of its own, as Herm and Larry do, the talk joins it as one answer. Its text is the talk's first line when that is a PlayerSay, or the quest's name otherwise, and the rest plays once it is picked. A talk that is only an Accept answer puts that answer straight into the menu, with its price and reward. The NPC shows a speech bubble for the talk only once the stage's needs are met and the player can pay its cost, while the answer in an NPC's own menu is there all along, so the player can still ask and decline.

TimbnQuests

Registers the quests plugins add as real QuestDefs, so the game's own quest system starts, finishes, saves and lists them. It also reads the status of any quest, the game's own included.

TimbnRewards

What the player gets for an answer or a quest step. An answer, a step's Accept answer included, shows its rewards and the game pays them when it is picked. Any other step pays them when it is done, and a quest's money and reputation also show on its reward line in the quest window.

TimbnRolls

The dice for a person's daily choices. They give the same numbers for the same key and the same game minute or day, so a reload or a second look at the same moment rolls alike, and they are well mixed, so neighboring minutes, days and people don't roll alike.

TimbnSafe

Runs a handler and logs a throw instead of letting it reach the game, in one wording for all of Core and the mods. Use it around any code a game event or a callback runs, since a throw that reaches the game can drop the handler for the rest of the session or stop a frame half done.

TimbnSaveData<T>

Holds a plugin's own data for the loaded save. Core fills Current when a save loads and writes it to disk each time the game saves, so the plugin only reads and changes it. Get one from Saves.Register.

TimbnStation

A buildable workstation added with the plugin's Stations.Add. Hand it to a craft's In(TimbnStation) so the craft runs there. The ids follow the game's own naming, so a station timbn_smoking_rack has the construction site timbn_smoking_rack_place and the build desk entry timbn_smoking_rack_place_p.

TimbnStationBuilder

Describes a buildable workstation for the plugin's Stations.Add, with its look, which game station it behaves like, and what it costs at the build desk. Core turns it into the five definitions the game expects, the station, its construction site, the build desk entry and the two removals, with their text, the same way the game's own woodworking bench is set up. Only Model(TimbnModel) is required. A station with no Cost(params (string Item, int Count)[]) is free, and one with no UnlockedBy(string) is on the build desk from the start.

TimbnTalkOptions

Optional settings for a talk added with the plugin's Dialog.AddTalk.

TimbnTalk<TSelf>

The steps every conversation shares, for talks added with the plugin's Dialog.AddTalk and for quest conversations. Each line is the text itself, and Core turns it into a localization key named after the talk or quest, numbered in the order written, so a lang file can translate it. Named(string) gives a line a name of its own instead, and Line(string, params object[]) leaves the text out of code and reads it from the plugin's lang files by name. The steps play in order, each waiting for the one before.

TimbnTechBuilder

Describes a technology for the plugin's Techs.Add, a node on the game's tech tree that the player buys with tech points. It needs At(float, float) for its cell and After(string, params string[]) for the tech that comes before it. What the tech unlocks is set from the other side, by the station's or craft's UnlockedBy with this tech's id.

TimbnUI

Reads and drives the game's own screens, such as which window is open and the fade to black. See the plugin's UI property for things a plugin shows that have to be taken down again.

TimbnWorld

Finds things in the loaded world, such as the walkable ground of a scene or the objects near a spot, and reads how the world is doing, such as the graveyard, church and town scores, the town's gratitude and the weather. A mod that uses the navigation graph needs its own reference to AstarPathfindingProject.dll from the game's Managed folder.

TimbnZombieSkins

The looks the game can roll for one kind of zombie. Get it from TimbnZombies.Looks.

TimbnZombies

Finds the zombies in the loaded save and the looks the game can give them.

Enums

TimbnCarryRule

How an item handed to the player with Player.Carry sits in and leaves their hands. Each rule adds one restriction to the one before it.

TimbnComparison

How a station's value is compared with the number a look condition names.

TimbnFacing

The way one side of a station faces as the camera sees it. The facing is also the edge of the footprint its dock spot is on, where the player or a zombie stands to work it and finished items drop. The values are the rotation indexes the game saves, and R in build mode turns through the facings a station has in this order. Only Left and Right can be mirrored, since a station facing down or up looks the same flipped.

TimbnWalk

How a person walks to a point.

TimbnWeekday

The six days of the game's week, named the way the game names them.