예제 #1
0
 public override LogicStateTickRet Tick(SkillObj self, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
 {
     LogicStateTickRet ret = base.Tick(self, skillInfo, skillConfig);
     if (ret == LogicStateTickRet.TimeFinish)
     {
         return ret;
     }
     double effectTickTime = self.GetSkillStateDoubleParam(skillConfig, key_EffectTickTime, self.GetSkillStateIndex(skillInfo));
     if (effectTickTime < 0)
     {
         self.LogInfo("TickSkillState:skillObj[{0}] skill:[{1}] Tick Effect effectTickTime< 0".F(self.GetID(), self.GetSkillID(skillInfo)));
         return LogicStateTickRet.TimeFinish;
     }
     self.SetSkillStateTime(skillInfo, self.GetSkillStateTime(skillInfo) - self.GetDeltaTime());
     var leftTickTime = self.GetSkillDoubleParam(skillInfo, key_ticlLeftTime_SkillInfo);
     if (leftTickTime - self.GetSkillStateTime(skillInfo) >= effectTickTime)
     {
         self.SetSkillDoubleParam(skillInfo, leftTickTime - effectTickTime, key_ticlLeftTime_SkillInfo);
         self.LogInfo("TickSkillState:skillObj[{0}] skill:[{1}] Tick Effect".F(self.GetID(), self.GetSkillID(skillInfo)));
         ret = LogicStateTickRet.OnEffect;
     }
     else if (self.GetSkillStateTime(skillInfo) <= 0)
     {
         ret = LogicStateTickRet.NextState;
         self.LogInfo("TickSkillState:skillObj[{0}] skill:[{1}] Tick Finish".F(self.GetID(), self.GetSkillID(skillInfo)));
     }
     else
     {
         ret = LogicStateTickRet.None;
     }
     return ret;
 }
예제 #2
0
        public static SkillObj Summon(int id, SkillObj srcObj, SkillObj tarObj, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
        {
            SkillObj summonObj = null;

            if (srcObj != null)
            {
                summonObj = srcObj.Summon(id, tarObj, skillInfo, skillConfig);
                var srcBuffList = srcObj.GetBuffList();
                //Source buff fix
                if (srcBuffList != null)
                {
                    foreach (var buffInfo in srcBuffList)
                    {
                        BuffLogic buffLogic = GetBuffLogic(buffInfo, srcObj);
                        int       buffId    = srcObj.GetBuffID(buffInfo);
                        if (buffLogic != null)
                        {
                            BuffConfig_New buffConfig = srcObj.GetBuffConfig(buffId);
                            buffLogic.OnSummon(id, srcObj, summonObj, buffInfo, buffConfig);
                        }
                        else
                        {
                            srcObj.LogInfo("something error in BattleModule.Summon src buff:[{0}]".F(buffId));
                        }
                    }
                }
            }
            return(summonObj);
        }
예제 #3
0
 public override void InitState(SkillObj self, SkillInfo_New biffInfo, SkillConfig_New skillConfig, double fixTime)
 {
     int index = self.GetSkillStateIndex(biffInfo);
     var time = self.GetSkillStateTime(skillConfig, index) + fixTime;
     self.SetSkillStateTime(biffInfo, time);
     self.SetSkillDoubleParam(biffInfo, time, key_ticlLeftTime_SkillInfo);
 }
예제 #4
0
        public override IEnumerable <SkillObj> GetTargets(SkillObj skillObj, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
        {
            double width  = skillObj.GetTargetSelectDoubleParam(skillConfig, key_Width);
            double height = skillObj.GetTargetSelectDoubleParam(skillConfig, key_Height);

            return(GetTargets(skillObj, width, height));
        }
예제 #5
0
        /// <summary>
        /// 使用技能,这个需要手动调用
        /// </summary>
        /// <param name="self"></param>
        /// <param name="skillId"></param>
        /// <returns></returns>
        public static UseSkillRet UseSkill(SkillObj self, int skillId)
        {
            UseSkillRet ret = UseSkillRet.Success;

            if (BattleModule.IsActionLimited(self, ActionLimitType.UseSkill))
            {
                return(UseSkillRet.ActionLimit);
            }
            if (self.IsDead())
            {
                return(UseSkillRet.Dead);
            }
            //检查特殊状态
            if (!self.CanUseSkill(skillId))
            {
                return(UseSkillRet.None);
            }
            SkillConfig_New skillConfig = self.GetSkillConfig(skillId);

            if (skillConfig == null)
            {
                return(UseSkillRet.None);
            }
            //检查技能消耗
            if (!UseSkillCheckDeplete(self, skillConfig))
            {
                return(UseSkillRet.Deplete);
            }
            string skillLogicId = self.GetSkillLogicId(skillConfig);

            if (!SkillLogics.ContainsKey(skillLogicId))
            {
                return(UseSkillRet.None);
            }

            SkillLogic skillLogic = SkillLogics[skillLogicId];

            if (skillLogic != null)
            {
                //检查CD
                if (!skillLogic.CheckCD(self, skillConfig))
                {
                    string key = self.GetSkillCDKey(skillConfig);
                    self.LogInfo("skill:[{0}] CD ing [{1}]:[{2}]".F(self.GetSkillID(skillConfig), key, self.GetCD(key)));
                    return(UseSkillRet.CD);
                }
                SkillInfo_New skillInfo = skillLogic.Begin(self, skillConfig);
                if (skillInfo != null)
                {
                    skillLogic.BeginCD(self, skillInfo, skillConfig);
                    self.AddSkillList(skillInfo);
                    self.LogInfo("Skill Begin Successed [{0}]".F(skillId));
                }
                else
                {
                    self.LogInfo("Skill Begin Failed [{0}]".F(skillId));
                }
            }
            return(ret);
        }
예제 #6
0
        public override LogicStateTickRet Tick(SkillObj self, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
        {
            LogicStateTickRet ret = base.Tick(self, skillInfo, skillConfig);

            if (ret == LogicStateTickRet.TimeFinish)
            {
                return(ret);
            }
            double effectTickTime = self.GetSkillStateDoubleParam(skillConfig, key_EffectTickTime, self.GetSkillStateIndex(skillInfo));

            if (effectTickTime < 0)
            {
                self.LogInfo("TickSkillState:skillObj[{0}] skill:[{1}] Tick Effect effectTickTime< 0".F(self.GetID(), self.GetSkillID(skillInfo)));
                return(LogicStateTickRet.TimeFinish);
            }
            self.SetSkillStateTime(skillInfo, self.GetSkillStateTime(skillInfo) - self.GetDeltaTime());
            var leftTickTime = self.GetSkillDoubleParam(skillInfo, key_ticlLeftTime_SkillInfo);

            if (leftTickTime - self.GetSkillStateTime(skillInfo) >= effectTickTime)
            {
                self.SetSkillDoubleParam(skillInfo, leftTickTime - effectTickTime, key_ticlLeftTime_SkillInfo);
                self.LogInfo("TickSkillState:skillObj[{0}] skill:[{1}] Tick Effect".F(self.GetID(), self.GetSkillID(skillInfo)));
                ret = LogicStateTickRet.OnEffect;
            }
            else if (self.GetSkillStateTime(skillInfo) <= 0)
            {
                ret = LogicStateTickRet.NextState;
                self.LogInfo("TickSkillState:skillObj[{0}] skill:[{1}] Tick Finish".F(self.GetID(), self.GetSkillID(skillInfo)));
            }
            else
            {
                ret = LogicStateTickRet.None;
            }
            return(ret);
        }
예제 #7
0
 public override void InitState(SkillObj self, SkillInfo_New skillInfo, SkillConfig_New skillConfig, double fixTime)
 {
     int index = self.GetSkillStateIndex(skillInfo);
     var time = self.GetSkillStateTime(skillConfig, index);
     self.SetSkillStateTime(skillInfo, time + fixTime);
     self.LogInfo("State [{0}] NowTime bEGIN:[{1}]".F(self.GetSkillLogicStateName(skillInfo), self.GetNowTime()));
 }
예제 #8
0
 public override bool OnEffect(SkillObj self, SkillObj target, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
 {
     int iDamamge = self.GetSkillIntParam(skillConfig, DamegeKey);
     Damage damage = BattleModule.CreateDamage(iDamamge);
     BattleModule.DamageTarget(target, self, damage);
     return true;
 }
예제 #9
0
        public override bool IsActionLimited(SkillObj self, ActionLimitType limit, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
        {
            int iLimit = -1;

            switch (limit)
            {
            case ActionLimitType.Attack:
                iLimit = self.GetSkillStateIntParam(skillConfig, key_ActionAttackLimit_SkillConfig, self.GetSkillStateIndex(skillInfo));
                break;

            case ActionLimitType.Move:
                iLimit = self.GetSkillStateIntParam(skillConfig, key_ActionMoveLimit_SkillConfig, self.GetSkillStateIndex(skillInfo));
                break;

            case ActionLimitType.UseSkill:
                iLimit = self.GetSkillStateIntParam(skillConfig, key_ActionUseSkillLimit_SkillConfig, self.GetSkillStateIndex(skillInfo));
                break;

            default:
                System.Diagnostics.Debug.Assert(false, "limit == default IsActionLimited:[{0}]".F(limit));
                break;
            }
            if (iLimit == 1)
            {
                return(true);
            }
            return(false);
        }
예제 #10
0
        public override void InitState(SkillObj self, SkillInfo_New skillInfo, SkillConfig_New skillConfig, double fixTime)
        {
            int index = self.GetSkillStateIndex(skillInfo);
            var time  = self.GetSkillStateTime(skillConfig, index);

            self.SetSkillStateTime(skillInfo, time + fixTime);
        }
예제 #11
0
파일: Self.cs 프로젝트: hzy125060691/apple
        public override IEnumerable <SkillObj> GetTargets(SkillObj skillObj, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
        {
            List <SkillObj> tarList = new List <SkillObj>();

            tarList.Add(skillObj);
            return(tarList);
        }
예제 #12
0
        public override void InitState(SkillObj self, SkillInfo_New biffInfo, SkillConfig_New skillConfig, double fixTime)
        {
            int index = self.GetSkillStateIndex(biffInfo);
            var time  = self.GetSkillStateTime(skillConfig, index) + fixTime;

            self.SetSkillStateTime(biffInfo, time);
            self.SetSkillDoubleParam(biffInfo, time, key_ticlLeftTime_SkillInfo);
        }
예제 #13
0
        public override void InitState(SkillObj self, SkillInfo_New skillInfo, SkillConfig_New skillConfig, double fixTime)
        {
            int index = self.GetSkillStateIndex(skillInfo);
            var time  = self.GetSkillStateTime(skillConfig, index);

            self.SetSkillStateTime(skillInfo, time + fixTime);
            self.LogInfo("State [{0}] NowTime bEGIN:[{1}]".F(self.GetSkillLogicStateName(skillInfo), self.GetNowTime()));
        }
예제 #14
0
        public override bool OnEffect(SkillObj self, SkillObj target, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
        {
            int    iDamamge = self.GetSkillIntParam(skillConfig, DamegeKey);
            Damage damage   = BattleModule.CreateDamage(iDamamge);

            BattleModule.DamageTarget(target, self, damage);
            return(true);
        }
예제 #15
0
 // 		private const int key_BuffId1_SkillConfig = 0;
 // 		private const int key_BuffId2_SkillConfig = 1;
 // 		private const int key_BuffId3_SkillConfig = 2;
 public override bool OnEffect(SkillObj self, SkillObj target, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
 {
     var buffIds = self.GetSkillIntParams(skillConfig);
     foreach(var buffId in buffIds)
     {
         BattleModule.AddBuff(target, self, buffId, BattleReason.Skill);
     }
     return true;
 }
예제 #16
0
        public override bool InitSkillInfo(SkillObj self, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
        {
            bool ret = base.InitSkillInfo(self, skillInfo, skillConfig);

            var targetSelectName = "Range";
            var targetSelect     = BattleModule.GetTargetSelect(targetSelectName);

            if (targetSelect == null)
            {
                self.LogInfo("targetSelect == null skillId:[{0}] targetSelectName:[{1}]".F(self.GetSkillID(skillInfo), targetSelectName));
                Debug.Assert(false, "targetSelect == null skillId:[{0}] targetSelectName:[{1}]".F(self.GetSkillID(skillInfo), targetSelectName));
                return(false);
            }
            var targetTypeName = "Harm";
            var targetType     = BattleModule.GetTargetType(targetTypeName);

            if (targetType == null)
            {
                self.LogInfo("targetSelect == null skillId:[{0}] targetType:[{1}]".F(self.GetSkillID(skillInfo), targetTypeName));
                Debug.Assert(false, "targetSelect == null skillId:[{0}] targetType:[{1}]".F(self.GetSkillID(skillInfo), targetTypeName));
                return(false);
            }
            var targets = BattleModule.GetTargets(self, targetSelect, targetType, skillInfo, skillConfig).ToList();

            if (targets == null || targets.Count <= 0)
            {
                return(true);
            }
            int count     = self.GetSkillIntParam(skillConfig, key_SummonCount_SkillConfig);
            int realCount = 0;
            int index     = 0;

            foreach (var tar in targets)
            {
                if (index < count)
                {
                    self.SetSkillIntParam(skillInfo, key_SummonTraceTarget_SkillInfo + index++, tar.GetID());
                    realCount++;
                }
                else
                {
                    break;
                }
            }
            if (index < count)
            {
                var tank = targets.OrderBy(t => t.GetHP()).FirstOrDefault();
                for (int i = index; i < count; i++)
                {
                    self.SetSkillIntParam(skillInfo, key_SummonTraceTarget_SkillInfo + i, tank.GetID());
                    realCount++;
                }
            }
            self.SetSkillIntParam(skillInfo, key_SummonIdx_SkillInfo, 0);
            ret = true;
            return(ret);
        }
예제 #17
0
//      private const int key_BuffId1_SkillConfig = 0;
//      private const int key_BuffId2_SkillConfig = 1;
//      private const int key_BuffId3_SkillConfig = 2;
        public override bool OnEffect(SkillObj self, SkillObj target, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
        {
            var buffIds = self.GetSkillIntParams(skillConfig);

            foreach (var buffId in buffIds)
            {
                BattleModule.AddBuff(target, self, buffId, BattleReason.Skill);
            }
            return(true);
        }
예제 #18
0
        public static SkillLogicState GetSkillLogicState(SkillInfo_New skillInfo, SkillObj logObj)
        {
            string          stateName = logObj.GetSkillLogicStateName(skillInfo);
            SkillLogicState state     = GetSkillLogicState(stateName);

            if (state == null && logObj != null)
            {
                logObj.LogInfo("SkillLogicStates not found stateName[{0}]".F(stateName));
            }
            return(state);
        }
예제 #19
0
        public override bool InitSkillInfo(SkillObj self, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
        {
            bool ret = base.InitSkillInfo(self, skillInfo, skillConfig);

            var targetSelectName = "Range";
            var targetSelect = BattleModule.GetTargetSelect(targetSelectName);
            if (targetSelect == null)
            {
                self.LogInfo("targetSelect == null skillId:[{0}] targetSelectName:[{1}]".F(self.GetSkillID(skillInfo), targetSelectName));
                Debug.Assert(false, "targetSelect == null skillId:[{0}] targetSelectName:[{1}]".F(self.GetSkillID(skillInfo), targetSelectName));
                return false;
            }
            var targetTypeName = "Harm";
            var targetType = BattleModule.GetTargetType(targetTypeName);
            if (targetType == null)
            {
                self.LogInfo("targetSelect == null skillId:[{0}] targetType:[{1}]".F(self.GetSkillID(skillInfo), targetTypeName));
                Debug.Assert(false, "targetSelect == null skillId:[{0}] targetType:[{1}]".F(self.GetSkillID(skillInfo), targetTypeName));
                return false;
            }
            var targets = BattleModule.GetTargets(self, targetSelect, targetType, skillInfo, skillConfig).ToList();
            if(targets == null || targets.Count <= 0)
            {
                return true;
            }
            int count = self.GetSkillIntParam(skillConfig, key_SummonCount_SkillConfig);
            int realCount = 0;
            int index = 0;
            foreach (var tar in targets)
            {
                if(index < count)
                {
                    self.SetSkillIntParam(skillInfo, key_SummonTraceTarget_SkillInfo + index++, tar.GetID());
                    realCount++;
                }
                else
                {
                    break;
                }
            }
            if(index < count)
            {
                var tank = targets.OrderBy(t => t.GetHP()).FirstOrDefault();
                for (int i = index; i < count; i++)
                {
                    self.SetSkillIntParam(skillInfo, key_SummonTraceTarget_SkillInfo + i, tank.GetID());
                    realCount++;
                }
            }
            self.SetSkillIntParam(skillInfo, key_SummonIdx_SkillInfo, 0);
            ret = true;
            return ret;
        }
예제 #20
0
 public override LogicStateTickRet Tick(SkillObj self, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
 {
     LogicStateTickRet ret = base.Tick(self, skillInfo, skillConfig);
     if (ret == LogicStateTickRet.TimeFinish)
     {
         return ret;
     }
     self.SetSkillStateTime(skillInfo, self.GetSkillStateTime(skillInfo) - self.GetDeltaTime());
     if (self.GetSkillStateTime(skillInfo) <= 0)
     {
         ret = LogicStateTickRet.NextState;
         self.LogInfo("ShowEffectSkillState:skillObj[{0}] skill:[{1}] ShowEffectState Finish".F(self.GetID(), self.GetSkillID(skillInfo)));
     }
     return ret;
 }
예제 #21
0
        public override LogicStateTickRet Tick(SkillObj self, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
        {
            LogicStateTickRet ret = base.Tick(self, skillInfo, skillConfig);

            if (ret == LogicStateTickRet.TimeFinish)
            {
                return(ret);
            }
            self.SetSkillStateTime(skillInfo, self.GetSkillStateTime(skillInfo) - self.GetDeltaTime());
            if (self.GetSkillStateTime(skillInfo) <= 0)
            {
                ret = LogicStateTickRet.NextState;
                self.LogInfo("ShowEffectSkillState:skillObj[{0}] skill:[{1}] ShowEffectState Finish".F(self.GetID(), self.GetSkillID(skillInfo)));
            }
            return(ret);
        }
예제 #22
0
 public override LogicStateTickRet Tick(SkillObj self, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
 {
     LogicStateTickRet ret = base.Tick(self, skillInfo, skillConfig);
     if(ret == LogicStateTickRet.TimeFinish)
     {
         return ret;
     }
     self.SetSkillStateTime(skillInfo, self.GetSkillStateTime(skillInfo) - self.GetDeltaTime());
     //self.LogInfo("State [{0}] Time:[{1}]".F(self.GetSkillLogicStateName(skillInfo), self.GetSkillStateTime(skillInfo)));
     if (self.GetSkillStateTime(skillInfo) <= 0)
     {
         self.LogInfo("State [{0}] NowTime fINISH:[{1}]".F(self.GetSkillLogicStateName(skillInfo), self.GetNowTime()));
         ret = LogicStateTickRet.NextState;
         self.LogInfo("ChargeState:skillObj[{0}] skill:[{1}] Charge Finish".F(self.GetID(), self.GetSkillID(skillInfo)));
     }
     return ret;
 }
예제 #23
0
        // 		private const int key_BuffId3_SkillConfig = 2;
        public override bool OnEffect(SkillObj self, SkillObj target, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
        {
            var buffId1 = self.GetSkillIntParam(skillConfig, key_BuffId1_SkillConfig);
            var buffId2 = self.GetSkillIntParam(skillConfig, key_BuffId2_SkillConfig);
            var tarBuff = target.GetBuffList().Where(b => target.GetBuffID(b) == buffId1);
            if (tarBuff != null && tarBuff.FirstOrDefault() != null)
            {
                BattleModule.AddBuff(target, self, buffId2, BattleReason.Skill);
                BattleModule.RemoveBuff(target, self, buffId1, BattleReason.Skill);
            }
            else
            {
                BattleModule.AddBuff(target, self, buffId1, BattleReason.Skill);
                BattleModule.RemoveBuff(target, self, buffId2, BattleReason.Skill);
            }

            return true;
        }
예제 #24
0
 public override LogicStateTickRet Tick(SkillObj self, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
 {
     LogicStateTickRet ret = base.Tick(self, skillInfo, skillConfig);
     if (ret == LogicStateTickRet.TimeFinish)
     {
         return ret;
     }
     if(self.GetSkillStateIntParam(skillInfo, key) == NotEffect)
     {
         self.SetSkillStateIntParam(skillInfo, key, Effected);
         return LogicStateTickRet.OnEffect;
     }
     else
     {
         return LogicStateTickRet.NextState;
     }
     return ret;
 }
예제 #25
0
        public override LogicStateTickRet Tick(SkillObj self, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
        {
            LogicStateTickRet ret = base.Tick(self, skillInfo, skillConfig);

            if (ret == LogicStateTickRet.TimeFinish)
            {
                return(ret);
            }
            self.SetSkillStateTime(skillInfo, self.GetSkillStateTime(skillInfo) - self.GetDeltaTime());
            //self.LogInfo("State [{0}] Time:[{1}]".F(self.GetSkillLogicStateName(skillInfo), self.GetSkillStateTime(skillInfo)));
            if (self.GetSkillStateTime(skillInfo) <= 0)
            {
                self.LogInfo("State [{0}] NowTime fINISH:[{1}]".F(self.GetSkillLogicStateName(skillInfo), self.GetNowTime()));
                ret = LogicStateTickRet.NextState;
                self.LogInfo("ChargeState:skillObj[{0}] skill:[{1}] Charge Finish".F(self.GetID(), self.GetSkillID(skillInfo)));
            }
            return(ret);
        }
예제 #26
0
        public override bool OnEffect(SkillObj self, SkillObj target, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
        {
            int id    = self.GetSkillIntParam(skillConfig, key_SummonId_SkillConfig);
            int count = self.GetSkillIntParam(skillConfig, key_SummonCount_SkillConfig);
            int idx   = self.GetSkillIntParam(skillInfo, key_SummonIdx_SkillInfo);

            if (idx < count)
            {
                int tarId = self.GetSkillIntParam(skillInfo, key_SummonTraceTarget_SkillInfo + idx);
                var tar   = self.GetTargetById(tarId);
                if (tar != null)
                {
                    var summonTar = BattleModule.Summon(id, self, tar, skillInfo, skillConfig);
                }
                self.SetSkillIntParam(skillInfo, key_SummonIdx_SkillInfo, idx + 1);
            }

            return(true);
        }
예제 #27
0
        public override LogicStateTickRet Tick(SkillObj self, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
        {
            LogicStateTickRet ret = base.Tick(self, skillInfo, skillConfig);

            if (ret == LogicStateTickRet.TimeFinish)
            {
                return(ret);
            }
            if (self.GetSkillStateIntParam(skillInfo, key) == NotEffect)
            {
                self.SetSkillStateIntParam(skillInfo, key, Effected);
                return(LogicStateTickRet.OnEffect);
            }
            else
            {
                return(LogicStateTickRet.NextState);
            }
            return(ret);
        }
예제 #28
0
//      private const int key_BuffId3_SkillConfig = 2;
        public override bool OnEffect(SkillObj self, SkillObj target, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
        {
            var buffId1 = self.GetSkillIntParam(skillConfig, key_BuffId1_SkillConfig);
            var buffId2 = self.GetSkillIntParam(skillConfig, key_BuffId2_SkillConfig);
            var tarBuff = target.GetBuffList().Where(b => target.GetBuffID(b) == buffId1);

            if (tarBuff != null && tarBuff.FirstOrDefault() != null)
            {
                BattleModule.AddBuff(target, self, buffId2, BattleReason.Skill);
                BattleModule.RemoveBuff(target, self, buffId1, BattleReason.Skill);
            }
            else
            {
                BattleModule.AddBuff(target, self, buffId1, BattleReason.Skill);
                BattleModule.RemoveBuff(target, self, buffId2, BattleReason.Skill);
            }

            return(true);
        }
예제 #29
0
        private static SkillLogic GetSkillLogic(SkillInfo_New skillInfo, SkillObj logObj)
        {
            int             skillId    = logObj.GetSkillID(skillInfo);
            SkillConfig_New buffConfig = logObj.GetSkillConfig(skillId);

            if (buffConfig == null)
            {
                logObj.LogInfo("SkillConfig not found skillid[{0}]".F(skillId));
                return(null);
            }
            string skillLogicId = logObj.GetSkillLogicId(buffConfig);

            if (!SkillLogics.ContainsKey(skillLogicId))
            {
                logObj.LogInfo("SkillLogic not found skillid[{0}] SkillLogicId[{1}]".F(skillId, skillLogicId));
                return(null);
            }
            SkillLogic skillLogic = SkillLogics[skillLogicId];

            return(skillLogic);
        }
예제 #30
0
 public override bool OnEffect(SkillObj self, SkillObj target, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
 {
     int id = self.GetSkillIntParam(skillConfig, key_SummonId);
     var summonTar = BattleModule.Summon(id, self, target, skillInfo, skillConfig);
     if(summonTar != null)
     {
         var buffIds = self.GetSkillIntParams(skillConfig);
         foreach (var buffId in buffIds.Skip(key_SummonId + 1))
         {
             BattleModule.AddBuff(summonTar, self, buffId, BattleReason.Skill);
         }
     }
     {
         //int iBuffId = self.GetSkillIntParam(skillConfig, key_BuffId);
         //if (iBuffId > 0)
         //{
         //	BattleModule.AddBuff(summonTar, self, iBuffId, BattleReason.Skill);
         //}
     }
     return true;
 }
예제 #31
0
        public override bool OnEffect(SkillObj self, SkillObj target, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
        {
            int id        = self.GetSkillIntParam(skillConfig, key_SummonId);
            var summonTar = BattleModule.Summon(id, self, target, skillInfo, skillConfig);

            if (summonTar != null)
            {
                var buffIds = self.GetSkillIntParams(skillConfig);
                foreach (var buffId in buffIds.Skip(key_SummonId + 1))
                {
                    BattleModule.AddBuff(summonTar, self, buffId, BattleReason.Skill);
                }
            }
            {
                //int iBuffId = self.GetSkillIntParam(skillConfig, key_BuffId);
                //if (iBuffId > 0)
                //{
                //	BattleModule.AddBuff(summonTar, self, iBuffId, BattleReason.Skill);
                //}
            }
            return(true);
        }
예제 #32
0
 //private const int Key_Double_BuffBegin_SkillConfig = 0;
 public override bool OnEffect(SkillObj self, SkillObj target, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
 {
     if(self.GetCamp()!=target.GetCamp())
     {
         int iDamamge = self.GetSkillIntParam(skillConfig, Key_Damege_SkillConfig);
         Damage damage = BattleModule.CreateDamage(iDamamge);
         BattleModule.DamageTarget(target, self, damage);
         var buffIds = self.GetSkillIntParams(skillConfig).Skip(Key_Damege_SkillConfig + 1);
         foreach (var buffId in buffIds)
         {
             BattleModule.AddBuff(target, self, buffId, BattleReason.Skill);
         }
     }
     else
     {
         var buffIds = self.GetSkillDoubleParams(skillConfig).Select(d=>(int)d);
         foreach (var buffId in buffIds)
         {
             BattleModule.AddBuff(target, self, buffId, BattleReason.Skill);
         }
     }
     return true;
 }
예제 #33
0
 //private const int Key_Double_BuffBegin_SkillConfig = 0;
 public override bool OnEffect(SkillObj self, SkillObj target, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
 {
     if (self.GetCamp() != target.GetCamp())
     {
         int    iDamamge = self.GetSkillIntParam(skillConfig, Key_Damege_SkillConfig);
         Damage damage   = BattleModule.CreateDamage(iDamamge);
         BattleModule.DamageTarget(target, self, damage);
         var buffIds = self.GetSkillIntParams(skillConfig).Skip(Key_Damege_SkillConfig + 1);
         foreach (var buffId in buffIds)
         {
             BattleModule.AddBuff(target, self, buffId, BattleReason.Skill);
         }
     }
     else
     {
         var buffIds = self.GetSkillDoubleParams(skillConfig).Select(d => (int)d);
         foreach (var buffId in buffIds)
         {
             BattleModule.AddBuff(target, self, buffId, BattleReason.Skill);
         }
     }
     return(true);
 }
예제 #34
0
 public override bool IsActionLimited(SkillObj self, ActionLimitType limit, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
 {
     int iLimit = -1;
     switch (limit)
     {
         case ActionLimitType.Attack:
             iLimit = self.GetSkillStateIntParam(skillConfig, key_ActionAttackLimit_SkillConfig, self.GetSkillStateIndex(skillInfo));
             break;
         case ActionLimitType.Move:
             iLimit = self.GetSkillStateIntParam(skillConfig, key_ActionMoveLimit_SkillConfig, self.GetSkillStateIndex(skillInfo));
             break;
         case ActionLimitType.UseSkill:
             iLimit = self.GetSkillStateIntParam(skillConfig, key_ActionUseSkillLimit_SkillConfig, self.GetSkillStateIndex(skillInfo));
             break;
         default:
             System.Diagnostics.Debug.Assert(false, "limit == default IsActionLimited:[{0}]".F(limit));
             break;
     }
     if (iLimit == 1)
     {
         return true;
     }
     return false;
 }
예제 #35
0
 public static IEnumerable<SkillObj> GetTargets(SkillObj skillObj, TargetSelect select, TargetType tType, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
 {
     if (select == null || tType == null)
     {
         return null;
     }
     var ret = select.GetTargets(skillObj, skillInfo, skillConfig).Where(t=> tType.IsTarget(skillObj, t));
     return ret;
 }
예제 #36
0
        public static IEnumerable <SkillObj> GetTargets(SkillObj skillObj, TargetSelect select, TargetType tType, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
        {
            if (select == null || tType == null)
            {
                return(null);
            }
            var ret = select.GetTargets(skillObj, skillInfo, skillConfig).Where(t => tType.IsTarget(skillObj, t));

            return(ret);
        }
예제 #37
0
 public virtual IEnumerable <SkillObj> GetTargets(SkillObj skillObj, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
 {
     return(null);
 }
예제 #38
0
 public virtual void Init(SkillObj skillObj, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
 {
     return;
 }
예제 #39
0
파일: Range.cs 프로젝트: hzy125060691/apple
 public override IEnumerable<SkillObj> GetTargets(SkillObj skillObj, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
 {
     double range = skillObj.GetTargetSelectDoubleParam(skillConfig, key_Range);
     return GetTargets(skillObj, range);
 }
예제 #40
0
 public override void InitState(SkillObj self, SkillInfo_New skillInfo, SkillConfig_New skillConfig, double fixTime)
 {
     self.SetSkillStateIntParam(skillInfo, key, NotEffect);
 }
예제 #41
0
 public override double OnStateChanged(string tarState, SkillObj self, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
 {
     self.LogInfo("State [{0}] finish".F(self.GetSkillLogicStateName(skillInfo)));
     return self.GetSkillStateTime(skillInfo);
 }
예제 #42
0
 private static SkillLogic GetSkillLogic(SkillInfo_New skillInfo, SkillObj logObj)
 {
     int skillId = logObj.GetSkillID(skillInfo);
     SkillConfig_New buffConfig = logObj.GetSkillConfig(skillId);
     if (buffConfig == null)
     {
         logObj.LogInfo("SkillConfig not found skillid[{0}]".F(skillId));
         return null;
     }
     string skillLogicId = logObj.GetSkillLogicId(buffConfig);
     if (!SkillLogics.ContainsKey(skillLogicId))
     {
         logObj.LogInfo("SkillLogic not found skillid[{0}] SkillLogicId[{1}]".F(skillId, skillLogicId));
         return null;
     }
     SkillLogic skillLogic = SkillLogics[skillLogicId];
     return skillLogic;
 }
예제 #43
0
        public override IEnumerable <SkillObj> GetTargets(SkillObj skillObj, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
        {
            double range = skillObj.GetTargetSelectDoubleParam(skillConfig, key_Range);

            return(GetTargets(skillObj, range));
        }
예제 #44
0
 public override void InitState(SkillObj self, SkillInfo_New skillInfo, SkillConfig_New skillConfig, double fixTime)
 {
     self.SetSkillStateIntParam(skillInfo, key, NotEffect);
 }
예제 #45
0
 public static SkillLogicState GetSkillLogicState(SkillInfo_New skillInfo, SkillObj logObj)
 {
     string stateName = logObj.GetSkillLogicStateName(skillInfo);
     SkillLogicState state = GetSkillLogicState(stateName);
     if (state == null && logObj != null)
     {
         logObj.LogInfo("SkillLogicStates not found stateName[{0}]".F(stateName));
     }
     return state;
 }
예제 #46
0
 public override double OnStateChanged(string tarState, SkillObj self, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
 {
     self.LogInfo("State [{0}] finish".F(self.GetSkillLogicStateName(skillInfo)));
     return(self.GetSkillStateTime(skillInfo));
 }
예제 #47
0
 public override IEnumerable<SkillObj> GetTargets(SkillObj skillObj, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
 {
     double width = skillObj.GetTargetSelectDoubleParam(skillConfig, key_Width);
     double height = skillObj.GetTargetSelectDoubleParam(skillConfig, key_Height);
     return GetTargets(skillObj, width, height);
 }
예제 #48
0
 public static SkillObj Summon(int id, SkillObj srcObj, SkillObj tarObj, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
 {
     SkillObj summonObj = null;
     if (srcObj != null)
     {
         summonObj = srcObj.Summon(id, tarObj, skillInfo, skillConfig);
         var srcBuffList = srcObj.GetBuffList();
         //Source buff fix
         if (srcBuffList != null)
         {
             foreach (var buffInfo in srcBuffList)
             {
                 BuffLogic buffLogic = GetBuffLogic(buffInfo, srcObj);
                 int buffId = srcObj.GetBuffID(buffInfo);
                 if (buffLogic != null)
                 {
                     BuffConfig_New buffConfig = srcObj.GetBuffConfig(buffId);
                     buffLogic.OnSummon(id, srcObj, summonObj, buffInfo, buffConfig);
                 }
                 else
                 {
                     srcObj.LogInfo("something error in BattleModule.Summon src buff:[{0}]".F(buffId));
                 }
             }
         }
     }
     return summonObj;
 }
예제 #49
0
 public virtual IEnumerable<SkillObj> GetTargets(SkillObj skillObj, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
 {
     return null;
 }
예제 #50
0
 public virtual void Init(SkillObj skillObj, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
 {
     return;
 }
예제 #51
0
        public override bool OnEffect(SkillObj self, SkillObj target, SkillInfo_New skillInfo, SkillConfig_New skillConfig)
        {
            int id = self.GetSkillIntParam(skillConfig, key_SummonId_SkillConfig);
            int count = self.GetSkillIntParam(skillConfig, key_SummonCount_SkillConfig);
            int idx = self.GetSkillIntParam(skillInfo, key_SummonIdx_SkillInfo);
            if(idx < count)
            {
                int tarId = self.GetSkillIntParam(skillInfo, key_SummonTraceTarget_SkillInfo + idx);
                var tar = self.GetTargetById(tarId);
                if(tar != null)
                {
                    var summonTar = BattleModule.Summon(id, self, tar, skillInfo, skillConfig);
                }
                self.SetSkillIntParam(skillInfo, key_SummonIdx_SkillInfo, idx + 1);
            }

            return true;
        }
예제 #52
0
 public override void InitState(SkillObj self, SkillInfo_New skillInfo, SkillConfig_New skillConfig, double fixTime)
 {
     int index = self.GetSkillStateIndex(skillInfo);
     var time = self.GetSkillStateTime(skillConfig, index);
     self.SetSkillStateTime(skillInfo, time + fixTime);
 }