Modding: Making a custom enemy

From Noita Wiki
Jump to navigation Jump to search
Modding Navigation
Fundamentals
BasicsData.wakGetting startedLua ScriptingUseful Tools
Guides
AudioEnemiesEnvironments (Fog of War) • Image EmittersMaterialsPerksSpecial BehaviorsSpellsSpritesheetsSteam WorkshopUsing CMake
Components/Entities
Component DocumentationEnumsList of all tagsSpecial TagsTags SystemUpdate Order
Lua Scripting
Lua APIUtility Scripts
Other Information
Enemy Information TableMagic NumbersSound EventsSpell IDsPerk IDsMaterial IDs

A guide to the basics of Noita enemy creation. (WIP)

Common Components and Tags

Entity Components
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.
Tags
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])