コード例 #1
0
        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;
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 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();
     }
 }
コード例 #4
0
        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;
コード例 #5
0
        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;
        }