private void Awake() { Log("Added Kin MonoBehaviour"); if (!PlayerData.instance.infectedKnightDreamDefeated) { return; } if (!LostLord.Instance.IsInHall) { return; } ModHooks.Instance.ObjectPoolSpawnHook += Projectile; On.EnemyDeathEffects.EmitInfectedEffects += OnEmitInfected; On.EnemyDeathEffects.EmitEffects += No; On.EnemyDeathEffects.EmitCorpse += EmitCorpse; On.InfectedEnemyEffects.RecieveHitEffect += RecieveHit; UnityEngine.SceneManagement.SceneManager.activeSceneChanged += OnDestroy2; _hm = gameObject.GetComponent <HealthManager>(); _stunControl = gameObject.LocateMyFSM("Stun Control"); _balloons = gameObject.LocateMyFSM("Spawn Balloon"); _anim = gameObject.GetComponent <tk2dSpriteAnimator>(); _control = gameObject.LocateMyFSM("IK Control"); _recoil = gameObject.GetComponent <Recoil>(); _enemyEffects = gameObject.GetComponent <InfectedEnemyEffects>(); }
// Taken and modified from https://github.com/5FiftySix6/HollowKnight.Lost-Lord/blob/master/LostLord/Kin.cs private void ReceiveHit(On.InfectedEnemyEffects.orig_RecieveHitEffect orig, InfectedEnemyEffects self, float attack_direction) { if (self.GetAttr <bool>("didFireThisFrame")) { return; } if (self.GetAttr <SpriteFlash>("spriteFlash") != null) { self.GetAttr <SpriteFlash>("spriteFlash").flashFocusHeal(); } FSMUtility.SendEventToGameObject(gameObject, "DAMAGE FLASH", true); self.GetAttr <AudioEvent>("impactAudio").SpawnAndPlayOneShot(self.GetAttr <AudioSource>("audioSourcePrefab"), self.transform.position); self.SetAttr("didFireThisFrame", true); }