/// <summary> /// 被祝福者得到的道具与数量 /// </summary> /// <param name="beBless"></param> /// <param name="count"></param> /// <returns></returns> private static string BeBless(Variant beBless, out int count) { int min = beBless.GetIntOrDefault("Min"); int max = beBless.GetIntOrDefault("Max"); Variant goods = beBless.GetValueOrDefault<Variant>("GoodsID"); int rate = NumberRandom.Next(0, 100); string goodsid = ""; foreach (var k in goods) { string[] strs = k.Value.ToString().Split('-'); int m = Convert.ToInt32(strs[0]); int n = Convert.ToInt32(strs[1]); if (rate >= m && rate <= n) { goodsid = k.Key; break; } } count = NumberRandom.Next(min, max + 1); return goodsid; }
/// <summary> /// 检查对象是否满足条件 /// </summary> /// <param name="f"></param> /// <param name="condition"></param> /// <returns></returns> static bool checkCondition(FightObject f, Variant condition, int round) { Variant caseHp = condition.GetVariantOrDefault("CaseHP"); Variant caseMp = condition.GetVariantOrDefault("CaseMP"); IList caseBuff = condition.GetValueOrDefault<IList>("CaseBuff"); IList caseRound = condition.GetValueOrDefault<IList>("CaseRound"); if (caseHp != null) { double a = caseHp.GetDoubleOrDefault("A"); double b = caseHp.GetDoubleOrDefault("B"); if (a > 0 && a < 1) //百分比 { double test = (f.HP * 1.0) / f.Life.ShengMing; if (test <= a || test > b) { return false; } } else { if (f.HP <= a || f.HP > b) { return false; } } } if (caseMp != null) { double a = caseMp.GetDoubleOrDefault("A"); double b = caseMp.GetDoubleOrDefault("B"); if (a > 0 && a < 1) //百分比 { double test = (f.MP * 1.0) / f.Life.MoFa; if (test <= a || test > b) { return false; } } else { if (f.MP <= a || f.MP > b) { return false; } } } if (caseBuff != null) { bool find = false; foreach (var b in f.Buffers) { if (caseBuff.Contains(b.ID)) { find = true; break; } } if (!find) return false; } if (caseRound != null && caseRound.Count > 0) { return caseRound.Contains(round); } return true; }
/// <summary> /// 竞技场创建限制 /// </summary> /// <param name="note"></param> /// <param name="model">选择条件</param> /// <param name="v">限制条件</param> /// <returns></returns> private static bool ArenaLimit(UserNote note, ArenaBase model, Variant v) { int score = 0; int level = note.Player.Level; int fightvalue = 0; Variant gametime = v.GetValueOrDefault<Variant>("GameTime").GetValueOrDefault<Variant>(model.GameTime.ToString()); if (gametime == null) { //请选择战斗时长 note.Call(ArenaCommand.CreateArenaR, false, TipManager.GetMessage(ArenaReturn.ArenaLimit1)); return false; } score += gametime.GetIntOrDefault("Score"); fightvalue += gametime.GetIntOrDefault("FightValue"); Variant group = v.GetValueOrDefault<Variant>("Group").GetValueOrDefault<Variant>(model.Group.ToString()); if (group == null) { //请选择分组 note.Call(ArenaCommand.CreateArenaR, false, TipManager.GetMessage(ArenaReturn.ArenaLimit2)); return false; } score += group.GetIntOrDefault("Score"); fightvalue += group.GetIntOrDefault("FightValue"); if (!string.IsNullOrEmpty(model.PassWord)) { Variant password = v.GetValueOrDefault<Variant>("PassWord").GetValueOrDefault<Variant>("1"); if (password != null) { score += password.GetIntOrDefault("Score"); fightvalue += password.GetIntOrDefault("FightValue"); } } Variant petlevel = v.GetValueOrDefault<Variant>("PetLevel").GetValueOrDefault<Variant>(model.PetMin + "-" + model.PetMax); if (petlevel == null) { //请选择战宠等级 note.Call(ArenaCommand.CreateArenaR, false, TipManager.GetMessage(ArenaReturn.ArenaLimit3)); return false; } score += petlevel.GetIntOrDefault("Score"); fightvalue += petlevel.GetIntOrDefault("FightValue"); Variant petnumber = v.GetValueOrDefault<Variant>("PetNumber").GetValueOrDefault<Variant>(model.PetNumber.ToString()); if (petnumber == null) { //请选择各组产战宠物数量 note.Call(ArenaCommand.CreateArenaR, false, TipManager.GetMessage(ArenaReturn.ArenaLimit4)); return false; } score += petnumber.GetIntOrDefault("Score"); fightvalue += petnumber.GetIntOrDefault("FightValue"); Variant preparetime = v.GetValueOrDefault<Variant>("PrepareTime").GetValueOrDefault<Variant>(model.PrepareTime.ToString()); if (preparetime == null) { //请选择准备时间 note.Call(ArenaCommand.CreateArenaR, false, TipManager.GetMessage(ArenaReturn.ArenaLimit5)); return false; } score += preparetime.GetIntOrDefault("Score"); fightvalue += preparetime.GetIntOrDefault("FightValue"); Variant scene = v.GetValueOrDefault<Variant>("Scene").GetValueOrDefault<Variant>(model.Scene.ToString()); if (scene == null) { //请选择竞技场 note.Call(ArenaCommand.CreateArenaR, false, TipManager.GetMessage(ArenaReturn.ArenaLimit6)); return false; } Variant userpets = v.GetValueOrDefault<Variant>("UserPets").GetValueOrDefault<Variant>(model.UserPets.ToString()); if (userpets == null) { //请选择角色参战宠物数量 note.Call(ArenaCommand.CreateArenaR, false, TipManager.GetMessage(ArenaReturn.ArenaLimit7)); return false; } score += userpets.GetIntOrDefault("Score"); fightvalue += userpets.GetIntOrDefault("FightValue"); Variant fightpoor = v.GetValueOrDefault<Variant>("FightPoor").GetValueOrDefault<Variant>(model.FightPoor.ToString()); if (fightpoor == null) { //请选择战绩差 note.Call(ArenaCommand.CreateArenaR, false, TipManager.GetMessage(ArenaReturn.ArenaLimit8)); return false; } score += fightpoor.GetIntOrDefault("Score"); fightvalue += fightpoor.GetIntOrDefault("FightValue"); //if (note.Player.FightValue< fightvalue) //{ // note.Call(ArenaCommand.CreateArenaR, false, "战绩值不足"); // return false; //} if (score < 0) { //配置有问题 note.Call(ArenaCommand.CreateArenaR, false, TipManager.GetMessage(ArenaReturn.ArenaLimit9)); return false; } if (note.Player.Score < score) { //石币不足,不能创建 note.Call(ArenaCommand.CreateArenaR, false, TipManager.GetMessage(ArenaReturn.ArenaLimit10)); return false; } if (!note.Player.AddScore(-score, FinanceType.CreateArena)) { //石币不足,不能创建 note.Call(ArenaCommand.CreateArenaR, false, TipManager.GetMessage(ArenaReturn.ArenaLimit10)); return false; } //if (!note.Player.AddFightValue(-fightvalue, true, FinanceType.CreateArena)) //{ // note.Call(ArenaCommand.CreateArenaR, false, "战绩值不足"); // return false; //} //战绩设置 model.FightValue = note.Player.FightValue; return true; }