/// <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); } }
/// <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))); }
/// <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))); }
/// <summary>PUSH_OURS_HP单体模式</summary> public static PUSH_OURS_HP GetInstance() { return(_objInstance ?? (_objInstance = new PUSH_OURS_HP())); }