// Token: 0x06002DA8 RID: 11688 RVA: 0x000C1E10 File Offset: 0x000C0010
        private void FireGauntlet()
        {
            if (hasFiredGauntlet)
            {
                return;
            }
            base.characterBody.AddSpreadBloom(EntityStates.Mage.Weapon.FireFireBolt.bloom);
            hasFiredGauntlet = true;
            Ray aimRay = base.GetAimRay();

            if (childLocator)
            {
                muzzleTransform = childLocator.FindChild(muzzleString);
            }

            if (base.isAuthority)
            {
                if (!projectilePrefab)
                {
                    projectilePrefab = Resources.Load <GameObject>("prefabs/projectiles/magefireboltbasic").InstantiateClone("magefireboltcopy");
                }

                if (!filter)
                {
                    filter = projectilePrefab.AddComponent <TeamFilter>();
                }

                if (!targeter)
                {
                    targeter = projectilePrefab.AddComponent <ProjectileTargetComponent>();
                }

                if (!targetfinder)
                {
                    targetfinder                      = projectilePrefab.AddComponent <ProjectileSphereTargetFinder>();
                    targetfinder.lookRange            = 12;
                    targetfinder.allowTargetLoss      = true;
                    targetfinder.onlySearchIfNoTarget = true;
                    targetfinder.testLoS              = true;
                    targetfinder.targetSearchInterval = 0.15f;
                }

                if (!steertoward)
                {
                    steertoward = projectilePrefab.AddComponent <ProjectileSteerTowardTarget>();
                    steertoward.rotationSpeed = 360f;
                }

                if (!projectile)
                {
                    projectile                   = projectilePrefab.AddComponent <ProjectileSimple>();
                    projectile.velocity          = 50f;
                    projectile.updateAfterFiring = true;
                }

                for (int i = 0; i < 2; i++)
                {
                    ProjectileManager.instance.FireProjectile(projectilePrefab, aimRay.origin, Util.QuaternionSafeLookRotation(aimRay.direction + (new Vector3(Random.Range(-36f, 36f), Random.Range(-36f, 36f), Random.Range(-36f, 36f)) / 360f)), base.gameObject, 1f * damageStat, 0f, base.characterBody.RollCrit());
                }
            }
        }
Exemple #2
0
        public override void OnEnter()
        {
            base.OnEnter();

            ProjectileTargetComponent projTarget = projPrefab.GetComponent <ProjectileTargetComponent>();

            if (!projTarget)
            {
                projTarget = projPrefab.AddComponent <ProjectileTargetComponent>();
            }
            ProjectileDirectionalTargetFinder projFinder = projPrefab.GetComponent <ProjectileDirectionalTargetFinder>();

            if (!projFinder)
            {
                projFinder = projPrefab.AddComponent <ProjectileDirectionalTargetFinder>();
            }
            projFinder.lookCone             = 6.5f;
            projFinder.lookRange            = 60.0f;
            projFinder.targetSearchInterval = 0.15f;
            projFinder.onlySearchIfNoTarget = false;
            projFinder.allowTargetLoss      = true;
            projFinder.testLoS   = true;
            projFinder.ignoreAir = false;
            ProjectileSteerTowardTarget projSteer = projPrefab.GetComponent <ProjectileSteerTowardTarget>();

            if (!projSteer)
            {
                projSteer = projPrefab.AddComponent <ProjectileSteerTowardTarget>();
            }
            projSteer.rotationSpeed = 45.0f;
            ProjectileSimple projSimp = projPrefab.GetComponent <ProjectileSimple>();

            if (!projSimp)
            {
                Debug.Log("Dafuq you done?");
            }
            projSimp.updateAfterFiring = true;

            duration     = baseDuration;
            arrowFireEnd = duration * spacingFrac;
            arrowTime    = (duration - arrowFireEnd) / baseArrowsToFire / attackSpeedStat;

            this.projPrefab.GetComponent <ProjectileController>().procCoefficient = 0.4f;

            Transform modelTrans = base.GetModelTransform();

            PlayCrossfade("Gesture, Override", "FireSeekingShot", "FireSeekingShot.playbackRate", arrowTime, arrowTime * 0.2f / attackSpeedStat);
            PlayCrossfade("Gesture, Additive", "FireSeekingShot", "FireSeekingShot.playbackRate", arrowTime, arrowTime * 0.2f / attackSpeedStat);

            if (modelTrans)
            {
                childLoc = modelTrans.GetComponent <ChildLocator>();
                anim     = modelTrans.GetComponent <Animator>();
            }
            if (characterBody)
            {
                characterBody.SetAimTimer(duration + 1.0f);
            }
            timer        = 0.0f;
            arrowTimer   = 0.0f;
            arrowCounter = 0;
            fireArrow();
        }
        // Token: 0x06002DA8 RID: 11688 RVA: 0x000C1E10 File Offset: 0x000C0010
        private void FireGauntlet()
        {
            if (hasFiredGauntlet)
            {
                return;
            }
            base.characterBody.AddSpreadBloom(EntityStates.Mage.Weapon.FireFireBolt.bloom);
            hasFiredGauntlet = true;
            Ray aimRay = base.GetAimRay();

            if (childLocator)
            {
                muzzleTransform = childLocator.FindChild(muzzleString);
            }

            if (NetworkServer.active)
            {
                if (!projectilePrefab)
                {
                    projectilePrefab = Resources.Load <GameObject>("prefabs/projectiles/magefireboltbasic").InstantiateClone("magefireboltcopy");
                }

                if (!filter)
                {
                    filter = projectilePrefab.AddComponent <TeamFilter>();
                }

                if (!targeter)
                {
                    targeter = projectilePrefab.AddComponent <ProjectileTargetComponent>();
                }



                if (!steertoward)
                {
                    steertoward = projectilePrefab.AddComponent <ProjectileSteerTowardTarget>();
                    steertoward.rotationSpeed = 360f;
                }

                if (!targetfinder)
                {
                    targetfinder                      = projectilePrefab.AddComponent <ProjectileSphereTargetFinder>();
                    targetfinder.lookRange            = 16;
                    targetfinder.allowTargetLoss      = false;
                    targetfinder.onlySearchIfNoTarget = true;
                    targetfinder.testLoS              = true;
                    targetfinder.targetSearchInterval = 0.15f;
                }

                if (!projectile)
                {
                    projectile                   = projectilePrefab.AddComponent <ProjectileSimple>();
                    projectile.velocity          = 50f;
                    projectile.updateAfterFiring = true;
                }

                BullseyeSearch bullseyeSearch = new BullseyeSearch();
                bullseyeSearch.searchOrigin      = aimRay.origin;
                bullseyeSearch.searchDirection   = aimRay.direction;
                bullseyeSearch.maxDistanceFilter = 100f;
                bullseyeSearch.maxAngleFilter    = 60f;
                bullseyeSearch.teamMaskFilter    = TeamMask.allButNeutral;
                bullseyeSearch.teamMaskFilter.RemoveTeam(base.teamComponent.teamIndex);
                bullseyeSearch.sortMode = BullseyeSearch.SortMode.Angle;
                bullseyeSearch.RefreshCandidates();
                List <HurtBox> list    = bullseyeSearch.GetResults().ToList <HurtBox>();
                HurtBox        hurtBox = (list.Count > 0) ? list[0] : null;
                if (hurtBox)
                {
                    targeter.target = hurtBox.transform;
                }
                for (int i = 0; i < 2; i++)
                {
                    Quaternion direction = Util.QuaternionSafeLookRotation(aimRay.direction + (new Vector3(Random.Range(-36f, 36f), Random.Range(-36f, 36f), Random.Range(-36f, 36f)) / 360f));

                    ProjectileManager.instance.FireProjectile(projectilePrefab, aimRay.origin, direction, base.gameObject, 0.8f * damageStat, 0f, base.characterBody.RollCrit(), DamageColorIndex.Default, hurtBox ? hurtBox.gameObject : null);
                }
            }
        }
Exemple #4
0
        private void CreateLightningSword(Int32 meshInd)
        {
            GameObject ghost = this.CreateLightningSwordGhost(meshInd);
            GameObject proj  = Resources.Load <GameObject>("Prefabs/Projectiles/LunarNeedleProjectile").InstantiateClone("LightningSwordProjectile" + meshInd.ToString());

            ProjectileCatalog.getAdditionalEntries += (list) => list.Add(proj);

            AltArtiPassive.lightningProjectile[meshInd] = proj;

            ProjectileController projController = proj.GetComponent <ProjectileController>();

            projController.ghostPrefab     = ghost;
            projController.procCoefficient = 0.2f;

            ProjectileSimple projSimple = proj.GetComponent <ProjectileSimple>();

            projSimple.enabled = true;
            projSimple.enableVelocityOverLifetime = false;
            projSimple.velocity = 60f;


            ProjectileDirectionalTargetFinder projTargetFind = proj.GetComponent <ProjectileDirectionalTargetFinder>();

            projTargetFind.enabled = false;

            ProjectileSteerTowardTarget projSteering = proj.GetComponent <ProjectileSteerTowardTarget>();

            projSteering.enabled       = true;
            projSteering.rotationSpeed = 140f;

            ProjectileStickOnImpact projStick = proj.GetComponent <ProjectileStickOnImpact>();

            //projStick.ignoreCharacters = false;
            //projStick.ignoreWorld = false;
            projStick.alignNormals = false;

            ProjectileImpactExplosion projExpl = proj.GetComponent <ProjectileImpactExplosion>();

            projExpl.impactEffect                  = Resources.Load <GameObject>("Prefabs/Effects/LightningStakeNova");
            projExpl.explosionSoundString          = "Play_item_lunar_primaryReplace_impact";
            projExpl.lifetimeExpiredSoundString    = "";
            projExpl.offsetForLifetimeExpiredSound = 0f;
            projExpl.destroyOnEnemy                = false;
            projExpl.destroyOnWorld                = false;
            projExpl.timerAfterImpact              = true;
            projExpl.falloffModel                  = BlastAttack.FalloffModel.None;
            projExpl.lifetime                  = 10f;
            projExpl.lifetimeAfterImpact       = 1f;
            projExpl.lifetimeRandomOffset      = 0f;
            projExpl.blastRadius               = 1f;
            projExpl.blastDamageCoefficient    = 1f;
            projExpl.blastProcCoefficient      = 0.2f;
            projExpl.bonusBlastForce           = Vector3.zero;
            projExpl.fireChildren              = false;
            projExpl.childrenProjectilePrefab  = null;
            projExpl.childrenCount             = 0;
            projExpl.childrenDamageCoefficient = 0f;
            projExpl.minAngleOffset            = Vector3.zero;
            projExpl.maxAngleOffset            = Vector3.zero;
            projExpl.transformSpace            = ProjectileImpactExplosion.TransformSpace.World;
            projExpl.projectileHealthComponent = null;

            ProjectileSingleTargetImpact projStimp = proj.GetComponent <ProjectileSingleTargetImpact>();

            projStimp.destroyOnWorld      = false;
            projStimp.hitSoundString      = "Play_item_proc_dagger_impact";
            projStimp.enemyHitSoundString = "Play_item_proc_dagger_impact";


            proj.AddComponent <Components.SoundOnAwake>().sound = "Play_item_proc_dagger_spawn";

            //UnityEngine.Object.DestroyImmediate( proj.GetComponent<ProjectileSingleTargetImpact>() );
            UnityEngine.Object.Destroy(proj.GetComponent <AwakeEvent>());
            UnityEngine.Object.Destroy(proj.GetComponent <DelayedEvent>());
        }