Example #1
0
        // Token: 0x06002F67 RID: 12135 RVA: 0x000CA734 File Offset: 0x000C8934
        private void FireOrbArrow()
        {
            if (!NetworkServer.active)
            {
                return;
            }
            this.orbCount++;
            ArrowOrb arrowOrb = new ArrowOrb();

            arrowOrb.damageValue      = base.characterBody.damage * BackflipState.orbDamageCoefficient;
            arrowOrb.isCrit           = Util.CheckRoll(base.characterBody.crit, base.characterBody.master);
            arrowOrb.teamIndex        = TeamComponent.GetObjectTeam(base.gameObject);
            arrowOrb.attacker         = base.gameObject;
            arrowOrb.damageColorIndex = DamageColorIndex.Poison;
            arrowOrb.procChainMask.AddProc(ProcType.HealOnHit);
            arrowOrb.procCoefficient = BackflipState.orbProcCoefficient;
            Ray            aimRay         = base.GetAimRay();
            BullseyeSearch bullseyeSearch = new BullseyeSearch();

            bullseyeSearch.searchOrigin      = aimRay.origin;
            bullseyeSearch.searchDirection   = aimRay.direction;
            bullseyeSearch.maxDistanceFilter = BackflipState.orbRange;
            bullseyeSearch.teamMaskFilter    = TeamMask.allButNeutral;
            bullseyeSearch.teamMaskFilter.RemoveTeam(arrowOrb.teamIndex);
            bullseyeSearch.sortMode = BullseyeSearch.SortMode.Distance;
            bullseyeSearch.RefreshCandidates();
            List <HurtBox> list    = bullseyeSearch.GetResults().ToList <HurtBox>();
            HurtBox        hurtBox = (list.Count > 0) ? list[UnityEngine.Random.Range(0, list.Count)] : null;

            if (hurtBox)
            {
                Transform transform = this.childLocator.FindChild(BackflipState.muzzleString).transform;
                EffectManager.SimpleMuzzleFlash(BackflipState.muzzleflashEffectPrefab, base.gameObject, BackflipState.muzzleString, true);
                arrowOrb.origin = transform.position;
                arrowOrb.target = hurtBox;
                base.PlayAnimation("Gesture, Override", "FireSeekingArrow");
                base.PlayAnimation("Gesture, Additive", "FireSeekingArrow");
                OrbManager.instance.AddOrb(arrowOrb);
            }
        }