Creating an NPC that isn't a skeleton or a dragon?

Hello! Quite new but loving it!

Would anyone kindly be able to advise how I make an NPC that can attack but that isn’t a default NPC in the AI kit?

I basically want to drag all the properties & behaviours of the skeleton over to a default humanoid. Is there a simple way to do that / or just change the skeleton mesh?

I’ve quite probably misunderstood but any help would be really appreciated! Thanks so much!

Add NPC AI Kit to project
Add Combat Dependencies to project

Drag Combat Dependencies into the Hierarchy.

Core Content - Imported Content - NPC AI Kit: drag one of the templates into your Hierarchy, it doesn't matter what. This just adds NPC AI Kit to Project Content - Imported Content. I'm not sure if this is a bug or an optimisation to only add used content to the project.

Project Content - Imported Content - NPC AI Kit - Dependent Templates, drag RPG Skeleton - Unarmed into your Hierarchy and delete the template we added above to be able to see NPC AI Kit in the Project Content.

So you should now have just Combat Dependencies and RPG Skeleton - Unarmed in your Hierarchy (plus all the normal Core folders).

Right click on the skeleton and Deinstance Template. (Goes cyan).

Right click on the skeleton again and Abandon Template for Instance. (Goes white).

Change the name from "RPG Skeleton - Unarmed" to "Eva" (it can be anything you like, I'm just keeping it simple).

Expand the Eva folder in the Hierarchy and then expand the ClientContext folder, then expand the GeoRoot folder.

Find a new humanoid Animated Mesh in Core Content, lets try Humanoid 1 Eva: Drag Eva from Core Content and drop her next to the Skeleton Mob in GeoRoot. She probably appears as "Humanoid 1 Rig". They should be next to each other, not one a child of the other.

Delete Skeleton Mob.

Left click on the script in GeoRoot called AnimControllerZombie, you will see in its properties, under Script - Custom a property AnimatedMesh with a grey box next to it that says Empty Object Reference. Drag your newly added "Humanoid 1 Rig" (aka Eva) into this box.

Right click on the Eva folder and "New Template from Object".

You are done.

Anticipating your next question: Yes, she still walks like a zombie...

If you look in the script AnimControllerZombie, you will see this at the top:

local ATTACK_ANIMATION = script:GetCustomProperty("AttackAnim") or "zombie_unarmed_grab"
local ATTACK_PLAYBACK = script:GetCustomProperty("AttackPlayback") or 0.6
local PLAY_ATTACK_ON_RECOVERY = script:GetCustomProperty("PlayAttackOnRecovery")
local IDLE_STANCE = script:GetCustomProperty("IdleStance") or "zombie_unarmed_idle_ready"
local READY_STANCE = script:GetCustomProperty("ReadyStance") or "zombie_unarmed_idle_ready"
local WALK_STANCE = script:GetCustomProperty("WalkStance") or "zombie_unarmed_walk_forward"
local RUN_STANCE = script:GetCustomProperty("RunStance") or "zombie_unarmed_run_forward"

If you want to change an animation from the default, then deinstance Eva, but don't Abandon Template for Instance.

In the AnimControllerZombie property window, +Add Custom Property string and give it the name of the variable the script is looking for, e.g. "RunStance" (no quotes, case sensitive). Have a look here Animations and Sockets for animation name options.

Right click Eva folder and Update Template from Object.

THANK YOU so so much for writing this all out for me, that is unbelievably helpful and I really appreciated it. Thank you!! Going to try this all out now!