// 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); } }