Beispiel #1
0
 private bool JNH16SeriesValid(Player player, int type, string fuse,
     string skillName, FiveElement elem, FiveElement adv, FiveElement disadv)
 {
     if (type == 0)
     {
         return Artiad.JoinPetEffects.Parse(fuse).List.Any(p => p.Pets.Any(q =>
             XI.LibTuple.ML.Decode(q) != null && XI.LibTuple.ML.Decode(q).Element == elem));
     }
     else if (type == 1)
     {
         return Artiad.CollapsePetEffects.Parse(fuse).List.Any(p => p.Pets.Any(q =>
             XI.LibTuple.ML.Decode(q) != null && XI.LibTuple.ML.Decode(q).Element == elem));
     }
     else if (type == 2 || type == 3)
     {
         int thisEle = elem.Elem2Index();
         int advEle = adv.Elem2Index();
         return IsMathISOS(skillName, player, fuse) && XI.Board.Garden.Values.
             Any(p => p.IsAlive && (p.Pets[thisEle] != 0 || p.Pets[advEle] != 0));
     }
     else if (type == 4 || (type == 5 && XI.Board.IsMonsterDebut))
     {
         Monster fieldMon = XI.LibTuple.ML.Decode(XI.Board.Monster1);
         return fieldMon != null && fieldMon.Element == disadv;
     }
     else if (type == 6)
     {
         Artiad.ObtainPet opt = Artiad.ObtainPet.Parse(fuse);
         return opt.Pets.Any(p => XI.LibTuple.ML.Decode(p).Element == adv);
     }
     else if (type == 7)
     {
         Artiad.LosePet lpt = Artiad.LosePet.Parse(fuse);
         return lpt.Pets.Any(p => XI.LibTuple.ML.Decode(p).Element == adv);
     }
     else
         return false;
 }
Beispiel #2
0
 private void JNH16SeriesAction(Player player, int type, string fuse,
     string skillName, FiveElement elem, FiveElement adv, FiveElement disadv)
 {
     if (type == 0)
     {
         Artiad.JoinPetEffects.Parse(fuse).List.ForEach(p =>
         {
             int cnt = p.Pets.Count(q => XI.LibTuple.ML.Decode(q) != null &&
                 XI.LibTuple.ML.Decode(q).Element == elem);
             if (cnt > 0)
             {
                 XI.RaiseGMessage("G0IA," + p.Owner + ",0," + cnt);
                 XI.RaiseGMessage("G0IX," + p.Owner + ",0," + cnt);
             }
         });
     }
     else if (type == 1)
     {
         Artiad.CollapsePetEffects.Parse(fuse).List.ForEach(p =>
         {
             int cnt = p.Pets.Count(q => XI.LibTuple.ML.Decode(q) != null &&
                 XI.LibTuple.ML.Decode(q).Element == elem);
             if (cnt > 0)
             {
                 XI.RaiseGMessage("G0OA," + p.Owner + ",0," + cnt);
                 XI.RaiseGMessage("G0OX," + p.Owner + ",0," + cnt);
             }
         });
     }
     else if (type == 2)
     {
         int thisEle = elem.Elem2Index();
         int advEle = adv.Elem2Index();
         List<ushort> actionPets = new List<ushort>();
         foreach (Player py in XI.Board.Garden.Values.Where(p => p.IsAlive && !p.PetDisabled))
         {
             if (py.Pets[thisEle] != 0 && !XI.Board.NotActionPets.Contains(py.Pets[thisEle]))
             {
                 XI.RaiseGMessage("G0IA," + py.Uid + ",0,1");
                 XI.RaiseGMessage("G0IX," + py.Uid + ",0,1");
             }
             if (py.Pets[advEle] != 0)
                 actionPets.Add(py.Pets[advEle]);
         }
         if (actionPets.Count > 0)
             XI.RaiseGMessage(new Artiad.DisableItPetEffect() { Its = actionPets.ToArray() }.ToMessage());
     }
     else if (type == 3)
     {
         int thisEle = elem.Elem2Index();
         int advEle = adv.Elem2Index();
         List<ushort> actionPets = new List<ushort>();
         foreach (Player py in XI.Board.Garden.Values.Where(p => p.IsAlive && !p.PetDisabled))
         {
             if (py.Pets[thisEle] != 0 && !XI.Board.NotActionPets.Contains(py.Pets[thisEle]))
             {
                 XI.RaiseGMessage("G0OA," + py.Uid + ",0,1");
                 XI.RaiseGMessage("G0OX," + py.Uid + ",0,1");
             }
             if (py.Pets[advEle] != 0)
                 actionPets.Add(py.Pets[advEle]);
         }
         if (actionPets.Count > 0)
             XI.RaiseGMessage(new Artiad.EnableItPetEffect() { Its = actionPets.ToArray() }.ToMessage());
     }
     else if (type == 4)
         XI.Board.IsMonsterDebut = true;
     else if (type == 5)
         XI.RaiseGMessage("G0IW," + XI.Board.Monster1 + ",1");
     else if (type == 6)
     {
         Artiad.ObtainPet opt = Artiad.ObtainPet.Parse(fuse);
         opt.Pets.Where(p => XI.LibTuple.ML.Decode(p).Element == adv)
             .ToList().ForEach(p => XI.Board.NotActionPets.Add(p));
     }
     else if (type == 7)
     {
         Artiad.LosePet lpt = Artiad.LosePet.Parse(fuse);
         lpt.Pets.Where(p => XI.LibTuple.ML.Decode(p).Element == adv)
             .ToList().ForEach(p => XI.Board.NotActionPets.Add(p));
     }
 }