public virtual bool canCast(NubiaPlayer from, bool checkCondition) { //Console.WriteLine("CanCast de SortNubia: "+Nom); if (Owner == null) { return(false); } if (!CheckCondition() && checkCondition) { Owner.PrivateOverheadMessage(MessageType.Emote, 2117, true, "Toute les conditions ne sont pas rempli pour ce sort", Owner.NetState); return(false); } //TODO: Compétences de magie if (/*from.getValueFor( categorie ) < miniCategorie || from.getValueFor( competence ) < miniCompetence || from.Skills[skill].Base < miniSkill ||*/from.ManaMax < chakra) { Owner.PrivateOverheadMessage(MessageType.System, 0, true, "Il vous manque de la puissance ou des connaissances pour ce sort", Owner.NetState); return(false); } if (from.Mana < chakra) { Owner.PrivateOverheadMessage(MessageType.System, 0, true, "Vous manquez de Chakra", Owner.NetState); m_disturb = MagieDisturb.Mana; return(false); } return(true); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); m_owner = (NubiaPlayer)reader.ReadMobile(); m_createur = reader.ReadString(); m_name = reader.ReadString(); m_time = reader.ReadDouble(); m_timeToCast = reader.ReadDouble(); m_maitrise = reader.ReadDouble(); m_distance = reader.ReadInt(); m_energie = (SortEnergie)reader.ReadInt(); // m_skill = (SkillName)reader.ReadInt(); m_emote = reader.ReadString(); m_couleur = (MagieColor)reader.ReadInt(); m_state = (MagieState)reader.ReadInt(); m_disturb = (MagieDisturb)reader.ReadInt(); m_condition = (MagieCondition)reader.ReadInt(); m_Object = (Item)reader.ReadItem(); m_Mobile = (Mobile)reader.ReadMobile(); m_SortNubia = (SortNubia)reader.ReadItem(); if (m_owner != null) { m_owner.Magie.addSort(this); } //Console.WriteLine("Deserialize SortNubia: " +Nom); }
public bool isDisturb() { if (disturb != MagieDisturb.None) { Owner.PrivateOverheadMessage(MessageType.System, 1645, true, SortNubiaHelper.GetDisturbMessage(disturb), Owner.NetState); m_state = MagieState.None; m_disturb = MagieDisturb.None; return(true); } return(false); }
public static string GetDisturbMessage(MagieDisturb dis) { switch (dis) { case MagieDisturb.SortNubia: return("Interruption de votre SortNubia"); break; case MagieDisturb.Mort: return(""); break; case MagieDisturb.Mouvement: return("Vous perdez votre concentration"); break; case MagieDisturb.Mana: return("Vous n'avez plus assez de chakra"); break; } return("Interruption pour cause inconnu"); }
public virtual void EndSortNubia() //Pour les timers général sur le timer Turn du Konoha Player { //Console.WriteLine("End de SortNubia: "+Nom); m_state = MagieState.None; m_disturb = MagieDisturb.None; if (Owner == null) { return; } //Fin des fils for (int i = 0; i < Owner.Magie.Sorts.Count; i++) { if (Owner.Magie.Sorts[i] is SortNubia) { SortNubia jut = Owner.Magie.Sorts[i] as SortNubia; if (jut.SortNubiaPere == this) { jut.EndSortNubia(); } } } }
public virtual bool Cast() { //Console.WriteLine("Cast de SortNubia: "+Nom); LastUse = DateTime.Now; if (m_owner == null) { return(false); } if (m_owner.Mana < chakra && !(m_owner.AccessLevel >= AccessLevel.GameMaster)) { m_disturb = MagieDisturb.Mana; } if (!(m_owner.AccessLevel >= AccessLevel.GameMaster)) { m_owner.Mana -= chakra; } if (isDisturb()) { return(false); } m_state = MagieState.WaitEnd; if (mustCrier) { m_owner.PublicOverheadMessage(MessageType.Regular, 0, true, Nom + "!"); //m_owner.Say(Nom+"!"); } else { m_owner.SendMessage("Vous executez votre sort: " + Nom); } if (m_owner.AccessLevel >= AccessLevel.GameMaster) { Maitrise = 120.0; } if (Maitrise >= 120.0) { return(true); } double tempo = Maitrise; if (Utility.RandomMinMax(0, (int)Maitrise) < 50) { if (Maitrise > 80) { m_maitrise += (double)((double)Utility.RandomMinMax(10, 5) / 10.0); } else if (Maitrise > 70) { m_maitrise += (double)((double)Utility.RandomMinMax(20, 10) / 10.0); } else if (Maitrise > 60) { m_maitrise += (double)((double)Utility.RandomMinMax(40, 20) / 10.0); } else if (Maitrise > 50) { m_maitrise += (double)((double)Utility.RandomMinMax(70, 100) / 10.0); } else { m_maitrise += (double)((double)Utility.RandomMinMax(100, 150) / 10.0); } } if (tempo < Maitrise) { Owner.SendMessage("Maitrise de " + m_name + ": " + m_maitrise + " %"); } return(true); }
public virtual void StartCast() { if (Owner == null) { Console.WriteLine("WARNING: Aucun owner pour le SortNubia " + Nom); return; } NubiaPlayer from = Owner as NubiaPlayer; //Console.WriteLine("Debut de SortNubia: "+Nom); // Console.WriteLine("State: "+sta if (!isFinish()) { from.PrivateOverheadMessage(MessageType.System, 0, true, "Vous mettez fin au effet du sort", from.NetState); EndSortNubia(); return; } if (from.isTransfo && (!(this is SortNubiaTao) && !(from.BodyValue == 400 || from.BodyValue == 401))) { if (!(condition == MagieCondition.SortNubia && SortNubiaPere == from.GetTransfo())) { from.PrivateOverheadMessage(MessageType.System, 0, true, "Vous êtes transformé", from.NetState); return; } } if (!timeStateOk() && !InCast() && !(from.AccessLevel >= AccessLevel.GameMaster)) { from.PrivateOverheadMessage(MessageType.System, 0, true, "Vous ne pouvez pas encore utilser cette technique", from.NetState); //EndSortNubia(); return; } if (!checkForOtherCast() && !(from.AccessLevel >= AccessLevel.GameMaster)) { from.PrivateOverheadMessage(MessageType.System, 0, true, "Vous être en train d'executez un SortNubia", from.NetState); //EndSortNubia(); return; } if (!canCast(Owner) && !(from.AccessLevel >= AccessLevel.GameMaster)) { return; } //Private/public Regular/Spell //from.PublicOverheadMessage( MessageType.Emote, 0,true, "*Forme une série de signes*"); if (isGestuel) { from.Emote("*Forme une série de signes*"); from.FixedParticles(0x376A, 1, (int)m_timeToCast * 13, 0x251D, from.ChakraColor, 0, EffectLayer.Waist); } else { from.SendMessage("Vous préparez une technique sans gestuel"); } m_disturb = MagieDisturb.None; m_state = MagieState.InCast; InternalTimer timer = new InternalTimer(true, this, (m_timeToCast / 2.0)); timer.Start(); }
public void doMoveDisturb() { m_disturb = MagieDisturb.Mouvement; }