public static void LeafGolemThrowLeavesSpecialState_OnThrow(On.LeafGolemThrowLeavesSpecialState.orig_OnThrow orig, LeafGolemThrowLeavesSpecialState self) { specialState = self; specialStateData = new DynData <LeafGolemThrowLeavesSpecialState>(self); boss = specialStateData.Get <LeafGolemBoss>("boss"); boss.ClearOnThrowHandlers(); specialStateData.Set("attackSFX", Manager <AudioManager> .Instance.PlaySoundEffect(boss.groundAttackSFX)); boss.Projectile_1.gameObject.SetActive(true); boss.Projectile_2.gameObject.SetActive(true); projectile_3.gameObject.SetActive(true); projectile_4.gameObject.SetActive(true); boss.Projectile_1.transform.position = boss.downProjectileSpawnPos.position; boss.Projectile_2.transform.position = boss.downProjectileSpawnPos.position + Vector3.down * 0.75f; projectile_3.transform.position = boss.downProjectileSpawnPos.position; projectile_4.transform.position = boss.downProjectileSpawnPos.position + Vector3.down * 0.75f; Vector3 group1Target = boss.Projectile_1.transform.position + Vector3.left * 10f; float duration = Vector3.Distance(boss.Projectile_1.transform.position, group1Target) / (int)(self.projectileSpeed * 1.5f); boss.Projectile_1.GoToQuad(group1Target, duration); boss.Projectile_2.GoToQuad(group1Target + Vector3.down * 0.75f, duration); Vector3 group2Target = projectile_3.transform.position + Vector3.right * 10f; float duration2 = Vector3.Distance(projectile_3.transform.position, group2Target) / (int)(self.projectileSpeed * 1.5f); projectile_3.GoToQuad(group2Target, duration2); projectile_4.GoToQuad(group2Target + Vector3.down * 0.75f, duration2); boss.Projectile_1.onReachedPosition += OnProjectileReachedUpApart; boss.Projectile_2.onReachedPosition += OnProjectileReachedUpApart; projectile_3.onReachedPosition += OnProjectileReachedUpApart; projectile_4.onReachedPosition += OnProjectileReachedUpApart; }
void LeafGolemBoss_Kill(On.LeafGolemBoss.orig_Kill orig, LeafGolemBoss self) { On.LeafGolemThrowLeavesState.OnThrow -= self.gameObject.GetComponent <ThrowLeavesStateReplace>().LeafGolemThrowLeavesState_OnThrow; UnityEngine.Object.Destroy(ThrowLeavesSpecialStateReplace.projectile_3.gameObject); UnityEngine.Object.Destroy(ThrowLeavesSpecialStateReplace.projectile_4.gameObject); orig(self); }
void LeafGolemBoss_StopExploding(On.LeafGolemBoss.orig_StopExploding orig, LeafGolemBoss self) { orig(self); if (ThrowLeavesSpecialStateReplace.projectile_3.gameObject.activeInHierarchy) { ThrowLeavesSpecialStateReplace.projectile_3.explosionSpawner.StopSpawning(); } if (ThrowLeavesSpecialStateReplace.projectile_4.gameObject.activeInHierarchy) { ThrowLeavesSpecialStateReplace.projectile_4.explosionSpawner.StopSpawning(); } }
public void LeafGolemThrowLeavesState_OnThrow(On.LeafGolemThrowLeavesState.orig_OnThrow orig, LeafGolemThrowLeavesState self) { state = self; stateData = new DynData <LeafGolemThrowLeavesState>(self); boss = stateData.Get <LeafGolemBoss>("boss"); stateData.Set("attackSFX", Manager <AudioManager> .Instance.PlaySoundEffect(boss.groundAttackSFX)); boss.Projectile_1.gameObject.SetActive(true); boss.Projectile_1.transform.position = boss.leftRightProjectileSpawnPos.position; RaycastHit2D raycastHit2D = Physics2D.Raycast(boss.Projectile_1.transform.position, Vector3.right * boss.LookDir, float.PositiveInfinity, LayerMaskConstants.GROUND_8_AND_16); projectileTargetPos = raycastHit2D.point; ref Vector3 reference = ref projectileTargetPos;
void LeafGolemBoss_Start(On.LeafGolemBoss.orig_Start orig, LeafGolemBoss self) { orig(self); ThrowLeavesStateReplace stateReplace = self.gameObject.AddComponent <ThrowLeavesStateReplace>(); On.LeafGolemThrowLeavesState.OnThrow += stateReplace.LeafGolemThrowLeavesState_OnThrow; if (ThrowLeavesSpecialStateReplace.projectile_3 != null) { UnityEngine.Object.Destroy(ThrowLeavesSpecialStateReplace.projectile_3.gameObject); UnityEngine.Object.Destroy(ThrowLeavesSpecialStateReplace.projectile_4.gameObject); ThrowLeavesSpecialStateReplace.projectile_3 = null; ThrowLeavesSpecialStateReplace.projectile_4 = null; } ThrowLeavesSpecialStateReplace.projectile_3 = UnityEngine.Object.Instantiate(self.leafProjectile).GetComponent <LeafGolemProjectile>(); ThrowLeavesSpecialStateReplace.projectile_4 = UnityEngine.Object.Instantiate(self.leafProjectile).GetComponent <LeafGolemProjectile>(); ThrowLeavesSpecialStateReplace.projectile_3.gameObject.SetActive(false); ThrowLeavesSpecialStateReplace.projectile_4.gameObject.SetActive(false); self.stateMachine.GetState <LeafGolemThrowLeavesState>().delayBeforeLeafComeBack = 0.2f; self.stateMachine.GetState <LeafGolemThrowLeavesState>().projectileSpeed += 16; // I already made it harder, no need to be much faster self.stateMachine.GetState <LeafGolemThrowLeavesSpecialState>().projectileSpeed += 5; self.stateMachine.GetState <LeafGolemMoveTowardsPlayerState>().moveSpeed *= 3; }