protected void MarkWarningMessageByEffect(EntityParent caster, int effectID, XPoint basePoint)
        {
            if (basePoint == null)
            {
                return;
            }
            Effect effect = DataReader <Effect> .Get(effectID);

            if (effect == null)
            {
                return;
            }
            if (effect.aiEffectMove != 1)
            {
                return;
            }
            if (effect.range == null)
            {
                return;
            }
            if (effect.range.get_Count() < 3)
            {
                return;
            }
            float casterRadius = 0f;

            if (caster.Actor)
            {
                casterRadius = XUtility.GetHitRadius(caster.Actor.FixTransform);
            }
            this.MarkWarningMessage(basePoint.ApplyOffset(effect.offset), effect.range, casterRadius);
            this.MarkWarningMessage(basePoint.ApplyOffset(effect.offset), effect.range2, casterRadius);
        }
        protected void MarkWarningMessageByDynamicWarningArea(EntityParent caster, EntityParent target, List <int> dynamicWarningArea)
        {
            if (dynamicWarningArea.get_Count() < 4)
            {
                return;
            }
            XPoint xPoint = null;
            int    num    = dynamicWarningArea.get_Item(0);

            if (num != 1)
            {
                if (num == 2)
                {
                    if (!target.Actor)
                    {
                        return;
                    }
                    xPoint          = new XPoint();
                    xPoint.position = target.Actor.FixTransform.get_position();
                    xPoint.rotation = target.Actor.FixTransform.get_rotation();
                }
            }
            else
            {
                if (!caster.Actor)
                {
                    return;
                }
                xPoint          = new XPoint();
                xPoint.position = caster.Actor.FixTransform.get_position();
                xPoint.rotation = caster.Actor.FixTransform.get_rotation();
            }
            List <int> list = new List <int>();

            for (int i = 1; i < 4; i++)
            {
                list.Add(dynamicWarningArea.get_Item(i));
            }
            float casterRadius = 0f;

            if (caster.Actor)
            {
                casterRadius = XUtility.GetHitRadius(caster.Actor.FixTransform);
            }
            this.MarkWarningMessage(xPoint, list, casterRadius);
        }
Beispiel #3
0
        public override bool MoveToSkillTarget(float skillReach)
        {
            if (this.GetEntity().AITarget == null)
            {
                return(false);
            }
            if (!this.GetEntity().AITarget.Actor)
            {
                return(false);
            }
            float num = XUtility.DistanceNoY(base.FixTransform.get_position(), this.GetEntity().AITarget.Actor.FixTransform.get_position()) - (skillReach + XUtility.GetHitRadius(this.GetEntity().AITarget.Actor.FixTransform));

            if (num <= -0.05f)
            {
                base.StopMoveToPoint();
                return(false);
            }
            if (this.CurActionStatus != "run" && !this.CanChangeActionTo("run", true, 0, false) && ActionStatusName.IsSkillAction(this.CurActionStatus) && !this.GetEntity().IsMoveCast&& !base.IsUnderTermination)
            {
                return(false);
            }
            Vector3 vector         = new Vector3(this.GetEntity().AITarget.Actor.FixTransform.get_position().x - base.FixTransform.get_position().x, 0f, this.GetEntity().AITarget.Actor.FixTransform.get_position().z - base.FixTransform.get_position().z);
            Vector3 normalized     = vector.get_normalized();
            Vector3 aIMoveFixPoint = base.GetAIMoveFixPoint(base.FixTransform.get_position(), this.GetEntity().AITarget.Actor.FixTransform.get_position(), normalized, num, XUtility.GetHitRadius(base.FixTransform));

            this.MoveToPoint(aIMoveFixPoint, 0f, null);
            this.GetEntity().AIToPoint = new XPoint
            {
                position = aIMoveFixPoint
            };
            return(true);
        }
Beispiel #4
0
        public bool MoveToFollowTarget(FollowTargetType followTargetType, float searchRange, float startDistance, float stopDistance)
        {
            if (this.owner.IsWeak)
            {
                return(false);
            }
            if (!this.ownerActor)
            {
                return(false);
            }
            float hitRadius = XUtility.GetHitRadius(this.ownerActor.FixTransform);

            if (this.owner.FollowTarget == null)
            {
                List <EntityParent> list = new List <EntityParent>();
                switch (followTargetType)
                {
                case FollowTargetType.Self:
                    list.Add(EntityWorld.Instance.EntSelf);
                    break;

                case FollowTargetType.OtherPlayer:
                    list.AddRange(EntityWorld.Instance.GetEntities <EntityPlayer>().Values);
                    break;

                case FollowTargetType.Boss:
                {
                    List <EntityParent> values = EntityWorld.Instance.GetEntities <EntityMonster>().Values;
                    for (int i = 0; i < values.get_Count(); i++)
                    {
                        if (values.get_Item(i).IsLogicBoss)
                        {
                            list.Add(values.get_Item(i));
                        }
                    }
                    break;
                }
                }
                EntityParent followTarget = null;
                float        num          = 3.40282347E+38f;
                for (int j = 0; j < list.get_Count(); j++)
                {
                    if (list.get_Item(j).Actor)
                    {
                        if (list.get_Item(j).Actor.FixTransform)
                        {
                            float num2 = XUtility.DistanceNoY(this.ownerActor.FixTransform.get_position(), list.get_Item(j).Actor.FixTransform.get_position()) - hitRadius - XUtility.GetHitRadius(list.get_Item(j).Actor.FixTransform);
                            if (num2 < searchRange && num2 < num)
                            {
                                followTarget = list.get_Item(j);
                                num          = num2;
                            }
                        }
                    }
                }
                this.owner.FollowTarget = followTarget;
            }
            if (this.owner.FollowTarget == null)
            {
                return(false);
            }
            if (!this.owner.FollowTarget.Actor)
            {
                this.owner.FollowTarget = null;
                return(false);
            }
            float num3 = XUtility.DistanceNoY(this.ownerActor.FixTransform.get_position(), this.owner.FollowTarget.Actor.FixTransform.get_position()) - hitRadius - XUtility.GetHitRadius(this.owner.FollowTarget.Actor.FixTransform);

            if (num3 < stopDistance)
            {
                this.ownerActor.StopMoveToPoint();
            }
            else if (num3 > startDistance)
            {
                this.ownerActor.MoveToPoint(this.owner.FollowTarget.Actor.FixTransform.get_position(), 0f, null);
            }
            return(true);
        }
Beispiel #5
0
        public bool CheckTargetDistanceBySkillIndex(int skillIndex)
        {
            int key;

            if (!this.GetSkillIDBySkillIndex(skillIndex, out key))
            {
                return(false);
            }
            Skill skill = DataReader <Skill> .Get(key);

            if (skill == null)
            {
                return(false);
            }
            if (this.owner.AITarget == null)
            {
                return(false);
            }
            if (this.owner.AITarget.Actor == null || this.owner.AITarget.Actor.FixTransform == null)
            {
                return(false);
            }
            if (XUtility.DistanceNoY(this.ownerActor.FixTransform.get_position(), this.owner.AITarget.Actor.FixTransform.get_position()) <= (float)skill.reach.get_Item(0) * 0.01f + XUtility.GetHitRadius(this.owner.AITarget.Actor.FixTransform) && XUtility.DistanceNoY(this.ownerActor.FixTransform.get_position(), this.owner.AITarget.Actor.FixTransform.get_position()) >= skill.reachLimit * 0.01f - XUtility.GetHitRadius(this.owner.AITarget.Actor.FixTransform))
            {
                float num = Vector3.Angle(this.ownerActor.FixTransform.get_forward(), new Vector3(this.owner.AITarget.Actor.FixTransform.get_position().x, this.ownerActor.FixTransform.get_position().y, this.owner.AITarget.Actor.FixTransform.get_position().z) - this.ownerActor.FixTransform.get_position());
                if (num <= (float)skill.reach.get_Item(1) || this.ownerActor.FixTransform.get_position() == this.owner.AITarget.Actor.FixTransform.get_position())
                {
                    return(true);
                }
            }
            return(false);
        }
Beispiel #6
0
        public bool CheckTargetDistance(ComparisonOperator comparisonOperator1, float range1, ComparisonOperator comparisonOperator2, float range2, LogicalOperator logicalOperator)
        {
            if (!this.ownerActor)
            {
                return(false);
            }
            if (this.owner.AITarget == null || this.owner.AITarget.Actor == null || this.owner.AITarget.Actor.FixTransform == null)
            {
                return(false);
            }
            if (comparisonOperator1 == ComparisonOperator.None && comparisonOperator2 == ComparisonOperator.None)
            {
                return(false);
            }
            bool flag = false;

            switch (comparisonOperator1)
            {
            case ComparisonOperator.GreaterThan:
                flag = (XUtility.DistanceNoY(this.ownerActor.FixTransform.get_position(), this.owner.AITarget.Actor.FixTransform.get_position()) - XUtility.GetHitRadius(this.owner.AITarget.Actor.FixTransform) > range1);
                break;

            case ComparisonOperator.GreatThanOrEqual:
                flag = (XUtility.DistanceNoY(this.ownerActor.FixTransform.get_position(), this.owner.AITarget.Actor.FixTransform.get_position()) - XUtility.GetHitRadius(this.owner.AITarget.Actor.FixTransform) >= range1);
                break;

            case ComparisonOperator.Equal:
                flag = (XUtility.DistanceNoY(this.ownerActor.FixTransform.get_position(), this.owner.AITarget.Actor.FixTransform.get_position()) - XUtility.GetHitRadius(this.owner.AITarget.Actor.FixTransform) == range1);
                break;

            case ComparisonOperator.LessThanOrEqual:
                flag = (XUtility.DistanceNoY(this.ownerActor.FixTransform.get_position(), this.owner.AITarget.Actor.FixTransform.get_position()) - XUtility.GetHitRadius(this.owner.AITarget.Actor.FixTransform) <= range1);
                break;

            case ComparisonOperator.LessThan:
                flag = (XUtility.DistanceNoY(this.ownerActor.FixTransform.get_position(), this.owner.AITarget.Actor.FixTransform.get_position()) - XUtility.GetHitRadius(this.owner.AITarget.Actor.FixTransform) < range1);
                break;
            }
            if (comparisonOperator2 == ComparisonOperator.None)
            {
                return(flag);
            }
            bool flag2 = false;

            switch (comparisonOperator2)
            {
            case ComparisonOperator.GreaterThan:
                flag2 = (XUtility.DistanceNoY(this.ownerActor.FixTransform.get_position(), this.owner.AITarget.Actor.FixTransform.get_position()) - XUtility.GetHitRadius(this.owner.AITarget.Actor.FixTransform) > range2);
                break;

            case ComparisonOperator.GreatThanOrEqual:
                flag2 = (XUtility.DistanceNoY(this.ownerActor.FixTransform.get_position(), this.owner.AITarget.Actor.FixTransform.get_position()) - XUtility.GetHitRadius(this.owner.AITarget.Actor.FixTransform) >= range2);
                break;

            case ComparisonOperator.Equal:
                flag2 = (XUtility.DistanceNoY(this.ownerActor.FixTransform.get_position(), this.owner.AITarget.Actor.FixTransform.get_position()) - XUtility.GetHitRadius(this.owner.AITarget.Actor.FixTransform) == range2);
                break;

            case ComparisonOperator.LessThanOrEqual:
                flag2 = (XUtility.DistanceNoY(this.ownerActor.FixTransform.get_position(), this.owner.AITarget.Actor.FixTransform.get_position()) - XUtility.GetHitRadius(this.owner.AITarget.Actor.FixTransform) <= range2);
                break;

            case ComparisonOperator.LessThan:
                flag2 = (XUtility.DistanceNoY(this.ownerActor.FixTransform.get_position(), this.owner.AITarget.Actor.FixTransform.get_position()) - XUtility.GetHitRadius(this.owner.AITarget.Actor.FixTransform) < range2);
                break;
            }
            if (comparisonOperator1 == ComparisonOperator.None)
            {
                return(flag2);
            }
            if (logicalOperator != LogicalOperator.And)
            {
                return(logicalOperator == LogicalOperator.Or && (flag || flag2));
            }
            return(flag && flag2);
        }
        public override void ClientBeginAssault(int skillID, EntityParent assaultTarget)
        {
            if (!this.ownerActor)
            {
                return;
            }
            if (assaultTarget == null)
            {
                return;
            }
            if (!assaultTarget.Actor)
            {
                return;
            }
            this.owner.IsAssault = true;
            this.assaultSkillID  = skillID;
            Vector3 endPosition = this.ownerActor.FixTransform.get_position() + (assaultTarget.Actor.FixTransform.get_position() - this.ownerActor.FixTransform.get_position()).get_normalized() * (XUtility.DistanceNoY(assaultTarget.Actor.FixTransform.get_position(), this.ownerActor.FixTransform.get_position()) - XUtility.GetHitRadius(assaultTarget.Actor.FixTransform.get_transform()));

            this.ownerActor.TurnToPos(assaultTarget.Actor.FixTransform.get_position());
            (this.ownerActor as ActorPlayer).ClientAssault(assaultTarget.ID, this.assaultSkillID, endPosition);
        }
        public override bool ClientCastSkillByID(int skillID)
        {
            if (this.owner.IsClientDominate)
            {
                Skill skill = DataReader <Skill> .Get(skillID);

                if (skill.rush > 0)
                {
                    this.owner.GetSkillManager().SetTargetBySkillID(skillID, TargetRangeType.SkillRange, (float)skill.rush);
                }
                else
                {
                    this.owner.GetSkillManager().SetTargetBySkillID(skillID, TargetRangeType.SkillRange, 0f);
                }
                if (skill.rush > 0 && this.owner.AITarget != null && this.owner.AITarget.Actor)
                {
                    float num = XUtility.DistanceNoY(this.ownerActor.FixTransform.get_position(), this.owner.AITarget.Actor.FixTransform.get_position()) - (float)skill.reach.get_Item(0) * 0.01f - XUtility.GetHitRadius(this.owner.AITarget.Actor.FixTransform);
                    if (!this.owner.IsStatic && !this.owner.IsDizzy && !this.owner.IsWeak && !this.owner.IsFixed && !this.owner.IsAssault && !this.owner.IsHitMoving && num <= (float)skill.rush * 0.01f && num > 0f && this.CheckClientHandleSkillByID(skillID))
                    {
                        this.ClientBeginAssault(skillID, this.owner.AITarget);
                        return(false);
                    }
                }
                return(base.ClientCastSkillByID(skillID));
            }
            return(base.ClientCastSkillByID(skillID));
        }
Beispiel #9
0
        protected List <ActorModel> CheckCandidatesByEffectShape(List <ActorModel> candidates, Actor casterActor, XPoint basePoint, Effect effectData)
        {
            List <ActorModel> list = new List <ActorModel>();

            if (casterActor == null)
            {
                return(list);
            }
            if (basePoint == null)
            {
                return(list);
            }
            GraghMessage graghMessage  = null;
            GraghMessage graghMessage2 = null;
            bool         flag          = true;
            XPoint       xPoint        = basePoint.ApplyOffset(effectData.offset).ApplyOffset(effectData.offset2).ApplyForwardFix(effectData.forwardFixAngle);

            if (effectData.range.get_Count() > 2)
            {
                int num = Mathf.Abs(effectData.range.get_Item(0));
                if (num != 1)
                {
                    if (num == 2)
                    {
                        graghMessage = new GraghMessage(new XPoint
                        {
                            position = xPoint.position,
                            rotation = xPoint.rotation
                        }, GraghShape.Rect, 0f, 0f, (float)effectData.range.get_Item(1) * 0.01f, (float)effectData.range.get_Item(2) * 0.01f);
                    }
                }
                else
                {
                    graghMessage = new GraghMessage(new XPoint
                    {
                        position = xPoint.position,
                        rotation = xPoint.rotation
                    }, GraghShape.Sector, (float)effectData.range.get_Item(1) * 0.01f, (float)effectData.range.get_Item(2), 0f, 0f);
                }
            }
            if (effectData.range2.get_Count() > 2)
            {
                if (effectData.range2.get_Item(0) < 0)
                {
                    flag = false;
                }
                int num = Mathf.Abs(effectData.range2.get_Item(0));
                if (num != 1)
                {
                    if (num == 2)
                    {
                        graghMessage2 = new GraghMessage(new XPoint
                        {
                            position = xPoint.position,
                            rotation = xPoint.rotation
                        }, GraghShape.Rect, 0f, 0f, (float)effectData.range2.get_Item(1) * 0.01f, (float)effectData.range2.get_Item(2) * 0.01f);
                    }
                }
                else
                {
                    graghMessage2 = new GraghMessage(new XPoint
                    {
                        position = xPoint.position,
                        rotation = xPoint.rotation
                    }, GraghShape.Sector, (float)effectData.range2.get_Item(1) * 0.01f, (float)effectData.range2.get_Item(2), 0f, 0f);
                }
            }
            if (graghMessage != null)
            {
                graghMessage.DrawShape(Color.get_red());
            }
            if (graghMessage2 != null)
            {
                if (flag)
                {
                    graghMessage2.DrawShape(Color.get_red());
                }
                else
                {
                    graghMessage2.DrawShape(Color.get_blue());
                }
            }
            for (int i = 0; i < candidates.get_Count(); i++)
            {
                if (!(candidates.get_Item(i) == null))
                {
                    bool  flag2     = false;
                    float hitRadius = XUtility.GetHitRadius(candidates.get_Item(i).get_transform());
                    bool  flag3     = graghMessage != null && graghMessage.InArea(candidates.get_Item(i).get_transform().get_position(), hitRadius);
                    bool  flag4     = graghMessage2 != null && graghMessage2.InArea(candidates.get_Item(i).get_transform().get_position(), hitRadius);
                    if (flag)
                    {
                        if (flag3 || flag4)
                        {
                            flag2 = true;
                        }
                    }
                    else if (flag3 && !flag4)
                    {
                        flag2 = true;
                    }
                    if (flag2)
                    {
                        list.Add(candidates.get_Item(i));
                    }
                }
            }
            return(list);
        }
        protected List <Vector3> GetAccuratePointByWarningMessage(WarningMessage message)
        {
            List <Vector3> list       = new List <Vector3>();
            GraghShape     graghShape = message.graghShape;

            if (graghShape != GraghShape.Sector)
            {
                if (graghShape == GraghShape.Rect)
                {
                    list.AddRange(this.GetAccuratePointByRectangle(this.ownerActor.FixTransform.get_position(), message.fixBasePoint, message.width, message.height, XUtility.GetHitRadius(this.ownerActor.FixTransform), message.casterRadius));
                }
            }
            else if (message.IsCircle)
            {
                list.AddRange(this.GetAccuratePointByCircle(this.ownerActor.FixTransform.get_position(), message.fixBasePoint, message.range, XUtility.GetHitRadius(this.ownerActor.FixTransform), message.casterRadius));
            }
            else
            {
                list.AddRange(this.GetAccuratePointBySector(this.ownerActor.FixTransform.get_position(), message.fixBasePoint, message.range, message.angle, XUtility.GetHitRadius(this.ownerActor.FixTransform), message.casterRadius));
            }
            return(list);
        }
Beispiel #11
0
    protected Hashtable CheckCandidatesByEffectShape(List <EntityParent> candidates, List <ContainerGear> containers, Actor casterActor, XPoint basePoint, Effect effectData)
    {
        Hashtable hashtable = new Hashtable();

        if (casterActor == null)
        {
            return(hashtable);
        }
        if (basePoint == null)
        {
            return(hashtable);
        }
        List <EntityParent>  list          = new List <EntityParent>();
        List <ContainerGear> list2         = new List <ContainerGear>();
        GraghMessage         graghMessage  = null;
        GraghMessage         graghMessage2 = null;
        bool   flag   = true;
        XPoint xPoint = basePoint.ApplyOffset(effectData.offset).ApplyOffset(effectData.offset2).ApplyForwardFix(effectData.forwardFixAngle);

        if (effectData.range.get_Count() > 2)
        {
            int num = Mathf.Abs(effectData.range.get_Item(0));
            if (num != 1)
            {
                if (num == 2)
                {
                    graghMessage = new GraghMessage(new XPoint
                    {
                        position = xPoint.position,
                        rotation = xPoint.rotation
                    }, GraghShape.Rect, 0f, 0f, (float)effectData.range.get_Item(1) * 0.01f, (float)effectData.range.get_Item(2) * 0.01f);
                }
            }
            else
            {
                graghMessage = new GraghMessage(new XPoint
                {
                    position = xPoint.position,
                    rotation = xPoint.rotation
                }, GraghShape.Sector, (float)effectData.range.get_Item(1) * 0.01f, (float)effectData.range.get_Item(2), 0f, 0f);
            }
        }
        if (effectData.range2.get_Count() > 2)
        {
            if (effectData.range2.get_Item(0) < 0)
            {
                flag = false;
            }
            int num = Mathf.Abs(effectData.range2.get_Item(0));
            if (num != 1)
            {
                if (num == 2)
                {
                    graghMessage2 = new GraghMessage(new XPoint
                    {
                        position = xPoint.position,
                        rotation = xPoint.rotation
                    }, GraghShape.Rect, 0f, 0f, (float)effectData.range2.get_Item(1) * 0.01f, (float)effectData.range2.get_Item(2) * 0.01f);
                }
            }
            else
            {
                graghMessage2 = new GraghMessage(new XPoint
                {
                    position = xPoint.position,
                    rotation = xPoint.rotation
                }, GraghShape.Sector, (float)effectData.range2.get_Item(1) * 0.01f, (float)effectData.range2.get_Item(2), 0f, 0f);
            }
        }
        if (graghMessage != null)
        {
            graghMessage.DrawShape(Color.get_red());
        }
        if (graghMessage2 != null)
        {
            if (flag)
            {
                graghMessage2.DrawShape(Color.get_red());
            }
            else
            {
                graghMessage2.DrawShape(Color.get_blue());
            }
        }
        for (int i = 0; i < candidates.get_Count(); i++)
        {
            if (candidates.get_Item(i) != null)
            {
                if (candidates.get_Item(i).Actor)
                {
                    bool  flag2     = false;
                    float hitRadius = XUtility.GetHitRadius(candidates.get_Item(i).Actor.FixTransform);
                    bool  flag3     = graghMessage != null && graghMessage.InArea(candidates.get_Item(i).Actor.FixTransform.get_position(), hitRadius);
                    bool  flag4     = graghMessage2 != null && graghMessage2.InArea(candidates.get_Item(i).Actor.FixTransform.get_position(), hitRadius);
                    if (flag)
                    {
                        if (flag3 || flag4)
                        {
                            flag2 = true;
                        }
                    }
                    else if (flag3 && !flag4)
                    {
                        flag2 = true;
                    }
                    if (flag2)
                    {
                        list.Add(candidates.get_Item(i));
                    }
                }
            }
        }
        for (int j = 0; j < containers.get_Count(); j++)
        {
            if (containers.get_Item(j))
            {
                if (containers.get_Item(j).get_gameObject())
                {
                    bool flag5 = false;
                    bool flag6 = graghMessage != null && graghMessage.InArea(containers.get_Item(j).get_transform().get_position(), containers.get_Item(j).hitRange);
                    bool flag7 = graghMessage2 != null && graghMessage2.InArea(containers.get_Item(j).get_transform().get_position(), containers.get_Item(j).hitRange);
                    if (flag)
                    {
                        if (flag6 || flag7)
                        {
                            flag5 = true;
                        }
                    }
                    else if (flag6 && !flag7)
                    {
                        flag5 = true;
                    }
                    if (flag5)
                    {
                        list2.Add(containers.get_Item(j));
                    }
                }
            }
        }
        hashtable.Add("Entity", list);
        hashtable.Add("Container", list2);
        return(hashtable);
    }
Beispiel #12
0
    protected override void UpdateHpChangeInfluence(HPChangeMessage data)
    {
        switch (data.hpChangeType)
        {
        case HPChangeMessage.HPChangeType.Normal:
        case HPChangeMessage.HPChangeType.Critical:
        case HPChangeMessage.HPChangeType.Parry:
        case HPChangeMessage.HPChangeType.CriticalAndParry:
            if (base.IsPlayerMate)
            {
                if (!this.IsEntitySelfType && DataReader <JJiaoSeSheZhi> .Get(this.TypeID).hitTips > 0)
                {
                    EventDispatcher.Broadcast <int, LiveTextMessage>(BattleUIEvent.LiveText, 1, new LiveTextMessage
                    {
                        contentID = DataReader <JJiaoSeSheZhi> .Get(this.TypeID).hitTips,
                        showTime  = 2000,
                        name      = this.Name
                    });
                }
            }
            else if (data.modeType == HPChangeMessage.ModeType.MonsterBySelf && base.Actor)
            {
                EventDispatcher.Broadcast <int, Transform>(CameraEvent.PlayerGetHit, this.TypeID, base.Actor.FixTransform);
            }
            break;

        case HPChangeMessage.HPChangeType.Miss:
            if (base.IsPlayerMate && !this.IsEntitySelfType && DataReader <JJiaoSeSheZhi> .Get(this.TypeID).hitTips > 0)
            {
                EventDispatcher.Broadcast <int, LiveTextMessage>(BattleUIEvent.LiveText, 1, new LiveTextMessage
                {
                    contentID = DataReader <JJiaoSeSheZhi> .Get(this.TypeID).hitTips,
                    showTime  = 2000,
                    name      = this.Name
                });
            }
            break;

        case HPChangeMessage.HPChangeType.KillRecover:
            if (base.Actor && !this.IsEntitySelfType)
            {
                int   templateId   = (int)float.Parse(DataReader <GlobalParams> .Get("killReply").value);
                float speed        = float.Parse(DataReader <GlobalParams> .Get("killReplySpeed").value) * 0.01f;
                float lessDistance = float.Parse(DataReader <GlobalParams> .Get("killReplyHeight_y").value) * 0.01f;
                int   getFxID      = (int)float.Parse(DataReader <GlobalParams> .Get("killReply_get").value);
                FXManager.Instance.PlayFXOfFollow(templateId, data.casterPosition, base.Actor.FixTransform, speed, lessDistance, XUtility.GetHitRadius(base.Actor.FixTransform), delegate
                {
                    if (!this.Actor)
                    {
                        return;
                    }
                    FXManager.Instance.PlayFX(getFxID, this.Actor.FixTransform, Vector3.get_zero(), Quaternion.get_identity(), 1f, 1f, 0, false, 0, null, null, 1f, FXClassification.Normal);
                    WaveBloodManager.Instance.ThrowBlood(data);
                }, FXClassification.Normal);
            }
            break;
        }
        base.UpdateHpChangeInfluence(data);
    }
Beispiel #13
0
        public override bool ClientCastSkillByID(int skillID)
        {
            if (!GlobalBattleNetwork.Instance.IsServerEnable)
            {
                if (this.IsOpenLog)
                {
                    Debug.LogError("return 4");
                }
                return(false);
            }
            Skill skill = DataReader <Skill> .Get(skillID);

            if (skill.rush > 0)
            {
                this.owner.GetSkillManager().SetTargetBySkillID(skillID, TargetRangeType.SkillRange, (float)skill.rush);
            }
            else
            {
                this.owner.GetSkillManager().SetTargetBySkillID(skillID, TargetRangeType.SkillRange, 0f);
            }
            if (skill.rush > 0 && this.owner.AITarget != null && this.owner.AITarget.Actor)
            {
                float num = XUtility.DistanceNoY(this.ownerActor.FixTransform.get_position(), this.owner.AITarget.Actor.FixTransform.get_position()) - (float)skill.reach.get_Item(0) * 0.01f - XUtility.GetHitRadius(this.owner.AITarget.Actor.FixTransform);
                if (!this.owner.IsStatic && !this.owner.IsDizzy && !this.owner.IsWeak && !this.owner.IsFixed && !this.owner.IsAssault && !this.owner.IsHitMoving && num <= (float)skill.rush * 0.01f && num > 0f && (!ActionStatusName.IsSkillAction(this.ownerActor.CurActionStatus) || this.ownerActor.IsUnderTermination) && this.ownerActor.CanChangeActionTo("rush", true, 0, false) && this.CheckClientHandleSkillByID(skillID))
                {
                    this.ClientBeginAssault(skillID, this.owner.AITarget);
                    return(false);
                }
            }
            return(base.ClientCastSkillByID(skillID));
        }