コード例 #1
0
        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!!");
                }
            }
        }
コード例 #2
0
ファイル: ContextFightHandler.cs プロジェクト: Mixi59/Stump
        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);
            }
        }
コード例 #3
0
 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);
             }
         }
     }
 }
コード例 #4
0
 public static void HandleSpellCastOnTarget(GameActionFightCastOnTargetRequestMessage message, WorldClient client)
 {
     client.Character.FighterInstance.CastSpellOnTarget(message.spellId, message.targetId);
 }
コード例 #5
0
ファイル: BFight.cs プロジェクト: DjTrilogic/BlueSheep
 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);
     }
 }