Modding: Making a custom enemy
Jump to navigation
Jump to search
Fundamentals |
---|
Basics • Data.wak • Getting started • Lua Scripting • Useful Tools |
Guides |
Audio • Enemies • Environments (Fog of War) • Image Emitters • Materials • Perks • Special Behaviors • Spells • Spritesheets • Steam Workshop • Using CMake |
Components/Entities |
Component Documentation • Enums • List of all tags • Special Tags • Tags System • Update Order |
Lua Scripting |
Lua API • Utility Scripts |
Other Information |
Enemy Information Table • Magic Numbers • Sound Events • Spell IDs • Perk IDs • Material IDs |
A guide to the basics of Noita enemy creation. (WIP)
Common Components and Tags
Component | Purpose |
---|---|
AnimalAIComponent | Determines enemy behaviour and attacks. |
DamageModelComponent | Allows the enemy to be hurt, determines their damage multipliers and material weaknesses. |
PathFindingComponent | Allows the enemy to path-find through terrain and to other entities. |
PathFindingGridMarkerComponent | Affects path-finding grid in some way, limited documentation. (To be researched.) |
faction, food-chain rank and more. | |
CharacterPlatformingComponent | Determines the enemy's movement capabilities. |
CharacterDataComponent | Affects enemy collision, physics and more. |
HitboxComponent | Determines enemy's hitbox for incoming attacks, etc. |
CameraBoundComponent | Controls the distance from the camera where the enemy should be unloaded. |
SpriteComponent | The enemy's sprite graphics. |
SpriteAnimatorComponent | Updates the enemy's current sprite animation when doing certain actions, i.e. idling, walking, attacking. |
AudioComponent | Determines the audio to be played upon certain events. |
Tag | Purpose |
---|---|
mortal | Multi-purpose tag for living creatures and entities that can be destroyed. (To be researched.) |
hittable | Enemy can be hit. |
enemy | Enemy is an enemy. |
flying | Enemy is a flying enemy. |
boss | Enemy is a boss. |
miniboss | Enemy is a mini-boss. |
human | (To be researched.) |
prey | Enemy may be targeted by predators. |
homing_target | Enemy can be tracked by homing projectiles. |
destruction_target | Enemy will be targeted the Destruction spell. |
teleportable_NOT | Enemy cannot be teleported. |
polymorphable_NOT | Enemy cannot be polymorphed. |
necrobot_NOT | Enemy cannot be revived by enemies like Necrobot. |
glue_NOT | Enemy cannot be glued. |
curse_NOT | Enemy is immune to venomous curse? Grants no immunity to curse damage. |
touchmagic_immunity | Enemy has immunity to Touch of spells. |
AnimalAIComponent.ai_state Enum Values
The AnimalAIComponent::ai_state
has values 1-21, which correspond to the following states:
local states = {
"RandomMove",
"Wandering",
"Eating",
"RaisingHead",
"PreparingJump",
"MoveNearTarget",
"Peeing",
"Defecating",
"Alert",
"Landing",
"TakingFireDamage",
"EscapingPrey",
"AttackingMelee",
"AttackingMeleeDash",
"AttackingRanged",
"AttackingRangedMulti",
"Escaping",
"JobDefault",
"JobGoto",
"JobHelpOtherEntity",
"GoNearHome",
}
These can be printed out like so:
local animal = GetUpdatedEntityID()
local state = ComponentGetValue2(
EntityGetFirstComponentIncludingDisabled(animal, "AnimalAIComponent"), "ai_state"
)
print(states[state])