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; }
/* 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); }
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]"); } }