WackyMole-WackysDatabase icon

WackysDatabase

WackysDatabase allows you to control all items/recipes/pieces/creatures/materials/textures via YML files with ServerSync and so much more.

Last updated 16 hours ago
Total downloads 310538
Total rating 42 
Categories Tweaks Server-side Client-side Ashlands Update
Dependency string WackyMole-WackysDatabase-2.4.42
Dependants 855 other packages depend on this package

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2200 icon
denikson-BepInExPack_Valheim

BepInEx pack for Valheim. Preconfigured and includes unstripped Unity DLLs.

Preferred version: 5.4.2200

README

WackysDatabase

WackysDatabase is a mod for Valheim created by Wackymole & Rexabyte.

BlueMan GreenMan

Version: Features

SetEffects: All of them!
4x more item configurations for Primary and Secondary Attacks
CustomIcons: Autogenerated or JPEG/PNG (64x64)
Add or remove conversions on smelter pieces
MaxCraftingStationLevel: YAML support
Mainscreen cloned items
Water Resistance is back
Slow Reload!
Visuals Modifier by Rexabit!
Seteffect by Azu!
Basic Creature cloning or replacing/renaming
Most components can be removed from YAML
sizeMultiplier: Make a small or HUGE world
Future Proof: Can add or remove components without much fuss

Description

WackysDatabase, or Wackydb, allows you to modify and customize items, pieces, recipes, effects, materials and creatures in Valheim without coding. With this mod, you can clone items, change their colors, create new items, and even translate language. It offers a wide range of possibilities for customization.

YML Knowledge

YML is easier to edit and change without getting confused on the syntac. 

You can use https://www.yamllint.com/ to validate any yml code

Almost every component of items/pieces/recipes/effects/creatures can be deleted.

Some components are multilined where you can actually add your own stuff the ymls.
Installation ### Installation
Download and extract the latest version of WackysDatabase into the BepInEx plugin folder (usually Valheim/BepInEx/plugins).
Run Valheim and join a world.
Go to Valheim/BepInEx/config/ and locate the "wackysDatabase" folder.
Inside the "wackysDatabase" folder, you will find three subfolders: "Items," "Recipes," and "Pieces."
Put the mod on the server to force server sync. The YAML files only need to be on the server. There's no need to share the YAML files.

For multiplayer, the mod has been locked down to prevent easy cheating. However, it is recommended to use the AzuAntiCheat and ServerCharacters mods for additional security. AzuAntiCheat ServerCharacters

General Knowledge
There are five (7) Objects that WackyDB touches. Items, Recipes, Pieces, Creatures, Pickables(Pickables and Treebase) Materials and Textures

Items are things in your inventory, you can pickup and maybe equip them.

Recipes are used to construct items, CraftingStations can be workbench, forge, or hand crafted (craftingStation": "")

Pieces are what you use in your hammer and hoe to construct or plant. piecehammers

Creatures are mobs, bosses ect.

Pickable are plants that you can pick like mushrooms, carrots, flint, ect. When you pick a pickable, it gives you the item associated to it. 

Treebase are the final tree grown.

When you place pickable you are actually placing a piece in the (hoe usually). The piece controls how the plant will grow until it matures into a pickable. 

Materials are the basic "colors" in the game, but hold a lot more than just RBG, can they can be tricky to get just right.

Textures are .pngs that hold the feel, appearance, or consistency of a surface or substance.

Nost lines in the YAMLS can be deleted. Only the required ones need to be in the files, when the line is deleted the computer interprets that as a null value.

Null is like I don't know, so I don't care, use the orginal values. 

To delete the existing values you will use either '' for strings, "delete" for SE Effects or "-" for multiliners. 

jpeg or png. 64 x 64 px - name like wacky.png, Must be in Icon Folder (Not ServerSynced)
FAQ

Frequently Asked Questions

Q: Can I use custom icons for items?
    A: Yes, you can use autogenerated icons or provide JPEG/PNG icons (64x64) for customization.

Q: Can I add new items with this mod?
    A: Yes, you can create new items and make them exclusive.

Q: Can I remove components from YAML files?
    A: Yes, most components can be removed from the YAML files.

Q: Is the mod future-proof?
    A: Yes, you can add or remove components without much hassle.

Q: Does the Water resistant not work on set effect? Like m_mods: m_type: Water
    A: Water is a DamageModifiers that I added from Aedenthorn mod.  I don't have plans to add it to m_mods.
    
Q: Do you have a Video;
    A: Not yet, but YOU could make one!

Q: Is it possible to add a recipe for each upgrade of an item?
    A: You can now have a crafting recipe and an upgrading recipe. You can't have a different recipe for each upgrade, unless you do item cloning/recipe cloning hack.

Q: My weapon clones are speedup/speed down. 
    A: The clones speed can change a little bit from their parents. Custom_AttackSpeed should always be 1 on a save. 
    If you notice a speed up or down a +- 0.1 should fix it.  
    FYI reminder that SpeedFactor deals with character movement speed while swinging/attacking and has nothing to do with speed of animation.

Q: What Folders do I need to give to my users?
    A: Textures, Objects, Icons will NOT SYNC. I also recommend including the cache folder. Cache keeps track of Item/mock clones and materials

Q: How can I export material without _mat suffix ? I succeeded to export draugr_mat, but how for goblin or greydwarves ? 
    A: It's is unfortunately not possible right now to get all of the mats because of how the devs named and made different things.
        If you have access to Unity you could look at the files themselves. 

Q: What lines can I delete or how can I make somethings empty?
    A: This is a long answer, but most lines in the YAMLS can be deleted. Only the required ones need to be in the files, when the line is deleted the computer interprets that as a null value.
        Null is like I don't know, so I don't care, use the original values. To delete the existing values you will use either '' for strings, "delete" for SE Effects or "-" for multiliners. 

Q: How do I make custom Icons?
    A: Make a png or jpeg 64 x 64 px. Put it in Icons folder. In the customIcon line, put the filename. ie. wacky.png

Custom Icon Gif

Q: Will there be even MORE features and can I edit effects?
    A: Yes I guess, because I just keep adding MOAR. - Send help, I might have a problem. 

Q: Why are some of the SE Effects empty? Like SeData?
    A: Well its complicated, I am having to grab them in a weird way, and not all SEs have SeData. Nothing to be done about it. 

Q: What about Attack Projectile?
    A: I need to look at projectiles in the future, for now they are disabled.

Q: Would it be possible to have one item take 2+ different item slots ? (say weapon + pants)
    A: No, but you can edit two parts and one effect, which is effective when combined!
    If one of them is missing, then the two pieces of equipment have no effect, which can be regarded as a limitation

Q:  On an item "name" is the prefab name, "m_name" is the in game name? Then on recipes, "name" is the name of the prefab item name?
    A: For cloned recipes, it looks at cloneprefabname for item prefab name. For regular recipes the name points to the item. 

Q: I can't repair spawned in Cloned items, how do I fix?
    A: Repairstation is set in the recipe, make a cloned recipe, and set to disable or change a req to SwordCheat. - 
    Wacky Later - I have no idea what I am trying to suggest here, but I am going to leave it for now. Do whatever makes it work.

Q: How does Piece Snapshot work?
    A: Piece snapshot has given me a lot of problems so it only loads at Game.SpawnPlayer. If you do a wackydb_reload use the wackydb_snapshot command to reload snapshots. 

Q: What is 0.0.1 Error message when I try to connect? I keep getting this one COOP.
    A: 0.0.1 is a security feature that prevents people loading into a singleplayer world and then immediately connecting to a multiplayer world. It does seem to have some problems in COOP.
        Just disable it on the server if you are having problems. ExtraSecurity = false

Q: Can I clone or adjust Projectiles?
    A: No, wackydb doesn't do projectiles, it may someday.
Configuration

Configuration

The configuration file for WackysDatabase is located at BepInEx/config/WackyMole.WackysDatabase.cfg. The available configurations and their default values are as follows:

  • Force Server Config: true (forces server sync)
  • Enable this mod: true
  • IsDebug: true (enables debug information)
  • StringisDebug: false (enables string debugging)
  • IsAutoReload: false (enables auto-reload instead of using wackydb_reload command)
  • NexusModID: 1825 (does not have much functionality)
  • DedServer load Memory: false (dedicated server loads objects into the game like a client)
  • ExtraSecurity on Servers: true (prevents loading into singleplayer and then loading into multiplayer)
  • FileWatcher for YMLs: true (reloads the mod on any changes to the wackydatabase folder on the server)
  • List of Extra Effects: "lightningAOE" (extra effects to look for from the base game or mods)
Console Commands

Console Commands

You will can reference https://valheim-modding.github.io/Jotunn/data/objects/item-list.html for Prefab names. Thank you JVL team

To use the console commands, press F5 in the game to open the game console. Make sure to enable the console for Valheim by adding "-console" to the launch options.

  • wackydb_reload: Reloads all the YML files in the wackysDatabase folder. : This now works for admins on server now. So you could turn off Filewatcher and just do a manual reload on your client and forces all clients to reload.
  • wackydb_reload_fast: Fast reload that may cause game stutter.
  • wackydb_save_recipe [ItemName]: Saves a recipe YML in the wackysDatabase Recipe folder.
  • wackydb_save_piece [PieceName]: Saves a piece YML in the wackysDatabase Piece folder.
  • wackydb_save_item [ItemName]: Saves an item YML in the wackysDatabase Item folder.
  • wackydb_save_creature [CreatureName]: Saves a Creature YML in the wackysDatabase Creature folder.
  • wackydb_save_pickable [pickableOrTreebaseName]: Saves a Pickable/Treebase YML in the wackysDatabase Pickable folder.
  • wackydb_save_material[MaterialName]: Saves a Material clone YML in the wackysDatabase Material folder. Usually has a _mat at end end.
  • wackydb_all_items: Saves all items in the game into wackyDatabase-BulkYML.
  • wackydb_all_recipes: Saves all recipes in the game into wackyDatabase-BulkYML.
  • wackydb_all_pieces [Hammer] [Optionally: Category]: Saves all pieces in the game into wackyDatabase-BulkYML. Use 'Hammer' for default, or specify a different hammer name. Optionally, you can set a category to only get specific pieces in a cat.
  • wackydb_all_se: Retrieves almost all status effects in the game (including modded effects) and saves them into the Effects folder.
  • wackydb_all_creatures: Saves all creatures in game into Bulk Creature folder. (Not deer or birds?)
  • wackydb_all_pickables: Saves all pickables(pickable and treebase) in Bulk Pickables folder.
  • wackydb_se [effectname]: Retrieves a specific status effect and saves it into the Effect folder.
  • wackydb_se_create: Creates a clone of SetEffect_TrollArmor in the Status folder. You can edit it as needed.
  • wackydb_help: Shows a list of commands.
  • wackydb_clone [recipe/item/piece/creature/mat/materials/se/pickable/treebase] [Prefab to clone] [Unique name for the clone]: Clones an object and changes it differently than a base game object. For example: wackydb_clone item SwordIron WackySword.

--There is a optional 4th parameter for clone RECIPES ONLY [original item prefab to use for recipe](Optional 4th parameter for a cloned item's recipes ONLY) --For example you can already have item WackySword loaded in game, but now want a recipe. WackySword Uses SwordIron - wackydb_clone recipe WackySword RWackySword SwordIron - otherwise manually edit --Extremely powerful command that allows you design your world however you would like.

  • wackydb_clone_recipeitem [Prefab to clone] [clone name]: Clones an item and recipe at the same time. The recipe name will be Rname.
  • wackydb_vfx: Saves a vfx.txt file with all vfx effects
  • wackydb_sfx: Saves a sfx.txt file with all sfx effects
  • wackydb_fx: Saves a fx.txt file with all fx effects
  • wackydb_help: command list
  • wackydb_describe[ObjectName]: Saves describe of an object, so you have an idea of the structure of the object for materials and customVisuals
  • wackydb_sendtheload : Experimental command that will send pngs and objs to clients utilizing ServerSync. I recommend the Network mod to uncap datarates.
  • wackydb_get_piecehammers: Saves all hammers, currently in your game to Hammer.txt file
  • wackydb_material : Generate a text file of all <Material> Gameobjects in vanilla game. Saves to text
  • wackydb_clearcache: Clears the current cache, materials and textures. Only do this after big yaml changes, cache is important - This command works on menu screen
  • wackydb_snapshot: Loads Snapshots for pieces after a manual reload
Video Tutorials

Thank Majestic for these basic Video Tutorials!

VNEI mod is a great tool. https://thunderstore.io/c/valheim/p/MSchmoecker/VNEI/

Save Items

Save Recipes

Clone Items

Clone Recipes

Custom Recipe Upgrades

Custom Recipe Upgrades Past Limit


Get Wacky

LongSwordBlueRed

Changing the SwordSilver to Blue and Increasing the size to 3

JustMaterials

This is just changing the materials, not messing with CustomVisuals

Crazy Power

Setting the Class: AEffects and GEffects. This YML Spawn_On_Trigger: Boar spawn_on_hit: Neck spawn_on_terrain_hit: Deer - Trigger_Effect: - sfx_dragon_death

SwordIron YML

Fast Attack

Custom_AttackSpeed: 5 . 500% faster goes brrr


Cache System and Loading Order

Cache Folder

The cache system is very important for Item/mock clones.

It allows material colors to show up on main menu and allows cloned items to be touched by other mods and treated like normal items.

It is so important now that I recommend including your cache folder on updates to your modpack, along with Textures, Objects, Icons

If a cloned is not cached for the first run, errors may appear for users as other mods try to touch a item that wasn't created until very late.

The next load logon should fix the issues.

Feel free to removed the cache folder for big changes, but try to leave it for normal usage


Loading Order

This only really applies to other mods and sometimes server admins

Wackydb mod will load towards the end of the startup but that doesn't matter. The question is where to load the files and clones.

Too early and you won't get the files from the server/ Too late and you miss out on generating important things.

Cache clones are loaded in ZNetScene.Awake and ObjectDB.awake

Dedicated Servers (With DedLoad ON) and Servers( COOP server) and SOLO Clients load at ZoneSystem.Start [HarmonyPriority(Priority.HigherThanNormal)]

Connecting Clients load at Game._RequestRespawn [HarmonyPriority(Priority.Low)] ( always consistent is pretty important)

Console wackydb_reload /_fast - always reload immediately.

Anyway, it's hard to find a good spot so that you touch all base objects and not too late to add the clones.


Materials and CustomVisuals By Wacky

Materials and Custom

Please be patient with this documentation. There is a lot to this one and I am slowly trying to learn from Rexabyte. There may be inaccurate information here.

Useful tools

https://rgbcolorpicker.com/0-1

https://github.com/Wacky-Mole/WackysDatabase/tree/master/Documentation - You Are GOING TO NEED TO STUDY THIS!

Structures

Welcome to Rexabyte's Guide on Understanding Material Management by Wacky!

A Material is a powerful combination of a shader, texture, and color. For most items, a single material is sufficient, but more complex things like armors can utilize multiple materials.

To create a basic material, simply use the 'material' section and combine various _mats. Oh, by the way, "mat" or "mats" refer to materials and are often appended at the end of their names.

When describing an item's render using "wackydb_describe," you'll find the materials section with the current name of the mat.

To save or clone a material, employ the functions "wackydb_save_material [mat]" or "wackydb_clone [mat/material] [mat] [clonename]" The newly created material file can be found in the materials folder.

Now, let's get creative with adjustments! Most commonly, you'll be working with colors. Use https://rgbcolorpicker.com/0-1 to find the 0-1 values RGBA.

Textures play a vital role, particularly with armors and creatures. Remember, they are saved along with the material in PNG format. However, WackyDB won't automatically sync them, so you'll need to manually color or edit the texture files. Textures may use base vanilla ones like Red or Blue

Excitingly, changes to materials automatically update without requiring a reload. Icons, too, reflect these changes unless you opt for a custom icon.

For a shortcut, you can use vanilla materials by selecting one from the generated wackydb_material materials.txt file.

Lastly, a single material YAML (yml) can be applied to multiple items, creatures, or pieces. Keep in mind that some objects might need more information than others for proper display.

Now go forth, and let your creativity run wild with Rex's Material Management!

Materials and Custom

Materials and CustomVisuals

  • material (string, optional): The name of the material
  • customVisual (CustomVisual, optional): A more specific targetting for materials, generally only useful for player armors.

Material Definition

  • name (string, required): The name of the new material created
  • original (string, required): The name of the material to clone from
  • overwrite (boolean, optional): True to overwrite the original material.
  • changes (MaterialChanges, required): The set of changes to apply to the material

Material Changes Definition

  • colors (Dictionary<MaterialProperty: string, MaterialValue: Array<int>[4]>, optional) : A collection of keys (property names) and their associated value. The value is in array format [RED, GREEN, BLUE, ALPHA]. Values should range from 0 to 1 but can exceed 1.

  • floats (Dictionary<MaterialProperty: string, MaterialValue: float>, optional): A collection of keys (property names) and their associated float value. The value can be any float value but it is recommended to stay within the range specified by describing the prefab that has this material.

  • textures (Dictionary<MaterialProperty: string, MaterialValue: string>, optional): A collection of keys (property names) and their associated string value. The string value is the name of the texture to be used. The image should be a .png file stores in the 'Textures' section in the configuration folder. Do not include '.png', if the file is my_texture.png specify my_texture as the value here.

    Inside of Textures you can also set filterMode: Point(default), Trilinear,Bilinear.

                  _MainTex:
                    name: Oven_d
                    filterMode: Trilinear
    

Custom Visual Definition

  • base_mat: (string, optional): The name of the material, generally this applies to the model for the prefab.
  • chest: (string, optional): The name of the material, generally this is only useful for chest armor. It will use the texture assigned to the "_ChestTex" property of the material.
  • legs: (string. optional): The name of the material, generally this is only useful for leg armor. It will use the texture assigned to the "_LegsTex" property of the material.

Materials and Custom

Materials and Custom



Public Service Annoucement: I just create a copy of the material with a new texture (mat1, mat2, mat3... ) and when I find the right one, I keep it and delete the rest. This allows you to not have to restart the game for texture changes.

Materials and CustomVisuals By Lughbaloo #### Guide by Lughbaloo

The Way Items Render

The way an item looks falls into two categories: its Model, and its Render.
A Model describes the three-dimensional shape of the item. A Render describes the visual appearance of that 3D model and consists of one or more Materials. Materials have associated Shaders and Properties. WackyDB can clone EXISTING Materials and their associated shaders/properties, but it cannot create brand new materials with an associated shader. It also cannot add/remove properties to existing materials. These are important considerations when making custom materials with WackyDB.

Most items in Valheim use a single Material, but more complex things like armors can utilize multiple materials. And remember, each material has associated Shaders and Properties. Manipulating this can affect values like glossiness, metallic shine, emissions, and bumpiness.

Knowing where to look


The first step is to find out more information about a material. In the examples, we'll compare the Two Handed Swords Krom and Slayer and learn what is different between them. Run the following command in-game.

'Wackydb_describe [Item or Prefab name]'

Examples: 'wackydb_describe THSwordKrom'

'wackydb_describe THSwordSlayer'

This will create 2 new files in your config/wackydatabase/ folder, called Describe_THSSwordKrom.yml and Describe_THSwordSlayer.yml. These files list every material the item uses, the shader associated with that material, and the properties of that material. Both of these items have only 1 material, which is listed at the top. This material name is what we'll clone. To clone these materials, go back in-game and run the following command.

[wackydb_clone material [Material] [ClonedMaterial]

Examples:

'wackydb_clone material Krom_mat Krom_mat_clone`

'wackydb_clone material NiedhoggSlayer_mat NiedhoggSlayer_mat'

Materials and their values

Materials are a list of values that are used to dictate what an item looks like. When you clone a material, it will save a Material yml file in the wackyDatabase/Materials/ folder. These material files list different variables, and depending on the shader that the original material used, you may have different variables. In the example using Krom and Slayer, note that Krom has RGBA values for MetalColor, while Slayer has an EmissionMap. Depending on what you're trying to accomplish with your item, it is recommended to experiment with different donor materials for the values you want.

Most commonly, you'll be working with colors. You can make adjustments to the _Colors RGBA values to overlay the color of your item. Do note that all values of 1 equals white, and will be the brightest version of the weapon. Use https://rgbcolorpicker.com/0-1 to find the 0-1 values RGBA.

Your Glossiness value will determine how shiny your item is in-game; how much it reflects light. A Metallic value will determine how metallic a part looks. This will also darken the material quite a bit.

There are many other values here you can change depending on the shader from the original material. Some examples are how impactful the Bump map is, the color of your metallic parts, what texture channel you use, and more. Another important consideration is that a lot of these values are referencing values within Unity, and a value of 0-1 doesn't necessarily equate on/off. An example is the SmoothnessTextureChannel: a value of 0 means "Metallic alpha" where a value of 1 means "Albedo alpha".

Let's talk about maps.

Maps are a type of texture file, saved as a .png file. When you clone a material, it will save these texture maps in the wackyDatabase/Textures/ folder. Most of these texture maps can be edited in any paint program. Further, the resolution of each of these maps scales automatically, so you can increase the resolution of a map to increase the level of detail on an item.



MainTex: Also known as an Albedo map, this is the primary texture map for colors and design. These maps are sometimes denoted by the letter "d".



MetallicGloss: Also known as a Metal map or Metallic map, this map is either a grayscale map or an Transparency map (Alpha map) used to dictate which parts of the item appear metallic or glossy. The more towards white on the map, the more metallic on the texture. These maps are sometimes denoted by the letter "m".



BumpMap: Also known as a Normal map, this texture map uses either grayscale, alpha, or RGB channels to dictate roughness on the item. These maps are sometimes denoted by the letter "n". You will not likely be editing these, as you'll need to use Blender or some other tool like https://smart-page.net/smartnormal/ to effectively create them.



missionMap: The Emissive map is used to dictate a simulated light effect from the item using a grayscale map. The more towards white on the map, the brighter the texture on the item. Note this is not an actual light-source. But you will be able to see it in the dark. These maps are sometimes denoted by the letter "e".

https://valheim-modding.Prefab material listgithub.io/Jotunn/data/prefabs/material-list.html

Item components

Item Config

Glowing Red BronzeSword

Properties

  • name (string, required): The name of the item.

  • m_weight (float, required): The weight of the item.

  • m_name (string):The in game name.

  • m_description (string): The description of the item.

  • clonePrefabName (string): The name of the prefab to clone.

  • mockName (string): The name of the mock object.

  • customIcon (string): The custom icon for the item. PNG 64x64, Icon needs to be in the Icon folder ( doesn't server sync)

  • material (string): The material of the item. Images on nexus https://www.nexusmods.com/valheim/mods/1825 of the various changes you can make.
    Visit the Material and CustomVisual Section to understand this complex system.

  • materials (string): "It's basically the same as material but it applies the materials specified for the entire renderer"


Changing material or CustomVisual automatically calls snapshot to generate a new Icon or give it a customIcon

SnapShot

  • customVisual (CustomVisual): The custom visual data of the item.
  • snapshotRotation ((string) (x,y,z)int,int,int) - Default null - Changes the angle of snapshot cam. 0-360 degrees. Can do 33,44,55 for example.
    Very annoying to perfect, but it's an option now for the masochists.
  • snapshotOnMaterialChange (bool) - Default true - Makes a snapshot on item material change
  • sizeMultiplier (string): The size multiplier of the item. You can go from .01 to 1000.5 if you want. You can specify x|y|z like "1.23|3.0|2" or a singular value "2.0" Have fun
  • scale_weight_by_quality (float): The scaling factor for weight based on quality.

CustomVisual

  • base_mat (string): The base material of the custom visual.
  • chest (string): The chest visual.
  • legs (string): The legs visual.
  • realtime (string): The realtime visual.

Primary_Attack (AttackArm): The primary attack data. Secondary_Attack (AttackArm): The secondary(middle mouse) attack data.

Primary/Secondary_Attack AttackArm

  • AttackType (Attack.AttackType): The type of attack.

  • Attack_Animation (string): The animation for the attack.

  • Attack_Random_Animation (int): The random animation for the attack.

  • Chain_Attacks (int): The number of chain attacks.

  • Hit_Terrain (bool): Indicates whether the attack can hit terrain.

  • Hit_Friendly (bool): Indicates whether the attack can friendly targets. I am not sure what this will do, but have fun.

  • Custom_AttackSpeed (float): This mod keeps track of this adjustment 1.0 is normal speed. 2.0 is twice as fast. Should be compatible with most other mods that increase speed.

  • m_attackStamina (float): The stamina cost of the attack.

  • m_eitrCost (float): The eitr cost of the attack.

  • AttackHealthCost (float): The health cost of the attack.

  • m_attackHealthPercentage (float): The health cost percentage of the attack.

  • Attack_Start_Noise (float): The noise of swinging a weapon.

  • Attack_Hit_Noise (float): How much noise a attack hit makes.

  • Dmg_Multiplier_Per_Missing_Health (float): A dmg multiplier by health remaining. hitData.m_damage.Modify(1f + (m_character.GetMaxHealth() - m_character.GetHealth()) * m_damageMultiplierPerMissingHP)

  • Damage_Multiplier_By_Health_Deficit_Percent (float): A dmg multiplier by health remaining (percentage wise). hitData.m_damage.Modify(1f + (1f - m_character.GetHealthPercentage()) * m_damageMultiplierByTotalHealthMissing);

  • Stamina_Return_Per_Missing_HP (float): This reduces the stamina used for an attack based on how much health this missing. staminaUse -= (m_character.GetMaxHealth() - m_character.GetHealth()) * m_staminaReturnPerMissingHP;

  • SelfDamage (int): Damage the player recieves on an attack.

  • Attack_Kills_Self (bool): This attack kills player. (lol)


  • SpeedFactor (float): The speed up of a character's movements when they are actively attacking.

  • DmgMultiplier (float): The damage multiplier of the attack.

  • ForceMultiplier (float): The force multiplier of the attack.

  • StaggerMultiplier (float): The stagger multiplier of the attack.

  • RecoilMultiplier (float): The recoil multiplier of the attack.

  • AttackRange (float): The range of the attack.

  • AttackHeight (float): The height of the attack.

  • Spawn_On_Trigger (string): The spawn-on-trigger effect of the attack.

  • Requires_Reload (bool): Indicates whether the attack requires reloading.

  • Reload_Animation (string): The animation for reloading.

  • ReloadTime (float): The time it takes to reload. - Added Back - Might work - Didn't work for crossbows before

  • ReloadTimeMultiplier (float): "Multiplier for reload speed of crossbows. Does not affect Vanilla scaling with skill level. Values 0.1 to 2.0. Default 1.0

  • Reload_Stamina_Drain (float): The stamina drain during reloading.

  • Reload_Eitr_Drain (float): The Eitr drain during reloading.


  • Bow_Draw (bool): Indicates whether the bow is drawn for the attack.

  • Bow_Duration_Min (float): The minimum duration of the bow.

  • Bow_Stamina_Drain (float): The stamina drain during bow usage.

  • Bow_Animation_State (string): The animation state for the bow.

  • Attack_Angle (float): The angle of the attack.

  • Attack_Ray_Width (float): The width of the attack ray.

  • Lower_Dmg_Per_Hit (bool): Indicates whether the attack lowers damage per hit.

  • Hit_Through_Walls (bool): Indicates whether the attack can hit through walls.

  • Multi_Hit (bool): Indicates whether the attack can hit multiple times.

  • Pickaxe_Special (bool): Indicates whether it is a special pickaxe attack.

  • Last_Chain_Dmg_Multiplier (float): The damage multiplier for the last chain attack.

  • Attack_status_effect (string) - SE - The attack status effect of the item. This is a custom patch for wackydb. You can now set primary and secondary differently. Setting this will override the normal Attack_status_effect.

  • Attack_status_effect_chance (float) 0.0 to 1 (100%) Set a different chance for primary and secondary


  • Reset_Chain_If_hit (DestructibleType): The damage multiplier for the last chain attack.
    The vanilla Code for chain multiplier if (m_attackChainLevels > 1 && m_currentAttackCainLevel == m_attackChainLevels - 1 && m_lastChainDamageMultiplier > 1f) { hitData.m_damage.Modify(m_lastChainDamageMultiplier); hitData.m_pushForce *= 1.2f; }

  • SpawnOnHit (string): Spawn any Gameobject/Mob ect..

  • SpawnOnHit_Chance (float): Chance Values 0 to 1.0 (100%)


These four fields are for raising skills that they are not primary used for. For example Tree cutting with an Axe. (values)

  • Raise_Skill_Amount (float): The XP added on a hit. (1)
  • Skill_Hit_Type (DestructibleType): This will pretty much always be Character. Who gets the skill raise. (Character)
  • Special_Hit_Skill (SkillType): What skill gets raised? (Wood Cutting)
  • Special_Hit_Type (DestructibleType): What was hit to trigger this? (Tree)

  • Attack_Projectile (string): The Gameobject projectile has to have Projectile Componenent. Disabled for now.

  • Projectile_Vel (float): The velocity of the projectile.

  • Projectile_Accuraccy (float): The accuracy of the projectile.

  • Projectiles (int): The number of projectiles.

  • Skill_Accuracy (bool): Skill increases Accuracy. true or false

  • Launch_Angle (float): This parameter defines the angle at which the projectile is launched relative to the horizontal axis.

  • Projectile_Burst (int): This parameter specifies the number of projectiles released in a single burst.

  • Burst_Interval (float): This parameter indicates the time delay between each projectile in a burst.

  • Destroy_Previous_Projectile (bool) This boolean parameter determines whether or not to destroy the previous projectile before launching a new one.

  • PerBurst_Resource_usage (bool) This boolean parameter specifies whether resource consumption is applied per burst of projectiles.

  • Looping_Attack (bool) This boolean parameter determines whether the attack or effect is repeated in a continuous loop.

  • Consume_Item (bool): Consume item on use. (Usually food)


  • AEffects (AEffects): The additional effects of the attack. OLD
  • AEffectsPLUS (AEffectsPLUS): The additional effects of the attack PLUS version- more.

Class: AEffectsPLUS

  • Hit_Effects (string[]): The hit effects of the attack.
  • Hit_Terrain_Effects (string[]): The effects when hitting terrain.
  • Start_Effect (string[]): The starting effect of the attack.
  • Trigger_Effect (string[]): The triggered effect of the attack.
  • Trail_Effect (string[]): The effect trail of the attack.
  • Burst_Effect (string[]): The burst effect of the attack.

Delete To delete existing Effects

  • m_enabled (bool)
  • m_variant(int) Default is -1, most cases leave at -1
  • m_attach (bool) - attach to the point or parent?
  • m_follow (bool) - follow the parent around
  • m_inheritParentRotation (bool) - what is says
  • m_inheritParentScale (bool) - Use parent scale based on the time of effect creation
  • m_multiplyParentVisualScale (bool) - Scale the size of the parent's size?
  • m_randomRotation (bool) - randomRotation
  • m_scale (bool) - Scales the size
  • m_childTransform (string) Probably don't mess with unless you are looking in Unity or unity explorer

Secondary Attack

Is the same as Primary just for the secondary attack.

Damage (WDamages): The damage values of the item. Damage_Per_Level (WDamages): The damage values per level of the item.

Damages

  • Blunt (float): The blunt damage value.
  • Chop (float): The chop damage value.
  • Damage (float): The general damage value.
  • Fire (float): The fire damage value.
  • Frost (float): The frost damage value.
  • Lightning (float): The lightning damage value.
  • Pickaxe (float): The pickaxe damage value.
  • Pierce (float): The pierce damage value.
  • Poison (float): The poison damage value.
  • Slash (float): The slash damage value.
  • Spirit (float): The spirit damage value.

Armor (ArmorData): The armor data of the item.

Armor

  • armor (float): The armor value.
  • armorPerLevel (float): The armor value per level.

FoodStats (FoodData): The food-related statistics of the item.

FoodData

  • m_foodHealth (float): The health provided by the food.
  • m_foodStamina (float): The stamina provided by the food.
  • m_foodRegen (float): The regeneration rate of the food.
  • m_foodBurnTime (float): The burn time of the food.
  • m_FoodEitr (float): The eitr provided by the food.

  • ConsumableStatusEffect (string): On consumption (eating), give this status effect. - Doesn't make things Edible

Moddifiers (StatMods): The stat modifiers of the item.

StatMods

  • m_movementModifier (float): The movement modifier.
  • m_EitrRegen (float): The eitr regeneration modifier.
  • m_BaseItemStaminaModifier (float): - (Deleted/Removed in Ashlands)
  • m_homeItemsStaminaModifier (float): - (Added Ashlands)
  • m_heatResistanceModifier (float): - (Added Ashlands)
  • m_jumpStaminaModifier (float): - (Added Ashlands)
  • m_attackStaminaModifier (float): - (Added Ashlands)
  • m_blockStaminaModifier (float): - (Added Ashlands)
  • m_dodgeStaminaModifier (float): - (Added Ashlands)
  • m_swimStaminaModifier (float): - (Added Ashlands)
  • m_sneakStaminaModifier (float): - (Added Ashlands)
  • m_runStaminaModifier (float): - (Added Ashlands)

SE_Equip (SE_Equip): The special effect data for equipping the item.
If you want an Item to have an Effect by itself, put the effect name here
SE_SET_Equip (SE_SET_Equip): All of this should be the same accross all items that have this set
You can delete an SE_Equip or SE_SET_Equip from item using EffectName : delete

SE_Equip

  • EffectName (string): The name of the effect for equipping.

SE_SET_Equip

  • SetName (string): The name of the set.
  • Size (int): The size of the set.
  • EffectName (string): The name of the effect for equipping the set.

Delete To delete existing

Delete To delete existing


ShieldStats (ShieldData): The shield statistics of the item.

  • Shield

  • m_blockPower (float): The block power of the shield.

  • m_blockPowerPerLevel (float): The block power per level of the shield.

  • m_timedBlockBonus (float): The timed block bonus of the shield.

  • m_deflectionForce (float): The deflection force of the shield.

  • m_deflectionForcePerLevel (float): The deflection force per level of the shield.

Properties Continued

  • m_maxStackSize (int): The maximum stack size of the item.
  • m_canBeReparied (bool): Indicates whether the item can be repaired.
  • m_destroyBroken (bool): Indicates whether the item gets destroyed when broken.
  • m_dodgeable (bool): Indicates whether the item can be dodged.
  • Attack_status_effect (string): The attack status effect of the item. (Can remove current status with 'delete')
  • Attack_status_effect_chance (float): Chance of attack status effect of the item.
  • spawn_on_hit (string): The spawn-on-hit effect of the item. ('delete' to remove)
  • spawn_on_terrain_hit (string): The spawn-on-terrain-hit effect of the item. ('delete' to remove)
  • m_questItem (bool): Indicates whether the item is a quest item.
  • m_teleportable (bool): Indicates whether the item is teleportable.
  • m_backstabbonus (float): The backstab bonus of the item.
  • m_knockback (float): The knockback value of the item.
  • m_useDurability (bool): Indicates whether the item uses durability.
  • m_useDurabilityDrain (float): The durability drain when the item is used.
  • m_durabilityDrain (float): The durability drain of the item.
  • m_maxDurability (float): The maximum durability of the item.
  • m_durabilityPerLevel (float): The durability increase per level of the item.
  • m_equipDuration (float): The equip duration of the item.
  • m_skillType (Skills.SkillType): The skill type of the item.
  • m_animationState (ItemDrop.ItemData.AnimationState): The animation state of the item.
  • m_itemType (ItemDrop.ItemData.ItemType): The item type of the item.
  • Attach_Override (ItemDrop.ItemData.ItemType): Override where the attachment is placed on character.
  • m_toolTier (int): The tool tier of the item.
  • m_maxQuality (int): The maximum quality of the item.
  • m_value (int): The value of the item. The value of the item. if value is >0. Then the object becomes salable at Trader. The Object Description gets a yellow Valuable notice. Just like base game you don't know what object you are selling to Trader.
  • damageModifiers (List<string>): The list of damage modifiers for the item.

DamageModifiers

The first value is the damage type, the second value is the resistance level.
Blunt Slash Pierce Chop Pickaxe Physical Fire Frost Lightning Elemental Poison Spirit Water

Normal - no change
Resistant - increases status countdown speed by 100%
Weak - Decreases status countdown speed by 1/3
Immune - prevents status effect
Ignore - prevents status effect
VeryResistant - Prevent status effect application except when actively in, and increases status countdown speed by 100%
VeryWeak - Decreases status countdown speed by 2/3

Delete all Damage Mod To delete all existing Damage modifiers

GEffects (GEffects): The additional game effects of the item. OLD GEffectsPLUS (GEffectsPLUS): The additional game effects of the item.

GEffectsPLUS

Ice Video

  • Hit_Effects (string[]): The hit effects.
  • Hit_Terrain_Effects (string[]): The effects when hitting terrain.
  • Start_Effect (string[]): The starting effect.
  • Hold_Start_Effects (string[]): The hold starting effects.
  • Trigger_Effect (string[]): The triggered effect.
  • Trail_Effect (string[]): The effect trail.

  • m_enabled (bool)

  • m_variant(int) Default is -1, most cases leave at -1

  • m_attach (bool) - attach to the point or parent?

  • m_follow (bool) - follow the parent around

  • m_inheritParentRotation (bool) - what is says

  • m_inheritParentScale (bool) - Use parent scale based on the time of effect creation

  • m_multiplyParentVisualScale (bool) - Scale the size of the parent's size?

  • m_randomRotation (bool) - randomRotation

  • m_scale (bool) - Scales the size

  • m_childTransform (string) Probably don't mess with unless you are looking in Unity or unity explorer

                      public enum SkillType
                      {
                          None = 0,
                          Swords = 1,
                          Knives = 2,
                          Clubs = 3,
                          Polearms = 4,
                          Spears = 5,
                          Blocking = 6,
                          Axes = 7,
                          Bows = 8,
                          ElementalMagic = 9,
                          BloodMagic = 10,
                          Unarmed = 11,
                          Pickaxes = 12,
                          WoodCutting = 13,
                          Crossbows = 14,
                          Jump = 100,
                          Sneak = 101,
                          Run = 102,
                          Swim = 103,
                          Fishing = 104,
                          Ride = 110,
                          All = 999
                      }
    
                  public enum DestructibleType
                  {
                      None = 0,
                      Default = 1,
                      Tree = 2,
                      Character = 4,
                      Everything = 7
                  }
    
Pickables Components

Pickables

  • Name (string, required): The unique name of the Pickable.
  • itemPrefab (string, required): The name of the item that spawns when picked.
  • cloneOfWhatPickable (string): If a clone, the name of the pickable Prefab to clone.
  • material (string): The material of the pickable. See Materials in README for more information.
  • amount (int): Amount of itemPrefab to spawn when picked.
  • size (float): Multiplier for the size of the pickable. You can go from .01 to 1000.5 if you want. You can specify x|y|z like "1.23|3.0|2" or a singular value "2.0"
  • overrideName (string): The in game name of the pickable.
  • respawnTimer (float): Time in Minutes for the Pickable to respawn. Set to 0 to disable respawn.
  • spawnOffset (float): Vertical offset in meters from the pickable where the itemPrefab spawns.
  • ifHasHealth (float): Sets the health of the pickable.
  • hiddenChildWhenPicked (string): Child Gameobject that is hidden when pickable is picked, has respawn timer usually.
  • extradrops (extradrops): extra drop list. ( you can add this to other pickables if you want. )

extradrops

  • drops (string, required): List of extra items to be dropped.
  • dropMin (int): List of extra items to be dropped.
  • dropMax (int): List of extra items to be dropped.
  • dropChance (float): List of extra items to be dropped.
  • dropOneOfEach (bool): List of extra items to be dropped.

Treebase

  • name (string, required): The name of the tree.
  • treeTealth (int, required): health of the tree needed to cut down.
  • cloneOfWhatTree (string): Clone what Treebase for this.
  • size (string): The size multiplier of the item. You can go from .01 to 1000.5 if you want. You can specify x|y|z like "1.23|3.0|2" or a singular value "2.0"
  • minToolTier (int): Min Axe Tool Tier to cut down tree.

Pickables are compatible with other mods, but mods like PlantEverything will override pretty much all non clones.

Piece components

Glowing Red BronzeSword

Pieces

  • name (string, required): The name of the piece.
  • piecehammer (string, required): The piece hammer required to build the piece.
  • m_name (string): The In Game Piece Name
  • sizeMultiplier (string): The size multiplier of the piece. Any float range 1.0 is normal size. You can specify x|y|z like "1.23|3.0|2" or a singular value "2.0"
  • m_description (string): The description of the piece.
  • customIcon (string): The custom icon for the piece. PNG or JPEG, 64 x 64, Must be in Icon Folder (Icons do not Synced)
  • clonePrefabName (string): The name of the prefab to clone.
  • material (string): Visit Material Section and Custom Visual Section
  • damagedMaterial (string): The material of the piece when damaged.
  • craftingStation (string): The crafting station required to craft the piece.
  • piecehammerCategory (string): The category of the piece hammer.
  • minStationLevel (int): The minimum level of the crafting station required.
  • amount (int): The amount of the piece.
  • disabled (bool): Indicates whether the piece is disabled.
  • adminonly (bool): Indicates whether the piece is admin-only.
  • comfort (ComfortData): The comfort data of the piece.
  • groundPiece (bool): Indicates whether the piece is a ground piece.
  • ground (bool): Indicates whether the piece can be placed on the ground.
  • waterPiece (bool): Indicates whether the piece is a water piece.
  • noInWater (bool): Indicates whether the piece cannot be placed in water.
  • notOnFloor (bool): Indicates whether the piece cannot be placed on the floor.
  • notOnWood (bool): Indicates whether the piece cannot be placed on the wood.
  • onlyinTeleportArea (bool): Indicates whether the piece can only be placed in teleport areas. Stone Groups making a Circle
  • allowedInDungeons (bool): Indicates whether the piece is allowed in dungeons.
  • canBeRemoved (bool): Indicates whether the piece can be removed.
  • wearNTearData (WearNTearData): The wear and tear data of the piece.
  • craftingStationData (CraftingStationData): The crafting station data of the piece.
  • cSExtensionData (CSExtensionData): The crafting station extension data of the piece. - OLD
  • cSExtensionDataList (cSExtensionData) The crafting station extensions data of the piece. LIST
  • contData (ContainerData): The container data of the piece.
  • smelterData (SmelterData): The smelter data of the piece.
  • build (List<string>): The list of requirement items for the piece.

build: requirements to build: Item:amount:amountPerLevel:refundable,

To make something free. build:

  • Wood:0:0:True

ComfortData

  • comfort (int): The comfort value of the piece.
  • comfortGroup (Piece.ComfortGroup): The comfort group of the piece.
  • comfortObject (GameObject): The comfort object of the piece.

WearNTearData

  • health (float): The health of the piece.
  • damageModifiers (HitData.DamageModifiers): The damage modifiers for wear and tear.
  • noRoofWear (bool): Indicates whether the piece does not wear when under a roof.
  • noSupportWear (bool): Indicates whether the piece does not wear when supported.
  • supports (bool): Indicates whether the piece provides support.
  • triggerPrivateArea (bool): Indicates whether the piece triggers the private area.

CraftingStationData

Wackydb can now handle making normal pieces craftingstations. This is pretty barebones, but it should work if you really need it. Much better to clone an existing craftingstation thoughre.

  • cStationCustomIcon (string): The custom icon for the crafting station. May remove - Not really useful
  • discoveryRange (float): The discovery range of the crafting station. Range that you discovery the piece for the first time
  • buildRange (float): The build range of the crafting station.
  • craftRequiresRoof (bool): Indicates whether crafting at the station requires a roof.
  • craftRequiresFire (bool): Indicates whether crafting at the station requires a fire.
  • showBasicRecipes (bool): Indicates whether to show basic recipes at the station.
  • useDistance (float): The use distance of the station.
  • useAnimation (int): The animation to use for station usage.

CSExtensionData

With CSExtensionDataList, wackydb can now handle multiple extension upgrades for multiple craftingstations. For example Wizardry does this for multiple craftingstations.
You can also make any pieces into extensions by writing in this section yourself.
Lists

  • MainCraftingStationName (string): The name of the main crafting station.
  • maxStationDistance (float): The maximum distance for the extension to connect to the main station.
  • continousConnection (bool): Indicates whether chain effect (bonded) shows up all the time.
  • stack (bool): Indicates whether multiple of this extension can stack to gain levels.

ContainerData

Don't mess with the container size (width and height): I added for someone, but this will mess up things and lose items. Use AzuContainers

  • Width (int): The width of the container.
  • Height (int): The height of the container.
  • CheckWard (bool): Indicates whether the container checks for ward placement.
  • AutoDestoryIfEmpty (bool): Indicates whether the container auto-destroys if empty.

BeehiveData

The BeehiveData class represents data for a beehive in the game. It contains the following properties:

  • effectOnlyInDaylight (bool): Indicates whether the effect only occurs during daylight.
  • maxCover (float): The maximum cover value.
  • biomes (Heightmap.Biome): The biome in which the beehive is located.
  • secPerUnit (float): The time, in seconds, per unit.
  • maxAmount (int): The maximum amount of beehives.
  • dropItem (string): The item that is dropped from the beehive.
  • effects (string[]): An array of effects associated with the beehive. - don't ask me for more on other pieces!
  • extractText (string): Text related to extracting from the beehive.
  • checkText (string): Text related to checking the beehive.
  • areaText (string): Text related to the area around the beehive.
  • freespaceText (string): Text related to free space around the beehive.
  • sleepText (string): Text related to the sleep state of the beehive.
  • happyText (string): Text related to the happiness of the beehive.

SapData

  • secPerUnit (float): Secs per unit
  • maxLevel (int): Max level of the extractor
  • producedItem (string): What spawns when you extract
  • connectedToWhat (string): What do you need to put this piece on to get extraction

Warning - Changing this won't really do anything, the other piece/object needs to have a Resource Root script on it.

  • extractText (string): Extraction Text
  • drainingText (string): Draining Text
  • drainingSlowText (string): idk, slow draining text
  • notConnectedText (string): Not connected text
  • fullText (float): FullText

FermentorData

  • fermDuration (float): How long it takes to make a batch
  • fermConversion (List<FermenterConversionList>): A list of ferm conversions.

FermenterConversionList

  • FromName (string): The name of the item to convert from.
  • ToName (string): The name of the item to convert to.
  • Amount (int): The amount to spawn when batch is done.
  • Remove (bool): Default is false, this allows you to remove existing conversions. Now items not listed shouldn't be affected

IncineratorData

This will overwrite any other oblinerator changes!

  • defaultDrop (string): Specifies the default item dropped by the obliterator.
  • defaultCostPerDrop (int): Indicates the default cost per drop when using the obliterator.
  • incineratorConversion (List<ObliteratorList>): Conversion List

ObliteratorList

  • Result: (string ) Specifies the resulting item produced by the conversion.
  • ResultAmount: (int ) Indicates the amount of the resulting item generated.
  • Priority: (int ) Defines the priority level of this conversion option.
    Higher priority takes precedence on conversion, but it will convert to multiple into item types
  • RequireOnlyOne: (bool ) Specifies whether only one ingredient is required for this conversion.
  • Requirements: (List<ObRequirementList> ) Stores the list of requirements needed for this conversion, including the required items and their amounts.

ObRequirementList

  • Name: (string ) Specifies the name of the required item for the conversion.
  • Amount: (int ) Indicates the quantity of the required item needed for the conversion.

Changing this dramtically allows the obliterator/incinerator to become a recycler. Have fun!

CookingStationData

Warning changing to new CookConversions items can trigger minor errors as well as food items not appearing in oven

  • addItemTooltip (string): The tooltip for adding items to the cooking station.
  • overcookedItem (string): The item produced when cooking is overdone.
  • fuelItem (string): The fuel item used in the cooking station.
  • requireFire (bool): Indicates whether the cooking station requires fire.
  • maxFuel (int): The maximum fuel capacity of the cooking station.
  • secPerFuel (int): The time, in seconds, per unit of fuel.
  • cookConversion (List<CookStationConversionList>): A list of cooking conversions.
  • replaceDefaultConversion (bool) Default true - Override all of the conversion list. - false just adds to existing list

CookStationConversionList

  • FromName (string): The name of the item to convert from.
  • ToName (string): The name of the item to convert to.
  • CookTime (float): The cooking time for the conversion.
  • Remove (bool): Default is false, this allows you to remove existing conversions. Now items not listed shouldn't be affected

SmelterData

  • smelterName (string): The name of the smelter. (Disabled and Removed)
  • addOreTooltip (string): The tooltip for adding ore to the smelter.
  • emptyOreTooltip (string): The tooltip for emptying ore from the smelter.
  • fuelItem (fuelItemData): The fuel item for the smelter.
  • maxOre (int): The maximum ore capacity of the smelter.
  • maxFuel (int): The maximum fuel capacity of the smelter.
  • fuelPerProduct (int): The amount of fuel required per product.
  • secPerProduct (float): The time taken per product.
  • spawnStack (bool): Indicates whether the smelter spawns stacked products.
  • requiresRoof (bool): Indicates whether the smelter requires a roof.
  • addOreAnimationLength (float): The length of the animation for adding ore.
  • smelterConversion (List<SmelterConversionList>): The list of smelter conversions.
  • replaceDefaultConversion (bool) Default true - Override all of the conversion list. - false just adds to existing list

fuelItemData

  • name (string): The name of the fuel item.

Fireplace

  • StartFuel (float): How much fuel the piece starts with with you first build it.
  • MaxFuel (float): Max Fuel the piece holds
  • SecPerFuel (float): Time to burn one piece.
  • InfiniteFuel (bool): Woot Woot! Never refil
  • FuelType (string): Fuel that is burned for the piece, any item
  • IgniteInterval (float): Chance to spread fire time check. (Only applies to Biomes that have Fire Hazard)
  • IgniteChance (float): Chance of fire spread (Only applies to Biomes that have Fire Hazard)
  • IgniteSpread (int): Not sure on this Spread value (Only applies to Biomes that have Fire Hazard)

PlantData

  • m_name (string): In game name of the plant.
  • GrowTime (int): Minimum time in seconds for the plant to transition into a Prefab. Exact time chosen randomly within the range of MaxGrowTime.
  • MaxGrowTime (float): Maximum time in seconds for the plant to transition into a Prefab.
  • GrowPrefab (string): Name of the prefab the plant turns into after the timer. Can be pretty much anything. Anything anything.
  • MinSize (float): Minimum size multiplier of the prefab spawned. Overrides Pickable `size.
  • MaxSize (float): Maximum size multiplier of the prefab spawned. Overrides Pickable size.
  • GrowRadius (float): Radius in meters from center that the plant needs clearance to grow.
  • GrowRadiusVines (float): Radius from center that the plant needs clearance from other vines to grow. Inverse, higher numbers reduces the range.
  • CultivatedGround (bool): Whether or not the plant needs cultivated ground to grow.
  • DestroyIfCantGrow (bool): Whether or not the plant disappears if growing is restricted.
  • TolerateHeat (bool): Whether or not the plant can survive hot climates. Overrides Biomes.
  • TolerateCold (bool): Whether or not the plant can survive cold climates. Overrides Biomes.
  • Biomes (string): List of Biomes that the plant is allowed to grow in. Meadows, BlackForest, Plains, AshLands, Swamp, Mountain, None, Everything, All, DeepNorth, Ocean

TeleportWorldData

  • AllowAllItems (bool) Allow all items through portals. Otherwise use default rule checks

SmelterConversionList

  • FromName (string): The name of the item to convert from.
  • ToName (string): The name of the item to convert to.
  • Remove (bool): Default is false, this allows you to remove existing conversions. Now items not listed shouldn't be affected

Delete all by using "-"

Marble Sizes

Change the size of any Piece, make adminonly and build HUGE or TINY structures.

Recipe Components

Recipes

Most recipes are saved with itemname in name for recipe. For actual recipes they will have Recipe_ in the name like Recipe_Bronze or Recipe_Bronze5.
You should try to avoid actual recipes when possible.
wackydb_all_recipes should list both normal recipes and actual recipes

Actual recipes can be found in bulk save now and with JVL docs. https://valheim-modding.github.io/Jotunn/data/objects/recipe-list.html
They have no for clonePrefabName: NO . Actual Recipes can NOT be cloned.

  • name (string, required): The name of the recipe.
  • clonePrefabName (string): The name of the Item prefab to craft.
  • craftingStation (string): The crafting station required to craft the recipe. "" is hand crafted
  • minStationLevel (int): The minimum level of the crafting station required.
  • maxStationLevelCap (int): The maximum level cap of the crafting station.
  • repairStation (string): The repair station required to repair the recipe.
  • amount (int): The amount of the recipe.
  • disabled (bool): Indicates whether the recipe is disabled.
  • disabledUpgrade (bool): Disables allowing upgrades in the upgrade tab, can be used in combination with disable to only allow upgrading and not crafting.
  • requireOnlyOneIngredient (bool): Indicates whether the recipe requires only one ingredient.
  • upgrade_reqs (List<string>): By default will be empty, it allows you to speficy complete different requirements to upgrade than craft.
    Actually adds a second hidden recipe to game with the name + _upgrade.
    (upgrade_reqs) requirements to upgrade: Item:amountPerLevel:[optional - starts at 2]level
    upgrade_reqs If you just want have one upgrade recipe that doubles with every level.

    upgrade_reqs You can leave the level out to always double for each upgrade or specify for that level only.

  • reqs (List<string>, required): The list of required ingredients for the recipe.

(Required) requirements to build: Item:amount:amountPerLevel:refundable:


Arrows x50 will be put above Arrow x20

Creatures

CreatureData

Materials and Custom

You can replace all Boars in the game with this Dude.


  • name (string, required): The name of the creature.
  • mob_display_name (string, required): The display name of the creature in game.
  • custom_material (string): The custom material for the creature. - Disabled for now - Will not work
  • clone_creature (string): The name of the creature to clone.
  • creature_replacer (string): The creature replacer. This will replace this creature with the one named here. All spawns will be replaced with this creature.
SE_Effects

SE_Effects

  • Name (string): The name of the status effect.
  • Status_m_name (string): In Game Name
  • Category (string): The category of the status effect. Prevents other SEs in this category from being active while one is active. "" is default with no category, so no restrictions.
  • IconName (string): The name of the icon for the status effect. Doesn't do much, can't change.
  • ClonedSE (string): Holds the name of the SE you are cloning. Otherwise new SE's will use SetEffect_TrollArmor
  • CustomIcon (string): The custom icon for the status effect. customIcon, jpeg or png. ie wacky.png 64 x 64
  • FlashIcon (bool): Indicates whether the icon should flash.
  • CooldownIcon (bool): Indicates whether the icon is for a cooldown.
  • Tooltip (string): The tooltip for the status effect.
  • Attributes (StatusEffect.StatusAttribute): The attributes of the status effect. /// Sailing Power // Cold Resistance // Double Impact Damage
  • StartMessageLoc (MessageHud.MessageType): The localization message type for the start message.
  • StartMessage (string): The start message of the status effect.
  • StopMessageLoc (MessageHud.MessageType): The localization message type for the stop message.
  • StopMessage (string): The stop message of the status effect.
  • RepeatMessageLoc (MessageHud.MessageType): The localization message type for the repeat message.
  • RepeatMessage (string): The repeat message of the status effect.
  • RepeatInterval (float): The repeat interval of the status effect.
  • TimeToLive (float): The time to live of the status effect.
  • StartEffect_ (string[]): The string of start effects for the status effect.
  • StopEffect_ (string[]): The string of stop effects for the status effect.
  • Cooldown (float): The cooldown of the status effect.
  • ActivationAnimation (string): The animation for the activation of the status effect.
  • SeData (SEdata): The additional data for the status effect.
  • SeShield (SEShield): The additional data for the shield status effect.

Class: SEShield

Only for Staff_shield at the moment

  • AbsorbDmg (float): How much the shield protects against.
  • AbsorbDmgWorldLevel (float): No idea, maybe future plans?
  • LevelUpSkillFactor (float): How much you can level up per usage.
  • TtlPerItemLevel (int): How long the shield lasts.
  • AbsorbDmgPerSkill (float): How much additional shield you get per skill level.

Class: SEdata

  • m_tickInterval (float): The tick interval for the status effect.
  • m_healthPerTickMinHealthPercentage (float): The minimum health percentage per tick.
  • m_healthPerTick (float): The health per tick.
  • m_healthOverTime (float): The health over time value.
  • m_healthOverTimeDuration (float): The duration of health over time.
  • m_healthOverTimeInterval (float): The time interval for health over time.
  • m_staminaOverTime (float): The stamina over time value.
  • m_staminaOverTimeDuration (float): The duration of stamina over time.
  • m_staminaDrainPerSec (float): The stamina drain per second.
  • m_runStaminaDrainModifier (float): The stamina drain modifier for running.
  • m_jumpStaminaUseModifier (float): The stamina use modifier for jumping.
  • m_eitrOverTime (float): The eitr over time value.
  • m_eitrOverTimeDuration (float): The duration of eitr over time.
  • m_healthRegenMultiplier (float): The health regeneration multiplier.
  • m_staminaRegenMultiplier (float): The stamina regeneration multiplier.
  • m_eitrRegenMultiplier (float): The eitr regeneration multiplier.
  • m_raiseSkill (Skills.SkillType): The skill type to raise as a multiplier or %
  • m_raiseSkillModifier (float): The skill modifier to raise as a multiplier.
  • m_skillLevel (Skills.SkillType): The skill type to modify the level.- Flat Rate
  • m_skillLevelModifier (float): The skill level modifier.
  • m_skillLevel2 (Skills.SkillType): Another skill type to modify the level.Flat Rate
  • m_skillLevelModifier2 (float): Another skill level modifier.
  • m_mods (List<HitData.DamageModPair>): The list of damage modifiers for hit.
  • m_modifyAttackSkill (Skills.SkillType): The skill type to modify the attack.
  • m_damageModifier (float): The damage modifier for the attack.
  • m_noiseModifier (float): The noise modifier for sneaking.
  • m_stealthModifier (float): The stealth modifier for sneaking.
  • m_addMaxCarryWeight (float): The additional maximum carry weight.
  • m_speedModifier (float): The speed modifier.
  • m_jumpModifier (Vector3): Allows you to control how much a charcter can jump or not. Very small values make big difference. Usual range is -1 to 1. You can delete the normalized. You only need the x,y,z lines.
  • m_maxMaxFallSpeed (float): The maximum maximum fall speed.
  • m_fallDamageModifier (float): The fall damage modifier.
  • m_tickTimer (float): The tick timer.
  • m_healthOverTimeTimer (float): The health over time timer.
  • m_healthOverTimeTicks (float): The health over time ticks.
  • m_healthOverTimeTickHP (float): The health over time tick health points.

You should be able to delete existing m_mods, by
m_mods:
-

Delete all m_mods

Use wackydb_se_create as a "template" to create a new status effect

MOCK System

Bike Model Import

https://github.com/Wacky-Mole/WackysDatabase/tree/master/Documentation/Mock Examples

Example Files and Item Yaml for Bike

All credits to @KG for making this incredible system.

In the Wackydatabase folder, there is the Object Folder.

Objects can only be items that you can pick up/trade at the moment, but mocks are limitless in the possibilities of what you can add.

Pick an object like bike.obj and bike_albedo.png and put them into the Object folder. It should load up the new GameObject at the start. You can then use wackydb_save_item to customize and/or create a recipe.

The object folder matches based on the preceding name, so bike_ matches to bike.

It looks for PNGs with "_albedo", "_metallic", and "_normal".

Auto Gens Icon

This system is not well tested, so please give me feedback and submit bug reports for any bugs.

2.3.1, I made default material as wood. I think it can be overwritten, but I am unsure.

1.xx ChangeLog
    Version 1.4.2
        Had to disable Piece snapshot because of hovering pieces stacking up on each other, hopefully someone fixes it someday.
        You might have to destroy the existing pieces at (0,0) with infinity hammer quite a lot depending on reloads and players joining.    
    Version 1.4.1
        Some items don't like snapshot icons - Added extra checks and only items with material changes get new icons
    Version 1.4.0
        Added DedServer load Memory config to allow people to see if loading Wackydb on DedServer helps or hinders. 
        extraSecurity - Allows people who don't want the extra cheat protection to disable it and not get 0.0.1 Error
        Big News! Added auto Icon Generation to cloned Items, and all Pieces with custom material(pieces angles are a little wonky or wacky if you will) - Thx Blaxx for code
    Version 1.3.6
        Added m_attackHealthPercentage and m_secAttackHealthPercentage- Warning any Items that uses this Must be recreated. s
        Otherwise default will go to 0. These items include the staffs that use a percentage of player health to power. 
    Version 1.3.5
        I have decided to add more parameters to Json file, so please do not use older version of Wackydb after upgrading. Wackydb 2.0 is not coming soon
        Existing Jsons are fine to use, you can regenerate them to get new values. 
        Added m_EitrCost, m_secEitrCost - These are attack costs for primary and secondary weapon attacks, no Eitr, no swing. 
        m_FoodEitr - Food Eitr amount, m_EitrRegen- Modifier to Eitr Regen - Very powerful on clothes, weapons, added more warnings. 
        Seperated out m_attackStamina and secondary m_attackStamina
    Version 1.3.2
        Mistlands Update: Removed extra Wet effect/restance since Mistlands adds its own. 
        Removed FoodColor, as it was removed from game and didn't really do anything.
    Version 1.3.0
        Hopefully fixed Co-Op hosting bug again..
    Version 1.2.9
        Updated ServerSync for 211.11
    Version 1.2.8
        Hopefully fixed issue with Co-op hosting. Added 0.0.1 Custom message back. 
    Version 1.2.7
        Updated ServerSync for crossplay - Custom Message for Ver 0.0.1 is not displayed. No Singleplayer before multiplayer without restart.
        Known issue of TrophyDraugr is not able to be set (targets TrophyDraugrFem) use Fem or clone TrophyDraugr. 
        Destroyer is spelled with "troy", also now a loginfo instead of warning
    Version 1.2.5
        Moved wackysDatabase to Config instead of Plugins folder to stop r2mod from deleting folder on updates.
        Warning 1.2.4 and Lower will delete wackysDatabase folder in Plugins on Update, please backup.
    Version 1.2.4 
        Expanded Recipe Compatibility to Recipe_ ( Modification only, no cloning),  Can now change any material's type,
        category, craftingstation instead of just clones. Cannot change piecehammer of non clones. You can now set the piece's 
        material at 50% health. If you only set 1 it sets to both "full health" and "half health" otherwise,
        "material1, material2" (full, half health). "same_mat" or "no_wear" sets pieces to have no wear material. 
        Updated ServerSync and PieceManager
    Version 1.1.9
        Bug Fixes. Cleaned up Logs
    Version 1.1.8
        Fixed two main bugs,
        Properly unloading cloned assets on logout.
        Made it so some errors are caught better.
        Incorporated Water Resistance as done by aedenthorn.
    Version 1.1.5
        Cleaned up the code a lot. Fixed Pieces from getting null values from Server.
        Fixed the piece disable/admin for custom pieces.
        Made it so you can clone stone_floor (4x4 stone prefab) - editing it probably won't make it add to Hammer
        Added special case list for objects that have multiple Gameobjects. (Bow, SpearBronze)
    Version 1.10
        All About Pieces with this Update!
        Adds ability to clone an existing CraftingStation piece and make it a new CraftingStation 
            - The CraftingStation name is "name", add recipes to it with this name.
        Fixed other mods custom pieces. You should be able access and even clone other mods pieces now.
        Added piecehammerCategory so you can change the category where piece appears on the hammer. 
            - Mods might use numbers instead of words though.
        Added m_knockback Added m_backstabbonus Made m_attackStamina set both Primary and Secondary attacks.
    Version 1.05
        Mod Release
Full Features

Planned features

  • [x] Able to modify item data.
  • [x] Able to modify recipes.
  • [x] Able to modify pieces.
  • [x] Able to modify materials on clones
  • [x] Custom items/pieces
  • [x] Custom recipes
  • [x] Able to modify Set effects
  • [x] Cloned Items show up on MainScreen
  • [x] Adjust attack values of items
  • [x] Able to add or remove conversions on smelter pieces
  • [x] Able to change the size of anything Wackymole
Feedback

For questions or suggestions please join discord channel: Odin Plus Team or my discord at Wolf Den

Support me at https://www.buymeacoffee.com/WackyMole or https://ko-fi.com/wackymole

Buy Me A Coffee

Buy Me a Coffee at ko-fi.com

Last notes

Last notes:

This mod loads at various places to ensure that it can touch all objects while allowing other mods to touch some wackydb clones.

The primary purpose of this mod is to edit objects, not to create clones/mocks. - This is less true in 2.0

A mispelling like "Like <colorz = blue> Hi</color>?" or dmg modifier that is wrong can break Azu show container contents

(Note!: If you want the game to have default values, close the game and delete the wackysDatabase folder).

If you null out piece WearNTearData, unexpected things might happen to your world.


Credits

Credits: Aedenthorn, former modder and inspiration for a lot of old mods! https://github.com/aedenthorn/ValheimMods
Thank you AzumattDev for the template. It is very good https://github.com/AzumattDev/ItemManagerModTemplate
Also thanks to Blaxx and Azu for code like Snapshot and Piece Categories.
Thanks to the Odin Discord server, for being active and good for the valheim community.
An extra thank you to Azumatt and the Odin team.
Special thank you to @KG for Mock System
A Huge thank you to Rexabit and his Visual Modifier https://github.com/Rexabit/valheim-visuals-modifier
Azumatt for Status Editor contributions.
This mod was the culmination of hundreds of hours. Do whatever you want with this mod.

Known issues:
Bug on moving stuff from one hammer to another - disable orginal and make a clone for now
Creature material is not working
CrossbowArbalest item not changing, recommend cloning and replacing
Stay Wacky.