Ejemplo n.º 1
0
        public Game(GameMode GameMode, HeroMode HeroMode, SkillMode SkillMode, List <String> AdditionalModes)
        {
            this.GameMode        = GameMode;
            this.HeroMode        = HeroMode;
            this.SkillMode       = SkillMode;
            this.AdditionalModes = AdditionalModes;
            if (File.Exists("bans.txt"))
            {
                string[] bans = File.ReadAllLines("bans.txt");
                Bans = bans.ToList();
            }
            Players.AfterAdd += new EventfulDictionary <string, Player> .DataChangedEventHandler(Players_AfterAdd);

            Players.AfterRemove += new EventfulDictionary <string, Player> .DataChangedEventHandler(Players_AfterRemove);
        }
Ejemplo n.º 2
0
    public void SwitchMode(HeroMode m)
    {
        // ensures that the animator is restarted when changing mode
        _animator.speed = 1;
        _wasIdle        = false;
        _isIdle         = false;

        _previousMode = CurrentMode;

        CurrentMode = m;

        _animator.SetInteger(AnimStrings.Mode, (int)m);
        _animator.SetTrigger(AnimStrings.SwitchMode);

        switch (m)
        {
        case HeroMode.Jump when _previousMode != HeroMode.Jump:
            _audio.Play(Sounds.Jump);
            break;

        case HeroMode.Slash:
            _audio.Play(Sounds.Slash);
            break;

        case HeroMode.BigSlash:
            _audio.Play(Sounds.HeavySlash);
            break;

        default:
            switch (_previousMode)
            {
            case HeroMode.Jump:
                _audio.Play(Sounds.Land);
                break;

            case HeroMode.BigSlash:
                _audio.Stop(Sounds.HeavySlash);
                break;
            }

            break;
        }
    }
Ejemplo n.º 3
0
        public CharacterInfo(BinaryReader reader)
        {
            Index  = reader.ReadInt32();
            Name   = reader.ReadString();
            Level  = reader.ReadUInt16();
            Class  = (MirClass)reader.ReadByte();
            Gender = (MirGender)reader.ReadByte();
            Hair   = reader.ReadByte();

            CreationIP   = reader.ReadString();
            CreationDate = DateTime.FromBinary(reader.ReadInt64());

            Banned     = reader.ReadBoolean();
            BanReason  = reader.ReadString();
            ExpiryDate = DateTime.FromBinary(reader.ReadInt64());

            LastIP   = reader.ReadString();
            LastDate = DateTime.FromBinary(reader.ReadInt64());

            Deleted    = reader.ReadBoolean();
            DeleteDate = DateTime.FromBinary(reader.ReadInt64());

            CurrentMapIndex = reader.ReadInt32();
            CurrentLocation = new Point(reader.ReadInt32(), reader.ReadInt32());
            Direction       = (MirDirection)reader.ReadByte();
            BindMapIndex    = reader.ReadInt32();
            BindLocation    = new Point(reader.ReadInt32(), reader.ReadInt32());

            HP         = reader.ReadUInt16();
            MP         = reader.ReadUInt16();
            Experience = reader.ReadInt64();

            AMode = (AttackMode)reader.ReadByte();
            PMode = (PetMode)reader.ReadByte();

            HMode    = (HeroMode)reader.ReadByte();
            PKPoints = reader.ReadInt32();

            int count = reader.ReadInt32();

            Array.Resize(ref Inventory, count);

            for (int i = 0; i < count; i++)
            {
                if (!reader.ReadBoolean())
                {
                    continue;
                }
                UserItem item = new UserItem(reader, Envir.LoadVersion, Envir.LoadCustomVersion);
                if (SMain.Envir.BindItem(item) && i < Inventory.Length)
                {
                    Inventory[i] = item;
                }
            }

            count = reader.ReadInt32();
            for (int i = 0; i < count; i++)
            {
                if (!reader.ReadBoolean())
                {
                    continue;
                }
                UserItem item = new UserItem(reader, Envir.LoadVersion, Envir.LoadCustomVersion);
                if (SMain.Envir.BindItem(item) && i < Equipment.Length)
                {
                    Equipment[i] = item;
                }
            }

            count = reader.ReadInt32();
            for (int i = 0; i < count; i++)
            {
                if (!reader.ReadBoolean())
                {
                    continue;
                }
                UserItem item = new UserItem(reader, Envir.LoadVersion, Envir.LoadCustomVersion);
                if (SMain.Envir.BindItem(item) && i < QuestInventory.Length)
                {
                    QuestInventory[i] = item;
                }
            }

            count = reader.ReadInt32();
            for (int i = 0; i < count; i++)
            {
                UserMagic magic = new UserMagic(reader);
                if (magic.Info == null)
                {
                    continue;
                }
                Magics.Add(magic);
            }
            //reset all magic cooldowns on char loading < stops ppl from having none working skills after a server crash
            for (int i = 0; i < Magics.Count; i++)
            {
                Magics[i].CastTime = 0;
            }


            Thrusting     = reader.ReadBoolean();
            HalfMoon      = reader.ReadBoolean();
            CrossHalfMoon = reader.ReadBoolean();
            DoubleSlash   = reader.ReadBoolean();
            MentalState   = reader.ReadByte();

            count = reader.ReadInt32();
            for (int i = 0; i < count; i++)
            {
                Pets.Add(new PetInfo(reader));
            }

            AllowGroup = reader.ReadBoolean();

            if (Envir.LoadVersion == 12)
            {
                count = reader.ReadInt32();
            }

            for (int i = 0; i < Globals.FlagIndexCount; i++)
            {
                Flags[i] = reader.ReadBoolean();
            }

            if (Envir.LoadVersion > 27)
            {
                GuildIndex = reader.ReadInt32();
            }

            if (Envir.LoadVersion > 30)
            {
                AllowTrade = reader.ReadBoolean();
            }

            if (Envir.LoadVersion > 33)
            {
                count = reader.ReadInt32();

                for (int i = 0; i < count; i++)
                {
                    QuestProgressInfo quest = new QuestProgressInfo(reader);
                    if (SMain.Envir.BindQuest(quest))
                    {
                        CurrentQuests.Add(quest);
                    }
                }
            }

            if (Envir.LoadVersion > 42)
            {
                count = reader.ReadInt32();
                for (int i = 0; i < count; i++)
                {
                    Buff buff = new Buff(reader);

                    if (Envir.LoadVersion == 51)
                    {
                        buff.Caster = SMain.Envir.GetObject(reader.ReadUInt32());
                    }

                    Buffs.Add(buff);
                }
            }

            if (Envir.LoadVersion > 43)
            {
                count = reader.ReadInt32();
                for (int i = 0; i < count; i++)
                {
                    Mail.Add(new MailInfo(reader, Envir.LoadVersion, Envir.LoadCustomVersion));
                }
            }

            //IntelligentCreature
            if (Envir.LoadVersion > 44)
            {
                count = reader.ReadInt32();
                for (int i = 0; i < count; i++)
                {
                    UserIntelligentCreature creature = new UserIntelligentCreature(reader);
                    if (creature.Info == null)
                    {
                        continue;
                    }
                    IntelligentCreatures.Add(creature);
                }

                if (Envir.LoadVersion == 45)
                {
                    var old1 = (IntelligentCreatureType)reader.ReadByte();
                    var old2 = reader.ReadBoolean();
                }

                PearlCount = reader.ReadInt32();
            }

            if (Envir.LoadVersion > 49)
            {
                count = reader.ReadInt32();
                for (int i = 0; i < count; i++)
                {
                    CompletedQuests.Add(reader.ReadInt32());
                }
            }

            if (Envir.LoadVersion > 50 && Envir.LoadVersion < 54)
            {
                count = reader.ReadInt32();
                for (int i = 0; i < count; i++)
                {
                    Poison poison = new Poison(reader);

                    if (Envir.LoadVersion == 51)
                    {
                        poison.Owner = SMain.Envir.GetObject(reader.ReadUInt32());
                    }

                    Poisons.Add(poison);
                }
            }

            if (Envir.LoadVersion > 56)
            {
                if (reader.ReadBoolean())
                {
                    CurrentRefine = new UserItem(reader, Envir.LoadVersion, Envir.LoadCustomVersion);
                }
                if (CurrentRefine != null)
                {
                    SMain.Envir.BindItem(CurrentRefine);
                }

                CollectTime  = reader.ReadInt64();
                CollectTime += SMain.Envir.Time;
            }

            if (Envir.LoadVersion > 58)
            {
                count = reader.ReadInt32();
                for (int i = 0; i < count; i++)
                {
                    Friends.Add(new FriendInfo(reader));
                }
            }

            if (Envir.LoadVersion > 59)
            {
                Married     = reader.ReadInt32();
                MarriedDate = DateTime.FromBinary(reader.ReadInt64());
                Mentor      = reader.ReadInt32();
                MentorDate  = DateTime.FromBinary(reader.ReadInt64());
                isMentor    = reader.ReadBoolean();
                MentorExp   = reader.ReadInt64();
            }

            if (Envir.LoadVersion >= 63)
            {
                int logCount = reader.ReadInt32();

                for (int i = 0; i < logCount; i++)
                {
                    GSpurchases.Add(reader.ReadInt32(), reader.ReadInt32());
                }
            }

            if (Envir.LoadVersion >= 80)
            {
                VIP = DateTime.FromBinary(reader.ReadInt64());
            }

            if (Envir.LoadVersion >= 81)
            {
                HumUp = reader.ReadBoolean();
            }
            if (Envir.LoadVersion > 87)
            {
                count = reader.ReadInt32();
                for (int i = 0; i < count; i++)
                {
                    MyRecipes.Add(new PlayerRecipes(reader, Envir.LoadVersion));
                }
            }
            if (Envir.LoadVersion > 93)
            {
                HasHero = reader.ReadBoolean();
            }

            if (Envir.LoadVersion > 112)
            {
                HeroLoadVersion = reader.ReadInt32();
            }
            if (Envir.LoadVersion > 127)
            {
                count = 0;
                count = reader.ReadInt32();
                for (int i = 0; i < count; i++)
                {
                    ClientCompletedQuests.Add(new ClientQuestCompleted(reader));
                }
            }
            if (Envir.LoadVersion > 129)
            {
                CurrentHeroCount = reader.ReadSByte();
                HeroCapCount     = reader.ReadSByte();
            }

            if (Envir.LoadVersion > 135)
            {
                count = reader.ReadInt32();
                for (int i = 0; i < count; i++)
                {
                    int dailyEvent = reader.ReadInt32();
                    DailyEventsCompleted.Add(dailyEvent);
                }

                count = reader.ReadInt32();
                for (int i = 0; i < count; i++)
                {
                    int weeklyEvent = reader.ReadInt32();
                    WeeklyEventsCompleted.Add(weeklyEvent);
                }
            }

            if (Envir.LoadVersion > 136)
            {
                CrescentSlash = reader.ReadBoolean();
            }
        }