Esempio n. 1
0
 public SeePlayerAttack(uint victimID, uint victimHP, CharacterInfo ci, AttackTargetRequest atr, byte error = 1)
 {
     _victimID  = victimID;
     _victimHP  = victimHP;
     _ci        = ci;
     _atr       = atr;
     _errorByte = error;
 }
Esempio n. 2
0
        void DoAttack_Handler(Task t)
        {
            AttackTargetRequest atr = (AttackTargetRequest)t.Args;
            PlayMap             map = _server.GetPlayMap(t.Client.Character.MapID);

            if (atr.TargetT == AttackTargetRequest.TargetType.Monster)
            {
                map.PlayerAttackMonster(t.Client, atr);
            }
        }
Esempio n. 3
0
        public static AttackTargetRequest Read(PacketHeader header, BinaryReader br)
        {
            AttackTargetRequest atr = new AttackTargetRequest();

            atr.TargetID = br.ReadUInt32();
            atr.Critical = false;

            byte typeByte = br.ReadByte();

            atr.TargetT = (typeByte & 3) == 0 ? TargetType.Player : TargetType.Monster;
            atr.ComboT  = ((typeByte >> 2) & 0x3F);

            byte unkByte = br.ReadByte();

            byte comboByte = br.ReadByte();

            atr.ComboCount  = (comboByte & 0x3F);
            atr.ComboStatus = ((comboByte >> 6) & 0x3);

            atr.Motion = br.ReadUInt16();

            return(atr);
        }
Esempio n. 4
0
 private void Client_OnAttack(object sender, AttackTargetRequest e)
 {
     TaskProcessor.AddTask(new Task(Task.TaskType.DoAttack, (Connection)sender, e));
 }
Esempio n. 5
0
 public SeePlayerAttack(uint victimID, uint victimHP, CharacterInfo ci, AttackTargetRequest atr, byte error = 1)
 {
     _victimID = victimID;
     _victimHP = victimHP;
     _ci = ci;
     _atr = atr;
     _errorByte = error;
 }
Esempio n. 6
0
        public static AttackTargetRequest Read(PacketHeader header, BinaryReader br)
        {
            AttackTargetRequest atr = new AttackTargetRequest();

            atr.TargetID = br.ReadUInt32();
            atr.Critical = false;

            byte typeByte = br.ReadByte();
            atr.TargetT = (typeByte & 3) == 0 ? TargetType.Player : TargetType.Monster;
            atr.ComboT = ((typeByte >> 2) & 0x3F);

            byte unkByte = br.ReadByte();

            byte comboByte = br.ReadByte();
            atr.ComboCount = (comboByte & 0x3F);
            atr.ComboStatus = ((comboByte >> 6) & 0x3);

            atr.Motion = br.ReadUInt16();

            return atr;
        }
Esempio n. 7
0
        public void PlayerAttackMonster(Connection client, AttackTargetRequest atr)
        {
            if (!_monsters.ContainsKey(atr.TargetID))
            {
                LogInterface.Log(string.Format("Character({0}) attacking non existant monster {1} on map {2}", client.Character.ID, atr.TargetID, client.Character.MapID), LogInterface.LogMessageType.Game);
                client.SendPacket(new SeePlayerAttack(atr.TargetID, 0, client.Character, atr, 6));        // Wrong target
            }
            else
            {
                Monster m = _monsters[atr.TargetID];

                client.Character.AttackTarget(m, atr);

                SeePlayerAttack pkt = new SeePlayerAttack(m.ID, m.CurHP, client.Character, atr);
                foreach( Connection c in _players.Values )
                    c.SendPacket(pkt);

                if (m.Dead)
                {
                    // Do loot!
                    m.GiveLoot(client);
                }
            }
        }
Esempio n. 8
0
 void Attack_Handler(PacketHeader header, BinaryReader br)
 {
     OnAttack(this, AttackTargetRequest.Read(header, br));
 }
Esempio n. 9
0
 private void Client_OnAttack(object sender, AttackTargetRequest e)
 {
     TaskProcessor.AddTask(new Task(Task.TaskType.DoAttack, (Connection)sender, e));
 }