public ImpactInfo(TableConfig.Skill cfg)
 {
     if (null != cfg) {
         ImpactId = cfg.id;
     }
     ConfigData = cfg;
 }
Exemple #2
0
        internal ImpactInfo TrackImpact(TableConfig.Skill cfg, int seq, int curObjId, int srcObjId, int targetId, string emitBone, int emitImpact, Vector3 offset, Dictionary <string, object> args)
        {
            EntityInfo targetObj = m_Scene.EntityManager.GetEntityInfo(targetId);
            EntityInfo srcObj    = m_Scene.EntityManager.GetEntityInfo(srcObjId);

            if (null != targetObj && !targetObj.IsDead())
            {
                if (null != cfg)
                {
                    ImpactInfo impactInfo = null;
                    if (emitImpact <= 0 || emitImpact >= SkillInstance.c_FirstInnerEmitSkillId)
                    {
                        impactInfo = new ImpactInfo(m_Scene.SkillSystem.PredefinedSkill.EmitSkillCfg);
                    }
                    else
                    {
                        impactInfo = new ImpactInfo(emitImpact);
                    }
                    if (TryInitImpactInfo(impactInfo, cfg, seq, curObjId, srcObjId, args))
                    {
                        if (null != srcObj)
                        {
                            Vector3 pos = srcObj.GetMovementStateInfo().GetPosition3D();
                            pos.Y += srcObj.GetRadius();
                            impactInfo.SenderPosition = pos;
                        }
                        targetObj.GetSkillStateInfo().AddImpact(impactInfo);
                        m_Scene.SkillSystem.StartSkill(targetId, impactInfo.ConfigData, impactInfo.Seq, args);
                        return(impactInfo);
                    }
                }
            }
            return(null);
        }
 public SkillInfo(TableConfig.Skill cfg)
 {
     if (null != cfg) {
         SkillId = cfg.id;
     }
     ConfigData = cfg;
 }
Exemple #4
0
        internal GfxSkillSenderInfo BuildSkillInfo(int objId, TableConfig.Skill configData, int seq, Scene scene)
        {
            GfxSkillSenderInfo ret    = null;
            EntityInfo         entity = m_Scene.EntityManager.GetEntityInfo(objId);

            if (null != entity && null != configData)
            {
                int targetId = 0;
                if (configData.type == (int)SkillOrImpactType.Skill)
                {
                    targetId = entity.GetAiStateInfo().Target;
                }
                else
                {
                    ImpactInfo impactInfo = entity.GetSkillStateInfo().GetImpactInfoBySeq(seq);
                    if (null != impactInfo)
                    {
                        targetId = impactInfo.ImpactSenderId;
                    }
                }
                EntityInfo targetObj = m_Scene.EntityManager.GetEntityInfo(targetId);
                if (null != targetObj)
                {
                    ret = new GfxSkillSenderInfo(configData, seq, objId, entity, targetId, targetObj, scene);
                }
                else
                {
                    ret = new GfxSkillSenderInfo(configData, seq, objId, entity, scene);
                }
            }
            return(ret);
        }
Exemple #5
0
        public GfxSkillSenderInfo BuildSkillInfo(int objId, TableConfig.Skill configData, int seq)
        {
            GfxSkillSenderInfo ret  = null;
            EntityViewModel    view = GetEntityViewById(objId);

            if (null != view && null != view.Actor && null != view.Entity && null != configData)
            {
                EntityInfo entity   = view.Entity;
                int        targetId = 0;
                if (configData.type == (int)SkillOrImpactType.Skill)
                {
                    targetId = entity.GetAiStateInfo().Target;
                }
                else
                {
                    ImpactInfo impactInfo = entity.GetSkillStateInfo().GetImpactInfoBySeq(seq);
                    if (null != impactInfo)
                    {
                        targetId = impactInfo.ImpactSenderId;
                    }
                }
                UnityEngine.GameObject targetObj = GetGameObject(targetId);
                if (null != targetObj)
                {
                    ret = new GfxSkillSenderInfo(configData, seq, objId, view.Actor, targetId, targetObj);
                }
                else
                {
                    ret = new GfxSkillSenderInfo(configData, seq, objId, view.Actor);
                }
            }
            return(ret);
        }
 public GfxSkillSenderInfo(TableConfig.Skill configData, int seq, int actorId, GameObject gfxObj)
 {
     m_Seq = seq;
     m_ConfigData = configData;
     m_ActorId = actorId;
     m_GfxObj = gfxObj;
 }
 public void PreloadSkillInstance(TableConfig.Skill skillData)
 {
     if (null != skillData)
     {
         SkillInstanceInfo info = NewSkillInstanceImpl(skillData.id, skillData);
         if (null != info)
         {
             RecycleSkillInstance(info);
             if (null != info.m_SkillInstance.EmitSkillInstances)
             {
                 foreach (var pair in info.m_SkillInstance.EmitSkillInstances)
                 {
                     SkillInstanceInfo iinfo = NewInnerSkillInstanceImpl(PredefinedSkill.c_EmitSkillId, pair.Value);
                     RecycleSkillInstance(iinfo);
                 }
             }
             if (null != info.m_SkillInstance.HitSkillInstances)
             {
                 foreach (var pair in info.m_SkillInstance.HitSkillInstances)
                 {
                     SkillInstanceInfo iinfo = NewInnerSkillInstanceImpl(PredefinedSkill.c_HitSkillId, pair.Value);
                     RecycleSkillInstance(iinfo);
                 }
             }
         }
     }
 }
 public GfxSkillSenderInfo(TableConfig.Skill configData, int seq, int actorId, GameObject gfxObj)
 {
     m_Seq        = seq;
     m_ConfigData = configData;
     m_ActorId    = actorId;
     m_GfxObj     = gfxObj;
 }
Exemple #9
0
        public int SelectTargetForSkill(string type, int actorId, TableConfig.Skill cfg, int seq, HashSet <int> history)
        {
            if (string.IsNullOrEmpty(type))
            {
                return(0);
            }
            EntityViewModel view = GetEntityViewById(actorId);

            if (null != view && null != view.Entity)
            {
                EntityInfo entity = view.Entity;
                int        campId = entity.GetCampId();
                if (type.CompareTo("minhp") == 0)
                {
                    int   targetId            = 0;
                    float minhp               = float.MaxValue;
                    ScriptRuntime.Vector3 pos = entity.GetMovementStateInfo().GetPosition3D();
                    PluginFramework.Instance.KdTree.QueryWithAction(pos, cfg.skillData.distance, (float distSqr, KdTreeObject kdObj) => {
                        if (minhp > kdObj.Object.Hp && EntityInfo.GetRelation(campId, kdObj.Object.GetCampId()) == CharacterRelation.RELATION_ENEMY)
                        {
                            int objId = kdObj.Object.GetId();
                            if (!history.Contains(objId))
                            {
                                minhp    = kdObj.Object.Hp;
                                targetId = objId;
                            }
                        }
                    });
                    return(targetId);
                }
                else if (type.CompareTo("maxdist") == 0)
                {
                    int   targetId            = 0;
                    float maxDistSqr          = 0;
                    ScriptRuntime.Vector3 pos = entity.GetMovementStateInfo().GetPosition3D();
                    PluginFramework.Instance.KdTree.QueryWithAction(pos, cfg.skillData.distance, (float distSqr, KdTreeObject kdObj) => {
                        if (maxDistSqr < distSqr && EntityInfo.GetRelation(campId, kdObj.Object.GetCampId()) == CharacterRelation.RELATION_ENEMY)
                        {
                            int objId = kdObj.Object.GetId();
                            if (!history.Contains(objId))
                            {
                                maxDistSqr = distSqr;
                                targetId   = objId;
                            }
                        }
                    });
                    return(targetId);
                }
                else if (type.CompareTo("randenemy") == 0)
                {
                    return(GetRandEnemyId(campId, history));
                }
                else if (type.CompareTo("randfriend") == 0)
                {
                    return(GetRandFriendId(campId, history));
                }
            }
            return(0);
        }
 public ImpactInfo(TableConfig.Skill cfg)
 {
     if (null != cfg)
     {
         ImpactId = cfg.id;
     }
     ConfigData = cfg;
 }
Exemple #11
0
 public ImpactInfo(int impactId)
 {
     ImpactId   = impactId;
     ConfigData = TableConfig.SkillProvider.Instance.GetSkill(ImpactId);
     DamageData = new TableConfig.SkillDamageData();
     DamageData.Init();
     SenderProperty = new CharacterProperty();
 }
 public void PreloadSkillInstance(int skillId)
 {
     TableConfig.Skill skillData = TableConfig.SkillProvider.Instance.GetSkill(skillId);
     if (null != skillData)
     {
         PreloadSkillInstance(skillData);
     }
 }
 internal GfxSkillSenderInfo(TableConfig.Skill configData, int seq, int actorId, EntityInfo gfxObj, Scene scene)
 {
     m_Seq = seq;
     m_ConfigData = configData;
     m_ActorId = actorId;
     m_GfxObj = gfxObj;
     m_Scene = scene;
 }
Exemple #14
0
 public SkillInfo(TableConfig.Skill cfg)
 {
     if (null != cfg)
     {
         SkillId = cfg.id;
     }
     ConfigData = cfg;
 }
 internal GfxSkillSenderInfo(TableConfig.Skill configData, int seq, int actorId, EntityInfo gfxObj, Scene scene)
 {
     m_Seq        = seq;
     m_ConfigData = configData;
     m_ActorId    = actorId;
     m_GfxObj     = gfxObj;
     m_Scene      = scene;
 }
Exemple #16
0
        internal int SelectTargetForSkill(string type, int objId, TableConfig.Skill cfg, int seq, HashSet <int> history)
        {
            if (string.IsNullOrEmpty(type))
            {
                return(0);
            }
            EntityInfo entity = m_Scene.EntityManager.GetEntityInfo(objId);

            if (null != entity)
            {
                int campId = entity.GetCampId();
                if (type.CompareTo("minhp") == 0)
                {
                    int   targetId            = 0;
                    float minhp               = float.MaxValue;
                    ScriptRuntime.Vector3 pos = entity.GetMovementStateInfo().GetPosition3D();
                    m_Scene.KdTree.Query(pos, cfg.distance, (float distSqr, KdTreeObject kdObj) => {
                        if (minhp > kdObj.Object.Hp && EntityInfo.GetRelation(campId, kdObj.Object.GetCampId()) == CharacterRelation.RELATION_ENEMY)
                        {
                            int id = kdObj.Object.GetId();
                            if (!history.Contains(id))
                            {
                                minhp    = kdObj.Object.Hp;
                                targetId = id;
                            }
                        }
                    });
                    return(targetId);
                }
                else if (type.CompareTo("maxdist") == 0)
                {
                    int   targetId            = 0;
                    float maxDistSqr          = 0;
                    ScriptRuntime.Vector3 pos = entity.GetMovementStateInfo().GetPosition3D();
                    m_Scene.KdTree.Query(pos, cfg.distance, (float distSqr, KdTreeObject kdObj) => {
                        if (maxDistSqr < distSqr && EntityInfo.GetRelation(campId, kdObj.Object.GetCampId()) == CharacterRelation.RELATION_ENEMY)
                        {
                            int id = kdObj.Object.GetId();
                            if (!history.Contains(id))
                            {
                                maxDistSqr = distSqr;
                                targetId   = id;
                            }
                        }
                    });
                    return(targetId);
                }
                else if (type.CompareTo("randenemy") == 0)
                {
                    return(GetRandEnemyId(campId, history));
                }
                else if (type.CompareTo("randfriend") == 0)
                {
                    return(GetRandFriendId(campId, history));
                }
            }
            return(0);
        }
        private static void AddPredefinedSkill(TableConfig.Skill cfg, int id)
        {
            cfg.id      = cfg.dslSkillId = id;
            cfg.dslFile = "Skill/predefined.dsl";
            //添加到技能表数据中
            var skills = TableConfig.SkillProvider.Instance.SkillMgr.GetData();

            skills[cfg.id] = cfg;
        }
Exemple #18
0
        public void RemoveShield(int objId, TableConfig.Skill cfg, int seq)
        {
            EntityInfo entity = m_Scene.EntityManager.GetEntityInfo(objId);

            if (null != entity)
            {
                entity.Shield = 0;
            }
        }
Exemple #19
0
        public void RemoveShield(int objId, TableConfig.Skill cfg, int seq)
        {
            EntityViewModel view = GetEntityViewById(objId);

            if (null != view && null != view.Entity)
            {
                EntityInfo entity = view.Entity;
                entity.Shield = 0;
            }
        }
Exemple #20
0
        internal ImpactInfo SendImpact(TableConfig.Skill cfg, int seq, int curObjId, int srcObjId, int targetId, int impactId, Dictionary <string, object> args)
        {
            EntityInfo targetObj = m_Scene.EntityManager.GetEntityInfo(targetId);

            if (null != targetObj)
            {
                if (null != cfg)
                {
                    Quaternion hitEffectRotation = Quaternion.Identity;
                    EntityInfo srcObj            = m_Scene.EntityManager.GetEntityInfo(srcObjId);
                    var        addArgs           = new Dictionary <string, object> {
                        { "hitEffectRotation", hitEffectRotation }
                    };
                    ImpactInfo impactInfo = null;
                    if (impactId <= 0 || impactId >= SkillInstance.c_FirstInnerHitSkillId)
                    {
                        impactInfo = new ImpactInfo(m_Scene.SkillSystem.PredefinedSkill.HitSkillCfg);
                        impactId   = PredefinedSkill.c_HitSkillId;
                    }
                    else
                    {
                        impactInfo = new ImpactInfo(impactId);
                    }
                    if (null != impactInfo.ConfigData)
                    {
                        if (TryInitImpactInfo(impactInfo, cfg, seq, curObjId, srcObjId, args))
                        {
                            if (impactInfo.ConfigData.type == (int)SkillOrImpactType.Buff)
                            {
                                ImpactInfo oldImpactInfo = targetObj.GetSkillStateInfo().FindImpactInfoById(impactInfo.ImpactId);
                                if (null != oldImpactInfo)
                                {
                                    oldImpactInfo.DurationTime += impactInfo.DurationTime;
                                    return(oldImpactInfo);
                                }
                            }
                            targetObj.GetSkillStateInfo().AddImpact(impactInfo);
                            SkillInfo skillInfo = targetObj.GetSkillStateInfo().GetCurSkillInfo();
                            if (null != skillInfo && (cfg.isInterrupt || impactInfo.ConfigData.isInterrupt))
                            {
                                m_Scene.SkillSystem.StopSkill(targetId, skillInfo.SkillId, 0, true);
                            }
                            m_Scene.SkillSystem.StartSkill(targetId, impactInfo.ConfigData, impactInfo.Seq, args, addArgs);
                            return(impactInfo);
                        }
                    }
                    else
                    {
                        LogSystem.Error("impact {0} config can't found !", impactInfo.ImpactId);
                    }
                }
            }
            return(null);
        }
Exemple #21
0
 public ImpactInfo(TableConfig.Skill cfg)
 {
     if (null != cfg)
     {
         ImpactId = cfg.id;
     }
     ConfigData = cfg;
     DamageData = new TableConfig.SkillDamageData();
     DamageData.Init();
     SenderProperty = new CharacterProperty();
 }
Exemple #22
0
        public static int GetSkillImpactId(Dictionary <string, object> variables, TableConfig.Skill cfg)
        {
            int    impactId = 0;
            object idObj;

            if (variables.TryGetValue("impact", out idObj))
            {
                impactId = (int)idObj;
            }
            return(impactId);
        }
        private static void AddPredefinedSkill(TableConfig.Skill cfg, int id)
        {
            cfg.id         = id;
            cfg.dslFile    = "Skill/predefined.dsl";
            cfg.type       = (int)SkillOrImpactType.Impact;
            cfg.impactData = new TableConfig.ImpactData();
            //添加到技能表数据中
            var skills = TableConfig.SkillProvider.Instance.SkillMgr.GetData();

            skills[cfg.id] = cfg;
        }
Exemple #24
0
        internal void CancelIfImpact(int actorId, TableConfig.Skill cfg, int seq)
        {
            EntityInfo entity = m_Scene.EntityManager.GetEntityInfo(actorId);

            if (null != entity)
            {
                if (cfg.type != (int)SkillOrImpactType.Skill)
                {
                    entity.GetSkillStateInfo().RemoveImpact(seq);
                }
            }
        }
Exemple #25
0
        public void CancelIfImpact(int actorId, TableConfig.Skill cfg, int seq)
        {
            EntityViewModel view = GetEntityViewById(actorId);

            if (null != view && null != view.Entity)
            {
                if (cfg.type != (int)SkillOrImpactType.Skill)
                {
                    view.Entity.GetSkillStateInfo().RemoveImpact(seq);
                }
            }
        }
        public void CancelIfImpact(UnityEngine.GameObject obj, TableConfig.Skill cfg, int seq)
        {
            EntityViewModel view = GetEntityView(obj);

            if (null != view && null != view.Entity)
            {
                if (cfg.type != (int)SkillOrImpactType.Skill)
                {
                    view.Entity.GetSkillStateInfo().RemoveImpact(seq);
                }
            }
        }
 public static void RefixAttrBySkill(EntityInfo obj, TableConfig.Skill cfg)
 {
     if (cfg.attrValues.Count > 0)
     {
         foreach (var pair in cfg.attrValues)
         {
             if (pair.Key != (int)CharacterPropertyEnum.x2012_护盾值)  //护盾的添加与删除放在触发器里处理了
             {
                 obj.ActualProperty.IncreaseInt((CharacterPropertyEnum)pair.Key, pair.Value);
             }
         }
     }
 }
Exemple #28
0
        public void AddShield(int objId, TableConfig.Skill cfg, int seq)
        {
            EntityInfo entity = m_Scene.EntityManager.GetEntityInfo(objId);

            if (null != entity)
            {
                int v;
                if (cfg.attrValues.TryGetValue((int)CharacterPropertyEnum.x2012_护盾值, out v))
                {
                    entity.Shield += v;
                }
            }
        }
Exemple #29
0
        public void AddShield(int objId, TableConfig.Skill cfg, int seq)
        {
            EntityViewModel view = GetEntityViewById(objId);

            if (null != view && null != view.Entity)
            {
                EntityInfo entity = view.Entity;
                int        v;
                if (cfg.attrValues.TryGetValue((int)CharacterPropertyEnum.x2012_护盾值, out v))
                {
                    entity.Shield += v;
                }
            }
        }
Exemple #30
0
        public static bool GetSkillStartPosition(Vector3 srcPos, TableConfig.Skill cfg, SkillInstance instance, int srcId, int targetId, ref Vector3 targetPos)
        {
            ScriptRuntime.Vector3 pos;
            object posVal;

            if (instance.Variables.TryGetValue("skill_targetpos", out posVal))
            {
                pos       = (ScriptRuntime.Vector3)posVal;
                targetPos = new Vector3(pos.X, pos.Y, pos.Z);
                return(true);
            }
            if (instance.Variables.TryGetValue("skill_homepos", out posVal))
            {
                pos       = (ScriptRuntime.Vector3)posVal;
                targetPos = new Vector3(pos.X, pos.Y, pos.Z);
                return(true);
            }
            float dist = cfg.skillData.distance;

            if (dist <= Geometry.c_FloatPrecision)
            {
                object val;
                if (instance.Variables.TryGetValue("skill_distance", out val))
                {
                    dist = (float)Convert.ChangeType(val, typeof(float));
                }
                else
                {
                    dist = EntityController.Instance.CalcSkillDistance(dist, srcId, targetId);
                }
            }
            else
            {
                dist = EntityController.Instance.CalcSkillDistance(dist, srcId, targetId);
            }
            if (dist <= Geometry.c_FloatPrecision)
            {
                dist = 0.1f;
            }
            float dir;

            if (EntityController.Instance.CalcPosAndDir(targetId, out pos, out dir))
            {
                pos      += Geometry.GetRotate(new ScriptRuntime.Vector3(0, 0, dist), dir);
                targetPos = new Vector3(pos.X, pos.Y, pos.Z);
                return(true);
            }
            return(false);
        }
Exemple #31
0
        private bool TryInitImpactInfo(ImpactInfo impactInfo, TableConfig.Skill cfg, int seq, int curObjId, int srcObjId, Dictionary <string, object> args)
        {
            bool            ret     = false;
            EntityInfo      srcNpc  = null;
            EntityViewModel srcView = GetEntityViewById(srcObjId);

            if (null != srcView && null != srcView.Entity)
            {
                srcNpc = srcView.Entity;
            }
            impactInfo.StartTime      = TimeUtility.GetLocalMilliseconds();
            impactInfo.ImpactSenderId = srcObjId;
            if (cfg.type == (int)SkillOrImpactType.Skill)
            {
                impactInfo.SenderPosition = null != srcNpc?srcNpc.GetMovementStateInfo().GetPosition3D() : ScriptRuntime.Vector3.Zero;

                impactInfo.SkillId      = cfg.id;
                impactInfo.DurationTime = impactInfo.ConfigData.impactData.duration;
                impactInfo.TargetType   = cfg.targetType;
                impactInfo.DamageData.CopyFrom(cfg.damageData);
                impactInfo.DamageData.Merge(impactInfo.ConfigData.damageData);
                impactInfo.ImpactToTarget = cfg.impact;
                ret = true;
            }
            else
            {
                ImpactInfo      srcImpactInfo = null;
                EntityViewModel myView        = GetEntityViewById(curObjId);
                if (null != myView && null != myView.Entity)
                {
                    srcImpactInfo = myView.Entity.GetSkillStateInfo().GetImpactInfoBySeq(seq);
                }
                if (null != srcImpactInfo)
                {
                    //如果当前技能配置有数据则继承当前配置数据,否则继承源impact记录的数据。
                    impactInfo.SenderPosition = srcImpactInfo.SenderPosition;
                    impactInfo.SkillId        = srcImpactInfo.SkillId;
                    impactInfo.DurationTime   = srcImpactInfo.DurationTime > 0 ? srcImpactInfo.DurationTime : impactInfo.ConfigData.impactData.duration;
                    impactInfo.TargetType     = srcImpactInfo.TargetType;
                    impactInfo.DamageData.CopyFrom(srcImpactInfo.DamageData);
                    impactInfo.DamageData.Merge(impactInfo.ConfigData.damageData);
                    impactInfo.ImpactToTarget = cfg.impact != 0 ? cfg.impact : srcImpactInfo.ImpactToTarget;
                    ret = true;
                }
            }
            return(ret);
        }
Exemple #32
0
        public ImpactInfo TrackImpact(TableConfig.Skill cfg, int seq, int curObjId, int srcObjId, int targetId, string emitBone, int emitImpact, UnityEngine.Vector3 offset, bool isFinal, Dictionary <string, object> args)
        {
            EntityViewModel view    = GetEntityViewById(targetId);
            EntityViewModel srcView = GetEntityViewById(srcObjId);

            if (null != view && null != view.Entity && null != view.Actor && !view.Entity.IsDeadSkillCasting())
            {
                EntityInfo npc = view.Entity;
                if (null != cfg)
                {
                    ImpactInfo impactInfo = null;
                    if (emitImpact <= 0 || emitImpact >= SkillInstance.c_FirstInnerEmitSkillId)
                    {
                        impactInfo = new ImpactInfo(PredefinedSkill.Instance.EmitSkillCfg);
                    }
                    else
                    {
                        impactInfo = new ImpactInfo(emitImpact);
                    }
                    if (TryInitImpactInfo(impactInfo, cfg, seq, curObjId, srcObjId, args))
                    {
                        UnityEngine.GameObject srcObj = GetGameObject(srcObjId);
                        if (null != srcObj)
                        {
                            UnityEngine.Transform t = Utility.FindChildRecursive(srcObj.transform, emitBone);
                            if (null != t)
                            {
                                UnityEngine.Vector3 pos = t.TransformPoint(offset);
                                impactInfo.SenderPosition = new ScriptRuntime.Vector3(pos.x, pos.y, pos.z);
                            }
                            else
                            {
                                UnityEngine.Vector3 pos = srcObj.transform.TransformPoint(offset);
                                pos.y += npc.GetRadius();
                                impactInfo.SenderPosition = new ScriptRuntime.Vector3(pos.x, pos.y, pos.z);
                            }
                        }
                        impactInfo.DamageData.IsFinal = isFinal;
                        npc.GetSkillStateInfo().AddImpact(impactInfo);
                        GfxSkillSystem.Instance.StartSkill(targetId, impactInfo.ConfigData, impactInfo.Seq, args);
                        return(impactInfo);
                    }
                }
            }
            return(null);
        }
        public static void Calc(EntityInfo npc, TableConfig.Skill cfg)
        {
            int oldHp = npc.Hp;

            AttrCalculator.CopyBaseProperty(npc);
            AttrCalculator.RefixAttrByImpact(npc);
            if (null != cfg)
            {
                RefixAttrBySkill(npc, cfg);
            }
            Calculator.Calc(npc.SceneContext, npc.ActualProperty, null, "attr");

            if (oldHp > 0 && npc.Hp <= 0)
            {
                LogSystem.Error("hp calc to {0}", npc.Hp);
                Helper.LogCallStack();
            }
        }
Exemple #34
0
        internal static void AoeQuery(GfxSkillSenderInfo senderObj, SkillInstance instance, int senderId, int targetType, Vector3 relativeCenter, bool relativeToTarget, MyFunc <float, int, bool> callback)
        {
            Scene      scene         = senderObj.Scene;
            EntityInfo srcObj        = senderObj.GfxObj;
            EntityInfo targetObj     = senderObj.TargetGfxObj;
            int        aoeType       = 0;
            float      range         = 0;
            float      angleOrLength = 0;

            TableConfig.Skill cfg = senderObj.ConfigData;
            if (null != cfg)
            {
                aoeType       = cfg.aoeType;
                range         = cfg.aoeSize;
                angleOrLength = cfg.aoeAngleOrLength;
            }

            AoeQuery(scene, srcObj, targetObj, aoeType, range, angleOrLength, instance, senderId, targetType, relativeCenter, relativeToTarget, callback);
        }
 public ImpactInfo(int impactId)
 {
     ImpactId = impactId;
     ConfigData = TableConfig.SkillProvider.Instance.GetSkill(ImpactId);
 }
        public int SkillLevel; // 技能等级

        #endregion Fields

        #region Constructors

        public SkillInfo(int skillId)
        {
            SkillId = skillId;
            ConfigData = TableConfig.SkillProvider.Instance.GetSkill(skillId);
        }