예제 #1
0
        public static void Configure()
        {
            string        space       = "Server.Mobiles.Dons";
            List <string> donsClasses = NubiaHelper.getAllClasses(space);

            Console.ForegroundColor = ConsoleColor.Yellow;
            foreach (string clstr in donsClasses)
            {
                Type cltype = Type.GetType(space + "." + clstr);
                // Console.WriteLine("Type: " + cltype);
                if (cltype != null)
                {
                    if (cltype.IsSubclassOf(typeof(BaseDon)) && !cltype.IsAbstract)
                    {
                        try
                        {
                            BaseDon don = (BaseDon)cltype.GetConstructor(Type.EmptyTypes).Invoke(new object[0]);
                            Console.WriteLine("- Don: " + don.Name + " (DonEnum." + don.DType.ToString() + ")");
                            DonBank.Add(don.DType.ToString().ToLower(), don);
                            don = null;
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.Message);
                        }
                    }
                }
            }
            Console.WriteLine("## {0} dons au total", DonBank.Count);
            Console.WriteLine("");
            Console.ForegroundColor = ConsoleColor.White;
        }
예제 #2
0
        /*   public void LearnDonClasse(Classe classe, int niveau)
         * {
         *     if (classe.DonClasse.Length <= niveau )
         *     {
         *         Console.WriteLine("Aucun don pour la classe " + classe.ToString() + " a partir du niveau " + niveau);
         *         return;
         *     }
         *
         *     for (int d = 0; d < classe.DonClasse[niveau].Length; d++)
         *     {
         *         DonEnum don = classe.DonClasse[niveau][d];
         *
         *         DonEntry entry = new DonEntry(don, classe.CType, niveau);
         *         if( mDons.ContainsKey(don) )
         *             mDons[don].Value++;
         *         else
         *             mDons.Add(don, entry);
         *
         *         ///TODOOOOOOOOOOOOO !!!
         *         if (don == DonEnum.DonSupClasse)
         *         {
         *             if (mOwner.DonCredits.ContainsKey(classe.CType))
         *                 mOwner.DonCredits[classe.CType]++;
         *             else
         *                 mOwner.DonCredits.Add(classe.CType, 1);
         *             canUpClasse();
         *         }
         *         else
         *             mOwner.SendMessage("Vous gagnez le don {0} {1}", BaseDon.getDonName(don), (entry.Value > 1 ? "( Rang " + entry.Value.ToString() + " )" : ""));
         *
         *     }
         * }*/

        /*    public void CompileDonClasse()
         *  {
         *      if (mOwner == null)
         *          return;
         *      //Vérification des dons
         *
         *      //On vire, par sécurité, tout les dons de classe
         *      List<DonEnum> toRemove = new List<DonEnum>();
         *
         *
         *          foreach (DonEntry d in mDons.Values)
         *          {
         *              if ( d.Classe != ClasseType.None ) //Don de classe
         *                  toRemove.Add(d.Don);
         *          }
         *          foreach (DonEnum r in toRemove)
         *          {
         *              if (mDons.ContainsKey(r))
         *              {
         *                 // SendMessage("Vous perdez le don: ", r.ToString());
         *                  mDons.Remove(r);
         *              }
         *          }
         *
         *
         *      foreach ( Classe c in mOwner.GetClasses() )
         *      {
         *          for (int i = 0; i < c.DonClasse.Length && i <= c.Niveau; i++)
         *          {
         *              for (int d = 0; d < c.DonClasse[i].Length; d++)
         *              {
         *                  DonEnum don = c.DonClasse[i][d];
         *                  if (don == DonEnum.DonSupClasse)
         *                  {
         *                      //mDonClasseToChoose.Add(new DonEntry(DonEnum.DonSupClasse, c.CType, i));
         *                      mOwner.SendMessage(2049, "Vous gagnez un don supplémentaire ("+Classe.GetNameClasse(c.CType)+")");
         *                  }
         *                  else
         *                  {
         *                      if (mDons.ContainsKey(don))
         *                          mDons[don].Value++;
         *                      else
         *                          mDons.Add(don, new DonEntry(don, c.CType, i));
         *
         *                      if (don == DonEnum.PerfectionEtre)
         *                          mOwner.CreatureType = MobileType.Exterieur;
         *
         *                      if (!toRemove.Contains(don))
         *                      {
         *                          string dname = "";
         *                          if (BaseDon.DonBank.ContainsKey(don.ToString().ToLower()))
         *                              dname = BaseDon.DonBank[don.ToString().ToLower()].Name;
         *                          else
         *                              dname = don.ToString();
         *                          mOwner.SendMessage(2049, "Vous gagnez le don: " + dname + " ( rang " + mDons[don].Value + " )");
         *                      }
         *
         *                      mCountDonClasse++;
         *                  }
         *              }
         *          }
         *      }
         *  }*/

        public bool canUseDon(BaseDon don)
        {
            if (mOwner == null)
            {
                return(false);
            }
            if (mNextDonUse > DateTime.Now)
            {
                mOwner.SendMessage("Il est encore trop tôt pour utiliser un don");
                return(false);
            }
            if (hasDon(don.DType))
            {
                if (don.LimiteDayUse)
                {
                    int uses    = mDonUsed[don.DType];
                    int maxUses = getDonNiveau(don.DType);
                    if (don.DType == DonEnum.CoupEtourdissant)
                    {
                        maxUses = mOwner.Niveau / 4;
                        if (mOwner.hasClasse(ClasseType.Moine))
                        {
                            maxUses += mOwner.getNiveauClasse(ClasseType.Moine) / 4;
                        }
                    }
                    if (uses >= maxUses)
                    {
                        mOwner.SendMessage("Vous ne pouvez plus utiliser ce don (Utilisé déjà {0} fois ce jour)", uses);
                        return(false);
                    }
                    else
                    {
                        uses++;
                        mDonUsed[don.DType] = uses;
                        return(true);
                    }
                }
                else
                {
                    return(true);
                }
            }
            return(false);
        }
예제 #3
0
        public static void donUse_OnCommand(CommandEventArgs e)
        {
            NubiaPlayer p = e.Mobile as NubiaPlayer;

            string[] args = e.Arguments;
            if (args.Length > 0)
            {
                string rawName = args[0];
                rawName = rawName.ToLower();
                if (DonBank.ContainsKey(rawName))
                {
                    BaseDon don = DonBank[rawName];
                    if (!p.hasDon(don.DType))
                    {
                        p.SendMessage("Vous ne possèdez pas ce don");
                        return;
                    }
                    if (don.CanUse)
                    {
                        if (p.canUseDon(don))
                        {
                            p.SendMessage("Vous utilisez {0}", don.Name);
                            don.OnUse(p);
                        }
                    }
                    else
                    {
                        p.SendMessage("{0} n'est pas un don actif", don.Name);
                    }
                }
                else
                {
                    p.SendMessage("Le don de nom brut '{0}' n'existe pas", rawName);
                }
            }
            else
            {
                p.SendMessage("Utilisation: .don [nom brut du don]");
            }
        }