Ejemplo n.º 1
0
        public override ByteWriter Save(ByteWriter bw)
        {
            base.Save(bw);

            bw.UINT(ItemKind);
            bw.UINT((uint)Items.Count - 1);
            for (int i = 0; i < Items.Count; i++)
            {
                var item = Items[i];

                if (item == null)
                {
                    for (int j = 0; j < 84; j++)
                    {
                        bw.BYTE(0);
                    }

                    continue;
                }

                bw.UINT(item.ID.Kind);
                bw.UINT(item.ImageIndex);

                SaveVariableFields(bw, item);

                bw.UINT(item.HP);
                bw.UINT(item.MP);
                bw.UINT(item.Attack);
                bw.UINT(item.Defense);
                bw.UINT(item.Strength);
                bw.UINT(item.Spirit);
                bw.UINT(item.Dexterity);
                bw.UINT(item.Power);
                bw.UINT(item.RequiredLevel);
                bw.UINT(item.RequiredStrength);
                bw.UINT(item.RequiredSpirit);
                bw.UINT(item.RequiredDexterity);
                bw.UINT(item.RequiredPower);
                bw.UINT(item.Unused0);
                bw.USHORT(item.Characters);
                bw.USHORT(item.Weight);
                bw.USHORT(item.Unused1);
                bw.USHORT(item.Slot);
                bw.USHORT(item.Unused2);
                bw.BYTE(item.Formula);
                bw.BYTE(item.Range);
                bw.BYTE(item.ScatterRange);
                bw.BYTE(item.Animation);
                bw.UINT(item.Price);
            }

            return(bw);
        }
Ejemplo n.º 2
0
        public void Save(string filename = null)
        {
            var bw = new ByteWriter();

            bw.STRING(FileID);

            bw.UINT((uint)Skills.Count);

            foreach (var s in Skills)
            {
                // Handle empty entries
                if (s == null)
                {
                    for (int i = 0; i < 41; i++)
                    {
                        bw.BYTE(0);
                    }

                    continue;
                }

                bw.BYTE((byte)s.Type);
                bw.STRING(s.Message.ID.ToString());
                bw.STRING(s.Message.SubCategory.ID.ToString());
                bw.UINT(s.IconIndex);
                bw.USHORT(s.ProjectileAnimation);
                bw.UINT(s.CharacterAnimation);
                bw.INT(s.Honor);
                bw.UINT(s.Level);
                bw.BYTE(s.CharacterType);

                uint mana = s.ManaUsage;
                if (s.ManaUsageStyle == ManaUsageStyle.Percentage)
                {
                    mana += 1000000000;
                }
                bw.UINT(mana);

                short range = s.Range;
                if (s.IsAOE)
                {
                    range += 10000;
                }
                bw.SHORT(range);

                bw.BYTE(s.NeedsTarget);

                bw.BYTE(s.Unused1);
                bw.BYTE(s.Unused2);
                bw.BYTE(s.Unused3);

                bw.BYTE(s.EffectType);
                bw.UINT(s.Multiplier);

                bw.UINT(s.Unknown5);
            }

            File.WriteAllBytes(filename ?? FileName, bw.ToByteArray());
        }