Exemple #1
0
        private void _nightmare_UseSkill(object sender, UseSkillEventArgs e)
        {
            var monster = (Monster)sender;

            switch (e.Spell)
            {
            case MonsterSpell.DogAttack:
                break;

            case MonsterSpell.Potlike:
                break;

            case MonsterSpell.Summon:
                break;

            case MonsterSpell.FireJeans:
                break;

            case MonsterSpell.Warp:
                monster.Warp(Maps.Kantru3,
                             (byte)(monster.Position.X + Program.RandomProvider(6, -6)),
                             (byte)(monster.Position.Y + Program.RandomProvider(6, -6))
                             );
                break;
            }
        }
Exemple #2
0
        private void _hand_UseSkill(object sender, UseSkillEventArgs e)
        {
            var monster = sender as Monster;
            var msg1    = new SKanturuWideAttack
            {
                ObjClass = monster.Info.Monster,
                Type     = 1,
            };
            DamageType type;
            Spell      spell;

            if (monster.Target != null)
            {
                var attack = monster.MonsterAttack(out type, out spell);
                monster.Target?.Character.GetAttacked(monster.Index, 1, 1, attack, type, spell, 0);
            }
            switch (e.Spell)
            {
            case MonsterSpell.Pressure:
                //monster.Spells.AttackSend(Spell.pres, monster.Target.ID, true);
                break;

            case MonsterSpell.PowerWave:
                monster.Spells.AttackSend(Spell.PowerWave, monster.Target.ID, true);
                break;

            case MonsterSpell.BrokenShower:
                _manager.SendAll(msg1);
                break;

            case MonsterSpell.IceStorm:
                break;
            }
        }
Exemple #3
0
        private void _maya_UseSkill(object sender, UseSkillEventArgs e)
        {
            var monster = sender as Monster;
            var msg0    = new SKanturuWideAttack
            {
                ObjClass = monster.Info.Monster,
                Type     = 0,
            };

            _manager.SendAll(msg0);
        }
Exemple #4
0
 /// <summary>
 /// 定时处理战斗逻辑
 /// </summary>
 public void _solve_battle_logic(List <RoomRole> targetNoCurrentTimeRoomRoles)
 {
     if (!IsMyTime || this.battleTimeType == BattleTimeType.OVER)
     {
         return;
     }
     // 能到我的回合,说明我还没有死!
     //依次执行,回合操作,战斗结束,死亡判断
     if (roleType == RoleType.NPC)
     {
         Console.WriteLine("处理NPC:" + this.id + "角色的战斗逻辑...");
         List <BaseRoleAction> targets = new List <BaseRoleAction>();
         //TODO需要删选,不能aoe呀
         foreach (var item in targetNoCurrentTimeRoomRoles)
         {
             targets.Add(item.role);
         }
         //做一些定时任务,每次执行指令应该需要时间,或者说?立刻返回
         // NPC应该只能调用技能。
         //TODO 判断如果血量超过阶段,触发方法
         Console.WriteLine("" + this.id + "开始随机使用技能。。。");
         //TODO 从技能中随机挑选一个使用以及随机判定卡牌使用不使用
         if (this.cardList != null && this.cardList.Count > 0)
         {
             Random rd        = new Random();
             int    cardIndex = rd.Next() % this.cardList.Count;
             var    args      = new UseCardEventArgs();
             args.targets = targets;//TODO 设置使用对象!
             this.cardList[cardIndex].useCard(this.role, args);
         }
         if (this.skillList != null && this.skillList.Count > 0)
         {
             Random rd         = new Random();
             int    skillIndex = rd.Next() % this.skillList.Count;
             var    args       = new UseSkillEventArgs();
             args.targets = targets;//TODO 设置使用对象!
             this.skillList[skillIndex].useSkill(this.role, args);
         }
         //发送回合结束的信息
         //this.isMyTime = false;
         this.battleTimeType = BattleTimeType.OVER;
         Console.WriteLine("" + this.id + "随机使用技能结束。。。");
         //TODO 发送NPC回合结束的触发
     }
     else if (roleType == RoleType.PLAYER && this.isActive)
     {
         //等待玩家输入指令
         Console.WriteLine("等待" + this.id + "玩家的输入");
         // var str = Console.ReadLine();
         // 说明输入了使用技能或卡牌
         if (_wantToUseCardSkill != null)
         {
             timesNoAction = 0;
             lock (_wantToUseCardSkill)
             {
                 if (_wantToUseCardSkill is UseCardEventArgs)
                 {
                     var      args    = (UseCardEventArgs)_wantToUseCardSkill;
                     BaseCard useCard = null;
                     if (this.cardList != null && this.cardList.Count > 0)
                     {
                         foreach (var item in this.cardList)
                         {
                             if (item.Id == args.UseCardId)
                             {
                                 useCard = item;
                                 break;
                             }
                         }
                         if (useCard != null)
                         {
                             UseCardEventArgs newargs = new UseCardEventArgs();
                             newargs.targets   = args.targets;
                             newargs.UseCardId = args.UseCardId;
                             useCard.useCard(this.role, newargs);
                         }
                     }
                 }
                 else if (_wantToUseCardSkill is UseSkillEventArgs)
                 {
                     var       args      = (UseSkillEventArgs)_wantToUseCardSkill;
                     BaseSkill baseSkill = null;
                     if (this.skillList != null && this.skillList.Count > 0)
                     {
                         foreach (var item in this.skillList)
                         {
                             if (item.Id == args.UseSkillId)
                             {
                                 baseSkill = item;
                                 break;
                             }
                         }
                         if (baseSkill != null)
                         {
                             UseSkillEventArgs newargs = new UseSkillEventArgs();
                             newargs.targets    = args.targets;
                             newargs.UseSkillId = args.UseSkillId;
                             baseSkill.useSkill(this.role, newargs);
                         }
                     }
                 }
                 //找不到的话,丢弃
                 this._wantToUseCardSkill = null;
             }
         }
         else
         {
             if (timesNoAction <= 1000)
             {
                 timesNoAction++;
             }
         }
         if (timesNoAction >= 10)
         {
             this.isActive = false;
         }
         else
         {
             this.isActive = true;
         }
     }
 }
Exemple #5
0
        protected void __solve_message_dto(RoomDTO result)
        {
            //收到信息的处理
            //设置room的_wantToUseCardSkill,作为消费
            switch (result.protocol)
            {
            case BattleRoomProtocol.USE_CARD_C:
                //玩家使用来技能,针对那个对象等
            {
                Console.WriteLine("玩家房间角色:" + result.roomRoleId + "使用了卡牌");
                try
                {
                    UseCardEventArgs args = new UseCardEventArgs();
                    args.UseCardId = (int)result.map[CommonFieldProtocol.useCardId];
                    var targetIds = (List <string>)result.map[CommonFieldProtocol.targetIds];
                    args.targets   = getRolesByIds(targetIds);
                    args.UseRoleId = result.roomRoleId;
                    var role = getRoomRoleById(result.roomRoleId);
                    role._wantToUseCardSkill = args;
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
            }
            break;

            case BattleRoomProtocol.USE_SKILL_C:
                //玩家使用来技能,针对某个对象
            {
                Console.WriteLine("玩家房间角色:" + result.roomRoleId + "使用了技能");
                try
                {
                    UseSkillEventArgs args = new UseSkillEventArgs();
                    args.UseSkillId = (int)result.map[CommonFieldProtocol.useSkillId];
                    var targetIds = (List <string>)result.map[CommonFieldProtocol.targetIds];
                    args.targets   = getRolesByIds(targetIds);
                    args.UseRoleId = result.roomRoleId;
                    var role = getRoomRoleById(result.roomRoleId);
                    role._wantToUseCardSkill = args;
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
            }
            break;

            case BattleRoomProtocol.OVER_TIME_C:
                ///TODO 结束战斗回合
            {
                if (result.map.ContainsKey(CommonFieldProtocol.id))
                {
                    var id   = result.map[CommonFieldProtocol.id].ToString();
                    var role = getRoomRoleById(id);
                    if (role != null)
                    {
                        Console.WriteLine("" + id + "的角色结束了自己的回合!");
                        role.IsMyTime = false;
                    }
                }
            }
            break;
            }
        }