Esempio n. 1
0
 // Start is called before the first frame update
 void Start()
 {
     isAi = gameObject.transform.GetChild(7).gameObject.activeSelf;
     if (isAi)
     {
         Debug.Log("I am AI");
         enemyAttack = gameObject.GetComponent <CAttack>();
         player      = GameObject.FindGameObjectWithTag("Player");
         rb          = gameObject.GetComponent <Rigidbody2D>();
         cmove       = gameObject.GetComponent <CharMovement>();
         chooseWalk();
         jump();
         crouch();
     }
 }
Esempio n. 2
0
        public async Task CAttack(GSSession session, CAttack message)
        {
            var target = message.Number.ShufleEnding();
            var Dir    = message.DirDis & 0x0F;
            var Dis    = (message.DirDis & 0xF0) >> 4;

            //Logger.ForAccount(session)
            //    .Debug("Attack {0} {1}:{2} {3}", message.AttackAction, Dir, Dis, target);

            session.Player.Character.Direction = message.DirDis;

            if (target >= MonstersMng.MonsterStartIndex) // Is Monster
            {
                try
                {
                    var monster = MonstersMng.Instance.GetMonster(target);

                    if (monster.Life <= 0)
                    {
                        return;
                    }

                    await session.Player.SendV2Message(new SAction((ushort)session.ID, message.DirDis, message.AttackAction, target));

                    if (monster.Type == ObjectType.NPC)
                    {
                        Logger.ForAccount(session)
                        .Error("NPC Can't be attacked");
                        return;
                    }

                    DamageType type;
                    var        attack = session.Player.Character.Attack(monster, out type);
                    await monster.GetAttacked(session.Player, attack, type);
                }
                catch (Exception ex)
                {
                    Logger.ForAccount(session)
                    .Error(ex, "Invalid monster #{0}", target);
                }
            }
            else
            {
            }
        }
Esempio n. 3
0
        public async Task CAttack(GSSession session, CAttack message)
        {
            var targetId = message.Number;
            var Dir      = message.DirDis & 0x0F;
            var Dis      = (message.DirDis & 0xF0) >> 4;

            session.Player.Character.Direction = message.DirDis;

            if (message.Number >= MonstersMng.MonsterStartIndex) // Is Monster
            {
                try
                {
                    var monster = MonstersMng.Instance.GetMonster(targetId);

                    if (monster.Life <= 0)
                    {
                        return;
                    }

                    session.Player.SendV2Message(new SAction((ushort)session.ID, message.DirDis, message.AttackAction, targetId));
                    if (monster.Type == ObjectType.NPC)
                    {
                        return;
                    }

                    DamageType type;
                    var        attack  = session.Player.Character.Attack(monster, out type);
                    var        eAttack = await session.Player.Character.PentagramAttack(monster);

                    await monster.GetAttacked(session.Player, attack, type, eAttack);
                }
                catch (Exception ex)
                {
                    Logger.ForAccount(session)
                    .Error(ex, "Invalid monster #{0}", targetId);
                }
            }
            else
            {
                try
                {
                    var target = Program.server.Clients.First(x => x.ID == targetId);
                    if (target.Player.Character.Health <= 0.0f)
                    {
                        return;
                    }

                    var rivals = session.Player.Character.Duel == target.Player.Character.Duel;

                    if (!(Program.XMLConfiguration.GamePlay.PVP || rivals))
                    {
                        return;
                    }

                    /*await session.Player
                     *  .SendV2Message(new SAction((ushort)session.ID, message.DirDis, message.AttackAction, targetId));*/

                    var attack = session.Player.Character
                                 .Attack(target.Player.Character, out DamageType type);

                    var eattack = await session.Player.Character
                                  .PentagramAttack(target.Player.Character);

                    await target.Player.Character
                    .GetAttacked((ushort)session.ID, message.DirDis, message.AttackAction, attack, type, Spell.None, eattack);
                }
                catch (Exception ex)
                {
                    Logger.ForAccount(session)
                    .Error(ex, "Invalid player #{0}", targetId);
                }
            }
        }