Beispiel #1
0
        /// <summary> 推送攻击城门结果</summary>
        public void CommandStart(TGGSession session)
        {
            var user  = session.Player.User;
            var role  = session.Player.Role.Kind;
            var skill = session.Player.Role.LifeSkill;

            var playerdata = Common.GetInstance().GetSiegePlayer(user.id, user.player_camp); //拉取活动数据

            var flag = (new RandomSingle()).IsTrue(GetBaseProbability(skill));               //是否破坏成功

            if (!flag)
            {
                Common.GetInstance().TrainingSiegeEndSend(session, new ASObject(BuildData(false, playerdata.count)), (int)SiegeCommand.PUSH_GATE_RESULT);       //失败推送
            }
            else
            {
                var rivalcamp = playerdata.player_camp == (int)CampType.East ? (int)CampType.West : (int)CampType.East;   //对方阵营
                var boss      = Variable.Activity.Siege.BossCondition.FirstOrDefault(m => m.player_camp == rivalcamp);
                if (boss == null)
                {
                    return;
                }
                playerdata.count -= Variable.Activity.Siege.BaseData.GateLadder; //扣除云梯
                var count = GetBaseHurt(role);                                   //获取伤害
                lock (this) { boss.GateLife -= count; }

                Common.GetInstance().TrainingSiegeEndSend(session, new ASObject(BuildData(true, playerdata.count)), (int)SiegeCommand.PUSH_GATE_RESULT);//成功推送
                PUSH_OURS_HP.GetInstance().CommandStart(user.player_camp, rivalcamp, (int)SiegeNpcType.GATE, boss.GateLife, 0);
            }
        }
Beispiel #2
0
        /// <summary> 进入本丸</summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            var user       = session.Player.User;
            var playerdata = Variable.Activity.Siege.PlayerData.FirstOrDefault(m => m.user_id == user.id);

            if (playerdata == null)
            {
                return(new ASObject(Common.GetInstance().BuildData((int)ResultType.SIEGE_NO_PLAYER_DATA)));                    //验证玩家活动数据
            }
            if (playerdata.count < 1)
            {
                return(new ASObject(Common.GetInstance().BuildData((int)ResultType.SIEGE_YUNTI_ERROR)));                  //验证云梯数
            }
            var rivalcamp = user.player_camp == (int)CampType.East ? (int)CampType.West : (int)CampType.East;             //对手阵营
            var boss      = Variable.Activity.Siege.BossCondition.FirstOrDefault(m => m.player_camp == rivalcamp);

            if (boss == null)
            {
                return(new ASObject(Common.GetInstance().BuildData((int)ResultType.SIEGE_NO_PLAYER_DATA)));                //验证Boss数据
            }
            if (boss.GateLife > 0 || boss.GateLife > 0)
            {
                return(new ASObject(Common.GetInstance().BuildData((int)ResultType.SIEGE_BOSS_ERROR)));                                       //验证前2个Boss是否死掉
            }
            playerdata.fame += playerdata.count;
            lock (this) { boss.BaseLife -= playerdata.count; }
            playerdata.count = 0;

            PUSH_OURS_HP.GetInstance().CommandStart(user.player_camp, rivalcamp, (int)SiegeNpcType.BASE, boss.BaseLife, playerdata.fame);
            return(new ASObject(BuildData((int)ResultType.SUCCESS)));
        }
Beispiel #3
0
        /// <summary> 攻大将</summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            var user       = session.Player.User;
            var playerdata = Common.GetInstance().GetSiegePlayer(user.id, user.player_camp);
            var rivalcamp  = user.player_camp == (int)CampType.East ? (int)CampType.West : (int)CampType.East;      //对手阵营
            var boss       = Variable.Activity.Siege.BossCondition.FirstOrDefault(m => m.player_camp == rivalcamp); //对手BOSS数据
            var result     = IsData(playerdata, boss);

            if (result != ResultType.SUCCESS)
            {
                return(new ASObject(Common.GetInstance().BuildData((int)result)));
            }

            var npcboss = Variable.BASE_NPCSIEGE.FirstOrDefault(m => m.type == (int)SiegeNpcType.BOSS && m.camp == rivalcamp);

            if (npcboss == null)
            {
                return(new ASObject(Common.GetInstance().BuildData((int)ResultType.BASE_TABLE_ERROR)));                //验证基表数据
            }
            Int64 hrut = 0;
            var   vo   = GetFightResult(user.id, npcboss.armyId, boss.BossLife, ref hrut); //调用战斗

            if (vo == null)
            {
                return(new ASObject(Common.GetInstance().BuildData((int)ResultType.FIGHT_ERROR)));        //验证战斗
            }
            boss = Variable.Activity.Siege.BossCondition.FirstOrDefault(m => m.player_camp == rivalcamp); //对手BOSS数据
            lock (this)
            {
                boss.BossLife -= hrut;
                if (boss.BossLife <= 0)
                {
                    playerdata.fame += Variable.Activity.Siege.BaseData.WinFame;
                }
                playerdata.hurt  += hrut;
                playerdata.count -= Variable.Activity.Siege.BaseData.BossLadder;
                PUSH_OURS_HP.GetInstance().CommandStart(user.player_camp, rivalcamp, (int)SiegeNpcType.BOSS, Convert.ToInt32(boss.BossLife), 0);
            }


            var times = Variable.Activity.Siege.BaseData.AShotTime;
            int count = vo.moves.Sum(item => item.Count());

            if (count < 5)
            {
                times += 1000;
            }
            var time = Convert.ToDouble((DateTime.Now.Ticks - 621355968000000000) / 10000);

            playerdata.bosstime = time + (count * times);
            return(new ASObject(BuildData((int)ResultType.SUCCESS, playerdata.count, vo)));
        }