public static void HandleGameActionFightCastOnTargetRequest(GameActionFightCastOnTargetRequestMessage message, WorldClient client) { if (client.Character.Fighting) { CharacterSpell spell = client.Character.Fighter.GetSpell(message.spellId); Fighter fighter = client.Character.Fighter.Fight.GetFighter((int)message.targetId); if (spell != null && fighter != null) { if (fighter.CanBeTargeted(client.Character)) { client.Character.Fighter.CastSpell(spell.Template, spell.Grade, fighter.CellId, fighter.Id); } } else { client.Character.ReplyError("Fatal error while casting spell!!"); } } }
public static void HandleGameActionFightCastOnTargetRequestMessage(WorldClient client, GameActionFightCastOnTargetRequestMessage message) { if (!client.Character.IsFighting()) { return; } var fighter = client.Character.Fighter; var spell = fighter.IsSlaveTurn() ? fighter.GetSlave().GetSpell(message.spellId) : fighter.GetSpell(message.spellId); if (spell == null) { return; } var target = client.Character.Fight.GetOneFighter((int)message.targetId); if (target == null) { return; } if (target.GetVisibleStateFor(fighter) == GameActionFightInvisibilityStateEnum.INVISIBLE) { //Impossible de lancer ce sort : la cellule visée n'est pas valide ! client.Character.SendInformationMessage(TextInformationTypeEnum.TEXT_INFORMATION_ERROR, 193); return; } if (fighter.IsSlaveTurn()) { fighter.GetSlave().CastSpell(spell, target.Cell); } else { fighter.CastSpell(spell, target.Cell); } }
public static void HandleGameActionFightCastOnTargetRequestMessage(WorldClient client, GameActionFightCastOnTargetRequestMessage message) { if (client.Character.IsFighting()) { CharacterSpell spell = client.Character.Spells.GetSpell((int)message.spellId); if (spell != null) { FightActor oneFighter = client.Character.Fight.GetOneFighter(message.targetId); if (oneFighter != null) { client.Character.Fighter.CastSpell(spell, oneFighter.Cell); } } } }
public static void HandleSpellCastOnTarget(GameActionFightCastOnTargetRequestMessage message, WorldClient client) { client.Character.FighterInstance.CastSpellOnTarget(message.spellId, message.targetId); }
public void LaunchSpell(int spellId, int cellId) { foreach (BFighter fighter in Fighters) { if (fighter.CellId == cellId) { GameActionFightCastOnTargetRequestMessage msg = new GameActionFightCastOnTargetRequestMessage((short)spellId, fighter.Id); m_Account.SocketManager.Send(msg); m_Account.Log(new ActionTextInformation("Lancement d'un sort en " + cellId), 5); return; } } using (BigEndianWriter writer = new BigEndianWriter()) { GameActionFightCastRequestMessage msg = new GameActionFightCastRequestMessage((short)spellId, (short)cellId); msg.Serialize(writer); writer.Content = m_Account.HumanCheck.hash_function(writer.Content); MessagePackaging pack = new MessagePackaging(writer); pack.Pack((int)msg.ProtocolID); m_Account.SocketManager.Send(pack.Writer.Content); m_Account.Log(new ActionTextInformation("Lancement d'un sort en " + cellId), 5); } }