public ProcessedAttack RunAttack(Unit attacker, Unit defender)
        {
            var attack          = CalculateAttack(attacker);
            var processedAttack = AttackProcessor.ProcessAttack(attack, defender.Stats);

            defender.ApplyDamageToTarget(processedAttack);
            return(processedAttack);
        }
Exemplo n.º 2
0
        private void InternalProcess(GameClient Client, byte[] Packet)
        {
            fixed(byte *pPacket = Packet)
            {
                ushort *Size = (ushort *)(pPacket + 0);
                ushort *Type = (ushort *)(pPacket + 2);

                if (*Size != Packet.Length)
                {
                    SizeMismatch(Client, *Size, Packet);
                    return;
                }

                Kernel.HexDump(Packet, "Client -> Server");

                IPacketProcessor processor = null;

                switch (*Type)
                {
                case 0x3E9: processor = new CreateCharacterProcessor(Database); break;

                case 0x3EC: processor = new ChatProcessor(Database, CommandProcessor, NpcScriptEngine); break;

                case 0x3ED: processor = new MovementProcessor(Database); break;

                case 0x3F1: processor = new ItemUsageProcessor(Database); break;

                case 0x3F2: processor = new GeneralDataProcessor(Database); break;

                case 0x3FE: processor = new AttackProcessor(Database); break;

                case 0x41C: processor = new LoginTransferProcessor(Database); break;

                case 0x7EF:
                case 0x7F0:
                    processor = new NpcProcessor(Database, NpcScriptEngine);
                    break;

                default:
                    Client.Send(Packet);
                    break;
                }

                if (processor != null)
                {
                    processor.Execute(Client, pPacket);
                }
            }
        }
        public async Task <bool> ExecuteSpell(Spell spell, Vector2 target)
        {
            var unit = Level.GetUnitAt(target);

            if (unit == null)
            {
                return(false);
            }

            var stats           = StatsComputer.ComputeStats(spell.Effects.ToArray());
            var attack          = AttackGenerator.GenerateAttack(stats);
            var processedAttack = AttackProcessor.ProcessAttack(attack, unit.Unit.Stats);

            unit.Unit.ApplyDamageToTarget(processedAttack);
            return(true);
        }
Exemplo n.º 4
0
        private void InternalProcess(GameClient Client, byte[] Packet)
        {
            fixed (byte* pPacket = Packet)
            {
                ushort *Size = (ushort*)(pPacket + 0);
                ushort* Type = (ushort*)(pPacket + 2);

                if (*Size != Packet.Length)
                {
                    SizeMismatch(Client, *Size, Packet);
                    return;
                }

                Kernel.HexDump(Packet, "Client -> Server");

                IPacketProcessor processor = null;
                switch (*Type)
                {
                    case 0x3E9: processor = new CreateCharacterProcessor(Database); break;
                    case 0x3EC: processor = new ChatProcessor(Database, CommandProcessor, NpcScriptEngine); break;
                    case 0x3ED: processor = new MovementProcessor(Database); break;
                    case 0x3F1: processor = new ItemUsageProcessor(Database); break;
                    case 0x3F2: processor = new GeneralDataProcessor(Database); break;
                    case 0x3FE: processor = new AttackProcessor(Database); break;
                    case 0x41C: processor = new LoginTransferProcessor(Database); break;
                    case 0x7EF:
                    case 0x7F0:
                        processor = new NpcProcessor(Database, NpcScriptEngine);
                        break;
                    default:
                        Client.Send(Packet);
                        break;
                }

                if (processor != null)
                {
                    processor.Execute(Client, pPacket);
                }
            }
        }
Exemplo n.º 5
0
 private void Start()
 {
     attackProcessor = new AttackProcessor();
     player          = GetComponentInParent <Player>();
 }
Exemplo n.º 6
0
 private void Awake()
 {
     attackProcessor = new AttackProcessor();
 }
Exemplo n.º 7
0
 private void Awake()
 {
     attackProcessor = GetComponent <AttackProcessor>();
 }