Ejemplo n.º 1
0
        public void AddBuff(ClientBuffInfo buff)
        {
            Buffs.Add(buff);
            VisibleBuffs.Add(buff.Type);

            if (buff.Type == BuffType.SuperiorMagicShield)
            {
                MaximumSuperiorMagicShield = buff.Stats[Stat.SuperiorMagicShield];
                MagicShieldEnd();
            }
        }
Ejemplo n.º 2
0
        public PlayerObject(S.ObjectPlayer info)
        {
            CharacterIndex = info.Index;

            ObjectID = info.ObjectID;

            Name       = info.Name;
            NameColour = info.NameColour;

            Class  = info.Class;
            Gender = info.Gender;

            Poison = info.Poison;

            foreach (BuffType type in info.Buffs)
            {
                VisibleBuffs.Add(type);
            }

            Title = info.GuildName;

            CurrentLocation = info.Location;
            Direction       = info.Direction;

            HairType   = info.HairType;
            HairColour = info.HairColour;

            ArmourShape        = info.Armour;
            ArmourColour       = info.ArmourColour;
            LibraryWeaponShape = info.Weapon;
            HorseShape         = info.HorseShape;
            HelmetShape        = info.Helmet;
            ShieldShape        = info.Shield;

            ArmourImage = info.ArmourImage;


            Light = info.Light;

            Dead  = info.Dead;
            Horse = info.Horse;

            UpdateLibraries();

            SetFrame(new ObjectAction(!Dead ? MirAction.Standing : MirAction.Dead, MirDirection.Up, CurrentLocation));

            GameScene.Game.MapControl.AddObject(this);
        }
Ejemplo n.º 3
0
        public override void SetAnimation(ObjectAction action)
        {
            MirAnimation animation;

            DrawWeapon = true;
            MagicType type;

            switch (action.Action)
            {
            case MirAction.Standing:
                //if(VisibleBuffs.Contains(BuffType.Stealth))
                animation = MirAnimation.Standing;

                if (CEnvir.Now < StanceTime)
                {
                    animation = MirAnimation.Stance;
                }

                if (VisibleBuffs.Contains(BuffType.Cloak))
                {
                    animation = MirAnimation.CreepStanding;
                }

                if (Horse != HorseType.None)
                {
                    animation = MirAnimation.HorseStanding;
                }

                if (VisibleBuffs.Contains(BuffType.DragonRepulse))
                {
                    animation = MirAnimation.DragonRepulseMiddle;
                }
                else if (CurrentAnimation == MirAnimation.DragonRepulseMiddle)
                {
                    animation = MirAnimation.DragonRepulseEnd;
                }

                break;

            case MirAction.Moving:
                //if(VisibleBuffs.Contains(BuffType.Stealth))

                animation = MirAnimation.Walking;

                if (Horse != HorseType.None)
                {
                    animation = MirAnimation.HorseWalking;
                }

                if ((MagicType)action.Extra[1] == MagicType.ShoulderDash || (MagicType)action.Extra[1] == MagicType.Assault)
                {
                    animation = MirAnimation.Combat8;
                }
                else if (VisibleBuffs.Contains(BuffType.Cloak))
                {
                    animation = VisibleBuffs.Contains(BuffType.GhostWalk) ? MirAnimation.CreepWalkFast : MirAnimation.CreepWalkSlow;
                }
                else if ((int)action.Extra[0] >= 2)
                {
                    animation = MirAnimation.Running;
                    if (Horse != HorseType.None)
                    {
                        animation = MirAnimation.HorseRunning;
                    }
                }
                break;

            case MirAction.Pushed:
                animation = MirAnimation.Pushed;
                break;

            case MirAction.Attack:
                type      = (MagicType)action.Extra[1];
                animation = Functions.GetAttackAnimation(Class, LibraryWeaponShape, type);
                break;

            case MirAction.Mining:
                animation = Functions.GetAttackAnimation(Class, LibraryWeaponShape, MagicType.None);
                break;

            case MirAction.RangeAttack:
                animation = MirAnimation.Combat1;
                break;

            case MirAction.Spell:
                type = (MagicType)action.Extra[0];

                animation = Functions.GetMagicAnimation(type);

                if (type == MagicType.PoisonousCloud)
                {
                    DrawWeapon = false;
                }
                break;

            // case MirAction.Struck:
            //    animation = MirAnimation.Struck;
            // if (Horse != HorseType.None)
            //    animation = MirAnimation.HorseStruck;
            //break;
            case MirAction.Die:
                animation = MirAnimation.Die;
                break;

            case MirAction.Dead:
                animation = MirAnimation.Dead;
                break;

            case MirAction.Harvest:
                animation = MirAnimation.Harvest;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            CurrentAnimation = animation;
            if (!Frames.TryGetValue(CurrentAnimation, out CurrentFrame))
            {
                CurrentFrame = Frame.EmptyFrame;
            }
        }
Ejemplo n.º 4
0
        public UserObject(StartInformation info)
        {
            CharacterIndex = info.Index;

            ObjectID = info.ObjectID;

            Name       = info.Name;
            NameColour = info.NameColour;

            Class  = info.Class;
            Gender = info.Gender;

            Title     = info.GuildName;
            GuildRank = info.GuildRank;

            CurrentLocation = info.Location;
            Direction       = info.Direction;

            CurrentHP = info.CurrentHP;
            CurrentMP = info.CurrentMP;

            Level      = info.Level;
            Experience = info.Experience;

            HairType   = info.HairType;
            HairColour = info.HairColour;

            ArmourShape        = info.Armour;
            ArmourImage        = info.ArmourImage;
            ArmourColour       = info.ArmourColour;
            LibraryWeaponShape = info.Weapon;

            Poison = info.Poison;

            InSafeZone = info.InSafeZone;

            AttackMode = info.AttackMode;
            PetMode    = info.PetMode;

            Horse = info.Horse;
            Dead  = info.Dead;

            HorseShape  = info.HorseShape;
            HelmetShape = info.HelmetShape;
            ShieldShape = info.Shield;

            Gold = info.Gold;
            GameScene.Game.DayTime             = info.DayTime;
            GameScene.Game.GroupBox.AllowGroup = info.AllowGroup;

            HermitPoints = info.HermitPoints;

            foreach (ClientUserMagic magic in info.Magics)
            {
                Magics[magic.Info] = magic;
            }

            foreach (ClientBuffInfo buff in info.Buffs)
            {
                Buffs.Add(buff);
                VisibleBuffs.Add(buff.Type);
            }



            UpdateLibraries();

            SetFrame(new ObjectAction(!Dead ? MirAction.Standing : MirAction.Dead, Direction, CurrentLocation));

            GameScene.Game.FillItems(info.Items);

            foreach (ClientBeltLink link in info.BeltLinks)
            {
                if (link.Slot < 0 || link.Slot >= GameScene.Game.BeltBox.Links.Length)
                {
                    continue;
                }

                GameScene.Game.BeltBox.Links[link.Slot].LinkInfoIndex = link.LinkInfoIndex;
                GameScene.Game.BeltBox.Links[link.Slot].LinkItemIndex = link.LinkItemIndex;
            }
            GameScene.Game.BeltBox.UpdateLinks();

            foreach (ClientAutoPotionLink link in info.AutoPotionLinks)
            {
                if (link.Slot < 0 || link.Slot >= GameScene.Game.AutoPotionBox.Links.Length)
                {
                    continue;
                }

                GameScene.Game.AutoPotionBox.Links[link.Slot] = link;
            }
            GameScene.Game.AutoPotionBox.UpdateLinks();

            GameScene.Game.MapControl.AddObject(this);
        }