diff --git a/HKMP/Game/Client/Entity/Component/ChildrenActivationComponent.cs b/HKMP/Game/Client/Entity/Component/ChildrenActivationComponent.cs index 1020786..08644aa 100644 --- a/HKMP/Game/Client/Entity/Component/ChildrenActivationComponent.cs +++ b/HKMP/Game/Client/Entity/Component/ChildrenActivationComponent.cs @@ -7,7 +7,7 @@ namespace Hkmp.Game.Client.Entity.Component; /// -/// This component manages the gravity scale of an entity. +/// This component manages the activation of the children of an entity. internal class ChildrenActivationComponent : EntityComponent { private readonly List _hostChildren; private readonly List _clientChildren; @@ -80,4 +80,4 @@ public override void Update(EntityNetworkData data) { public override void Destroy() { MonoBehaviourUtil.Instance.OnUpdateEvent -= OnUpdate; } -} \ No newline at end of file +} diff --git a/HKMP/Game/Client/Entity/Entity.cs b/HKMP/Game/Client/Entity/Entity.cs index 6faae27..cfa920e 100644 --- a/HKMP/Game/Client/Entity/Entity.cs +++ b/HKMP/Game/Client/Entity/Entity.cs @@ -820,7 +820,7 @@ private void ObjectPoolOnRecycleGameObject(On.ObjectPool.orig_Recycle_GameObject /// private void OnDoActivateGameObject(ActivateGameObject.orig_DoActivateGameObject orig, HutongGames.PlayMaker.Actions.ActivateGameObject self) { // If the game object in the action is not our host game object, we skip it - if (self.Fsm.GetOwnerDefaultTarget(self.gameObject) != Object.Host) { + if (self.Fsm.GetOwnerDefaultTarget(self.gameObject) != Object.Host || Object.Host == null) { orig(self); return; } @@ -951,9 +951,10 @@ public void MakeHost() { // We need to set the isKinematic property of rigid bodies to ensure physics work again after enabling // the host object. In Hornet 1 this is necessary because another state sets this property normally in the - // fight. See the "Wake" or "Refight Ready" state of the "Control" FSM on Hornet 1 + // fight. See the "Wake" or "Refight Ready" state of the "Control" FSM on Hornet 1. + // In the Mantis Lord entity, this should never be disabled, since they are always kinematic. var rigidBody = Object.Host.GetComponent(); - if (rigidBody != null) { + if (rigidBody != null && Type != EntityType.MantisLord) { Logger.Debug(" Resetting isKinematic of Rigidbody to ensure physics work for host object"); rigidBody.isKinematic = false; } diff --git a/HKMP/Game/Client/Entity/EntityInitializer.cs b/HKMP/Game/Client/Entity/EntityInitializer.cs index a730928..8327f46 100644 --- a/HKMP/Game/Client/Entity/EntityInitializer.cs +++ b/HKMP/Game/Client/Entity/EntityInitializer.cs @@ -44,7 +44,8 @@ internal static class EntityInitializer { /// Array of types of actions that should be skipped during initialization. /// private static readonly Type[] ToSkipTypes = { - typeof(Tk2dPlayAnimation) + typeof(Tk2dPlayAnimation), + typeof(ActivateAllChildren) }; ///