/// <summary> 获取奖励字符串 </summary> public string GetRewardString(BaseTaskVocation baseinfo, TGGSession session) { if (CheckRewardCondition(baseinfo.rewardMaxCondition, session.Player.Role.CloneEntity())) { return(baseinfo.rewardMax); } return(CheckRewardCondition(baseinfo.rewardMediumCondition, session.Player.Role) ? baseinfo.rewardMedium : baseinfo.reward); }
/// <summary>刺杀结果</summary> public bool KillTask(int npc, BaseTaskVocation basetask, int camp, int rolelevel, ref tg_task task) { int result = 0; var t = task.CloneEntity(); var mysteplist = task.task_step_data.Split('_').ToList(); if (mysteplist[1] != npc.ToString()) { return(false); } int npcid = 0; npcid = camp == (int)CampType.East ? GetNpcId((int)CampType.West, rolelevel) : GetNpcId((int)CampType.East, rolelevel);//npcid = 15010001;//测试 var kill = Common.GetInstance().GetWorkInfo(task.user_id); kill.KillNpcid = npcid; var watchlist = Variable.WorkInfo.Where(m => m.WatchNpcid == npcid && m.P_State == 0).ToList(); if (watchlist.Any()) //判断有没有守护玩家 { if (kill.KillState == (int)TaskKillType.WIN) //判断是否已挑战了守护玩家 { result = NpcChallenge(task.user_id, npcid, FightType.NPC_MONSTER); } else { if (!KillWatch(watchlist, task.user_id)) { return(false); } return(true); } } else { result = NpcChallenge(task.user_id, npcid, FightType.NPC_MONSTER); } if (result == (int)FightResultType.WIN) { task.task_step_data = basetask.stepCondition; task.task_state = (int)TaskStateType.TYPE_REWARD; task.Update(); } kill.KillNpcid = 0; kill.KillState = 0; return(true); }
/// <summary>守护任务</summary> public bool WatchTask(int npc, BaseTaskVocation basetask, int camp, int rolelevel, ref tg_task task) { var mysteplist = task.task_step_data.Split('_').ToList(); var t = task.CloneEntity(); if (mysteplist[1] != npc.ToString()) { return(false); } //随机生成npcid var npcid = GetNpcId(camp, rolelevel); //npcid = 15010622;//测试 var watch = GetWorkInfo(task.user_id); if (watch.WatchNpcid == 0) { watch.WatchNpcid = npcid; } WatchThreading(basetask.time * 1000, task);//开始任务 return(true); }
/// <summary> /// 技能验证 /// </summary> /// <param name="basetask"></param> /// <param name="role"></param> /// <returns></returns> private bool CheckSkill(BaseTaskVocation basetask, RoleItem role) { try { if (basetask.stepCondition == "") { return(true); } var sc = basetask.skillCondition.Split('_'); var type = Convert.ToInt32(sc[0]); //0:技能 1属性 var type1 = Convert.ToInt32(sc[1]); //技能或者属性类型 var value = Convert.ToInt32(sc[2]); //技能或者属性值 if (type == 0) { #region 技能 switch (type1) { case (int)LifeSkillType.ARTILLERY: return(role.LifeSkill.sub_artillery_level >= value); case (int)LifeSkillType.ARCHER: return(role.LifeSkill.sub_archer_level >= value); case (int)LifeSkillType.ASHIGARU: return(role.LifeSkill.sub_ashigaru_level >= value); case (int)LifeSkillType.BUILD: return(role.LifeSkill.sub_build_level >= value); case (int)LifeSkillType.CALCULATE: return(role.LifeSkill.sub_calculate_level >= value); case (int)LifeSkillType.CRAFT: return(role.LifeSkill.sub_craft_level >= value); case (int)LifeSkillType.ELOQUENCE: return(role.LifeSkill.sub_eloquence_level >= value); case (int)LifeSkillType.EQUESTRIAN: return(role.LifeSkill.sub_equestrian_level >= value); case (int)LifeSkillType.ETIQUETTE: return(role.LifeSkill.sub_etiquette_level >= value); case (int)LifeSkillType.MARTIAL: return(role.LifeSkill.sub_martial_level >= value); case (int)LifeSkillType.MEDICAL: return(role.LifeSkill.sub_medical_level >= value); case (int)LifeSkillType.MINE: return(role.LifeSkill.sub_mine_level >= value); case (int)LifeSkillType.NINJITSU: return(role.LifeSkill.sub_ninjitsu_level >= value); case (int)LifeSkillType.RECLAIMED: return(role.LifeSkill.sub_reclaimed_level >= value); case (int)LifeSkillType.TACTICAL: return(role.LifeSkill.sub_tactical_level >= value); case (int)LifeSkillType.TEA: return(role.LifeSkill.sub_tea_level >= value); } #endregion } if (type != 1) { return(true); } #region 属性 switch (type1) { case (int)RoleAttributeType.ROLE_CAPTAIN: return((int)tg_role.GetSingleTotal(RoleAttributeType.ROLE_CAPTAIN, role.Kind) >= value); case (int)RoleAttributeType.ROLE_FORCE: return((int)tg_role.GetSingleTotal(RoleAttributeType.ROLE_FORCE, role.Kind) >= value); case (int)RoleAttributeType.ROLE_BRAINS: return((int)tg_role.GetSingleTotal(RoleAttributeType.ROLE_BRAINS, role.Kind) >= value); case (int)RoleAttributeType.ROLE_CHARM: return((int)tg_role.GetSingleTotal(RoleAttributeType.ROLE_CHARM, role.Kind) >= value); case (int)RoleAttributeType.ROLE_GOVERN: return((int)tg_role.GetSingleTotal(RoleAttributeType.ROLE_GOVERN, role.Kind) >= value); } #endregion return(true); } catch (Exception ex) { XTrace.WriteException(ex); return(false); } }