Пример #1
0
 //复活
 private bool DaoJuRevive(FightPlayer a, int p, PlayerEx package, GameConfig c)
 {
     string target = a.Action.Target;
     FightPlayer t = m_teamA.FirstOrDefault(x => x.ID == target) as FightPlayer;
     if (t == null) t = m_teamB.FirstOrDefault(x => x.ID == target) as FightPlayer;
     if (t == null || t.IsLive) return false;
     //检查使用限制..
     //if (!SupplyLimit(note, c)) return false;
     if (a.Player.RemoveGoods(p, GoodsSource.DaoJuRevive))
     {
         ActionResult result = new ActionResult(target);
         //百分比复活生命
         int hp = (int)(t.Life.ShengMing * c.Value.GetDoubleOrDefault("A"));
         int mp = (int)(t.Life.MoFa * c.Value.GetDoubleOrDefault("B")) - t.MP;
         if (mp < 0) mp = 0;
         t.AddHPAndMP(hp, mp);
         if (hp > 0)
         {
             result.Value["HP"] = hp;
             result.Value["ShengMing"] = t.HP;
         }
         if (mp > 0)
         {
             result.Value["MP"] = mp;
             result.Value["MoFa"] = t.MP;
         }
         result.ActionFlag |= ActionFlag.Supply;
         a.Action.Result = new List<ActionResult>() { result };
         a.Action.FightCount = FightAction.HasAction;
         m_actions.Add(a.Action);
         return true;
     }
     return false;
 }
Пример #2
0
        /// <summary>
        /// 使用道具
        /// </summary>
        /// <param name="a"></param>
        /// <returns></returns>
        protected virtual bool DaoJu(FightPlayer a)
        {
            if (a == null) return false;
            //格子..
            int p;
            if (string.IsNullOrEmpty(a.Action.Parameter) || (!Int32.TryParse(a.Action.Parameter, out p)))
            {
                return false;
            }
            PlayerEx package = a.Player.B0;
            string goodsid = (package.Value.GetValueOrDefault<IList>("C")[p] as Variant).GetStringOrDefault("E");
            if (string.IsNullOrEmpty(goodsid)) return false;
            GameConfig c = GameConfigAccess.Instance.FindOneById(goodsid);
            if (c == null) return false;

            //加血
            if (c.SubType == GoodsSub.Supply)
            {
                return DaoJuSupply(a, p, package, c);
            }
            //复活
            else if (c.SubType == GoodsSub.Revive)
            {
                return DaoJuRevive(a, p, package, c);
            }
            return false;
        }
Пример #3
0
        /// <summary>
        /// 换宠
        /// </summary>
        /// <param name="fighter"></param>
        protected void ChangePet(FightPlayer fighter)
        {
            string targetID = fighter.Action.Target;
            FightPet pet = fighter.Team.FirstOrDefault(x => x.ID == targetID) as FightPet;

            if (pet == null || pet.Player != fighter.Player)
            {
                return;
            }

            string newPetID = fighter.Action.Parameter;

            if (fighter.Player.ChangePet(newPetID, fighter.Player.Mounts))
            {
                //产生新的战斗宠.
                pet.ChangePet(m_changeLife);
            }
        }
Пример #4
0
 protected override bool DaoJu(FightPlayer a)
 {
     return false;
 }
Пример #5
0
 /// <summary>
 /// 创建玩家队伍
 /// </summary>
 /// <param name="player"></param>
 /// <returns></returns>
 public static FightObject[] CreateFightPlayers(List<PlayerBusiness> players)
 {
     List<FightObject> team = new List<FightObject>();
     for (int i = 0; i < players.Count; i++)
     {
         PlayerBusiness player = players[i];
         player.SetActionState(ActionState.Fight);
         player.FightTime = DateTime.UtcNow;
         FightPlayer f = new FightPlayer(i, player);
         team.Add(f);
         if (player.Pet != null)
         {
             FightPet pet = new FightPet(i + 5, player);
             team.Add(pet);
         }
     }
     return team.ToArray();
 }
Пример #6
0
 //加血
 private bool DaoJuSupply(FightPlayer a, int p, PlayerEx package, GameConfig c)
 {
     string target = a.Action.Target;
     FightPlayer t = m_teamA.FirstOrDefault(x => x.ID == target) as FightPlayer;
     if (t == null) t = m_teamB.FirstOrDefault(x => x.ID == target) as FightPlayer;
     if (t == null || t.Over) return false;
     //检查使用限制..
     //if (!SupplyLimit(note, c)) return false;
     int hp = t.TryHP(c.Value.GetDoubleOrDefault("HP"));
     int mp = t.TryMP(c.Value.GetDoubleOrDefault("MP"));
     if (hp == 0 && mp == 0) return false;
     bool needHP = t.Life.ShengMing > t.HP;
     bool needMP = t.Life.MoFa > t.MP;
     if ((needHP && hp > 0) || (needMP && mp > 0))
     {
         if (a.Player.RemoveGoods(p, GoodsSource.DaoJuSupply))
         {
             t.AddHPAndMP(hp, mp);
             ActionResult result = new ActionResult(target);
             if (hp > 0)
             {
                 result.Value["HP"] = hp;
                 result.Value["ShengMing"] = t.HP;
             }
             if (mp > 0)
             {
                 result.Value["MP"] = mp;
                 result.Value["MoFa"] = t.MP;
             }
             result.ActionFlag |= ActionFlag.Supply;
             a.Action.Result = new List<ActionResult>() { result };
             a.Action.FightCount = FightAction.HasAction;
             m_actions.Add(a.Action);
             return true;
         }
     }
     return false;
 }
Пример #7
0
        /// <summary>
        /// 抓捕
        /// </summary>
        /// <param name="fighter"></param>
        private void ZhuaPu(FightPlayer fighter)
        {
            string targetID = fighter.Action.Target;
            FightBB bb = m_teamB.FirstOrDefault(x => x.ID == targetID) as FightBB;
            if (bb != null && bb.IsLive)
            {
                ActionResult result = new ActionResult(targetID);
                fighter.Action.Result = new List<ActionResult>() { result };
                fighter.Action.FightCount = FightAction.HasAction;
                m_actions.Add(fighter.Action);

                string petID = bb.APC.Value.GetStringOrDefault("PetID");
                if (string.IsNullOrEmpty(petID))
                {
                    //不可捕捉
                    result.Value["Msg"] = TipManager.GetMessage(ClientReturn.ZhuaPu1);
                    return;
                }

                var pet = GameConfigAccess.Instance.FindOneById(petID);
                if (pet == null) //|| pet.MainType != MainType.Pet
                {
                    //不可捕捉
                    result.Value["Msg"] = TipManager.GetMessage(ClientReturn.ZhuaPu1);
                    return;
                }

                //增加的捕捉机率
                double addP = 0;
                if (!string.IsNullOrEmpty(fighter.Action.Parameter))
                {
                    //扣除一个网..
                    const string clapnetID = "G_d000011";
                    if (BurdenManager.Remove(fighter.Player.B0, clapnetID))
                    {
                        fighter.Player.UseClapnet++;
                        addP = 0.5;
                    }
                    //else
                    //{
                    //    result.Value["Msg"] = "请使用捕兽网";
                    //    return;
                    //}
                }
                double lv = fighter.CP + bb.ClapP + addP;
                Variant mv = MemberAccess.MemberInfo(fighter.Player.MLevel);
                if (mv != null)
                {
                    lv *=(1+ mv.GetDoubleOrDefault("ZhuaPuLv"));
                }
                if (Sinan.Extensions.NumberRandom.RandomHit(lv))
                {
                    //实行抓捕
                    if (!fighter.Player.AddGoodsNobingOne(petID, GoodsSource.Clap))
                    {
                        //包袱已满
                        result.Value["Msg"] = TipManager.GetMessage(ClientReturn.ZhuaPu2);
                        return;
                    }
                    result.Value["PetID"] = petID;
                    //捕捉成功
                    result.Value["Msg"] = TipManager.GetMessage(ClientReturn.ZhuaPu3);
                    bb.HP = 0;
                }
                else
                {
                    //捕捉失败
                    result.Value["Msg"] = TipManager.GetMessage(ClientReturn.ZhuaPu4);
                    return;
                }
            }
        }