public static MissionObjective Read(BinaryReader br, Mission owner, XElement elem) { var mo = new MissionObjective { QuestId = br.ReadInt32(), ObjectiveId = br.ReadInt32(), Sequence = br.ReadByte(), Owner = owner, Requirements = new List<ObjectiveRequirement>(), }; br.ReadBytes(1); mo.ObjectiveName = br.ReadUnicodeString(65); mo.MapName = br.ReadUnicodeString(65); br.ReadBytes(2); mo.WorldPosition = br.ReadInt32(); mo.ContinentObject = br.ReadInt32(); mo.LayerIndex = br.ReadByte(); br.ReadBytes(3); mo.XP = br.ReadInt32(); mo.Credits = br.ReadInt32(); mo.AttribPoints = br.ReadInt32(); mo.SkillPoints = br.ReadInt32(); mo.ReturnToNPC = br.ReadInt32(); mo.XPIndex = br.ReadInt16(); mo.CreditsIndex = br.ReadInt16(); mo.XPScaler = br.ReadSingle(); mo.XPBalanceScaler = br.ReadSingle(); mo.CreditScaler = br.ReadSingle(); if (elem != null) { var obj = elem.Elements("Objective").SingleOrDefault(e => (UInt32)e.Attribute("sequence") == mo.Sequence); if (obj != null) { mo.ExternalMapText = (String)obj.Element("ExternalText"); mo.Title = (String)obj.Element("Title"); mo.DefaultMapText = (String)obj.Element("DefaultText"); var cCountElem = obj.Element("CompleteCount"); mo.CompleteCount = (cCountElem == null || String.IsNullOrEmpty((String)cCountElem)) ? 0 : (Int32)cCountElem; var req = obj.Elements("Requirement").ToList(); if (req.Any()) mo.Requirements.AddRange(req.Select(xElem => ObjectiveRequirement.Create(mo, xElem)).Where(requirement => requirement != null)); } } return mo; }
public static Skill Read(BinaryReader br) { var s = new Skill { Id = br.ReadUInt32(), Class = br.ReadInt32(), Race = br.ReadInt32(), TargetType = br.ReadInt32(), TargetSubType = br.ReadInt32(), TargetObjectType = br.ReadInt32(), AffectedTarget = br.ReadInt32(), AffectedSubType = br.ReadInt32(), AffectedObjectType = br.ReadInt32(), StatusEffect = br.ReadInt32(), SkillPrerequisite1 = br.ReadInt32(), SkillPrerequisite2 = br.ReadInt32(), SkillPrerequisite3 = br.ReadInt32(), LocationTree = br.ReadByte(), LocationLine = br.ReadByte(), MinimumLevel = br.ReadByte(), SkillType = br.ReadByte(), Name = br.ReadUnicodeString(33), Description = br.ReadUnicodeString(1025), XMLName = br.ReadUnicodeString(65) }; br.ReadBytes(2); s.IsChain = br.ReadInt32(); s.IsSpray = br.ReadInt32(); s.OptionalAction = br.ReadByte(); s.MaxSkillLevel = br.ReadByte(); br.ReadBytes(2); s.UseBodyForArc = br.ReadInt32(); s.GroupId = br.ReadInt32(); s.CategoryId = br.ReadInt32(); s.SummonedCreatureId = br.ReadInt32(); s.SkillOptional1 = br.ReadInt32(); s.SkillOptional2 = br.ReadInt32(); s.SkillOptional3 = br.ReadInt32(); s.SkillOptional4 = br.ReadInt32(); s.NumOfElements = br.ReadInt16(); br.ReadBytes(2); s.Elements = s.NumOfElements > 0 ? new List<SkillElement>(s.NumOfElements) : new List<SkillElement>(0); for (var i = 0; i < s.NumOfElements; ++i) s.Elements.Add(SkillElement.Read(br)); return s; }
public static VehicleTrick Read(BinaryReader br) { return new VehicleTrick { Id = br.ReadInt32(), VehicleId = br.ReadInt32(), ExclusiveGroup = br.ReadByte(), GroupId = br.ReadByte(), FileName = br.ReadUnicodeString(65), Description = br.ReadUnicodeString(33), GroupDescription = br.ReadUnicodeString(33) }; }
public static CloneBaseSpecific Read(BinaryReader br) { return new CloneBaseSpecific { CloneBaseId = br.ReadInt32(), Type = br.ReadInt32(), TilesetFlags = br.ReadInt32(), UniqueName = br.ReadUnicodeString(65), ShortDesc = br.ReadUnicodeString(65), LongDesc = br.ReadUnicodeString(257), FxFileName = br.ReadUnicodeString(65), IsGeneratable = br.ReadUInt32(), IsTargetable = br.ReadUInt32(), Available = br.ReadUInt32(), InStores = br.ReadUInt32(), InLootGenerator = br.ReadUInt32(), BaseValue = br.ReadInt32(), CommodityGroupType = br.ReadInt32(), IsSellable = br.ReadUInt32() == 1 }; }
public PrefixBase(BinaryReader br) { Id = br.ReadUInt32(); ObjectType = br.ReadInt32(); ValuePercent = br.ReadSingle(); IsComponent = br.ReadInt32(); Rarity = br.ReadSingle(); Race = br.ReadInt32(); Class = br.ReadInt32(); Name = br.ReadUnicodeString(51); br.ReadBytes(2); MassPercent = br.ReadSingle(); Skill = br.ReadInt32(); Ingredients = br.Read<Int32>(5); BaseValue = br.ReadInt32(); IsGadgetOnly = br.ReadInt32(); LevelOffset = br.ReadInt16(); br.ReadBytes(2); AttributeRequirementIncrease = br.ReadSingle(); RequiredCombat = br.ReadInt16(); RequiredPerception = br.ReadInt16(); RequiredTech = br.ReadInt16(); RequiredTheory = br.ReadInt16(); ItemRarity = br.ReadInt16(); br.ReadBytes(2); Complexity = br.ReadInt32(); IsPrefix = br.ReadInt32(); PrefixName = br.ReadUnicodeString(33); br.ReadBytes(2); }
public static HeadBody Read(BinaryReader br) { var hb = new HeadBody { Id = br.ReadInt32(), CloneBase = br.ReadInt32(), IsHead = br.ReadInt32(), IsBody = br.ReadInt32(), FileName = br.ReadUnicodeString(65) }; br.ReadBytes(2); hb.MaxTextures = br.ReadInt32(); return hb; }
public static HeadDetail Read(BinaryReader br) { var hd = new HeadDetail { Id = br.ReadInt32(), HeadBody = br.ReadInt32(), CloneBase = br.ReadInt32(), FileName = br.ReadUnicodeString(65), Type = br.ReadByte() }; br.ReadByte(); hd.MaxTextures = br.ReadInt32(); hd.DisableHair = br.ReadInt32(); return hd; }
public static SimpleObjectSpecific Read(BinaryReader br) { return new SimpleObjectSpecific { Armor = br.ReadInt32(), Skill1 = br.ReadInt32(), Skill2 = br.ReadInt32(), Skill3 = br.ReadInt32(), SkillGroup1 = br.ReadInt32(), SkillGroup2 = br.ReadInt32(), SkillGroup3 = br.ReadInt32(), CustomColor = br.ReadInt32(), Faction = br.ReadInt32(), Prefix = br.ReadInt32(), RequiredClass = br.ReadInt32(), Mass = br.ReadSingle(), Alpha = br.ReadSingle(), Scale = br.ReadSingle(), RequiredLevel = br.ReadInt16(), Flags = br.ReadInt16(), SubType = br.ReadInt16(), MinHitPoints = br.ReadInt16(), MaxHitPoint = br.ReadInt16(), RaceRegenRate = br.ReadInt16(), RaceShieldFactor = br.ReadInt16(), RequiredCombat = br.ReadInt16(), RequiredPerception = br.ReadInt16(), RequiredTech = br.ReadInt16(), RequiredTheory = br.ReadInt16(), InvSizeX = br.ReadByte(), InvSizeY = br.ReadByte(), RenderType = br.ReadByte(), MaximumEnhancements = br.ReadByte(), PhysicsName = br.ReadUnicodeString(65), DamageArmor = DamageArray.Read(br), Ingredients = br.Read<Int32>(5), DisciplineRequirement = br.ReadInt32(), DisciplineRanks = br.ReadInt32(), MaximumGadgets = br.ReadInt16(), RaceShieldRegenerate = br.ReadInt16(), ItemRarity = br.ReadInt16(), StackSize = br.ReadUInt16(), MaxUses = br.ReadUInt16(), IsNotTradeable = br.ReadBoolean(), DropBrokenOnly = br.ReadBoolean(), }; }
public static CreatureSpecific Read(BinaryReader br) { var c = new CreatureSpecific { Speed = br.ReadSingle(), VisionArc = br.ReadSingle(), VisionRange = br.ReadSingle(), HearingRange = br.ReadSingle(), RotationSpeed = br.ReadSingle(), PhysicsScale = br.ReadSingle(), FlyingHeight = br.ReadSingle(), AIBehavior = br.ReadInt32(), IsNPC = br.ReadInt32(), NPCCanGamble = br.ReadInt32(), HasTurret = br.ReadInt32(), TransformTime = br.ReadInt16(), BaseLevel = br.ReadInt16(), AttributeCombat = br.ReadInt16(), AttributeTech = br.ReadInt16(), AttributeTheory = br.ReadInt16(), AttributePerception = br.ReadInt16(), Flags = br.ReadByte(), BossType = br.ReadByte(), DifficultyAdjust = br.ReadInt16(), BaseLootChance = br.ReadByte(), Skills = new Dictionary<Byte, List<SkillSet>>() }; br.ReadBytes(3); c.XPPercent = br.ReadSingle(); c.Color1 = br.ReadInt32(); c.Color2 = br.ReadInt32(); c.Color3 = br.ReadInt32(); c.OffensiveBonus = br.ReadInt16(); c.DefensiveBonus = br.ReadInt16(); c.LootTableId = br.ReadInt32(); var asd = br.ReadInt32(); //if (asd != 0) //Debugger.Break(); var introLen = br.ReadInt32(); c.NPCIntro = br.ReadUnicodeString(introLen); var aiCount = br.ReadInt32(); for (var i = 0; i < aiCount; ++i) { var b = br.ReadByte(); c.Skills.Add(b, new List<SkillSet>(br.ReadInt32())); for (var j = 0; j < c.Skills[b].Capacity; ++j) c.Skills[b].Add(SkillSet.Read(br)); } return c; }
/// <summary> /// Reads String entry from the grammar file. /// </summary> /// <returns>String entry content.</returns> private String ReadStringEntry(BinaryReader reader) { if (ReadEntryDataType(reader) != EntryDataType.String) { throw new FileLoadException(Resources.Grammar_StringEntryExpected); } m_EntryCount--; return reader.ReadUnicodeString(); }
/// <summary> /// Loads grammar from the binary reader. /// </summary> private void Load(BinaryReader reader) { if (reader.ReadUnicodeString() != FileHeader) { throw new FileLoadException(Resources.Grammar_WrongFileHeader); } while (reader.PeekChar() != -1) { RecordDataType recordDataType = ReadNextRecord(reader); switch (recordDataType) { case RecordDataType.Parameters: ReadParameters(reader); break; case RecordDataType.TableCounts: ReadTableCounts(reader); break; case RecordDataType.Initial: ReadInitialStates(reader); break; case RecordDataType.Symbols: ReadSymbols(reader); break; case RecordDataType.CharSets: ReadCharSets(reader); break; case RecordDataType.Rules: ReadRules(reader); break; case RecordDataType.DfaStates: ReadDfaStates(reader); break; case RecordDataType.LRStates: ReadLRStates(reader); break; default: throw new FileLoadException(Resources.Grammar_InvalidRecordType); } } m_DfaInitialState = m_DfaStateTable[m_DfaInitialStateIndex]; OptimizeDfaTransitionVectors(); }
public Area(string path) { this.Props = new List<Prop>(); this.Events = new List<Event>(); using (var fs = new FileStream(path, FileMode.Open)) using (var br = new BinaryReader(fs)) { Version = br.ReadInt16(); if (Version < 202) throw new Exception("Invalid file version."); br.Skip(0x02); // Unk br.Skip(0x04); // Unk AreaId = br.ReadInt16(); var regionId = br.ReadInt16(); // Unk Server = br.ReadUnicodeString(); Name = br.ReadUnicodeString(); br.Skip(0x10); // Unk var eventCount = br.ReadInt32(); var propCount = br.ReadInt32(); br.Skip(0x14); // Unk X1 = br.ReadSingle(); br.Skip(0x04); // Unk Y1 = br.ReadSingle(); br.Skip(0x0C); // Unk X2 = br.ReadSingle(); br.Skip(0x04); // Unk Y2 = br.ReadSingle(); br.Skip(0x0C); // Unk if (Version == 203) br.Skip(0x04); // Unk var ver = br.ReadInt16(); br.Skip(0x02); // Unk var propCountCheck = br.ReadInt32(); if (ver < 202 || propCount != propCountCheck) throw new Exception("Reading error."); for (int i = 0; i < propCount; ++i) { var prop = new Prop(); prop.ClassId = br.ReadInt32(); prop.PropId = br.ReadInt64(); prop.Name = br.ReadUnicodeString(); prop.X = br.ReadSingle(); prop.Y = br.ReadSingle(); br.Skip(0x04); // Unk (Z?) var shapeCount = br.ReadByte(); br.Skip(0x04); // Unk for (int j = 0; j < shapeCount; ++j) { var dirX1 = br.ReadSingle(); var dirX2 = br.ReadSingle(); var dirY1 = br.ReadSingle(); var dirY2 = br.ReadSingle(); var lenX = br.ReadSingle(); var lenY = br.ReadSingle(); br.Skip(0x04); // Unk var posX = br.ReadSingle(); var posY = br.ReadSingle(); br.Skip(0x10); // Unk prop.Shape.AddRange(GetShapeLines(dirX1, dirX2, dirY1, dirY2, lenX, lenY, posX, posY)); } prop.Solid = (br.ReadByte() != 0); br.ReadByte(); // Unk prop.Scale = br.ReadSingle(); prop.Direction = br.ReadSingle(); br.Skip(0x40); // Unk br.ReadUnicodeString(); // title br.ReadUnicodeString(); // state var parameterCount = br.ReadByte(); for (int k = 0; k < parameterCount; ++k) { var def = br.ReadByte(); var eventType = br.ReadInt32(); var signalType = br.ReadInt32(); var name = br.ReadUnicodeString(); var xml = br.ReadUnicodeString(); // Add identical parameters only once var exists = false; foreach (var param in prop.Parameters) { if (param.EventType == eventType && param.SignalType == signalType && param.Name == name && param.XML == xml) { exists = true; break; } } if (!exists) prop.Parameters.Add(new PropParameter(eventType, signalType, name, xml)); } // Filter Tir anniversary props // TODO: Use prop db to check for the feature? if ((Name == "field_Tir_S_aa" || Name == "field_Tir_S_ba") && prop.ClassId > 44000) continue; this.Props.Add(prop); } for (int i = 0; i < eventCount; ++i) { var ev = new Event(); this.Events.Add(ev); ev.EventId = br.ReadInt64(); ev.Name = br.ReadUnicodeString(); ev.X = br.ReadSingle(); ev.Y = br.ReadSingle(); br.Skip(0x04); // Unk (Z?) var shapeCount = br.ReadByte(); br.Skip(0x04); // Unk for (int j = 0; j < shapeCount; ++j) { var dirX1 = br.ReadSingle(); var dirX2 = br.ReadSingle(); var dirY1 = br.ReadSingle(); var dirY2 = br.ReadSingle(); var lenX = br.ReadSingle(); var lenY = br.ReadSingle(); br.Skip(0x04); // Unk var posX = br.ReadSingle(); var posY = br.ReadSingle(); br.Skip(0x10); // Unk ev.Shape.AddRange(GetShapeLines(dirX1, dirX2, dirY1, dirY2, lenX, lenY, posX, posY)); } ev.EventType = br.ReadInt32(); var parameterCount = br.ReadByte(); for (int k = 0; k < parameterCount; ++k) { var def = br.ReadByte(); var eventType = br.ReadInt32(); var signalType = br.ReadInt32(); var name = br.ReadUnicodeString(); var xml = br.ReadUnicodeString(); ev.Parameters.Add(new PropParameter(eventType, signalType, name, xml)); } } } }
public Region(string path) { this.Areas = new List<Area>(); using (var fs = new FileStream(path, FileMode.Open)) using (var br = new BinaryReader(fs)) { Version = br.ReadInt32(); br.ReadInt32(); // Unk RegionId = br.ReadInt32(); GroupId = br.ReadInt32(); ClientName = br.ReadUnicodeString(); CellSize = br.ReadInt32(); Sight = br.ReadByte(); var areaCount = br.ReadInt32(); br.Skip(0x40); // Unk Scene = br.ReadUnicodeString(); br.Skip(0x2D); // Unk Camera = br.ReadUnicodeString(); Light = br.ReadUnicodeString(); br.Skip(0x0C); // Unk for (int i = 0; i < areaCount; ++i) { var areaName = br.ReadUnicodeString(); var area = new Area(Path.Combine(Path.GetDirectoryName(path), areaName + ".area")); Areas.Add(area); } br.Skip(0x1B); // Unk XML = br.ReadUnicodeString(); } Name = ClientName; //Name = Name.Replace("Tin_Beginner_Tutorial", "tir_beginner"); //Name = Name.Replace("Uladh_Cobh_to_Belfast", "cobh_to_belfast"); //Name = Name.Replace("Uladh_Belfast_to_Cobh", "belfast_to_cobh"); //Name = Name.Replace("Cobh_to_Belfast", "cobh_to_belfast_ocean"); //Name = Name.Replace("Belfast_to_Cobh", "belfast_to_cobh_ocean"); //Name = Name.Replace("MonsterRegion", "monster_region"); //Name = Name.Replace("Uladh_main", "tir"); //Name = Name.Replace("Uladh_TirCho_", "tir_"); //Name = Name.Replace("Uladh_Dunbarton", "dunbarton"); //Name = Name.Replace("Uladh_Dun_to_Tircho", "dugald_aisle"); //Name = Name.Replace("Ula_Tirnanog", "tnn"); //Name = Name.Replace("Ula_DgnHall_Dunbarton_before1", "rabbie_altar"); //Name = Name.Replace("Ula_DgnHall_Dunbarton_before2", "math_altar"); //Name = Name.Replace("MiscShop", "general"); //Name = Name.Replace("tir_ChiefHouse", "tir_duncan"); //Name = Name.Replace("Uladh_Dungeon_Black_Wolfs_Hall1", "ciar_altar"); //Name = Name.Replace("Uladh_Dungeon_Black_Wolfs_Hall2", "ciar_entrance"); //Name = Name.Replace("Uladh_Dungeon_Beginners_Hall1", "alby_altar"); //Name = Name.Replace("Uladh_Cobh_harbor", "cobh"); //Name = Name.Replace("Ula_DgnHall_Dunbarton_after", "rabbie_entrance"); //Name = Name.Replace("Ula_hardmode_DgnHall_TirChonaill_before", "alby_hard_altar"); //Name = Name.Replace("Ula_DgnArena_Tircho_Lobby", "alby_arena_lobby"); //Name = Name.Replace("Ula_DgnArena_Tircho_Arena", "alby_arena"); //Name = Name.Replace("Ula_Dun_to_Bangor", "gairech"); //Name = Name.Replace("Ula_Bangor", "bangor"); //Name = Name.Replace("Ula_DgnHall_Bangor_before1", "barri_altar"); //Name = Name.Replace("Ula_DgnHall_Bangor_before2", "barri_entrance_test"); //Name = Name.Replace("Ula_DgnHall_Bangor_after", "barri_entrance"); //Name = Name.Replace("tnn_ChiefHouse", "tnn_duncan"); //Name = Name.Replace("Ula_DgnHall_Tirnanog_before1", "albey_altar"); //Name = Name.Replace("Ula_DgnHall_Tirnanog_before2", "albey_altar_test"); //Name = Name.Replace("Ula_DgnHall_Tirnanog_after", "albey_altar_entrance"); //Name = Name.Replace("Sidhe_Sneachta_S", "sidhe_north"); //Name = Name.Replace("Sidhe_Sneachta_N", "sidhe_south"); //Name = Name.Replace("Ula_DgnHall_Danu_before", "fiodh_altar"); //Name = Name.Replace("Ula_DgnHall_Danu_after", "fiodh_entrance"); //Name = Name.Replace("Ula_", ""); //Name = Name.Replace("Emainmacha", "emain_macha"); //Name = Name.Replace("DgnHall_Coill_before", "coill_altar"); //Name = Name.Replace("DgnHall_Coill_after", "coill_entrance"); //Name = Name.Replace("emain_macha_Ceo", "ceo"); //Name = Name.Replace("DgnHall_Runda_before", "rundal_altar"); //Name = Name.Replace("DgnHall_Runda_after", "rundal_entrance"); //Name = Name.Replace("emain_macha_OidTobar_Hall", "ceo_cellar"); //Name = Name.Replace("Studio_Runda", "studio_rundal_boss"); //Name = Name.Replace("dunbarton_SchoolHall_before", "dunbarton_school_altar"); //Name = Name.Replace("dunbarton_School_LectureRoom", "dunbarton_school_library"); //Name = Name.Replace("Dgnhall_Peaca_before", "peaca_altar"); //Name = Name.Replace("Dgnhall_Peaca_after", "peaca_entrance"); //Name = Name.Replace("DgnHall_Tirnanog_G3_before", "baol_altar"); //Name = Name.Replace("DgnHall_Tirnanog_G3_after", "baol_entrance"); //Name = Name.Replace("Private_Wedding_waitingroom", "emain_macha_wedding_waiting"); //Name = Name.Replace("Private_Wedding_ceremonialhall", "emain_macha_wedding_ceremony"); //Name = Name.Replace("Dugald_Aisle_UserHouse", "dugald_userhouse"); //Name = Name.Replace("tnn_G3_Gairech_Hill", "tnn_gairech"); //Name = Name.Replace("Dugald_Aisle_UserCastleTest1", "user_castle_test_1"); //Name = Name.Replace("Dugald_Aisle_UserCastleTest2", "user_castle_test_2"); //Name = Name.Replace("tnn_G3", "tnn_bangor"); //Name = Regex.Replace(Name, "_TestRegion([0-9]+)", "test_region_$1"); //Name = Regex.Replace(Name, "dugald_userhouse_int_([0-9]+)", "user_house_int_$1"); //Name = Name.Replace("Dugald_Aisle_UserCastle_", "user_castle_"); //Name = Name.Replace("Dugald_Aisle_ModelHouse", "model_house"); //Name = Name.Replace("DgnArena_Dunbarton_Arena", "rabbie_battle_arena"); //Name = Name.Replace("DgnArena_Dunbarton_Lobby", "rabbie_battle_arena_lobby"); //Name = Name.Replace("DgnArena_Dunbarton_waitingroom", "rabbie_battle_arena_waiting"); //Name = Name.Replace("Iria_Harbor_01", "iria_harbor"); //Name = Name.Replace("Iria_SW_ruins_DG_before", "rano_ruins_altar"); //Name = Name.Replace("Iria_SW_ruins_DG_after", "rano_ruins_entrance"); //Name = Name.Replace("ArenaTest0", "arena_test_0"); //Name = Name.Replace("Loginstage_0", "login_stage_0"); //Name = Name.Replace("Iria_NN_dragoncave01", "renes"); //Name = Name.Replace("hardmode_DgnHall_TirChonaill_after", "alby_hard_entrance"); //Name = Name.Replace("hardmode_DgnHall_Ciar_before", "ciar_hard_altar"); //Name = Name.Replace("hardmode_DgnHall_Ciar_after", "ciar_hard_entrance"); //Name = Name.Replace("hardmode_rundal_altar", "rundal_hard_altar"); //Name = Name.Replace("hardmode_rundal_entrance", "rundal_hard_entrance"); //Name = Name.Replace("Uladh_Cobh", "cobh"); //Name = Name.Replace("Dunbarton_LectureRoom", "dunbarton_school_library"); //Name = Name.Replace("OidTobar_Hall", "ceo_cellar"); //Name = Name.Replace("Dugald_Aisle_Town", "dugald_residential"); //Name = Name.Replace("_Keep", "_castle_entrance"); //Name = Name.Replace("Dugald_Aisle", "dugald"); //Name = Name.Replace("keep_DgnHall_after", "dungeon_altar"); //Name = Name.Replace("keep_DgnHall_before", "dungeon_entrance"); //Name = Name.Replace("Studio_keep_DG", "studio_residential"); //Name = Name.Replace("Housing_CharDummyStage", "housing_dummy"); //Name = Name.Replace("Private_giant_Wedding_ceremonialhall", "vales_wedding_ceremony"); //Name = Name.Replace("Private_giant_Wedding_waitingroom", "vales_wedding_waiting"); //Name = Name.Replace("Private_Promotion_testRoom_waiting", "advancement_test_waiting"); //Name = Name.Replace("Private_Promotion_testRoom", "advancement_test"); //Name = Regex.Replace(Name, "_town$", "_residential"); //Name = Name.Replace("Soulstream", "soul_stream"); //Name = Name.Replace("soul_stream_region", "soul_stream_battle"); //Name = Name.Replace("taillteann_main_field", "taillteann"); //Name = Name.Replace("Taillteann_E_field", "sliab_cuilin"); //Name = Name.Replace("Taillteann_SE_field", "abb_neagh"); //Name = Name.Replace("Tara_N_Field", "comb_valley"); //Name = Name.Replace("Tara_main_field", "tara"); //Name = Name.Replace("Tara_SE_Field", "blago_prairie"); //Name = Name.Replace("Tara_tournament_field", "tara_jousting"); //Name = Name.Replace("Tara_cloth", "tara_clothing"); //Name = Regex.Replace(Name, "_misc$", "_general"); //Name = Name.Replace("Falias_main_field", "falias"); //Name = Name.Replace("Avon_main_field", "avon"); //Name = Name.Replace("JP_Nekojima_islet", "nekojima"); //Name = Name.Replace("JP_Nekojima_dungeon_hall_after", "nekojima_dungeon_entrance"); //Name = Name.Replace("JP_Nekojima", "nekojima"); //Name = Name.Replace("TirnanogDG", "Tirnanog_DG"); //Name = Name.Replace("Tirnanog", "tnn"); //Name = Name.Replace("Nao_tutorial", "soul_stream"); //Name = Name.Replace("G1_GoddessStage", "morrighan"); //Name = Name.Replace("Event_moonsurface", "event_moon"); //Name = Name.Replace("pvp_event", "event_pvp"); //Name = Name.Replace("Event", "event"); //Name = Name.Replace("event_impdream", "event_imp_dream"); //Name = Name.Replace("Iria_SW_main_field", "rano"); //Name = Name.Replace("Iria_Uladh_Ocean_fishingboat_float", "rano_fishing_boat"); //Name = Name.Replace("Iria_to_fishingboat", "rano_to_fishingboat"); //Name = Name.Replace("fishingboat_to_Iria", "fishingboat_to_rano"); //Name = Name.Replace("Iria_SE_main_field", "connous"); //Name = Name.Replace("Iria_SE_Desert_underground", "ant_tunnel"); //Name = Name.Replace("Iria_SE", "filia"); //Name = Name.Replace("Iria_NW", "physis"); //Name = Name.Replace("Iria_SW", "rano"); //Name = Name.Replace("MineField", "mine_field"); //Name = Name.Replace("monsterraid01", "monster_raid"); //Name = Name.Replace("ElfArena", "arena"); //Name = Name.Replace("Iria_Elf", "elf"); //Name = Name.Replace("physis_main_field", "physis"); //Name = Name.Replace("physis_tunnel_S", "physis_tunnel_south"); //Name = Name.Replace("physis_tunnel_N", "physis_tunnel_north"); //Name = Name.Replace("physis_tunnel_Outside", "solea"); //Name = Name.Replace("physis_Tutorial", "giant_tutorial"); //Name = Name.Replace("Studio", "studio"); //Name = Name.Replace("_mineB", "_mine_B"); //Name = Name.Replace("Iria_C", "courcle"); //Name = Name.Replace("Iria_NN", "zardine"); //Name = Name.Replace("_main_field", ""); //Name = Name.Replace("Belfast_human", "belfast"); //Name = Name.Replace("Qwest", "quest"); //Name = Name.Replace("Belfast_Skatha", "scathach"); //Name = Name.Replace("physis_glacier01_DG", "par"); //Name = Name.Replace("par_after", "par_altar"); //Name = Name.Replace("par_before", "par_entrance"); //Name = Name.Replace("Test01", "test_01"); //Name = Name.Replace("Test02", "test_02"); //Name = Name.Replace("Tara_keep_RG", "tara_castle"); //Name = Name.Replace("Tara_town_RG", "tara_residential"); //Name = Name.Replace("_TestRegion", "gm_island"); //Name = Regex.Replace(Name, "_Cloth$", "_clothing"); //Name = Name.Replace("filia_Desert_01_DG_after", "longa_altar"); //Name = Name.Replace("filia_Desert_01_DG_before", "longa_entrance"); //Name = Name.Replace("Private_igloo_01", "igloo"); //Name = Name.Replace("BlockRegion", "block_region"); //Name = Name.Replace("soul_stream_past_region", "soul_stream_past"); //Name = Name.Replace("soul_stream_future_region", "soul_stream_future"); //Name = Name.Replace("RE_Nekojima_islet", "doki_doki_island"); //Name = Name.Replace("DramaIriaS2", "drama_iria_s2"); //Name = Name.ToLower(); }
private List<StringTable> ReadStringFileInfo(BinaryReader reader, long end) { var value = new List<StringTable>(); // Contains one or more string tables (one for each language), // each string table contains one or more strings (key/value pairs mapping // keys to strings for that language) while (Stream.Position < end) { // Read the string table var stringTable = new StringTable(); value.Add(stringTable); var start = Stream.Position; var versionInfo = reader.ReadVersionInfo(); if (versionInfo.Header.Type != VersionDataType.Text) { throw new VersionResourceFormatException(); } var pair = uint.Parse(versionInfo.Key, NumberStyles.AllowHexSpecifier); var codePage = Helpers.LoWord(pair); var encoding = Encoding.GetEncoding(codePage); var languageIdentifier = Helpers.HiWord(pair); stringTable.Language = languageIdentifier; stringTable.Encoding = encoding; while (Stream.Position < start + versionInfo.Header.Length) { // Read the string data var stringInfo = reader.ReadVersionInfo(); var text = reader.ReadUnicodeString(); reader.Align(); stringTable.Values.Add(stringInfo.Key, text); } } return value; }
public static Mission Read(BinaryReader br) { var mi = new Mission { Id = br.ReadUInt32(), Name = br.ReadUnicodeString(65), Type = br.ReadByte(), Objectives = new Dictionary<Byte, MissionObjective>() }; br.ReadByte(); mi.NPC = br.ReadInt32(); mi.Priority = br.ReadInt32(); mi.ReqRace = br.ReadInt16(); mi.ReqClass = br.ReadInt16(); mi.ReqLevelMin = br.ReadInt32(); mi.ReqLevelMax = br.ReadInt32(); mi.ReqMissionId = br.Read<Int32>(4); mi.IsRepeatable = br.ReadInt16(); br.ReadBytes(2); mi.Item = br.Read<Int32>(4); mi.ItemTemplate = br.Read<Int32>(4); mi.ItemValue = br.Read<Single>(4); mi.ItemIsKit = br.Read<Int16>(4); mi.ItemQuantity = br.Read<Int32>(4); mi.AutoAssing = br.ReadInt16(); mi.ActiveObjectiveOverride = br.ReadInt16(); mi.Continent = br.ReadInt32(); mi.Achievement = br.ReadInt32(); mi.Discipline = br.ReadInt32(); mi.DisciplineValue = br.ReadInt32(); mi.RewardDiscipline = br.ReadInt32(); mi.RewardDisciplineValue = br.ReadInt32(); mi.RewardUnassignedDisciplinePoints = br.ReadInt32(); mi.RequirementEventId = br.ReadInt32(); mi.TargetLevel = br.ReadInt16(); br.ReadBytes(2); mi.RequirementsOred = br.ReadInt32(); mi.RequirementsNegative = br.ReadInt32(); mi.Region = br.ReadInt32(); mi.Pocket = br.ReadInt32(); mi.NumberOfObjectives = br.ReadByte(); br.ReadBytes(7); XElement element = null; var stream = AssetManager.GetStreamByName(String.Format("{0}.xml", mi.Name), "missions.glm") ?? AssetManager.GetStreamByName(String.Format("{0}.xml", mi.Name), "misc.glm"); if (stream != null) { using (stream) { var doc = XDocument.Load(stream); Debug.Assert(doc != null); element = doc.Element("Mission"); if (element != null) { mi.Title = (String)element.Element("Title"); mi.InternalName = (String)element.Element("Internal"); mi.Description = (String)element.Element("Description"); mi.OnLineAccept = (String)element.Element("OnLineAccept"); mi.OnLineReject = (String)element.Element("OnLineReject"); mi.NotCompleteText = (String)element.Element("NotCompleteText"); mi.CompleteText = (String)element.Element("CompleteText"); mi.FailText = (String)element.Element("FailText"); mi.CoreMission = (String)element.Element("CoreMission") != "0"; } } } var numOfObjective = br.ReadInt32(); for (var i = 0; i < numOfObjective; ++i) { var obj = MissionObjective.Read(br, mi, element); mi.Objectives.Add(obj.Sequence, obj); } return mi; }