From f5c7bc0fcaa2d14e936ffb3f2c16f83e9e38ce11 Mon Sep 17 00:00:00 2001 From: Robert Paciorek Date: Tue, 15 Aug 2023 08:33:18 +0000 Subject: [PATCH 01/17] initial support for World Of Jumpstart --- .../Common/AchievementController.cs | 14 +++++++++ .../Common/AuthenticationController.cs | 23 +++++++++++--- src/Controllers/Common/ContentController.cs | 31 +++++++++++++++++++ src/Controllers/Common/ItemStoreController.cs | 7 +++++ .../Common/RegistrationController.cs | 6 ++++ 5 files changed, 77 insertions(+), 4 deletions(-) diff --git a/src/Controllers/Common/AchievementController.cs b/src/Controllers/Common/AchievementController.cs index 8ba3222..44dae6d 100644 --- a/src/Controllers/Common/AchievementController.cs +++ b/src/Controllers/Common/AchievementController.cs @@ -90,6 +90,20 @@ public class AchievementController : Controller { return Ok("OK"); } + [HttpPost] + [Produces("application/xml")] + [Route("AchievementWebService.asmx/GetUserAchievementInfo")] + public IActionResult GetUserAchievementInfo([FromForm] string apiToken) { + Viking? viking = ctx.Sessions.FirstOrDefault(x => x.ApiToken == apiToken).Viking; + + if (viking != null) { + return Ok( + achievementService.CreateUserAchievementInfo(viking, AchievementPointTypes.PlayerXP) + ); + } + return null; + } + [HttpPost] [Produces("application/xml")] [Route("AchievementWebService.asmx/GetAchievementsByUserID")] diff --git a/src/Controllers/Common/AuthenticationController.cs b/src/Controllers/Common/AuthenticationController.cs index a4b9518..04a6342 100644 --- a/src/Controllers/Common/AuthenticationController.cs +++ b/src/Controllers/Common/AuthenticationController.cs @@ -33,11 +33,18 @@ public class AuthenticationController : Controller { [Route("v3/AuthenticationWebService.asmx/LoginParent")] [DecryptRequest("parentLoginData")] [EncryptResponse] - public IActionResult LoginParent() { + public IActionResult LoginParent([FromForm] string apiKey) { ParentLoginData data = XmlUtil.DeserializeXml(Request.Form["parentLoginData"]); // Authenticate the user - User? user = ctx.Users.FirstOrDefault(e => e.Username == data.UserName); + User? user = null; + uint gameVersion = ClientVersion.GetVersion(apiKey); + if (gameVersion == ClientVersion.WoJS) { + user = ctx.Users.FirstOrDefault(e => e.Email == data.UserName); + } else { + user = ctx.Users.FirstOrDefault(e => e.Username == data.UserName); + } + if (user is null || new PasswordHasher().VerifyHashedPassword(null, user.Password, data.Password) != PasswordVerificationResult.Success) { return Ok(new ParentLoginInfo { Status = MembershipUserStatus.InvalidPassword }); } @@ -52,6 +59,11 @@ public class AuthenticationController : Controller { ctx.Sessions.Add(session); ctx.SaveChanges(); + var childList = new List(); + foreach (var viking in user.Vikings) { + childList.Add(new sodoff.Schema.UserLoginInfo{UserName = viking.Name, UserID = viking.Uid.ToString()}); + } + var response = new ParentLoginInfo { UserName = user.Username, //Email = user.Email, /* disabled to avoid put email in client debug logs */ @@ -59,7 +71,8 @@ public class AuthenticationController : Controller { UserID = user.Id.ToString(), Status = MembershipUserStatus.Success, SendActivationReminder = false, - UnAuthorized = false + UnAuthorized = false, + ChildList = childList.ToArray() }; return Ok(response); @@ -124,7 +137,9 @@ public class AuthenticationController : Controller { [HttpPost] [Produces("application/xml")] [Route("AuthenticationWebService.asmx/IsValidApiToken_V2")] - public IActionResult IsValidApiToken([FromForm] Guid apiToken) { + public IActionResult IsValidApiToken([FromForm] Guid? apiToken) { + if (apiToken is null) + return Ok(ApiTokenStatus.TokenNotFound); User? user = ctx.Sessions.FirstOrDefault(e => e.ApiToken == apiToken)?.User; Viking? viking = ctx.Sessions.FirstOrDefault(e => e.ApiToken == apiToken)?.Viking; if (user is null && viking is null) diff --git a/src/Controllers/Common/ContentController.cs b/src/Controllers/Common/ContentController.cs index 444c394..0b78256 100644 --- a/src/Controllers/Common/ContentController.cs +++ b/src/Controllers/Common/ContentController.cs @@ -315,8 +315,21 @@ public class ContentController : Controller { return 0; } + [HttpPost] + //[Produces("application/xml")] + [Route("ContentWebService.asmx/GetAvatar")] // used by World Of Jumpstart + public IActionResult GetAvatar([FromForm] string apiToken) { + Viking? viking = ctx.Sessions.FirstOrDefault(e => e.ApiToken == apiToken)?.Viking; + if (viking is null || viking.AvatarSerialized is null) { + // TODO: result for invalid session + return Ok(); + } + return Ok(viking.AvatarSerialized); + } + [HttpPost] [Produces("application/xml")] + [Route("ContentWebService.asmx/SetAvatar")] // used by World Of Jumpstart [Route("V2/ContentWebService.asmx/SetAvatar")] [VikingSession] public IActionResult SetAvatar(Viking viking, [FromForm] string contentXML) { @@ -577,6 +590,8 @@ public class ContentController : Controller { [HttpPost] [Produces("application/xml")] [Route("ContentWebService.asmx/GetSelectedRaisedPet")] + [Route("ContentWebService.asmx/GetCurrentPetByUserID")] // used by World Of Jumpstart + [Route("ContentWebService.asmx/GetActiveRaisedPet")] // used by World Of Jumpstart [VikingSession(UseLock=false)] public RaisedPetData[]? GetSelectedRaisedPet(Viking viking, [FromForm] string userId, [FromForm] bool isActive) { Dragon? dragon = viking.SelectedDragon; @@ -1156,6 +1171,22 @@ public class ContentController : Controller { return Ok(roomService.NextItemState(item, request.OverrideStateCriteria)); } + [HttpPost] + //[Produces("application/xml")] + [Route("ContentWebService.asmx/GetDisplayNames")] // used by World Of Jumpstart + public IActionResult GetDisplayNames() { + // TODO: This is a placeholder + return Ok(" 1 Aaliyah 1 2 Abby 1 3 Adrian 1 261 Alan 1 "); + } + + [HttpPost] + //[Produces("application/xml")] + [Route("ContentWebService.asmx/GetScene")] // used by World Of Jumpstart + public IActionResult GetScene() { + // TODO: This is a placeholder + return Ok(""); + } + [HttpPost] [Produces("application/xml")] [Route("V2/ContentWebService.asmx/GetGameData")] diff --git a/src/Controllers/Common/ItemStoreController.cs b/src/Controllers/Common/ItemStoreController.cs index f5569bf..808f685 100644 --- a/src/Controllers/Common/ItemStoreController.cs +++ b/src/Controllers/Common/ItemStoreController.cs @@ -46,6 +46,13 @@ public class ItemStoreController : Controller { return Ok(itemService.GetItem(itemId)); } + [HttpPost] + [Produces("application/xml")] + [Route("ItemStoreWebService.asmx/GetItemsInStore")] // used by World Of Jumpstart + public IActionResult GetItemsInStore([FromForm] int storeId) { + return Ok(storeService.GetStore(storeId)); + } + [HttpPost] //[Produces("application/xml")] [Route("ItemStoreWebService.asmx/GetRankAttributeData")] diff --git a/src/Controllers/Common/RegistrationController.cs b/src/Controllers/Common/RegistrationController.cs index 97833ab..9be9e86 100644 --- a/src/Controllers/Common/RegistrationController.cs +++ b/src/Controllers/Common/RegistrationController.cs @@ -63,6 +63,12 @@ public class RegistrationController : Controller { }; // Check if user exists + uint gameVersion = ClientVersion.GetVersion(apiKey); + if (gameVersion == ClientVersion.WoJS || gameVersion == ClientVersion.MB) { + if (ctx.Users.Count(e => e.Email == u.Email) > 0) { + return Ok(new RegistrationResult { Status = MembershipUserStatus.DuplicateEmail }); + } + } if (ctx.Users.Count(e => e.Username== u.Username) > 0) { return Ok(new RegistrationResult { Status = MembershipUserStatus.DuplicateUserName }); } From ff19b747d8d53b9cb67b78ab56a1f80e939667a2 Mon Sep 17 00:00:00 2001 From: Alan Moon Date: Mon, 21 Aug 2023 16:03:34 +0000 Subject: [PATCH 02/17] backport Set/GetProduct from WoJSReStartedApi Co-authored-by: Robert Paciorek --- src/Controllers/Common/ContentController.cs | 26 +++++++++++++++++++++ src/Model/Viking.cs | 2 ++ 2 files changed, 28 insertions(+) diff --git a/src/Controllers/Common/ContentController.cs b/src/Controllers/Common/ContentController.cs index 0b78256..8d73667 100644 --- a/src/Controllers/Common/ContentController.cs +++ b/src/Controllers/Common/ContentController.cs @@ -35,6 +35,32 @@ public class ContentController : Controller { this.config = config; } + [HttpPost] + //[Produces("application/xml")] + [Route("ContentWebService.asmx/GetProduct")] // used by World Of Jumpstart + public string? GetProduct([FromForm] string apiToken) + { + Viking? user = ctx.Sessions.FirstOrDefault(x => x.ApiToken == apiToken)?.Viking; + if (user is null) + return string.Empty; + + return user.ProductData; + } + + [HttpPost] + //[Produces("application/xml")] + [Route("ContentWebService.asmx/SetProduct")] // used by World Of Jumpstart + public string? SetProduct([FromForm] string apiToken, [FromForm] string contentXml) + { + Viking? child = ctx.Sessions.FirstOrDefault(x => x.ApiToken == apiToken)?.Viking; + if (child is null) + return string.Empty; + + child.ProductData = contentXml; + ctx.SaveChanges(); + return child.ProductData; + } + [HttpPost] [Produces("application/xml")] [Route("ContentWebService.asmx/GetDefaultNameSuggestion")] diff --git a/src/Model/Viking.cs b/src/Model/Viking.cs index 731deb0..d5146d8 100644 --- a/src/Model/Viking.cs +++ b/src/Model/Viking.cs @@ -33,4 +33,6 @@ public class Viking { public virtual ICollection GameData { get; set; } = null!; public virtual ICollection ProfileAnswers { get; set; } = null!; public virtual Dragon? SelectedDragon { get; set; } + + public string? ProductData { get; set; } } From c1e759e766c89a1918948c5889c78842b5e16c99 Mon Sep 17 00:00:00 2001 From: Robert Paciorek Date: Mon, 21 Aug 2023 16:31:19 +0000 Subject: [PATCH 03/17] WoJS: mythie and sanctuaty 1.1 fixes --- .../Common/AchievementController.cs | 2 +- src/Controllers/Common/ContentController.cs | 88 ++++++++++++++++++- src/Schema/PetData.cs | 10 +++ src/Schema/PetDataPet.cs | 21 +++++ 4 files changed, 118 insertions(+), 3 deletions(-) create mode 100644 src/Schema/PetData.cs create mode 100644 src/Schema/PetDataPet.cs diff --git a/src/Controllers/Common/AchievementController.cs b/src/Controllers/Common/AchievementController.cs index 44dae6d..3d69244 100644 --- a/src/Controllers/Common/AchievementController.cs +++ b/src/Controllers/Common/AchievementController.cs @@ -93,7 +93,7 @@ public class AchievementController : Controller { [HttpPost] [Produces("application/xml")] [Route("AchievementWebService.asmx/GetUserAchievementInfo")] - public IActionResult GetUserAchievementInfo([FromForm] string apiToken) { + public IActionResult GetUserAchievementInfo([FromForm] string apiToken) { // used by World Of Jumpstart Viking? viking = ctx.Sessions.FirstOrDefault(x => x.ApiToken == apiToken).Viking; if (viking != null) { diff --git a/src/Controllers/Common/ContentController.cs b/src/Controllers/Common/ContentController.cs index 8d73667..7b49315 100644 --- a/src/Controllers/Common/ContentController.cs +++ b/src/Controllers/Common/ContentController.cs @@ -35,6 +35,24 @@ public class ContentController : Controller { this.config = config; } + [HttpPost] + [Produces("application/xml")] + [Route("ContentWebService.asmx/GetRaisedPetGrowthStates")] // used by World Of Jumpstart 1.1 + public RaisedPetGrowthState[] GetRaisedPetGrowthStates() + { + return new RaisedPetGrowthState[] { + new RaisedPetGrowthState {GrowthStateID = 0, Name = "none"}, + new RaisedPetGrowthState {GrowthStateID = 1, Name = "powerup"}, + new RaisedPetGrowthState {GrowthStateID = 2, Name = "find"}, + new RaisedPetGrowthState {GrowthStateID = 3, Name = "eggInHand"}, + new RaisedPetGrowthState {GrowthStateID = 4, Name = "hatching"}, + new RaisedPetGrowthState {GrowthStateID = 5, Name = "baby"}, + new RaisedPetGrowthState {GrowthStateID = 6, Name = "child"}, + new RaisedPetGrowthState {GrowthStateID = 7, Name = "teen"}, + new RaisedPetGrowthState {GrowthStateID = 8, Name = "adult"}, + }; + } + [HttpPost] //[Produces("application/xml")] [Route("ContentWebService.asmx/GetProduct")] // used by World Of Jumpstart @@ -493,6 +511,37 @@ public class ContentController : Controller { }); } + [HttpPost] + [Produces("application/xml")] + [Route("ContentWebService.asmx/SetRaisedPet")] // used by World Of Jumpstart + public IActionResult SetRaisedPetv1([FromForm] string apiToken, [FromForm] string raisedPetData) { + Console.WriteLine(string.Format("\n{0}", Request.Path)); + foreach (var x in Request.Form) + Console.WriteLine(string.Format("{0}", x)); + + Viking? viking = ctx.Sessions.FirstOrDefault(e => e.ApiToken == apiToken)?.Viking; + if (viking is null) { + // TODO: result for invalid session + return Ok(false); + } + + RaisedPetData petData = XmlUtil.DeserializeXml(raisedPetData); + + // Find the dragon + Dragon? dragon = viking.Dragons.FirstOrDefault(e => e.Id == petData.RaisedPetID); + if (dragon is null) { + return Ok(new SetRaisedPetResponse { + RaisedPetSetResult = RaisedPetSetResult.Invalid + }); + } + + dragon.RaisedPetData = XmlUtil.SerializeXml(UpdateDragon(dragon, petData)); + ctx.Update(dragon); + ctx.SaveChanges(); + + return Ok(true); + } + [HttpPost] [Produces("application/xml")] [Route("V2/ContentWebService.asmx/SetRaisedPet")] // used by Magic & Mythies @@ -615,9 +664,32 @@ public class ContentController : Controller { [HttpPost] [Produces("application/xml")] - [Route("ContentWebService.asmx/GetSelectedRaisedPet")] [Route("ContentWebService.asmx/GetCurrentPetByUserID")] // used by World Of Jumpstart + public PetData? GetCurrentPetByUserID([FromForm] string apiToken, [FromForm] string userId, [FromForm] bool isActive) { + Console.WriteLine(string.Format("\n{0}", Request.Path)); + foreach (var x in Request.Form) + Console.WriteLine(string.Format("{0}", x)); + + // TODO WoJS placeholder + + return null; + } + + [HttpPost] + [Produces("application/xml")] [Route("ContentWebService.asmx/GetActiveRaisedPet")] // used by World Of Jumpstart + public RaisedPetData[] GetActiveRaisedPet(Viking viking, [FromForm] string userId, [FromForm] bool isActive) { + Dragon? dragon = viking.SelectedDragon; + if (dragon is null) { + return new RaisedPetData[0]; + } + + return new RaisedPetData[] {GetRaisedPetDataFromDragon(dragon)}; + } + + [HttpPost] + [Produces("application/xml")] + [Route("ContentWebService.asmx/GetSelectedRaisedPet")] [VikingSession(UseLock=false)] public RaisedPetData[]? GetSelectedRaisedPet(Viking viking, [FromForm] string userId, [FromForm] bool isActive) { Dragon? dragon = viking.SelectedDragon; @@ -630,6 +702,18 @@ public class ContentController : Controller { }; } + [HttpPost] + [Produces("application/xml")] + [Route("ContentWebService.asmx/GetInactiveRaisedPet")] // used by World Of Jumpstart + public RaisedPetData[] GetInactiveRaisedPet([FromForm] string apiToken) { + Viking? viking = ctx.Sessions.FirstOrDefault(e => e.ApiToken == apiToken)?.Viking; + if (viking is null) { + return null; + } + + return new RaisedPetData[0]; // FIXME should return real inactive pets list + } + [HttpPost] [Produces("application/xml")] [Route("ContentWebService.asmx/SetImage")] @@ -1202,7 +1286,7 @@ public class ContentController : Controller { [Route("ContentWebService.asmx/GetDisplayNames")] // used by World Of Jumpstart public IActionResult GetDisplayNames() { // TODO: This is a placeholder - return Ok(" 1 Aaliyah 1 2 Abby 1 3 Adrian 1 261 Alan 1 "); + return Ok(" 1 Aaliyah 1 2 Abby 2 3 Adrian 3 11 Karen 2 12 Luna 2 13 Tori 2 "); } [HttpPost] diff --git a/src/Schema/PetData.cs b/src/Schema/PetData.cs new file mode 100644 index 0000000..3fbb2f3 --- /dev/null +++ b/src/Schema/PetData.cs @@ -0,0 +1,10 @@ +using System.Xml.Serialization; + +namespace sodoff.Schema; + +[XmlRoot(ElementName = "PetData", Namespace = "")] +[Serializable] +public class PetData { + [XmlElement(ElementName = "Pet")] + public PetDataPet[]? Pet; +} diff --git a/src/Schema/PetDataPet.cs b/src/Schema/PetDataPet.cs new file mode 100644 index 0000000..88d1e13 --- /dev/null +++ b/src/Schema/PetDataPet.cs @@ -0,0 +1,21 @@ +using System.Xml.Serialization; + +namespace sodoff.Schema; + +[XmlRoot(ElementName = "PetDataPet", Namespace = "")] +[Serializable] +public class PetDataPet { + public string Geometry; + + public string Texture; + + public string Type; + + public string Name; + + public float Dirtiness; + + public string AccessoryGeometry; + + public string AccessoryTexture; +} From f695f9651746350f6b8c7e334b79c8e38dac942e Mon Sep 17 00:00:00 2001 From: Robert Paciorek Date: Mon, 28 Aug 2023 21:57:47 +0000 Subject: [PATCH 04/17] support for Math Blaster --- .../Common/AchievementController.cs | 6 ++-- src/Controllers/Common/ContentController.cs | 25 ++++++++++++++ src/Schema/TreasureChestData.cs | 33 +++++++++++++++++++ 3 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 src/Schema/TreasureChestData.cs diff --git a/src/Controllers/Common/AchievementController.cs b/src/Controllers/Common/AchievementController.cs index 3d69244..7f7cdc7 100644 --- a/src/Controllers/Common/AchievementController.cs +++ b/src/Controllers/Common/AchievementController.cs @@ -92,8 +92,8 @@ public class AchievementController : Controller { [HttpPost] [Produces("application/xml")] - [Route("AchievementWebService.asmx/GetUserAchievementInfo")] - public IActionResult GetUserAchievementInfo([FromForm] string apiToken) { // used by World Of Jumpstart + [Route("AchievementWebService.asmx/GetUserAchievementInfo")] // used by World Of Jumpstart + public IActionResult GetUserAchievementInfo([FromForm] Guid apiToken) { Viking? viking = ctx.Sessions.FirstOrDefault(x => x.ApiToken == apiToken).Viking; if (viking != null) { @@ -103,7 +103,7 @@ public class AchievementController : Controller { } return null; } - + [HttpPost] [Produces("application/xml")] [Route("AchievementWebService.asmx/GetAchievementsByUserID")] diff --git a/src/Controllers/Common/ContentController.cs b/src/Controllers/Common/ContentController.cs index 7b49315..6aefa1d 100644 --- a/src/Controllers/Common/ContentController.cs +++ b/src/Controllers/Common/ContentController.cs @@ -1284,6 +1284,7 @@ public class ContentController : Controller { [HttpPost] //[Produces("application/xml")] [Route("ContentWebService.asmx/GetDisplayNames")] // used by World Of Jumpstart + [Route("ContentWebService.asmx/GetDisplayNamesByCategoryID")] // used by Math Blaster public IActionResult GetDisplayNames() { // TODO: This is a placeholder return Ok(" 1 Aaliyah 1 2 Abby 2 3 Adrian 3 11 Karen 2 12 Luna 2 13 Tori 2 "); @@ -1711,6 +1712,30 @@ public class ContentController : Controller { return Ok(gameDataService.GetGameData(viking, gameId, isMultiplayer, difficulty, gameLevel, key, count, AscendingOrder, buddyFilter, DateTime.Parse(startDate, usCulture), DateTime.Parse(endDate, usCulture))); } + [HttpPost] + [Produces("application/xml")] + [Route("ContentWebService.asmx/GetPeriodicGameDataByGame")] // used by Math Blaster + public IActionResult GetPeriodicGameDataByGame() { + // TODO: This is a placeholder + return Ok(new GameDataSummary()); + } + + [HttpPost] + [Produces("application/xml")] + [Route("MissionWebService.asmx/GetTreasureChest")] // used by Math Blaster + public IActionResult GetTreasureChest() { + // TODO: This is a placeholder + return Ok(new TreasureChestData()); + } + + [HttpPost] + [Produces("application/xml")] + [Route("MissionWebService.asmx/GetWorldId")] // used by Math Blaster + public IActionResult GetWorldId() { + // TODO: This is a placeholder + return Ok(0); + } + private static RaisedPetData GetRaisedPetDataFromDragon (Dragon dragon, int? selectedDragonId = null) { if (selectedDragonId is null) selectedDragonId = dragon.Viking.SelectedDragonId; diff --git a/src/Schema/TreasureChestData.cs b/src/Schema/TreasureChestData.cs new file mode 100644 index 0000000..4ef3672 --- /dev/null +++ b/src/Schema/TreasureChestData.cs @@ -0,0 +1,33 @@ +using System.Xml.Serialization; + +namespace sodoff.Schema; + +[XmlRoot(ElementName = "TreasureChestData", Namespace = "")] +[Serializable] +public class TreasureChestData +{ + public int TreasureChestId; + + [XmlElement(ElementName = "StartDate", IsNullable = true)] + public string StartDate; + + [XmlElement(ElementName = "EndDate", IsNullable = true)] + public string EndDate; + + public string ServerTime; + + public float RespawnTime; + + public int ChestMin; + + public int ChestMax; + + [XmlElement(ElementName = "GameCurrencyMin", IsNullable = true)] + public int? GameCurrencyMin; + + [XmlElement(ElementName = "GameCurrencyMax", IsNullable = true)] + public int? GameCurrencyMax; + + [XmlElement(ElementName = "ItemId")] + public int[] ItemId; +} From 6dde75fbc734c4504ac1bcbfb8212eef2170fc1d Mon Sep 17 00:00:00 2001 From: Robert Paciorek Date: Wed, 6 Sep 2023 07:57:05 +0000 Subject: [PATCH 05/17] use VikingSession for WoJS, fix GetActiveRaisedPet --- src/Controllers/Common/ContentController.cs | 55 ++++++--------------- 1 file changed, 16 insertions(+), 39 deletions(-) diff --git a/src/Controllers/Common/ContentController.cs b/src/Controllers/Common/ContentController.cs index 6aefa1d..0ea302b 100644 --- a/src/Controllers/Common/ContentController.cs +++ b/src/Controllers/Common/ContentController.cs @@ -56,27 +56,19 @@ public class ContentController : Controller { [HttpPost] //[Produces("application/xml")] [Route("ContentWebService.asmx/GetProduct")] // used by World Of Jumpstart - public string? GetProduct([FromForm] string apiToken) - { - Viking? user = ctx.Sessions.FirstOrDefault(x => x.ApiToken == apiToken)?.Viking; - if (user is null) - return string.Empty; - - return user.ProductData; + [VikingSession(UseLock=false)] + public string? GetProduct(Viking viking) { + return viking.ProductData; } [HttpPost] //[Produces("application/xml")] [Route("ContentWebService.asmx/SetProduct")] // used by World Of Jumpstart - public string? SetProduct([FromForm] string apiToken, [FromForm] string contentXml) - { - Viking? child = ctx.Sessions.FirstOrDefault(x => x.ApiToken == apiToken)?.Viking; - if (child is null) - return string.Empty; - - child.ProductData = contentXml; + [VikingSession] + public string? SetProduct(Viking viking, [FromForm] string contentXml) { + viking.ProductData = contentXml; ctx.SaveChanges(); - return child.ProductData; + return viking.ProductData; } [HttpPost] @@ -362,12 +354,8 @@ public class ContentController : Controller { [HttpPost] //[Produces("application/xml")] [Route("ContentWebService.asmx/GetAvatar")] // used by World Of Jumpstart - public IActionResult GetAvatar([FromForm] string apiToken) { - Viking? viking = ctx.Sessions.FirstOrDefault(e => e.ApiToken == apiToken)?.Viking; - if (viking is null || viking.AvatarSerialized is null) { - // TODO: result for invalid session - return Ok(); - } + [VikingSession(UseLock=false)] + public IActionResult GetAvatar(Viking viking) { return Ok(viking.AvatarSerialized); } @@ -514,17 +502,8 @@ public class ContentController : Controller { [HttpPost] [Produces("application/xml")] [Route("ContentWebService.asmx/SetRaisedPet")] // used by World Of Jumpstart - public IActionResult SetRaisedPetv1([FromForm] string apiToken, [FromForm] string raisedPetData) { - Console.WriteLine(string.Format("\n{0}", Request.Path)); - foreach (var x in Request.Form) - Console.WriteLine(string.Format("{0}", x)); - - Viking? viking = ctx.Sessions.FirstOrDefault(e => e.ApiToken == apiToken)?.Viking; - if (viking is null) { - // TODO: result for invalid session - return Ok(false); - } - + [VikingSession] + public IActionResult SetRaisedPetv1(Viking viking, [FromForm] string raisedPetData) { RaisedPetData petData = XmlUtil.DeserializeXml(raisedPetData); // Find the dragon @@ -665,7 +644,8 @@ public class ContentController : Controller { [HttpPost] [Produces("application/xml")] [Route("ContentWebService.asmx/GetCurrentPetByUserID")] // used by World Of Jumpstart - public PetData? GetCurrentPetByUserID([FromForm] string apiToken, [FromForm] string userId, [FromForm] bool isActive) { + [VikingSession(UseLock=false)] + public PetData? GetCurrentPetByUserID(Viking viking, [FromForm] string userId, [FromForm] bool isActive) { Console.WriteLine(string.Format("\n{0}", Request.Path)); foreach (var x in Request.Form) Console.WriteLine(string.Format("{0}", x)); @@ -678,6 +658,7 @@ public class ContentController : Controller { [HttpPost] [Produces("application/xml")] [Route("ContentWebService.asmx/GetActiveRaisedPet")] // used by World Of Jumpstart + [VikingSession(UseLock=false)] public RaisedPetData[] GetActiveRaisedPet(Viking viking, [FromForm] string userId, [FromForm] bool isActive) { Dragon? dragon = viking.SelectedDragon; if (dragon is null) { @@ -705,12 +686,8 @@ public class ContentController : Controller { [HttpPost] [Produces("application/xml")] [Route("ContentWebService.asmx/GetInactiveRaisedPet")] // used by World Of Jumpstart - public RaisedPetData[] GetInactiveRaisedPet([FromForm] string apiToken) { - Viking? viking = ctx.Sessions.FirstOrDefault(e => e.ApiToken == apiToken)?.Viking; - if (viking is null) { - return null; - } - + [VikingSession(UseLock=false)] + public RaisedPetData[] GetInactiveRaisedPet(Viking viking) { return new RaisedPetData[0]; // FIXME should return real inactive pets list } From 7189f049e8baabc7415eb2a90b043c939252cbed Mon Sep 17 00:00:00 2001 From: Robert Paciorek Date: Sat, 9 Sep 2023 00:04:16 +0000 Subject: [PATCH 06/17] SetRaisedPetInactive -> support for releasing pet --- src/Controllers/Common/ContentController.cs | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/Controllers/Common/ContentController.cs b/src/Controllers/Common/ContentController.cs index 0ea302b..e249c31 100644 --- a/src/Controllers/Common/ContentController.cs +++ b/src/Controllers/Common/ContentController.cs @@ -571,6 +571,17 @@ public class ContentController : Controller { }); } + [HttpPost] + [Produces("application/xml")] + [Route("ContentWebService.asmx/SetRaisedPetInactive")] // used by World Of Jumpstart + [VikingSession] + public IActionResult SetRaisedPetInactive(Viking viking, [FromForm] int raisedPetID) { + viking.SelectedDragonId = null; + ctx.SaveChanges(); + + return Ok(true); + } + [HttpPost] [Produces("application/xml")] [Route("ContentWebService.asmx/SetSelectedPet")] @@ -665,6 +676,7 @@ public class ContentController : Controller { return new RaisedPetData[0]; } + // NOTE: returned dragon PetTypeID should be equal value of pair 1967 → CurrentRaisedPetType return new RaisedPetData[] {GetRaisedPetDataFromDragon(dragon)}; } @@ -685,10 +697,15 @@ public class ContentController : Controller { [HttpPost] [Produces("application/xml")] - [Route("ContentWebService.asmx/GetInactiveRaisedPet")] // used by World Of Jumpstart + [Route("ContentWebService.asmx/GetInactiveRaisedPet")] // used by World Of Jumpstart 1.1 [VikingSession(UseLock=false)] public RaisedPetData[] GetInactiveRaisedPet(Viking viking) { - return new RaisedPetData[0]; // FIXME should return real inactive pets list + RaisedPetData[] dragons = viking.Dragons + .Where(d => d.RaisedPetData is not null && d.Id != viking.SelectedDragonId) + .Select(d => GetRaisedPetDataFromDragon(d, viking.SelectedDragonId)) + .ToArray(); + + return dragons; } [HttpPost] From b2220ccfdbc943d66a7cc0bc8f4e5b74b6824f9f Mon Sep 17 00:00:00 2001 From: Robert Paciorek Date: Sat, 9 Sep 2023 09:05:38 +0000 Subject: [PATCH 07/17] fix registration in Math Blaster --- .../Common/AuthenticationController.cs | 2 +- src/Controllers/Common/RegistrationController.cs | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/Controllers/Common/AuthenticationController.cs b/src/Controllers/Common/AuthenticationController.cs index 04a6342..fce21ce 100644 --- a/src/Controllers/Common/AuthenticationController.cs +++ b/src/Controllers/Common/AuthenticationController.cs @@ -39,7 +39,7 @@ public class AuthenticationController : Controller { // Authenticate the user User? user = null; uint gameVersion = ClientVersion.GetVersion(apiKey); - if (gameVersion == ClientVersion.WoJS) { + if (gameVersion == ClientVersion.WoJS || gameVersion == ClientVersion.MB) { user = ctx.Users.FirstOrDefault(e => e.Email == data.UserName); } else { user = ctx.Users.FirstOrDefault(e => e.Username == data.UserName); diff --git a/src/Controllers/Common/RegistrationController.cs b/src/Controllers/Common/RegistrationController.cs index 9be9e86..f0b99bf 100644 --- a/src/Controllers/Common/RegistrationController.cs +++ b/src/Controllers/Common/RegistrationController.cs @@ -53,7 +53,7 @@ public class RegistrationController : Controller { [Route("v3/RegistrationWebService.asmx/RegisterParent")] [DecryptRequest("parentRegistrationData")] [EncryptResponse] - public IActionResult RegisterParent() { + public IActionResult RegisterParent([FromForm] string apiKey) { ParentRegistrationData data = XmlUtil.DeserializeXml(Request.Form["parentRegistrationData"]); User u = new User { Id = Guid.NewGuid(), @@ -74,6 +74,19 @@ public class RegistrationController : Controller { } ctx.Users.Add(u); + + if(gameVersion == ClientVersion.MB) { + Viking v = new Viking { + Uid = Guid.NewGuid(), + Name = data.ChildList[0].ChildName, + User = u, + InventoryItems = new List(), + AchievementPoints = new List(), + Rooms = new List() + }; + ctx.Vikings.Add(v); + } + ctx.SaveChanges(); ParentLoginInfo pli = new ParentLoginInfo { From f8c8b7564591cc0bbf1f43a14ac546eb35137c11 Mon Sep 17 00:00:00 2001 From: Robert Paciorek Date: Tue, 19 Sep 2023 09:57:35 +0000 Subject: [PATCH 08/17] quests data - quests files for WoJS --- src/Resources/defaultmissionlist_wojs.xml | 37 + src/Resources/missions_wojs.xml | 3546 +++++++++++++++++++++ src/Services/MissionStoreSingleton.cs | 16 + src/sodoff.csproj | 7 + 4 files changed, 3606 insertions(+) create mode 100644 src/Resources/defaultmissionlist_wojs.xml create mode 100644 src/Resources/missions_wojs.xml diff --git a/src/Resources/defaultmissionlist_wojs.xml b/src/Resources/defaultmissionlist_wojs.xml new file mode 100644 index 0000000..e2a8805 --- /dev/null +++ b/src/Resources/defaultmissionlist_wojs.xml @@ -0,0 +1,37 @@ + + + + + 1509 + 1511 + 1512 + 1513 + 1514 + 1743 + 2323 + 2374 + 2375 + 2376 + 2377 + 2378 + 2379 + 2380 + 2381 + 2382 + 2383 + 2384 + 2385 + 2386 + 2440 + 2441 + 2442 + 2446 + 2447 + 2448 + 2449 + 2451 + 2452 + + + + diff --git a/src/Resources/missions_wojs.xml b/src/Resources/missions_wojs.xml new file mode 100644 index 0000000..206a1de --- /dev/null +++ b/src/Resources/missions_wojs.xml @@ -0,0 +1,3546 @@ + + + + false + 1509 + 1. Find an Eggling and hatch it into a Mythie! + 1 + 1 +

+ <Data><Repeat>0</Repeat><Hidden>0</Hidden><End><Type>VO</Type><Asset>RS_DATA/JSDirectedS341.unity3d/DlgIvyDirectedM1509End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><End><Type>Popup</Type><Asset>RS_DATA/PfUiMissionActionDB.unity3d/PfUiMissionActionDB</Asset><NPC>PfDyan</NPC><Text>Congratulations! Your egg has hatched into an amazing Mythie! Here are some JumpStars and Coins to help you raise and train it! +</Text><ID>923369</ID><ItemID>0</ItemID><Priority>0</Priority></End><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward><Title><Text>Adopt a Mythie</Text><ID>923367</ID></Title><Desc><Text>Meet Ivy in Enchanted Sanctuary and adopt your very own Mythie!</Text><ID>923368</ID></Desc></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 1509 + 1195 + 0 + + + 1 + 1509 + 1234 + 0 + + + 1 + 1509 + 1235 + 0 + + + 1 + 1509 + 1196 + 0 + + + 1 + 1509 + 1197 + 0 + + + 1 + 1509 + 1199 + 0 + + + + 1 + 202676 + 0 + + 1195 + Get an Eggling + <Data><Offer><Type>VO</Type><Asset>RS_DATA/TutMissionBoardIntroJS.unity3d/DlgIvyDirectedTut01</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><Offer><Type>Popup</Type><ID>934639</ID><Asset>RS_DATA/PfUiMissionActionDB.unity3d/PfUiMissionActionDB</Asset><NPC>PfDyan</NPC><Text>I'm Ivy and welcome to World of JumpStart. There is so much to do here I want to make sure you donât miss a thing! Meet me in Enchanted Sanctuary to get started. +</Text><ItemID>0</ItemID><Priority>0</Priority></Offer><Objective><Pair><Key>Scene</Key><Value>SanctuaryBaby</Value></Pair><Pair><Key>NPC</Key><Value>PfDyan</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Meet</Type><Title><Text>Meet Ivy in Enchanted Sanctuary and get your very own Mythie!</Text><ID>934637</ID></Title><Desc><Text>Meet Ivy in Enchanted Sanctuary. Use the map or portal to get there.</Text><ID>934638</ID></Desc></Data> + 0 + + + 1196 + Tickle Time + <Data><Offer><Type>VO</Type><Asset>RS_DATA/PenReconM2T4.unity3d/DlgIvyReconM2T4Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/PenReconM2T4.unity3d/DlgIvyReconM2T4End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>SanctuaryBaby</Value></Pair><Pair><Key>Name</Key><Value>EgglingTickle</Value></Pair></Objective><Type>Action</Type><Title><Text>Tickle Time</Text><ID>934640</ID></Title><Desc><Text>Click on your Eggling and choose tickle!</Text><ID>934641</ID></Desc><AutoComplete><Pair><Key>RaisedPetStage</Key><Value>HATCHING</Value></Pair></AutoComplete></Data> + 0 + + + 1197 + Dance + <Data><Offer><Type>VO</Type><Asset>RS_DATA/PenReconM2T5.unity3d/DlgIvyReconM2T5Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/PenReconM2T5.unity3d/DlgIvyReconM2T5End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Name</Key><Value>EgglingDance</Value></Pair></Objective><Type>Action</Type><Title><Text>Dance</Text><ID>934642</ID></Title><Desc><Text>Click on your Eggling and choose Dance.</Text><ID>934643</ID></Desc><AutoComplete><Pair><Key>RaisedPetStage</Key><Value>HATCHING</Value></Pair></AutoComplete></Data> + 0 + + + 1199 + Take your Eggling to the Hatchery + <Data><Offer><Type>VO</Type><Asset>RS_DATA/PenReconM2T6.unity3d/DlgIvyReconM2T6Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><Objective><Pair><Key>Scene</Key><Value>SanctuaryEggulator</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Take your Eggling to the Hatchery</Text><ID>934644</ID></Title><Desc><Text>Take your Eggling to the Hatchery in Enchanted Sanctuary.</Text></Desc><AutoComplete><Pair><Key>RaisedPetStage</Key><Value>HATCHING</Value></Pair></AutoComplete></Data> + 0 + + + 1234 + Collect Hearts + <Data><Offer><Type>VO</Type><Asset>RS_DATA/PenReconM2T2.unity3d/DlgIvyReconM2T2Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/PenReconM2T2.unity3d/DlgIvyReconM2T2End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>SanctuaryBaby</Value></Pair><Pair><Key>Name</Key><Value>ESHearts</Value></Pair><Pair><Key>Quantity</Key><Value>1</Value></Pair></Objective><Type>Collect</Type><Title><Text>Collect 5 hearts around Enchanted Sanctuary</Text><ID>934646</ID></Title><Desc><Text>Collect some hearts to power up the eggulator. +</Text><ID>934647</ID></Desc><AutoComplete><Pair><Key>RaisedPetStage</Key><Value>FIND</Value></Pair></AutoComplete></Data> + 0 + + + 1235 + Meet Eggling + <Data><Offer><Type>VO</Type><Asset>RS_DATA/PenReconM2T3.unity3d/DlgIvyReconM2T3Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><Objective><Pair><Key>Scene</Key><Value>SanctuaryBaby</Value></Pair><Pair><Key>NPC</Key><Value>PfMythieEggling</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Meet</Type><Title><Text>Go to the Egg Nest and get an eggling!</Text><ID>934648</ID></Title><Desc><Text>Follow the magic fairy dust to the Egg Nest to get an Egg. +</Text><ID>934649</ID></Desc><AutoComplete><Pair><Key>RaisedPetStage</Key><Value>EGGINHAND</Value></Pair></AutoComplete></Data> + 0 + + + 5 +

1

+ + 1 + 3 + 0 + 202676 + true + 5 + 5 + + 0 + + 0 + 0 + + + 25 +

2

+ + 1 + 21 + 0 + 202676 + true + 25 + 25 + + 0 + + 0 + 0 +
+
+ + false + 1511 + 3. Ahoy! Land Lubber! + 1 + 1 +

+ <Data><Repeat>0</Repeat><Hidden>0</Hidden><End><Type>Popup</Type><Asset>RS_DATA/PfUiMissionActionDB.unity3d/PfUiMissionActionDB</Asset><NPC>PfDyan</NPC><Text>Shiver me timbers! You won't be walking the plank any time soon! Here are a few JumpStars and Coins to spend on some booty!</Text><ID>923376</ID><ItemID>0</ItemID><Priority>0</Priority></End><End><Type>VO</Type><Asset>S_DATA/JSDirectedS340.unity3d/DlgIvyDirectedM1511End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward><Title><Text>Ahoy! Land Lubber!</Text><ID>923374</ID></Title><Desc><Text>Play Shipwreck Lagoon</Text><ID>923375</ID></Desc></Data> + false + 0 + + + 2 + true + false + + + 3 + 1743 + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 1511 + 1201 + 0 + + + + 3 + 202649 + 0 + + 1201 + Play Shipwreck Lagoon + <Data><Setup><Scene>ShipWreckLagoon</Scene><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSDirectedS340.unity3d/DlgIvyS340Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><Offer><Type>Popup</Type><ID>934668</ID><Asset>RS_DATA/PfUiMissionActionDB.unity3d/PfUiMissionActionDB</Asset><NPC>PfDyan</NPC><Text>It's time to set sail for Shipwreck Lagoon. A whale of a tale where the fastest ships race across the sea, and if you want to build your own track then this is the place to be! Click OK if you're ready to hoist the sails for Shipwreck Lagoon!</Text><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSDirectedS340.unity3d/DlgIvyS340End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><End><Type>Popup</Type><ID>934669</ID><Asset>RS_DATA/PfUiMissionActionDB.unity3d/PfUiMissionActionDB</Asset><NPC>PfDyan</NPC><Text>Avast me hearty! I've seen some lily-livered Jumpeez before, but you're going straight to Captain! Great job!</Text><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>ShipWreckLagoon</Value></Pair><Pair><Key>Name</Key><Value>ShipWreckLagoon</Value></Pair></Objective><Type>Game</Type><Title><Text>Play Shipwreck Lagoon</Text><ID>934666</ID></Title><Desc><Text>Play Shipwreck Lagoon</Text><ID>934667</ID></Desc></Data> + 0 + + + 5 +

1

+ + 1 + 3 + 0 + 202649 + true + 5 + 5 + + 0 + + 0 + 0 + + + 25 +

2

+ + 1 + 21 + 0 + 202649 + true + 25 + 25 + + 0 + + 0 + 0 +
+
+ + false + 1512 + 5. Ready! Set! Go! + 1 + 1 +

+ <Data><Repeat>0</Repeat><Hidden>0</Hidden><End><Type>Popup</Type><Asset>RS_DATA/PfUiMissionActionDB.unity3d/PfUiMissionActionDB</Asset><NPC>PfDyan</NPC><Text>1st place performance Jumpee! With your skills you're going to do well here! Here are some JumpStars and Coins for all your hard work!</Text><ID>923379</ID><ItemID>0</ItemID><Priority>0</Priority></End><End><Type>VO</Type><Asset>S_DATA/JSDirectedS342.unity3d/DlgIvyDirectedM1512End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward><Title><Text>Ready! Set! Go!</Text><ID>923377</ID></Title><Desc><Text>Visit the JS Stadium in DownTown.</Text><ID>923378</ID></Desc></Data> + false + 0 + + + 2 + true + false + + + 3 + 1743 + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 1512 + 1202 + 0 + + + + 3 + 202650 + 0 + + 1202 + Visit JS Stadium + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSDirectedS342.unity3d/DlgIvyS342Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><Offer><Type>Popup</Type><ID>934691</ID><Asset>RS_DATA/PfUiMissionActionDB.unity3d/PfUiMissionActionDB</Asset><NPC>PfDyan</NPC><Text>It's game time! Ready to shoot some hoops, spike a volleyball on the beach or carry the football for a game winning touchdown. Click the OK button to go to the JumpStart Stadium! </Text><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSDirectedS342.unity3d/DlgIvyS342End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><End><Type>Popup</Type><ID>934692</ID><Asset>RS_DATA/PfUiMissionActionDB.unity3d/PfUiMissionActionDB</Asset><NPC>PfDyan</NPC><Text>I know you'll give a 1st place performance Jumpee! Go ahead and head down a tunnel to start playing!</Text><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>JSStadiumInt</Value></Pair></Objective><Type>Visit</Type><Title><Text>Visit JS Stadium</Text><ID>934689</ID></Title><Desc><Text>Visit JS Stadium in DownTown.</Text><ID>934690</ID></Desc></Data> + 0 + + + 5 +

1

+ + 1 + 3 + 0 + 202650 + true + 5 + 5 + + 0 + + 0 + 0 + + + 25 +

2

+ + 1 + 21 + 0 + 202650 + true + 25 + 25 + + 0 + + 0 + 0 +
+
+ + false + 1513 + 6. It's a Block Party! + 1 + 1 +

+ <Data><Repeat>0</Repeat><Hidden>0</Hidden><End><Type>Popup</Type><Asset>RS_DATA/PfUiMissionActionDB.unity3d/PfUiMissionActionDB</Asset><NPC>PfDyan</NPC><Text>Your house looks amazing! Party Time! Here are some Coins for you to buy a party or some furniture at the house hut! +</Text><ID>923382</ID><ItemID>0</ItemID><Priority>0</Priority></End><End><Type>VO</Type><Asset>S_DATA/JSDirectedS348.unity3d/DlgIvyDirectedM1513End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward><Title><Text>It's a Block Party!</Text><ID>923380</ID></Title><Desc><Text>Visit your room in My Neighborhood</Text><ID>923381</ID></Desc></Data> + false + 0 + + + 2 + true + false + + + 3 + 1743 + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 1513 + 1203 + 0 + + + + 3 + 202660 + 0 + + 1203 + Visit Your Room + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSDirectedS343.unity3d/DlgIvyS343Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><Offer><Type>Popup</Type><ID>934695</ID><Asset>RS_DATA/PfUiMissionActionDB.unity3d/PfUiMissionActionDB</Asset><NPC>PfDyan</NPC><Text>You have your very own house and neighborhood here at JumpStart! Just find your house inside the neighborhood and head inside to start decorating!</Text><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSDirectedS343.unity3d/DlgIvyS343End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><End><Type>Popup</Type><ID>934696</ID><Asset>RS_DATA/PfUiMissionActionDB.unity3d/PfUiMissionActionDB</Asset><NPC>PfDyan</NPC><Text>Block party time! Your house looks so good you have to show it off! You should use the coins you've earned to throw a housewarming party!</Text><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>MyRoomsInt</Value></Pair></Objective><Type>Visit</Type><Title><Text>Visit Your Room</Text><ID>934693</ID></Title><Desc><Text>Visit Your Room in My Neighborhood.</Text><ID>934694</ID></Desc></Data> + 0 + + + 5 +

1

+ + 1 + 3 + 0 + 202660 + true + 5 + 5 + + 0 + + 0 + 0 + + + 25 +

2

+ + 1 + 21 + 0 + 202660 + true + 25 + 25 + + 0 + + 0 + 0 +
+
+ + false + 1514 + 7. Want to Hangout with Poseidon? + 1 + 1 +

+ <Data><Repeat>0</Repeat><Hidden>0</Hidden><End><Type>VO</Type><Asset>S_DATA/JSDirectedS346.unity3d/DlgIvyDirectedM1514End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><End><Type>Popup</Type><Asset>RS_DATA/PfUiMissionActionDB.unity3d/PfUiMissionActionDB</Asset><NPC>PfDyan</NPC><Text>Fantastic! You visited the most happening place in JumpStart! Here are some JumpStars and Coins to spend around!</Text><ID>923385</ID><ItemID>0</ItemID><Priority>0</Priority></End><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward><Title><Text>Want to Hangout with Poseidon?</Text><ID>923383</ID></Title><Desc><Text>Visit the Octolair in Poseidon's Hangout.</Text><ID>923384</ID></Desc></Data> + false + 0 + + + 2 + true + false + + + 3 + 1743 + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 1514 + 1204 + 0 + + + + 3 + 202659 + 0 + + 1204 + Visit the Octolair + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSDirectedS346.unity3d/DlgIvyS346Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><Offer><Type>Popup</Type><ID>934699</ID><Asset>RS_DATA/PfUiMissionActionDB.unity3d/PfUiMissionActionDB</Asset><NPC>PfDyan</NPC><Text>Want to watch a live band, dance on stage or compete in a Dance Off! It can all be done in the Octolair in Poseidon's Hangout! Ready to go? Click the OK button to be taken directly there now! </Text><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSDirectedS346.unity3d/DlgIvyS346End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><End><Type>Popup</Type><ID>934700</ID><Asset>RS_DATA/PfUiMissionActionDB.unity3d/PfUiMissionActionDB</Asset><NPC>PfDyan</NPC><Text>Poseidon's Hangout is the place to be! Make sure you show off your dance moves on the dance floor and visit your VIP Lounge before you leave!</Text><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>LoungeInt</Value></Pair></Objective><Type>Visit</Type><Title><Text>Visit the Octolair</Text><ID>934697</ID></Title><Desc><Text>Visit the Octolair in Poseidon's Hangout.</Text><ID>934698</ID></Desc></Data> + 0 + + + 5 +

1

+ + 1 + 3 + 0 + 202659 + true + 5 + 5 + + 0 + + 0 + 0 + + + 25 +

2

+ + 1 + 21 + 0 + 202659 + true + 25 + 25 + + 0 + + 0 + 0 +
+
+ + false + 1743 + 2. Jumpstart Tour + 3 + 1 +

+ <Data><Repeat>0</Repeat><Hidden>0</Hidden><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward><Title><Text>Jumpstart Tour</Text><ID>934600</ID></Title><Desc><Text>Take a tour around Jumpstart and meet new friends!</Text><ID>934601</ID></Desc></Data> + false + 0 + + + 2 + true + false + + + 3 + 1509 + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 1743 + 1781 + 0 + + + 1 + 1743 + 1782 + 0 + + + 1 + 1743 + 1783 + 0 + + + 1 + 1743 + 1784 + 0 + + + + 2 + 203011 + 0 + + 1781 + Windy Hollows Visit + <Data><Setup><Scene>Hollows</Scene><Asset>RS_DATA/PfEleanor.unity3d/PfEleanor</Asset><Location>PfMarker_BroomStickExit</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>Popup</Type><ID>934652</ID><Asset>RS_DATA/PfUiMissionActionDB.unity3d/PfUiMissionActionDB</Asset><NPC>PfDyan</NPC><Text>Windy Hollows is the most magical place here. You can charm your friends into crazy things, play a game of broom ball or fly a broom around the Magic Marsh! Go Meet Eleanor there!</Text><ItemID>0</ItemID><Priority>0</Priority></Offer><Offer><Type>VO</Type><Asset>RS_SOUND/DlgIvyWindyHollows.unity3d/DlgIvyWindyHollows</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>Popup</Type><ID>934653</ID><Asset>RS_DATA/PfUiMissionActionDB.unity3d/PfUiMissionActionDB</Asset><NPC>PfEleanor</NPC><Text>I've been waiting for you to get here. I'm Eleanor and I'm a new explorer just like you. I can't wait to start the adventures. While you're here, you should play a game or two.</Text><ItemID>0</ItemID><Priority>0</Priority></End><End><Type>VO</Type><Asset>RS_SOUND/DlgEleanorWelcome.unity3d/DlgEleanorWelcome</Asset><NPC>PfEleanor</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>Hollows</Value></Pair><Pair><Key>NPC</Key><Value>PfEleanor</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Meet</Type><Title><Text>Meet Eleanor in Windy Hollows to play a game</Text><ID>934650</ID></Title><Desc><Text>Meet Eleanor in Windy Hollows. Use your map or the portals to get there.</Text><ID>934651</ID></Desc></Data> + 0 + + + 1782 + Adventure Canyon Visit + <Data><Setup><Scene>AdventureCanyon</Scene><Asset>RS_DATA/PfCJ.unity3d/PfCJ</Asset><Location>PfMarker_CJMeet</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>Popup</Type><ID>934656</ID><Asset>RS_DATA/PfUiMissionActionDB.unity3d/PfUiMissionActionDB</Asset><NPC>PfEleanor</NPC><Text>You're doing such great work! Everyone is talking about your natural explorer skills. You should find CJ now. I hope there will be dancing! CJ is in Adventure Canyon, go meet him now!</Text><ItemID>0</ItemID><Priority>0</Priority></Offer><Offer><Type>VO</Type><Asset>RS_SOUND/DlgEleanorTourEnd.unity3d/DlgEleanorTourEnd</Asset><NPC>PfEleanor</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>Popup</Type><ID>934657</ID><Asset>RS_DATA/PfUiMissionActionDB.unity3d/PfUiMissionActionDB</Asset><NPC>PfCJ</NPC><Text>Woo-eee, I'm CJ and I just might be the most adventurous amphibian you'll ever meet. Since you're new, let me show you around. </Text><ItemID>0</ItemID><Priority>0</Priority></End><End><Type>VO</Type><Asset>RS_SOUND/DlgCJWelcome.unity3d/DlgCJWelcome</Asset><NPC>PfCJ</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>AdventureCanyon</Value></Pair><Pair><Key>NPC</Key><Value>PfCJ</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Meet</Type><Title><Text>Meet CJ in Adventure Canyon to play Dune Buggy!</Text><ID>934654</ID></Title><Desc><Text>CJ wants to meet you in Adventure Canyon so he can show you Dune Buggy!</Text><ID>934655</ID></Desc></Data> + 0 + + + 1783 + Downtown Visit + <Data><Setup><Scene>DownTown</Scene><Asset>RS_DATA/PfKisha.unity3d/PfKisha</Asset><Location>PfMarker_MeetKisha</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>Popup</Type><ID>934660</ID><Asset>RS_DATA/PfUiMissionActionDB.unity3d/PfUiMissionActionDB</Asset><NPC>PfCJ</NPC><Text>Lucky you! Kisha wants to show you something. She's in Downtown! Go meet her there now.</Text><ItemID>0</ItemID><Priority>0</Priority></Offer><Offer><Type>VO</Type><Asset>RS_SOUND/DlgCJTourEnd.unity3d/DlgCJTourEnd</Asset><NPC>PfCJ</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>Popup</Type><ID>934661</ID><Asset>RS_DATA/PfUiMissionActionDB.unity3d/PfUiMissionActionDB</Asset><NPC>PfKisha</NPC><Text>Hey there new explorer, it's me Kisha. Let me show you around. </Text><ItemID>0</ItemID><Priority>0</Priority></End><End><Type>VO</Type><Asset>RS_SOUND/DlgKishaWelcome.unity3d/DlgKishaWelcome</Asset><NPC>PfKisha</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>DownTown</Value></Pair><Pair><Key>NPC</Key><Value>PfKisha</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Meet</Type><Title><Text>Kisha is waiting for you in Downtown</Text><ID>934658</ID></Title><Desc><Text>Find Kisha in Dowtown, she would like to meet your mythie.</Text><ID>934659</ID></Desc></Data> + 0 + + + 1784 + Enchanted Revisit + <Data><Setup><Scene>SanctuaryBaby</Scene><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>Popup</Type><ID>934664</ID><Asset>RS_DATA/PfUiMissionActionDB.unity3d/PfUiMissionActionDB</Asset><NPC>PfDyan</NPC><Text>Come back to the Enchanted Sanctuary and talk to me.</Text><ItemID>0</ItemID><Priority>0</Priority></Offer><Offer><Type>VO</Type><Asset>RS_SOUND/DlgIvyTourEnd.unity3d/DlgIvyTourEnd</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>Popup</Type><ID>934665</ID><Asset>RS_DATA/PfUiMissionActionDB.unity3d/PfUiMissionActionDB</Asset><NPC>PfDyan</NPC><Text>Welcome back Jumpee! You've earned a prize!</Text><ItemID>0</ItemID><Priority>0</Priority></End><End><Type>VO</Type><Asset>RS_SOUND/DlgIvyWelcome.unity3d/DlgIvyWelcome</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>SanctuaryBaby</Value></Pair><Pair><Key>NPC</Key><Value>PfDyan</Value></Pair><Pair><Key>Asset</Key><Value>RS_DATA/PfDyan.unity3d/PfDyan</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Meet</Type><Title><Text>Return to Enchanted Sanctuary to talk with Ivy, she has a reward for you.</Text><ID>934662</ID></Title><Desc><Text>Ivy wants to give you a gift for meeting all her friends, return to Enchanted Sanctuary to collect it!</Text><ID>934663</ID></Desc></Data> + 0 + + + 5 +

1

+ + 1 + 3 + 0 + 203011 + true + 5 + 5 + + 0 + + 0 + 0 + + + 25 +

2

+ + 1 + 21 + 0 + 203011 + true + 25 + 25 + + 0 + + 0 + 0 +
+
+ + false + 2323 + JSJR Nav Tutorial + 3 + 47 +

+ <Data><Setup><Scene>TutorialNavJunior</Scene><Asset>RS_DATA/PfGrpFUET01.unity3d/PfGrpFUET01</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Repeat>0</Repeat><Hidden>0</Hidden><Reward><Asset /></Reward></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 2323 + 3144 + 1 + + + 1 + 2323 + 3552 + 1 + + + 1 + 2323 + 3319 + 0 + + + 1 + 2323 + 3320 + 0 + + + 2 + 2323 + 2369 + 0 + + + 2 + 2323 + 2371 + 0 + + + + 2 + 0 + 0 + + false + 2369 + JSJR MM FUE + 1 + 47 +

2323

+ <Data><Repeat>0</Repeat><Hidden>0</Hidden><Reward><Asset /></Reward></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 2369 + 3321 + 0 + + + 1 + 2369 + 3323 + 0 + + + 1 + 2369 + 3749 + 0 + + + 1 + 2369 + 3324 + 0 + + + 1 + 2369 + 3325 + 0 + + + 1 + 2369 + 3326 + 0 + + + 1 + 2369 + 3327 + 0 + + + 1 + 2369 + 3328 + 0 + + + 1 + 2369 + 3329 + 0 + + + 1 + 2369 + 3330 + 0 + + + 1 + 2369 + 3331 + 0 + + + 2 + 2369 + 2370 + 0 + + + 1 + 2369 + 3333 + 0 + + + + 3 + 0 + 0 + + false + 2370 + JSJR MM FUE Reward + 1 + 47 +

2369

+ <Data><Repeat>0</Repeat><Hidden>0</Hidden><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 2370 + 3332 + 0 + + + + 3 + 204768 + 0 + + 3332 + Stables-Sleep + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpFUET14.unity3d/PfGrpFUET14</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrFUET14.unity3d/DlgIvyFUET14Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrFUET14.unity3d/DlgIvyFUET14End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>Petsleep</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Take your Mythie to the Stables to take nap</Text><ID>934786</ID></Title><Desc><Text>Your Mythie is sleepy. Take your Mythie to the Stables to take a nap. </Text><ID>934787</ID></Desc></Data> + 0 + + + 20 +

2

+ + 1 + 20 + 0 + 204768 + true + 20 + 20 + + 0 + + 0 + 0 +
+
+ + 3321 + Get an Eggling + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfJSJrBotley.unity3d/PfJSJrBotley</Asset><Location>PfMarker_BotleyFUE</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>CutScene</Type><Asset>RS_DATA/PfGrpFUET04CS.unity3d/PfGrpFUET04CS</Asset><ItemID>0</ItemID><Priority>0</Priority></Offer><Offer><Type>VO</Type><Asset>PlayMeterTutorial</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>1</Priority></Offer><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>NPC</Key><Value>PfDyan</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Meet</Type><Title><Text>Meet Ivy in Mythie Meadows and get your very own Mythie!</Text><ID>934788</ID></Title><Desc><Text>Meet Ivy in Mythie Meadows. Use the book to get there.</Text><ID>934789</ID></Desc></Data> + 0 + + + 3322 + Collect Hearts + <Data><Offer><Type>VO</Type><Asset>RS_DATA/PenReconM2T2.unity3d/DlgIvyReconM2T2Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/PenReconM2T2.unity3d/DlgIvyReconM2T2End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>ESHearts</Value></Pair><Pair><Key>Quantity</Key><Value>5</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Collect</Type><Title><Text>Collect 5 hearts around Mythie Meadows</Text><ID>934790</ID></Title><Desc><Text>Collect some hearts to power up the Hatchery! +</Text><ID>934791</ID></Desc><AutoComplete><Pair><Key>RaisedPetStage</Key><Value>FIND</Value></Pair></AutoComplete></Data> + 0 + + + 3323 + Collect Hearts + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfJSJrBotley.unity3d/PfJSJrBotley</Asset><Location>PfMarker_BotleyFUE</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrFUET05.unity3d/DlgIvyFUET05Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrFUET05.unity3d/DlgIvyFUET05End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>HeartCollectible</Value></Pair><Pair><Key>Quantity</Key><Value>5</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Collect</Type><Title><Text>Collect 5 hearts around Hatchery</Text><ID>934792</ID></Title><Desc><Text>Collect some hearts to power up the Hatchery. +</Text><ID>934793</ID></Desc><AutoComplete><Pair><Key>RaisedPetStage</Key><Value>FIND</Value></Pair></AutoComplete></Data> + 0 + + + 3324 + Meet Eggling + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpFUET06.unity3d/PfGrpFUET06</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrFUET06.unity3d/DlgIvyFUET06Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>NPC</Key><Value>PfMythieEggling</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Meet</Type><Title><Text>Find the big tree and get an eggling!</Text><ID>934794</ID></Title><Desc><Text>Follow the magic fairy dust to the big tree to get an Egg.</Text><ID>934795</ID></Desc><AutoComplete><Pair><Key>RaisedPetStage</Key><Value>EGGINHAND</Value></Pair></AutoComplete></Data> + 0 + + + 3325 + Tickle Time + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrFUET07.unity3d/DlgIvyFUET07Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>1</Priority></Offer><Offer><Type>VO</Type><Asset>tnEgglingMeterFirstTime</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrFUET07.unity3d/DlgIvyFUET07End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>EgglingTickle</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Tickle Time</Text><ID>934796</ID></Title><Desc><Text>Click on your Eggling and choose tickle!</Text><ID>934797</ID></Desc><AutoComplete><Pair><Key>RaisedPetStage</Key><Value>HATCHING</Value></Pair></AutoComplete></Data> + 0 + + + 3326 + Dance + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrFUET08.unity3d/DlgIvyFUET08Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrFUET08.unity3d/DlgIvyFUET08End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>EgglingDance</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Dance</Text><ID>934798</ID></Title><Desc><Text>Click on your Eggling and choose Dance.</Text><ID>934799</ID></Desc><AutoComplete><Pair><Key>RaisedPetStage</Key><Value>HATCHING</Value></Pair></AutoComplete></Data> + 0 + + + 3327 + Hatch Eggling + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrFUET09.unity3d/DlgIvyFUET09Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>HatchDragon</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Take your Eggling to the Hatchery</Text><ID>934800</ID></Title><Desc><Text>Take your Eggling to the Hatchery in Mythie Meadows.</Text><ID>934801</ID></Desc><AutoComplete><Pair><Key>RaisedPetStage</Key><Value>BABY</Value></Pair></AutoComplete></Data> + 0 + + + 3328 + Care + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrFUET10.unity3d/DlgIvyFUET10Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>1</Priority></Offer><Offer><Type>VO</Type><Asset>tnDragonMeterFirstTime</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrFUET10.unity3d/DlgIvyFUET10End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>Petcare</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Care for your Mythie </Text><ID>934802</ID></Title><Desc><Text>Click on your Mythie and click on Care. It the button that looks like your petting a Mythie.</Text><ID>934803</ID></Desc></Data> + 0 + + + 3329 + Play + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrFUET11.unity3d/DlgIvyFUET11Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrFUET11.unity3d/DlgIvyFUET11End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>Petplay</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Play with your Mythie </Text><ID>934804</ID></Title><Desc><Text>Click on your Mythie and click on the play button. Its the button with the ball on it. </Text><ID>934805</ID></Desc></Data> + 0 + + + 3330 + Bath + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpFUET12.unity3d/PfGrpFUET12</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrFUET12.unity3d/DlgIvyFUET12Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrFUET12.unity3d/DlgIvyFUET12End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>Petbathe</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Take your Mythie to the bath</Text><ID>934806</ID></Title><Desc><Text>Your Mythie needs a bath. Take it over to bath. Look for the rubber ducky.</Text><ID>934807</ID></Desc></Data> + 0 + + + 3331 + Feed + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpFUET13.unity3d/PfGrpFUET13</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrFUET13.unity3d/DlgIvyFUET13Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrFUET13.unity3d/DlgIvyFUET13End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>Peteat</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Feed your Mythie</Text><ID>934808</ID></Title><Desc><Text>Go to the Kitchen in Mythie Meadows and feed your Mythie. </Text><ID>934809</ID></Desc></Data> + 0 + + + 3333 + Go to Park + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpFUET15.unity3d/PfGrpFUET15</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfJSJrBotley.unity3d/PfJSJrBotley</Asset><Location>PfMarker_BotleyCozyCove</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrFUET15.unity3d/DlgBotleyFUET15Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrFUET15.unity3d/DlgBotleyFUET15End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Take the portal to Spark Park</Text><ID>934810</ID></Title><Desc><Text>Lets go to Spark Park while your Mythie naps. </Text><ID>934811</ID></Desc></Data> + 0 + + + 3749 + Egg Nest Quiz + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfJSJrBotley.unity3d/PfJSJrBotley</Asset><Location>PfMarker_BotleyFUE</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrFUET05.unity3d/DlgIvyFUET05aOffer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrFUET05.unity3d/DlgBotleyFUET05aEnd</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Type</Key><Value>Quiz</Value></Pair><Pair><Key>NPC</Key><Value>PfJSJrBotley</Value></Pair><Pair><Key>Asset</Key><Value>RS_DATA/PfUiQuizPopup01.unity3d/PfUiQuizPopup01</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Meet</Type></Data> + 0 + + + + false + 2371 + JSJR Park FUE + 1 + 47 +

2323

+ <Data><Repeat>0</Repeat><Hidden>0</Hidden><Reward><Asset /></Reward><Title><Text>Park Tasks</Text><ID>934628</ID></Title></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 2371 + 3334 + 0 + + + 1 + 2371 + 3335 + 0 + + + 1 + 2371 + 3342 + 0 + + + 1 + 2371 + 3343 + 0 + + + 1 + 2371 + 3771 + 0 + + + 1 + 2371 + 3345 + 0 + + + 1 + 2371 + 3346 + 0 + + + 1 + 2371 + 3347 + 0 + + + + 3 + 0 + 0 + + 3334 + Find the Prize cart + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpFUET16.unity3d/PfGrpFUET16</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrFUET16.unity3d/DlgBotleyFUET16Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>PfMarker_MainPrizeCart</Value></Pair><Pair><Key>Range</Key><Value>7</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Spend your money</Text><ID>934812</ID></Title><Desc><Text>Those tickets are burning a hole in your pocket. Lets go visit the place to spend it. </Text><ID>934813</ID></Desc></Data> + 0 + + + 3335 + Spend tickets + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpFUET17.unity3d/PfGrpFUET17</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrFUET17.unity3d/DlgBotleyFUET17Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrFUET17.unity3d/DlgBotleyFUET17End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>StoreID</Key><Value>147</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Buy</Type><Title><Text>Buy something inside the store</Text><ID>934814</ID></Title><Desc><Text>Use the tickets you earned to buy something you want</Text><ID>934815</ID></Desc></Data> + 0 + + + 3342 + Go to the Zoo + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpFUET18.unity3d/PfGrpFUET18</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrFUET18.unity3d/DlgBotleyFUET18Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrFUET18.unity3d/DlgBotleyFUET18End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>PfMarker_ZooEntrance</Value></Pair><Pair><Key>Range</Key><Value>3</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Go to the Zoo</Text><ID>934816</ID></Title><Desc><Text>Follow the spark Seeker over to the zoo</Text><ID>934817</ID></Desc></Data> + 0 + + + 3343 + Play Mad Slides + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpFUET19.unity3d/PfGrpFUET19</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrFUET19.unity3d/DlgBotleyFUET19Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrFUET19.unity3d/DlgBotleyFUET19End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>JSMadSlides</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Game</Type><Title><Text>Go to the zoo and play MAd Slides</Text><ID>934818</ID></Title><Desc><Text>Its game time! Go play with the Madagascar game.</Text><ID>934819</ID></Desc></Data> + 0 + + + 3345 + Find the Spark Plug + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpFUET20.unity3d/PfGrpFUET20</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrFUET20.unity3d/DlgBotleyFUET20Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrFUET20.unity3d/DlgBotleyFUET20End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>PfCollectSparkPlug</Value></Pair><Pair><Key>Quantity</Key><Value>1</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Collect</Type><Title><Text>Pick up Botley's Spark Plug</Text><ID>934820</ID></Title><Desc><Text>Follow the trail of sparks pick up Botley's Spark Plug.</Text><ID>934821</ID></Desc></Data> + 0 + + + 3346 + Give Botley the Spark Plug + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpFUET21.unity3d/PfGrpFUET21</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrFUET21.unity3d/DlgBotleyFUET21Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrFUET21.unity3d/DlgBotleyFUET21End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Location</Key></Pair><Pair><Key>NPC</Key><Value>PfJSJrBotley</Value></Pair><Pair><Key>ItemID</Key><Value>13042</Value></Pair><Pair><Key>ItemDescription</Key><Value>Botley's Spark Plug</Value></Pair><Pair><Key>Quantity</Key><Value>1</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Delivery</Type><Title><Text>Give Botley the Spark Plug</Text><ID>934822</ID></Title><Desc><Text>{{input}} on Botley to give him the Spark Plug</Text><ID>934823</ID></Desc></Data> + 0 + + + 3347 + Play Frankie's Camp + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpFUET22.unity3d/PfGrpFUET22</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrFUET22.unity3d/DlgBotleyFUET22Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><Objective><Pair><Key>Scene</Key><Value>Neighborhood</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Play Frankie's Camp</Text><ID>934824</ID></Title><Desc><Text>Follow Botley's Spark trail to play Frankie's Camp.</Text><ID>934825</ID></Desc></Data> + 0 + + + 3771 + Play Mad ABCs + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrFUET19.unity3d/DlgBotleyFUET19aOffer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrFUET19.unity3d/DlgBotleyFUET19aEnd</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>ABCBookRead</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Game</Type><Title><Text>Play ABCS inside the Zoo</Text><ID>934826</ID></Title><Desc><Text>Go inside the zoo and play Madagascar ABCS.</Text><ID>934827</ID></Desc></Data> + 0 + +
+ + 3144 + Use the arrows to turn + <Data><Setup><Scene>TutorialNavJunior</Scene><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>CutScene</Type><Asset>RS_DATA/PfGrpFUET01CS.unity3d/PfGrpFUET01CS</Asset><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrFUET01.unity3d/DlgBotleyFUET01End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>TutorialNavJunior</Value></Pair><Pair><Key>Name</Key><Value>UseArrows</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Meet Botley and turn to see the books</Text><ID>934828</ID></Title><Desc><Text> Use the arrow buttons to find the books in the world. </Text><ID>934829</ID></Desc></Data> + 0 + + + 3319 + Collect the Books + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrFUET02.unity3d/DlgBotleyFUET02Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrFUET02.unity3d/DlgBotleyFUET02End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>TutorialNavJunior</Value></Pair><Pair><Key>Name</Key><Value>PfCollectBook01</Value></Pair><Pair><Key>Quantity</Key><Value>3</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Collect</Type><Title><Text>Collect the books </Text><ID>934830</ID></Title><Desc><Text>Collect the first four books in the world.</Text><ID>934831</ID></Desc></Data> + 0 + + + 3320 + Open the Book + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrFUET03.unity3d/DlgBotleyFUET03Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrFUET03.unity3d/DlgBotleyFUET03End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Click on the book </Text><ID>934832</ID></Title><Desc><Text>Click on the book to go to Mythie Meadows. </Text><ID>934833</ID></Desc></Data> + 0 + + + 3552 + Meet Botley + <Data><Setup><Scene>TutorialNavJunior</Scene><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrFUET01.unity3d/DlgBotleyFUET01AOffer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrFUET01.unity3d/DlgBotleyFUET01AEnd</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Type</Key><Value>Quiz</Value></Pair><Pair><Key>NPC</Key><Value>PfJSJrBotley</Value></Pair><Pair><Key>Asset</Key><Value>RS_DATA/PfBotleyGearsPuzzle.unity3d/PfBotleyGearsPuzzle</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Meet</Type><Title><Text>Play the Botley Gear Game</Text><ID>934834</ID></Title></Data> + 0 + +
+ + true + 2374 + MMEggling01_Ivy + 1 + 48 +

+ <Data><Repeat>1</Repeat><Hidden>0</Hidden><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward><Title><Text>Shy Eggling!</Text><ID>934632</ID></Title></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 2374 + 3354 + 1 + + + 1 + 2374 + 3355 + 0 + + + + 1 + 204764 + 0 + + 3354 + MMEggling01T01 + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrEggling01.unity3d/DlgIvyMMEggling01T01Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrEggling01.unity3d/DlgIvyMMEggling01T01End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>EgglingTickle</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Tickle Eggling</Text><ID>934843</ID></Title></Data> + 0 + + + 3355 + MMEggling01T02 + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrEggling01.unity3d/DlgIvyMMEggling01T02Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrEggling01.unity3d/DlgIvyMMEggling01T02End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>EgglingDance</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Dance Eggling</Text><ID>934844</ID></Title></Data> + 0 + + + 5 +

2

+ + 1 + 7 + 0 + 204764 + true + 5 + 5 + + 0 + + 0 + 0 + +
+ + true + 2375 + JRSP01_Bot + 1 + 49 +

+ <Data><Repeat>1</Repeat><Hidden>0</Hidden><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward><Title><Text>Slippery Slides</Text><ID>934617</ID></Title><Desc><Text>Go down all the slides in the Spark Park!</Text><ID>934618</ID></Desc></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 2375 + 3348 + 1 + + + 1 + 2375 + 3349 + 0 + + + 1 + 2375 + 3350 + 0 + + + 1 + 2375 + 3351 + 0 + + + 1 + 2375 + 3352 + 0 + + + 1 + 2375 + 3353 + 0 + + + + 1 + 204763 + 0 + + 3348 + SparkPark01T01 + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpSP01T01.unity3d/PfGrpSP01T01</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP01.unity3d/DlgBotleySP01T01Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP01.unity3d/DlgBotleySP01T01End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>ParkSlide_Trigger</Value></Pair><Pair><Key>Range</Key><Value>5</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Go to the top of the Super-Slide!</Text><ID>934742</ID></Title></Data> + 0 + + + 3349 + SparkPark01T02 + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpSP01T02.unity3d/PfGrpSP01T02</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP01.unity3d/DlgBotleySP01T02Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP01.unity3d/DlgBotleySP01T02End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>ParkSlide14</Value></Pair><Pair><Key>Range</Key><Value>3</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Slide down the Super Slide</Text><ID>934743</ID></Title></Data> + 0 + + + 3350 + SparkPark01T03 + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpSP01T03.unity3d/PfGrpSP01T03</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP01.unity3d/DlgBotleySP01T03Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP01.unity3d/DlgBotleySP01T03End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>PfMarker_FunZoneView01</Value></Pair><Pair><Key>Range</Key><Value>3</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Visit one side of the park</Text><ID>934744</ID></Title></Data> + 0 + + + 3351 + SparkPark01T04 + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpSP01T04.unity3d/PfGrpSP01T04</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP01.unity3d/DlgBotleySP01T04Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP01.unity3d/DlgBotleySP01T04End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>PfMarker_FunZoneView02</Value></Pair><Pair><Key>Range</Key><Value>3</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Visit the other side of the park</Text><ID>934745</ID></Title></Data> + 0 + + + 3352 + SparkPark01T05 + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpSP01T05.unity3d/PfGrpSP01T05</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfJSJrBotley.unity3d/PfJSJrBotley</Asset><Location>PfMarker_FunZoneView02</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP01.unity3d/DlgBotleySP01T05Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>SpringBoardHubPark01_Landing</Value></Pair><Pair><Key>Range</Key><Value>3</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Find the Secret Water Slide</Text><ID>934746</ID></Title></Data> + 0 + + + 3353 + SparkPark01T06 + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfJSJrBotley.unity3d/PfJSJrBotley</Asset><Location>PfMarker_FunZoneView02</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP01.unity3d/DlgBotleySP01T06Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP01.unity3d/DlgBotleySP01T06End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>TikiSlide_17</Value></Pair><Pair><Key>Range</Key><Value>3</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Slide down the Secret Water Slide</Text><ID>934747</ID></Title></Data> + 0 + + + 5 +

2

+ + 1 + 7 + 0 + 204763 + true + 5 + 5 + + 0 + + 0 + 0 + +
+ + true + 2376 + MMBaby01_Ivy + 1 + 48 +

+ <Data><Repeat>1</Repeat><Hidden>0</Hidden><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward><Title><Text>Bringing up baby!</Text><ID>934630</ID></Title></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 2376 + 3356 + 0 + + + 1 + 2376 + 3357 + 0 + + + 1 + 2376 + 3358 + 0 + + + 1 + 2376 + 3359 + 0 + + + + 1 + 204761 + 0 + + 3356 + MMBaby01T01 + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrBaby01.unity3d/DlgIvyMMBaby01T01Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrBaby01.unity3d/DlgIvyMMBaby01T01End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>Petplay</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Mythie Play</Text><ID>934837</ID></Title></Data> + 0 + + + 3357 + MMBaby01T02 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpFUET12.unity3d/PfGrpFUET12</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrBaby01.unity3d/DlgIvyMMBaby01T02Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrBaby01.unity3d/DlgIvyMMBaby01T02End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>Petbathe</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Mythie Bath</Text><ID>934838</ID></Title></Data> + 0 + + + 3358 + MMBaby01T03 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpFUET13.unity3d/PfGrpFUET13</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrBaby01.unity3d/DlgIvyMMBaby01T03Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrBaby01.unity3d/DlgIvyMMBaby01T03End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>Peteat</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Feed Mythie</Text><ID>934839</ID></Title></Data> + 0 + + + 3359 + MMBaby01T04 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpFUET14.unity3d/PfGrpFUET14</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrBaby01.unity3d/DlgIvyMMBaby01T04Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrBaby01.unity3d/DlgIvyMMBaby01T04End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>Petsleep</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Mythie Sleep</Text><ID>934840</ID></Title></Data> + 0 + + + 5 +

2

+ + 1 + 7 + 0 + 204761 + true + 5 + 5 + + 0 + + 0 + 0 + +
+ + true + 2377 + MMChild01_Ivy + 1 + 48 +

+ <Data><Repeat>1</Repeat><Hidden>0</Hidden><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward><Title><Text>Hide and Seek</Text><ID>934631</ID></Title></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 2377 + 3360 + 0 + + + 1 + 2377 + 3361 + 0 + + + + 1 + 204754 + 0 + + 3360 + MMChild01T01 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMMChild01T01.unity3d/PfGrpMMChild01T01</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrChild01.unity3d/DlgIvyMMChild01T01Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrChild01.unity3d/DlgIvyMMChild01T01End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>NPC</Key><Value>PfDyan</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Meet</Type><Title><Text>Meet Ivy</Text><ID>934841</ID></Title></Data> + 0 + + + 3361 + MMChild01T02 + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrChild01.unity3d/DlgIvyMMChild01T02Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrChild01.unity3d/DlgIvyMMChild01T02End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>HideAndSeek</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Game</Type><Title><Text>Play 'Hide and Seek'</Text><ID>934842</ID></Title></Data> + 0 + + + 5 +

2

+ + 1 + 7 + 0 + 204754 + true + 5 + 5 + + 0 + + 0 + 0 + +
+ + true + 2378 + MMTeen01_Ivy + 1 + 48 +

+ <Data><Repeat>1</Repeat><Hidden>0</Hidden><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward><Title><Text>Teen Troubles</Text><ID>934633</ID></Title></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 2378 + 3362 + 1 + + + 1 + 2378 + 3363 + 0 + + + + 1 + 204762 + 0 + + 3362 + MMTeen01T01 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMMTeen01T01.unity3d/PfGrpMMTeen01T01</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrTeen01.unity3d/DlgIvyMMTeen01T01Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrTeen01.unity3d/DlgIvyMMTeen01T01End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>PfMarker_MythieTrainingExit</Value></Pair><Pair><Key>Range</Key><Value>3</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Visit Training Grounds</Text><ID>934845</ID></Title></Data> + 0 + + + 3363 + MMTeen01T02 + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrTeen01.unity3d/DlgIvyMMTeen01T02Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrTeen01.unity3d/DlgIvyMMTeen01T02End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Name</Key><Value>Petbreath</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Play Training Grounds</Text><ID>934846</ID></Title></Data> + 0 + + + 5 +

2

+ + 1 + 7 + 0 + 204762 + true + 5 + 5 + + 0 + + 0 + 0 + +
+ + true + 2379 + MMAdult01_Ivy + 1 + 48 +

+ <Data><Repeat>1</Repeat><Hidden>0</Hidden><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward><Title><Text>Flying!</Text><ID>934629</ID></Title></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 2379 + 3364 + 0 + + + 1 + 2379 + 3365 + 0 + + + + 1 + 204755 + 0 + + 3364 + MMAdult01T01 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMMAdult01T01.unity3d/PfGrpMMAdult01T01</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrAdult01.unity3d/DlgIvyMMAdult01T01Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrAdult01.unity3d/DlgIvyMMAdult01T01End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>Petfly</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Flight deck!</Text><ID>934835</ID></Title></Data> + 0 + + + 3365 + MMAdult01T02 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMMAdult01T02.unity3d/PfGrpMMAdult01T02</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrAdult01.unity3d/DlgIvyMMAdult01T02Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrAdult01.unity3d/DlgIvyMMAdult01T02End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>SanctuaryFlying</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Play Flight School</Text><ID>934836</ID></Title></Data> + 0 + + + 5 +

2

+ + 1 + 7 + 0 + 204755 + true + 5 + 5 + + 0 + + 0 + 0 + +
+ + true + 2380 + JRMM01_Ivy + 1 + 48 +

+ <Data><Repeat>1</Repeat><Hidden>0</Hidden><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward><Title><Text>Explore the Mythie Meadows</Text><ID>934605</ID></Title></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 2380 + 3366 + 1 + + + 1 + 2380 + 3367 + 0 + + + 1 + 2380 + 3368 + 0 + + + + 1 + 204760 + 0 + + 3366 + JRMM01T01 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM01T01.unity3d/PfGrpMM01T01</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM01.unity3d/DlgIvyMM01T01Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM01.unity3d/DlgIvyMM01T01End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>PfMarker_CoveWind</Value></Pair><Pair><Key>Range</Key><Value>3</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Visit Cave</Text><ID>934701</ID></Title></Data> + 0 + + + 3367 + JRMM01T02 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM01T02.unity3d/PfGrpMM01T02</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM01.unity3d/DlgIvyMM01T02Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM01.unity3d/DlgIvyMM01T02End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>PfMarker_CoveIce</Value></Pair><Pair><Key>Range</Key><Value>2</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Visit Ice Cave</Text><ID>934702</ID></Title></Data> + 0 + + + 3368 + JRMM01T03 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM01T03.unity3d/PfGrpMM01T03</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM01.unity3d/DlgIvyMM01T03Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM01.unity3d/DlgIvyMM01T03End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>PfMarker_CoveFire</Value></Pair><Pair><Key>Range</Key><Value>2</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Visit Lava Cove</Text><ID>934703</ID></Title></Data> + 0 + + + 5 +

2

+ + 1 + 7 + 0 + 204760 + true + 5 + 5 + + 0 + + 0 + 0 + +
+ + true + 2381 + JRSP02_Bot + 1 + 49 +

+ <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfJSJrBotley.unity3d/PfJSJrBotley</Asset><Location>PfMarker_Botley</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Repeat>1</Repeat><Hidden>0</Hidden><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward><Title><Text>Swimming with Boats!</Text><ID>934619</ID></Title></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 2381 + 3369 + 0 + + + 1 + 2381 + 3370 + 0 + + + + 1 + 204757 + 0 + + 3369 + SparkPark02T01 + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP02.unity3d/DlgBotleySP02T01Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP02.unity3d/DlgBotleySP02T01End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfClickSailBoat</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Click a Sailboat</Text><ID>934748</ID></Title></Data> + 0 + + + 3370 + SparkPark02T02 + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP02.unity3d/DlgBotleySP02T02Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP02.unity3d/DlgBotleySP02T02End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfClickZipTurtle</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Click on the lonely turtle</Text><ID>934749</ID></Title></Data> + 0 + + + 5 +

2

+ + 1 + 7 + 0 + 204757 + true + 5 + 5 + + 0 + + 0 + 0 + +
+ + true + 2382 + JRSP03_Bot + 1 + 49 +

+ <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfJSJrBotley.unity3d/PfJSJrBotley</Asset><Location>PfMarker_Botley</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Repeat>1</Repeat><Hidden>0</Hidden><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward><Title><Text>Animal Fun!</Text><ID>934620</ID></Title></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 2382 + 3758 + 1 + + + 1 + 2382 + 3371 + 0 + + + 1 + 2382 + 3759 + 0 + + + 1 + 2382 + 3372 + 0 + + + 1 + 2382 + 3760 + 0 + + + 1 + 2382 + 3373 + 0 + + + 1 + 2382 + 3761 + 0 + + + 1 + 2382 + 3374 + 0 + + + 1 + 2382 + 3762 + 0 + + + 1 + 2382 + 3375 + 0 + + + + 2 + 204758 + 0 + + 3371 + SparkPark03T01 + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP03.unity3d/DlgBotleySP03T01Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP03.unity3d/DlgBotleySP03T01End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfClickZipOwl</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Click the Owl</Text><ID>934750</ID></Title></Data> + 0 + + + 3372 + SparkPark03T02 + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP03.unity3d/DlgBotleySP03T02Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP03.unity3d/DlgBotleySP03T02End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfClickZipSquirrel</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Click the Squirrel</Text><ID>934751</ID></Title></Data> + 0 + + + 3373 + SparkPark03T03 + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP03.unity3d/DlgBotleySP03T03Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP03.unity3d/DlgBotleySP03T03End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfClickZipRaccoon</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Click the Raccoon</Text><ID>934752</ID></Title></Data> + 0 + + + 3374 + SparkPark03T04 + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP03.unity3d/DlgBotleySP03T04Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP03.unity3d/DlgBotleySP03T04End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfClickZipBeaver</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Click the Beaver</Text><ID>934753</ID></Title></Data> + 0 + + + 3375 + SparkPark03T05 + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpSP03T05.unity3d/PfGrpSP03T05</Asset><Recursive>false</Recursive><Persistent>true</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP03.unity3d/DlgBotleySP03T05Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP03.unity3d/DlgBotleySP03T05End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfBeeQuest</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Catch the Bee!</Text><ID>934754</ID></Title></Data> + 0 + + + 3758 + SparkPark03T01a + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP03.unity3d/DlgBotleySP03T01aOffer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP03.unity3d/DlgBotleySP03T01aEnd</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Type</Key><Value>Quiz</Value></Pair><Pair><Key>NPC</Key><Value>PfJSJrBotley</Value></Pair><Pair><Key>Asset</Key><Value>RS_DATA/PfUiQuizPopup02.unity3d/PfUiQuizPopup02</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Meet</Type><Title><Text>Show me which one is an Owl</Text><ID>934755</ID></Title></Data> + 0 + + + 3759 + SparkPark03T02a + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP03.unity3d/DlgBotleySP03T02aOffer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP03.unity3d/DlgBotleySP03T02aEnd</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Type</Key><Value>Quiz</Value></Pair><Pair><Key>NPC</Key><Value>PfJSJrBotley</Value></Pair><Pair><Key>Asset</Key><Value>RS_DATA/PfUiQuizPopup03.unity3d/PfUiQuizPopup03</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Meet</Type><Title><Text>Which one is the Squirrel</Text><ID>934756</ID></Title></Data> + 0 + + + 3760 + SparkPark03T03a + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP03.unity3d/DlgBotleySP03T03aOffer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP03.unity3d/DlgBotleySP03T03aEnd</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Type</Key><Value>Quiz</Value></Pair><Pair><Key>NPC</Key><Value>PfJSJrBotley</Value></Pair><Pair><Key>Asset</Key><Value>RS_DATA/PfUiQuizPopup04.unity3d/PfUiQuizPopup04</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Meet</Type><Title><Text>Which one is a Raccoon</Text><ID>934757</ID></Title></Data> + 0 + + + 3761 + SparkPark03T04a + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP03.unity3d/DlgBotleySP03T04aOffer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP03.unity3d/DlgBotleySP03T04aEnd</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Type</Key><Value>Quiz</Value></Pair><Pair><Key>NPC</Key><Value>PfJSJrBotley</Value></Pair><Pair><Key>Asset</Key><Value>RS_DATA/PfUiQuizPopup05.unity3d/PfUiQuizPopup05</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Meet</Type><Title><Text>Which one is the Raccoon?</Text><ID>934758</ID></Title></Data> + 0 + + + 3762 + SparkPark03T05a + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP03.unity3d/DlgBotleySP03T05aOffer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP03.unity3d/DlgBotleySP03T05aEnd</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Type</Key><Value>Quiz</Value></Pair><Pair><Key>NPC</Key><Value>PfJSJrBotley</Value></Pair><Pair><Key>Asset</Key><Value>RS_DATA/PfUiQuizPopup06.unity3d/PfUiQuizPopup06</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Meet</Type><Title><Text>Which one is the Beaver</Text><ID>934759</ID></Title></Data> + 0 + + + 10 +

2

+ + 1 + 8 + 0 + 204758 + true + 10 + 10 + + 0 + + 0 + 0 + +
+ + true + 2383 + JRMM02_Ivy + 1 + 48 +

+ <Data><Repeat>1</Repeat><Hidden>0</Hidden><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward><Title><Text>A Mythie Swim</Text><ID>934606</ID></Title></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 2383 + 3376 + 1 + + + 1 + 2383 + 3377 + 0 + + + 1 + 2383 + 3378 + 0 + + + + 1 + 204759 + 0 + + 3376 + JSJrMM02T01 + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM02.unity3d/DlgIvyMM02T01Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM02.unity3d/DlgIvyMM02T01End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfClickSailBoat</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Click a boat</Text><ID>934704</ID></Title></Data> + 0 + + + 3377 + JSJrMM02T02 + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM02.unity3d/DlgIvyMM02T02Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM02.unity3d/DlgIvyMM02T02End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>Peteat</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Feed your Mythie</Text><ID>934705</ID></Title></Data> + 0 + + + 3378 + JSJrMM02T03 + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM02.unity3d/DlgIvyMM02T03Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM02.unity3d/DlgIvyMM02T03End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>Petcare</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Brush your Mythie</Text><ID>934706</ID></Title></Data> + 0 + + + 5 +

2

+ + 1 + 7 + 0 + 204759 + true + 5 + 5 + + 0 + + 0 + 0 + +
+ + true + 2384 + JRSP04_Bot + 1 + 49 +

+ <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfJSJrBotley.unity3d/PfJSJrBotley</Asset><Location>PfMarker_ZooEntrance</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Repeat>1</Repeat><Hidden>0</Hidden><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward><Title><Text>Train Ride! Toot-toot!</Text><ID>934621</ID></Title></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 2384 + 3379 + 1 + + + 1 + 2384 + 3380 + 0 + + + 1 + 2384 + 3381 + 0 + + + + 1 + 204765 + 0 + + 3379 + SparkPark04T01 + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpSP04T01.unity3d/PfGrpSP04T01</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP04.unity3d/DlgBotleySP04T01Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP04.unity3d/DlgBotleySP04T01End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>PfMarker_ZooEntrance</Value></Pair><Pair><Key>Range</Key><Value>3</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Visit the Zoo</Text><ID>934760</ID></Title></Data> + 0 + + + 3380 + SparkPark04T02 + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP04.unity3d/DlgBotleySP04T02Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP04.unity3d/DlgBotleySP04T02End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>JSMadSlides</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Game</Type><Title><Text>Play Mad Slides</Text><ID>934761</ID></Title></Data> + 0 + + + 3381 + SparkPark04T03 + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP04.unity3d/DlgBotleySP04T03Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP04.unity3d/DlgBotleySP04T03End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>RideTrain</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Ride the Train</Text><ID>934762</ID></Title></Data> + 0 + + + 5 +

2

+ + 1 + 7 + 0 + 204765 + true + 5 + 5 + + 0 + + 0 + 0 + +
+ + true + 2385 + JRSP05_Bot + 1 + 49 +

+ <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfJSJrBotley.unity3d/PfJSJrBotley</Asset><Location>PfMarker_Botley</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Repeat>1</Repeat><Hidden>0</Hidden><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward><Title><Text>Forgetful Botley</Text><ID>934622</ID></Title></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 2385 + 3382 + 1 + + + 1 + 2385 + 3383 + 0 + + + 1 + 2385 + 3384 + 0 + + + 1 + 2385 + 3385 + 0 + + + 1 + 2385 + 3386 + 0 + + + + 1 + 204766 + 0 + + 3382 + SparkPark05T01 + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP05.unity3d/DlgBotleySP05T01Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP05.unity3d/DlgBotleySP05T01End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfClickSailBoat</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Click the Sailboat</Text><ID>934763</ID></Title></Data> + 0 + + + 3383 + SparkPark05T02 + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpSP05T02.unity3d/PfGrpSP05T02</Asset><Recursive>false</Recursive><Persistent>true</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP05.unity3d/DlgBotleySP05T02Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP05.unity3d/DlgBotleySP05T02End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfBeeQuest</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Catch the Bee!</Text><ID>934764</ID></Title></Data> + 0 + + + 3384 + SparkPark05T03 + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpSP01T05.unity3d/PfGrpSP01T05</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP05.unity3d/DlgBotleySP05T03Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP05.unity3d/DlgBotleySP05T03End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>SpringBoardHubPark01_Landing</Value></Pair><Pair><Key>Range</Key><Value>3</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Find the Water-slide</Text><ID>934765</ID></Title></Data> + 0 + + + 3385 + SparkPark05T04 + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP05.unity3d/DlgBotleySP05T04Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP05.unity3d/DlgBotleySP05T04End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>TikiSlide_17</Value></Pair><Pair><Key>Range</Key><Value>3</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Slide down the Water Slide</Text><ID>934766</ID></Title></Data> + 0 + + + 3386 + SparkPark05T05 + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpSP04T01.unity3d/PfGrpSP04T01</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP05.unity3d/DlgBotleySP05T05Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP05.unity3d/DlgBotleySP05T05End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>RideTrain</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Ride the train!</Text><ID>934767</ID></Title></Data> + 0 + + + 5 +

2

+ + 1 + 7 + 0 + 204766 + true + 5 + 5 + + 0 + + 0 + 0 + +
+ + true + 2386 + JRMM03_Ivy + 1 + 48 +

+ <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM03T00.unity3d/PfGrpMM03T00</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Repeat>1</Repeat><Hidden>0</Hidden><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward><Title><Text>Mythies in the Meadow</Text><ID>934609</ID></Title></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 2386 + 3387 + 1 + + + 1 + 2386 + 3388 + 0 + + + 1 + 2386 + 3389 + 0 + + + 2 + 2386 + 2387 + 0 + + + 2 + 2386 + 2388 + 0 + + + 1 + 2386 + 3393 + 0 + + + 1 + 2386 + 3394 + 0 + + + + 1 + 204770 + 0 + + false + 2387 + JRMM03T04 + 1 + 48 +

2386

+ <Data><Repeat>0</Repeat><Hidden>0</Hidden><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward><Title><Text>Find the Hiding Pegasus</Text><ID>934607</ID></Title></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 2387 + 3390 + 0 + + + + 1 + 204771 + 0 + + 3390 + JRMM03T04A + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM03T04.unity3d/PfGrpMM03T04</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM03.unity3d/DlgIvyMM03T04AOffer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM03.unity3d/DlgIvyMM03T04AEnd</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>PfMarker_HidingPegasus</Value></Pair><Pair><Key>Range</Key><Value>4</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Find the hiding Pegasus</Text><ID>934707</ID></Title></Data> + 0 + + + 2 +

6

+ + 1 + 5362 + 3194 + 204771 + true + 2 + 2 + + 0 + + 0 + 0 +
+ + + false + 2388 + JRMM03T05 + 1 + 48 +

2386

+ <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM03.unity3d/DlgIvyMM03T05Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM03T05.unity3d/PfGrpMM03T05</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Repeat>0</Repeat><Hidden>0</Hidden><End><Type>VO</Type><Asset>RS_DATA/JSJrMM03.unity3d/DlgIvyMM03T05End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Reward><Asset /></Reward><Title><Text>Feed the Hungry Dragons</Text><ID>934608</ID></Title></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + false + 4 + 1 + + 1 + 2388 + 3391 + 0 + + + 1 + 2388 + 3392 + 0 + + + + 1 + 0 + 0 + + 3391 + JRMM03T05A + <Data><End><Type>VO</Type><Asset>RS_DATA/JSJrMM03.unity3d/DlgIvyMM03T05AEnd</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Location</Key></Pair><Pair><Key>NPC</Key><Value>PfDragonGirlNPC</Value></Pair><Pair><Key>ItemID</Key><Value>3194</Value></Pair><Pair><Key>ItemDescription</Key><Value>PetFeed Bowl Kibble</Value></Pair><Pair><Key>Quantity</Key><Value>1</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Delivery</Type><Title><Text>Feed the hungry dragon</Text><ID>934708</ID></Title></Data> + 0 + + + 3392 + JRMM03T05B + <Data><End><Type>VO</Type><Asset>RS_DATA/JSJrMM03.unity3d/DlgIvyMM03T05BEnd</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Location</Key></Pair><Pair><Key>NPC</Key><Value>PfDragonBoyNPC</Value></Pair><Pair><Key>ItemID</Key><Value>3194</Value></Pair><Pair><Key>ItemDescription</Key><Value>PetFeed Bowl Kibble</Value></Pair><Pair><Key>Quantity</Key><Value>1</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Delivery</Type><Title><Text>Feed the hungry Dragon</Text><ID>934709</ID></Title></Data> + 0 + +
+ + 3387 + JRMM03T01 + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM03.unity3d/DlgIvyMM03T01Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>1</Priority></Offer><Offer><Type>CutScene</Type><Asset>RS_DATA/PfGrpMM03T01CS.unity3d/PfGrpMM03T01CS</Asset><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM03.unity3d/DlgIvyMM03T01End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfJumpingHornHowlie</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Click the excited HornHowlie</Text><ID>934710</ID></Title></Data> + 0 + + + 3388 + JRMM03T02 + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM03.unity3d/DlgIvyMM03T02Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM03.unity3d/DlgIvyMM03T02End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfJumpingHornHowlie</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Click the excited HornHowlie to calm it down</Text><ID>934711</ID></Title></Data> + 0 + + + 3389 + JRMM03T03 + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM03.unity3d/DlgIvyMM03T03Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM03.unity3d/DlgIvyMM03T03End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfJumpingHornHowlie</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Click on the excited HornHowlie to calm it down</Text><ID>934712</ID></Title></Data> + 0 + + + 3393 + JRMM03T06 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM03T06.unity3d/PfGrpMM03T06</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM03.unity3d/DlgIvyMM03T06Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM03.unity3d/DlgIvyMM03T06End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>PfCollectJSJrGiffinFeather</Value></Pair><Pair><Key>Quantity</Key><Value>5</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Collect</Type><Title><Text>Collect the Griffin's Feathers</Text><ID>934713</ID></Title></Data> + 0 + + + 3394 + JRMM03T07 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM03T07.unity3d/PfGrpMM03T07</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM03.unity3d/DlgIvyMM03T07Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM03.unity3d/DlgIvyMM03T07End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Location</Key></Pair><Pair><Key>NPC</Key><Value>PfGryphonBoy</Value></Pair><Pair><Key>ItemID</Key><Value>13057</Value></Pair><Pair><Key>ItemDescription</Key><Value>Griffin Feather</Value></Pair><Pair><Key>Quantity</Key><Value>5</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Delivery</Type><Title><Text>Give the Griffin its feathers back</Text><ID>934714</ID></Title></Data> + 0 + + + 5 +

2

+ + 1 + 7 + 0 + 204770 + true + 5 + 5 + + 0 + + 0 + 0 +
+
+ + true + 2440 + JRSP06_Bot + 1 + 49 +

+ <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfJSJrBotley.unity3d/PfJSJrBotley</Asset><Location>PfMarker_Botley</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpSP06T00.unity3d/PfGrpSP06T00</Asset><Recursive>false</Recursive><Persistent>true</Persistent></Setup><Repeat>1</Repeat><Hidden>0</Hidden><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward><Title><Text>The Lost Animal</Text><ID>934623</ID></Title></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 2440 + 3495 + 1 + + + 1 + 2440 + 3496 + 1 + + + 1 + 2440 + 3497 + 0 + + + 1 + 2440 + 3498 + 0 + + + + 1 + 204835 + 0 + + 3495 + SparkPark06T01 + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpSP06T01.unity3d/PfGrpSP06T01</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP06.unity3d/DlgBotleySP06T01Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP06.unity3d/DlgBotleySP06T01End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfClickZipDeer</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type></Data> + 0 + + + 3496 + SparkPark06T02 + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpSP06T02.unity3d/PfGrpSP06T02</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP06.unity3d/DlgBotleySP06T02Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP06.unity3d/DlgBotleySP06T02End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfClickZipGoat</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Click the herd of goats</Text><ID>934768</ID></Title></Data> + 0 + + + 3497 + SparkPark06T03 + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpSP06T03.unity3d/PfGrpSP06T03</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP06.unity3d/DlgBotleySP06T03Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP06.unity3d/DlgBotleySP06T03End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfClickZipSquirrel</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Click on Squirrels</Text><ID>934769</ID></Title></Data> + 0 + + + 3498 + SparkPark06T04 + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpSP06T04.unity3d/PfGrpSP06T04</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP06.unity3d/DlgBotleySP06T04Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP06.unity3d/DlgBotleySP06T04End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfClickZipDeer</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Click herd of deer</Text><ID>934770</ID></Title></Data> + 0 + + + 5 +

2

+ + 1 + 7 + 0 + 204835 + true + 5 + 5 + + 0 + + 0 + 0 + +
+ + true + 2441 + JRMM04_Ivy + 1 + 48 +

+ <Data><Repeat>1</Repeat><Hidden>0</Hidden><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward><Title><Text>Paint with all the Colors of the Flowers!</Text><ID>934610</ID></Title></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 2441 + 3499 + 1 + + + 1 + 2441 + 3500 + 1 + + + 1 + 2441 + 3501 + 0 + + + 1 + 2441 + 3502 + 0 + + + 1 + 2441 + 3503 + 0 + + + + 1 + 204836 + 0 + + 3499 + JRMM04T01 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM04T01.unity3d/PfGrpMM04T01</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM04.unity3d/DlgIvyMM04T01Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM04.unity3d/DlgIvyMM04T01End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>PfCollectFlower01JSJrBlue</Value></Pair><Pair><Key>Quantity</Key><Value>3</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Collect</Type><Title><Text>Gather 3 Green Flowers</Text><ID>934715</ID></Title></Data> + 0 + + + 3500 + JRMM04T02 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM04T02.unity3d/PfGrpMM04T02</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM04.unity3d/DlgIvyMM04T02Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM04.unity3d/DlgIvyMM04T02End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>PfCollectFlower01JSJrYellow</Value></Pair><Pair><Key>Quantity</Key><Value>4</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Collect</Type><Title><Text>Pick 4 Yellow Flowers</Text><ID>934716</ID></Title></Data> + 0 + + + 3501 + JRMM04T03 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM04T03.unity3d/PfGrpMM04T03</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM04.unity3d/DlgIvyMM04T03Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM04.unity3d/DlgIvyMM04T03End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>PfCollectFlower01JSJrRed</Value></Pair><Pair><Key>Quantity</Key><Value>2</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Collect</Type><Title><Text>Get 2 Red Flowers</Text><ID>934717</ID></Title></Data> + 0 + + + 3502 + JRMM04T04 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM04T04.unity3d/PfGrpMM04T04</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM04.unity3d/DlgIvyMM04T04Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM04.unity3d/DlgIvyMM04T04End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Location</Key></Pair><Pair><Key>NPC</Key><Value>PfDyan</Value></Pair><Pair><Key>ItemID</Key><Value>13159</Value></Pair><Pair><Key>ItemDescription</Key><Value>Blue Flower</Value></Pair><Pair><Key>Quantity</Key><Value>3</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Location</Key></Pair><Pair><Key>NPC</Key><Value>PfDyan</Value></Pair><Pair><Key>ItemID</Key><Value>13160</Value></Pair><Pair><Key>ItemDescription</Key><Value>Yellow Flower</Value></Pair><Pair><Key>Quantity</Key><Value>4</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Location</Key></Pair><Pair><Key>NPC</Key><Value>PfDyan</Value></Pair><Pair><Key>ItemID</Key><Value>13161</Value></Pair><Pair><Key>ItemDescription</Key><Value>Red Flower</Value></Pair><Pair><Key>Quantity</Key><Value>2</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Delivery</Type><Title><Text>Give Ivy the Flowers</Text><ID>934718</ID></Title></Data> + 0 + + + 3503 + JRMM04T05 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM04T05.unity3d/PfGrpMM04T05</Asset><Recursive>false</Recursive><Persistent>true</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM04.unity3d/DlgIvyMM04T05Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM04.unity3d/DlgIvyMM04T05End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfClickPegasus01</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Change the Mythie's Look</Text><ID>934719</ID></Title></Data> + 0 + + + 5 +

2

+ + 1 + 7 + 0 + 204836 + true + 5 + 5 + + 0 + + 0 + 0 + +
+ + true + 2442 + JRSP07_Bot + 1 + 49 +

+ <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfJSJrBotley.unity3d/PfJSJrBotley</Asset><Location>PfMarker_Botley</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Repeat>1</Repeat><Hidden>0</Hidden><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward><Title><Text>Botley's Gone Bananas!</Text><ID>934625</ID></Title></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 2442 + 3504 + 0 + + + 2 + 2442 + 2443 + 0 + + + + 1 + 204848 + 0 + + false + 2443 + SparkPark07T02 + 1 + 49 +

2442

+ <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP07.unity3d/DlgBotleySP07T02Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpSP07T02.unity3d/PfGrpSP07T02</Asset><Recursive>false</Recursive><Persistent>true</Persistent></Setup><Repeat>0</Repeat><Hidden>0</Hidden><End><Type>VO</Type><Asset>RS_DATA/JSJrSP07.unity3d/DlgBotleySP07T02End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Reward><Asset /></Reward><RemoveItem><ItemID>13162</ItemID><Quantity>6</Quantity></RemoveItem><Title><Text>Feed 6 Monkeys their 6 Bananas</Text><ID>934624</ID></Title></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 2443 + 3505 + 0 + + + 1 + 2443 + 3506 + 0 + + + 1 + 2443 + 3507 + 0 + + + 1 + 2443 + 3508 + 0 + + + 1 + 2443 + 3509 + 0 + + + 1 + 2443 + 3510 + 0 + + + + 1 + 0 + 0 + + 3505 + SparkPark07T02A + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpSP07T02A.unity3d/PfGrpSP07T02A</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfUISP07T02A.unity3d/PfUISP07T02A</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><End><Type>VO</Type><Asset>RS_DATA/JSJrSP07.unity3d/DlgBotleySP07T02AEnd</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfClickMonkey01</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Click the monkey</Text><ID>934771</ID></Title></Data> + 0 + + + 3506 + SparkPark07T02B + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpSP07T02B.unity3d/PfGrpSP07T02B</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfUISP07T02B.unity3d/PfUISP07T02B</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><End><Type>VO</Type><Asset>RS_DATA/JSJrSP07.unity3d/DlgBotleySP07T02BEnd</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfClickMonkey02</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Click the Monkey</Text><ID>934772</ID></Title></Data> + 0 + + + 3507 + SparkPark07T02C + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpSP07T02C.unity3d/PfGrpSP07T02C</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfUISP07T02C.unity3d/PfUISP07T02C</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><End><Type>VO</Type><Asset>RS_DATA/JSJrSP07.unity3d/DlgBotleySP07T02CEnd</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfClickMonkey03</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Click the Monkey</Text><ID>934773</ID></Title></Data> + 0 + + + 3508 + SparkPark07T02D + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpSP07T02D.unity3d/PfGrpSP07T02D</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfUISP07T02D.unity3d/PfUISP07T02D</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><End><Type>VO</Type><Asset>RS_DATA/JSJrSP07.unity3d/DlgBotleySP07T02DEnd</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfClickMonkey04</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Click the Monkey</Text><ID>934774</ID></Title></Data> + 0 + + + 3509 + SparkPark07T02E + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpSP07T02E.unity3d/PfGrpSP07T02E</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfUISP07T02E.unity3d/PfUISP07T02E</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><End><Type>VO</Type><Asset>RS_DATA/JSJrSP07.unity3d/DlgBotleySP07T02EEnd</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfClickMonkey05</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Click the Monkey</Text><ID>934775</ID></Title></Data> + 0 + + + 3510 + SparkPark07T02F + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpSP07T02F.unity3d/PfGrpSP07T02F</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfUISP07T02F.unity3d/PfUISP07T02F</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><End><Type>VO</Type><Asset>RS_DATA/JSJrSP07.unity3d/DlgBotleySP07T02FEnd</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfClickMonkey06</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Click the Monkey</Text><ID>934776</ID></Title></Data> + 0 + + + + 3504 + SparkPark07T01 + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpSP07T01.unity3d/PfGrpSP07T01</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP07.unity3d/DlgBotleySP07T01Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP07.unity3d/DlgBotleySP07T01End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>PfCollectBananaBunch</Value></Pair><Pair><Key>Quantity</Key><Value>6</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Collect</Type><Title><Text>Gather 6 Bananas</Text><ID>934777</ID></Title></Data> + 0 + + + 5 +

2

+ + 1 + 7 + 0 + 204848 + true + 5 + 5 + + 0 + + 0 + 0 +
+
+ + true + 2446 + JRSP08_Bot + 1 + 49 +

+ <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfJSJrBotley.unity3d/PfJSJrBotley</Asset><Location>PfMarker_Botley</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Repeat>1</Repeat><Hidden>0</Hidden><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward><Title><Text>Chugga-chugga!</Text><ID>934626</ID></Title></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 2446 + 3520 + 0 + + + 1 + 2446 + 3521 + 0 + + + 1 + 2446 + 3522 + 0 + + + 1 + 2446 + 3523 + 0 + + + + 1 + 204842 + 0 + + 3520 + SparkPark08T01 + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpSP08T01.unity3d/PfGrpSP08T01</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP08.unity3d/DlgBotleySP08T01Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP08.unity3d/DlgBotleySP08T01End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>PfCollectBolt</Value></Pair><Pair><Key>Quantity</Key><Value>3</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Collect</Type><Title><Text>Get 3 Bolts</Text><ID>934778</ID></Title></Data> + 0 + + + 3521 + SparkPark08T02 + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpSP08T02.unity3d/PfGrpSP08T02</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP08.unity3d/DlgBotleySP08T02Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP08.unity3d/DlgBotleySP08T02End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>PfCollectPixieDust</Value></Pair><Pair><Key>Quantity</Key><Value>3</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Collect</Type><Title><Text>Get 3 Bags of Pixie Dust</Text><ID>934779</ID></Title></Data> + 0 + + + 3522 + SparkPark08T03 + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP08.unity3d/DlgBotleySP08T03Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP08.unity3d/DlgBotleySP08T03End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Location</Key></Pair><Pair><Key>NPC</Key><Value>PfJSJrBotley</Value></Pair><Pair><Key>ItemID</Key><Value>13172</Value></Pair><Pair><Key>ItemDescription</Key><Value>Bolt</Value></Pair><Pair><Key>Quantity</Key><Value>3</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Location</Key></Pair><Pair><Key>NPC</Key><Value>PfJSJrBotley</Value></Pair><Pair><Key>ItemID</Key><Value>13173</Value></Pair><Pair><Key>ItemDescription</Key><Value>Bag of Pixie Dust</Value></Pair><Pair><Key>Quantity</Key><Value>3</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Delivery</Type><Title><Text>Bring Botley 3 Bolts and 3 Bags of Pixie Dust</Text><ID>934780</ID></Title></Data> + 0 + + + 3523 + SparkPark08T04 + <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP08.unity3d/DlgBotleySP08T04Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP08.unity3d/DlgBotleySP08T04End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>RideTrain</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Ride the train</Text><ID>934781</ID></Title></Data> + 0 + + + 5 +

2

+ + 1 + 7 + 0 + 204842 + true + 5 + 5 + + 0 + + 0 + 0 + +
+ + true + 2447 + JRSP09_Bot + 1 + 49 +

+ <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfJSJrBotley.unity3d/PfJSJrBotley</Asset><Location>PfMarker_Botley</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpSP09T00.unity3d/PfGrpSP09T00</Asset><Recursive>false</Recursive><Persistent>true</Persistent></Setup><Repeat>1</Repeat><Hidden>0</Hidden><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward><Title><Text>Hide and Goat Seek!</Text><ID>934627</ID></Title></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 2447 + 3524 + 0 + + + 1 + 2447 + 3525 + 0 + + + 1 + 2447 + 3526 + 0 + + + 1 + 2447 + 3527 + 0 + + + + 1 + 204853 + 204854 + + 3524 + SparkPark09T01 + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpSP09T01.unity3d/PfGrpSP09T01</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP09.unity3d/DlgBotleySP09T01Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP09.unity3d/DlgBotleySP09T01End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Location</Key><Value>PfClickBabyGoat</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfClickBabyGoat</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Click in the baby goat's bell</Text><ID>934782</ID></Title></Data> + 0 + + + 3525 + SparkPark09T02 + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpSP09T02.unity3d/PfGrpSP09T02</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP09.unity3d/DlgBotleySP09T02Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP09.unity3d/DlgBotleySP09T02End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>PfMarker_GoatBed</Value></Pair><Pair><Key>Range</Key><Value>3</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Find Mama Goat's bed</Text><ID>934783</ID></Title></Data> + 0 + + + 3526 + SparkPark09T03 + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpSP09T03.unity3d/PfGrpSP09T03</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP09.unity3d/DlgBotleySP09T03Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP09.unity3d/DlgBotleySP09T03End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>PfMarker_BabyGoatHidingSpot</Value></Pair><Pair><Key>Range</Key><Value>3</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Follow the Bell Sounds</Text><ID>934784</ID></Title></Data> + 0 + + + 3527 + SparkPark09T04 + <Data><Setup><Scene>HubParkJunior</Scene><Asset>RS_DATA/PfGrpSP09T04.unity3d/PfGrpSP09T04</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrSP09.unity3d/DlgBotleySP09T04Offer</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrSP09.unity3d/DlgBotleySP09T04End</Asset><NPC>PfJSJrBotley</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubParkJunior</Value></Pair><Pair><Key>Name</Key><Value>PfMarker_Botley</Value></Pair><Pair><Key>Range</Key><Value>3</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Escort the baby goat back to Botley</Text><ID>934785</ID></Title></Data> + 0 + + + 5 +

2

+ + 1 + 7 + 0 + 204853 + true + 5 + 5 + + 0 + + 0 + 0 + +
+ + true + 2448 + JRMM05_Ivy + 1 + 48 +

+ <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>PfDyan</Asset><Location>PfMarker_IvyEggRoom</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Repeat>1</Repeat><Hidden>0</Hidden><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward><Title><Text>Good Eggs!</Text><ID>934611</ID></Title></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 2448 + 3528 + 0 + + + 1 + 2448 + 3529 + 0 + + + 1 + 2448 + 3530 + 0 + + + 1 + 2448 + 3531 + 0 + + + + 1 + 204843 + 0 + + 3528 + JRMM05T01 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM05T01.unity3d/PfGrpMM05T01</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM05.unity3d/DlgIvyMM05T01Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM05.unity3d/DlgIvyMM05T01End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>PfCollectMythieEgg</Value></Pair><Pair><Key>Quantity</Key><Value>5</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Collect</Type><Title><Text>Get 5 Mythie Eggs</Text><ID>934720</ID></Title></Data> + 0 + + + 3529 + JRMM05T02 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM05T02.unity3d/PfGrpMM05T02</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM05.unity3d/DlgIvyMM05T02Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM05.unity3d/DlgIvyMM05T02End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Location</Key></Pair><Pair><Key>NPC</Key><Value>PfDyan</Value></Pair><Pair><Key>ItemID</Key><Value>13174</Value></Pair><Pair><Key>ItemDescription</Key><Value>Mythie Egg</Value></Pair><Pair><Key>Quantity</Key><Value>5</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Delivery</Type><Title><Text>Give the 5 Mythie Eggs to Ivy</Text><ID>934721</ID></Title><Desc><Text>Give the 5 Mythie Eggs to Ivy at the Mythie Nest.</Text><ID>934722</ID></Desc></Data> + 0 + + + 3530 + JRMM05T03 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM05T03.unity3d/PfGrpMM05T03</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM05.unity3d/DlgIvyMM05T03Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM05.unity3d/DlgIvyMM05T03End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>PfCollectFurball</Value></Pair><Pair><Key>Quantity</Key><Value>5</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Collect</Type><Title><Text>Get 5 Fur Balls</Text><ID>934723</ID></Title></Data> + 0 + + + 3531 + JRMM05T04 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM05T04.unity3d/PfGrpMM05T04</Asset><Recursive>false</Recursive><Persistent>true</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM05.unity3d/DlgIvyMM05T04Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM05.unity3d/DlgIvyMM05T04End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PileOfEggs</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Wrap Mythie Eggs in Fur Balls</Text><ID>934724</ID></Title></Data> + 0 + + + 5 +

2

+ + 1 + 7 + 0 + 204843 + true + 5 + 5 + + 0 + + 0 + 0 + +
+ + true + 2449 + JRMM06_Ivy + 1 + 48 +

+ <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM06T00.unity3d/PfGrpMM06T00</Asset><Recursive>false</Recursive><Persistent>true</Persistent></Setup><Repeat>1</Repeat><Hidden>0</Hidden><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward><Title><Text>Ready to Mythie Party!</Text><ID>934613</ID></Title></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 2449 + 3532 + 0 + + + 1 + 2449 + 3533 + 0 + + + 1 + 2449 + 3534 + 0 + + + 2 + 2449 + 2450 + 0 + + + 1 + 2449 + 3537 + 0 + + + 1 + 2449 + 3538 + 0 + + + + 1 + 204843 + 0 + + false + 2450 + JRMM06T04 + 1 + 48 +

2449

+ <Data><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM06.unity3d/DlgIvyMM06T04Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><Setup><Asset>RS_DATA/PfGrpMM06T04.unity3d/PfGrpMM06T04</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Repeat>0</Repeat><Hidden>0</Hidden><End><Type>VO</Type><Asset>RS_DATA/JSJrMM06.unity3d/DlgIvyMM06T04End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Reward><Asset /></Reward><Title><Text>Click the Flowers and the Green Leaves</Text><ID>934612</ID></Title></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + false + 4 + 1 + + 1 + 2450 + 3535 + 0 + + + 1 + 2450 + 3536 + 0 + + + + 1 + 0 + 0 + + 3535 + JRMM06T04A + <Data><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Location</Key><Value>PfYellowFlowers</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfCollectFlower01JSJrYellow</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Click the flowers</Text><ID>934725</ID></Title></Data> + 0 + + + 3536 + JRMM06T04B + <Data><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Location</Key><Value>PfGreenLeaves</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfCollectLeafPile</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Click the Green Leaves</Text><ID>934726</ID></Title></Data> + 0 + + + + 3532 + JRMM06T01 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM06T01.unity3d/PfGrpMM06T01</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM06.unity3d/DlgIvyMM06T01Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM06.unity3d/DlgIvyMM06T01End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>PfCollectLeafPile</Value></Pair><Pair><Key>Quantity</Key><Value>1</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Collect</Type><Title><Text>Get 1 Pile of Green Leaves</Text><ID>934727</ID></Title></Data> + 0 + + + 3533 + JRMM06T02 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM06T02.unity3d/PfGrpMM06T02</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM06.unity3d/DlgIvyMM06T02Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM06.unity3d/DlgIvyMM06T02End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>PfCollectFlower01JSJrYellow</Value></Pair><Pair><Key>Quantity</Key><Value>1</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Collect</Type><Title><Text>Find the Yellow Flowers</Text><ID>934728</ID></Title></Data> + 0 + + + 3534 + JRMM06T03 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM06T03.unity3d/PfGrpMM06T03</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM06.unity3d/DlgIvyMM06T03Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM06.unity3d/DlgIvyMM06T03End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Location</Key></Pair><Pair><Key>NPC</Key><Value>PfDyan</Value></Pair><Pair><Key>ItemID</Key><Value>13177</Value></Pair><Pair><Key>ItemDescription</Key><Value>Yellow Flowers</Value></Pair><Pair><Key>Quantity</Key><Value>1</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Location</Key></Pair><Pair><Key>NPC</Key><Value>PfDyan</Value></Pair><Pair><Key>ItemID</Key><Value>13176</Value></Pair><Pair><Key>ItemDescription</Key><Value>Pile of Green Leaves</Value></Pair><Pair><Key>Quantity</Key><Value>1</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Delivery</Type><Title><Text>Give Ivy the Flowers and Leaves</Text><ID>934729</ID></Title></Data> + 0 + + + 3537 + JRMM06T05 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpFUET12.unity3d/PfGrpFUET12</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM06.unity3d/DlgIvyMM06T05Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM06.unity3d/DlgIvyMM06T05End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>Petbathe</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Wash your Mythie</Text><ID>934730</ID></Title></Data> + 0 + + + 3538 + JRMM06T06 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM06T06.unity3d/PfGrpMM06T06</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM06.unity3d/DlgIvyMM06T06Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM06.unity3d/DlgIvyMM06T06End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>1</Priority></End><End><Type>CutScene</Type><Asset>RS_DATA/PfGrpMM06T06CS.unity3d/PfGrpMM06T06CS</Asset><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Location</Key><Value>PfDragonBoyGoofy</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfDragonBoyGoofy</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Crown the Dragon</Text><ID>934731</ID></Title></Data> + 0 + + + 5 +

2

+ + 1 + 7 + 0 + 204843 + true + 5 + 5 + + 0 + + 0 + 0 +
+
+ + true + 2451 + JRMM07_Ivy + 1 + 48 +

+ <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM07T00.unity3d/PfGrpMM07T00</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Repeat>1</Repeat><Hidden>0</Hidden><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward><Title><Text>Feathers for Flying</Text><ID>934614</ID></Title></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 2451 + 3539 + 0 + + + 1 + 2451 + 3540 + 0 + + + 1 + 2451 + 3541 + 0 + + + 1 + 2451 + 3542 + 0 + + + 1 + 2451 + 3543 + 0 + + + + 1 + 204844 + 0 + + 3539 + JRMM07T01 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM07T01.unity3d/PfGrpMM07T01</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM07.unity3d/DlgIvyMM07T01Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM07.unity3d/DlgIvyMM07T01End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>PfMarker_Gryphon</Value></Pair><Pair><Key>Range</Key><Value>4</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Find the Gryphon</Text><ID>934732</ID></Title></Data> + 0 + + + 3540 + JRMM07T02 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM07T02.unity3d/PfGrpMM07T02</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Setup><Scene>CritterCoveJunior</Scene><Asset>PfDyan</Asset><Location>PfMarker_IvyBeach</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM07.unity3d/DlgIvyMM07T02Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM07.unity3d/DlgIvyMM07T02End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>PfCollectJSJrGiffinFeather</Value></Pair><Pair><Key>Quantity</Key><Value>6</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Collect</Type><Title><Text>Pick up the 6 Gryphon Feathers</Text><ID>934733</ID></Title></Data> + 0 + + + 3541 + JRMM07T03 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM07T03.unity3d/PfGrpMM07T03</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM07.unity3d/DlgIvyMM07T03Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM07.unity3d/DlgIvyMM07T03End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Location</Key></Pair><Pair><Key>NPC</Key><Value>PfDyan</Value></Pair><Pair><Key>ItemID</Key><Value>13178</Value></Pair><Pair><Key>ItemDescription</Key><Value>Gryphon Feather</Value></Pair><Pair><Key>Quantity</Key><Value>6</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Delivery</Type><Title><Text>Bring Ivy the 6 Gryphon Feathers</Text><ID>934734</ID></Title></Data> + 0 + + + 3542 + JRMM07T04 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM07T04.unity3d/PfGrpMM07T04</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM07.unity3d/DlgIvyMM07T04Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM07.unity3d/DlgIvyMM07T04End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>PfCollectApple</Value></Pair><Pair><Key>Quantity</Key><Value>3</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Collect</Type><Title><Text>Gather 3 Apples</Text><ID>934735</ID></Title></Data> + 0 + + + 3543 + JRMM07T05 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM07T03.unity3d/PfGrpMM07T03</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Setup><Scene>CritterCoveJunior</Scene><Asset>PfDyan</Asset><Location>PfMarker_IvyBeach</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM07.unity3d/DlgIvyMM07T05Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM07.unity3d/DlgIvyMM07T05End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>1</Priority></End><End><Type>CutScene</Type><Asset>RS_DATA/PfGrpMM07T05CS.unity3d/PfGrpMM07T05CS</Asset><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Location</Key></Pair><Pair><Key>NPC</Key><Value>PfDyan</Value></Pair><Pair><Key>ItemID</Key><Value>13179</Value></Pair><Pair><Key>ItemDescription</Key><Value>Apple</Value></Pair><Pair><Key>Quantity</Key><Value>3</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Delivery</Type><Title><Text>Bring Ivy 3 Apples</Text><ID>934736</ID></Title></Data> + 0 + + + 5 +

2

+ + 1 + 7 + 0 + 204844 + true + 5 + 5 + + 0 + + 0 + 0 + +
+ + true + 2452 + JRMM08_Ivy + 1 + 48 +

+ <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM08T00.unity3d/PfGrpMM08T00</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Repeat>1</Repeat><Hidden>0</Hidden><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward><Title><Text>Lost Baby Mythie</Text><ID>934616</ID></Title></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 2452 + 3544 + 0 + + + 1 + 2452 + 3545 + 0 + + + 2 + 2452 + 2453 + 0 + + + 1 + 2452 + 3547 + 0 + + + 1 + 2452 + 3546 + 0 + + + 1 + 2452 + 3549 + 0 + + + + 1 + 204847 + 0 + + false + 2453 + (2453) JRMM08T03 + 1 + 48 +

2452

+ <Data><Repeat>0</Repeat><Hidden>0</Hidden><Reward><Asset>RS_DATA/PfUiMissionRewardDB.unity3d/PfUiMissionRewardDB</Asset></Reward><Title><Text>Go to the Hatchery to find Mommy Mythie</Text><ID>934615</ID></Title></Data> + false + 0 + + + 2 + False + false + + + 1 + False + false + + + all + true + 4 + 1 + + 1 + 2453 + 3548 + 0 + + + + 1 + 204846 + 0 + + 3548 + JRMM08T03A + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM08T03.unity3d/PfGrpMM08T03</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM08.unity3d/DlgIvyMM08T03AOffer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM08.unity3d/DlgIvyMM08T03AEnd</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>PfMarker_Egg01</Value></Pair><Pair><Key>Range</Key><Value>3</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Go to the Hatchery to find the baby Mythie's mother</Text><ID>934737</ID></Title></Data> + 0 + + + 3 +

6

+ + 1 + 5433 + 13179 + 204846 + true + 3 + 3 + + 0 + + 0 + 0 +
+ + + 3544 + JRMM08T01 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM08T01.unity3d/PfGrpMM08T01</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM08.unity3d/DlgIvyMM08T01Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM08.unity3d/DlgIvyMM08T01End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Location</Key><Value>PfClickTree</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfClickTree</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Click the tree to find the baby Mythie</Text><ID>934738</ID></Title></Data> + 0 + + + 3545 + JRMM08T02 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM08T02.unity3d/PfGrpMM08T02</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM08.unity3d/DlgIvyMM08T02Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM08.unity3d/DlgIvyMM08T02End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfGryphonBoy</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Click the Baby Mythie to Brush it</Text><ID>934739</ID></Title></Data> + 0 + + + 3546 + JRMM08T05 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM08T05.unity3d/PfGrpMM08T05</Asset><Recursive>false</Recursive><Persistent>true</Persistent></Setup><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM08T06.unity3d/PfGrpMM08T06</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM08.unity3d/DlgIvyMM08T05Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM08.unity3d/DlgIvyMM08T05End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Name</Key><Value>DyanMarker</Value></Pair><Pair><Key>Range</Key><Value>6</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Go to Flight Deck to look for the Mythie's Mother</Text><ID>934740</ID></Title></Data> + 0 + + + 3547 + JRMM08T04 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM08T02.unity3d/PfGrpMM08T02</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM08.unity3d/DlgIvyMM08T04Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM08.unity3d/DlgIvyMM08T04End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Location</Key></Pair><Pair><Key>NPC</Key><Value>PfGryphonBoy</Value></Pair><Pair><Key>ItemID</Key><Value>13179</Value></Pair><Pair><Key>ItemDescription</Key><Value>Apple</Value></Pair><Pair><Key>Quantity</Key><Value>3</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Delivery</Type></Data> + 0 + + + 3549 + JRMM08T06 + <Data><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM08T05.unity3d/PfGrpMM08T05</Asset><Recursive>false</Recursive><Persistent>true</Persistent></Setup><Setup><Scene>CritterCoveJunior</Scene><Asset>RS_DATA/PfGrpMM08T06.unity3d/PfGrpMM08T06</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>VO</Type><Asset>RS_DATA/JSJrMM08.unity3d/DlgIvyMM08T06Offer</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>VO</Type><Asset>RS_DATA/JSJrMM08.unity3d/DlgIvyMM08T06End</Asset><NPC>PfDyan</NPC><ItemID>0</ItemID><Priority>1</Priority></End><End><Type>CutScene</Type><Asset>RS_DATA/PfGrpMM08T06CS.unity3d/PfGrpMM08T06CS</Asset><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>CritterCoveJunior</Value></Pair><Pair><Key>Location</Key><Value>PfGryphonMom</Value></Pair><Pair><Key>Name</Key><Value>ClickObject</Value></Pair><Pair><Key>ItemName</Key><Value>PfGryphonMom</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Click the Blue Colored Mythie Mother</Text><ID>934741</ID></Title></Data> + 0 + + + 5 +

2

+ + 1 + 7 + 0 + 204847 + true + 5 + 5 + + 0 + + 0 + 0 +
+
+
diff --git a/src/Services/MissionStoreSingleton.cs b/src/Services/MissionStoreSingleton.cs index 4e029c7..480b50e 100644 --- a/src/Services/MissionStoreSingleton.cs +++ b/src/Services/MissionStoreSingleton.cs @@ -12,6 +12,8 @@ public class MissionStoreSingleton { private int[] upcomingMissionsV1; private int[] activeMissionsMaM; private int[] upcomingMissionsMaM; + private int[] activeMissionsWoJS; + private int[] upcomingMissionsWoJS; public MissionStoreSingleton() { ServerMissionArray missionArray = XmlUtil.DeserializeXml(XmlUtil.ReadResourceXmlString("missions")); @@ -29,6 +31,14 @@ public class MissionStoreSingleton { defaultMissions = XmlUtil.DeserializeXml(XmlUtil.ReadResourceXmlString("defaultmissionlistmam")); activeMissionsMaM = defaultMissions.Active; upcomingMissionsMaM = defaultMissions.Upcoming; + + missionArray = XmlUtil.DeserializeXml(XmlUtil.ReadResourceXmlString("missions_wojs")); + defaultMissions = XmlUtil.DeserializeXml(XmlUtil.ReadResourceXmlString("defaultmissionlist_wojs")); + foreach (var mission in missionArray.MissionDataArray) { + SetUpRecursive(mission); // TODO: use separate missions dict for WoJS (?) + } + activeMissionsWoJS = defaultMissions.Active; + upcomingMissionsWoJS = defaultMissions.Upcoming; } public Mission GetMission(int missionID) { @@ -39,6 +49,9 @@ public class MissionStoreSingleton { if (gameVersion == ClientVersion.MaM) { return activeMissionsMaM; } + if (gameVersion == ClientVersion.WoJS) { + return activeMissionsWoJS; + } if (gameVersion < 0xa2a00a0a) { return activeMissionsV1; } @@ -49,6 +62,9 @@ public class MissionStoreSingleton { if (gameVersion == ClientVersion.MaM) { return upcomingMissionsMaM; } + if (gameVersion == ClientVersion.WoJS) { + return upcomingMissionsWoJS; + } if (gameVersion < 0xa2a00a0a) { return upcomingMissionsV1; } diff --git a/src/sodoff.csproj b/src/sodoff.csproj index 3408993..c9d3f97 100644 --- a/src/sodoff.csproj +++ b/src/sodoff.csproj @@ -50,6 +50,7 @@ + @@ -109,6 +110,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest @@ -118,6 +122,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest From 6960aadcc3355c7b84e3fe77a0f0c4890f9f1304 Mon Sep 17 00:00:00 2001 From: Robert Paciorek Date: Tue, 19 Sep 2023 11:22:58 +0000 Subject: [PATCH 09/17] fix set Jumpee name (and init move tutorial) --- src/Controllers/Common/ContentController.cs | 24 ++++++++++++--- src/Program.cs | 1 + src/Resources/displaynames.xml | 33 +++++++++++++++++++++ src/Schema/DisplayNames.cs | 15 ++++++++++ src/Services/DisplayNamesService.cs | 19 ++++++++++++ src/sodoff.csproj | 4 +++ 6 files changed, 92 insertions(+), 4 deletions(-) create mode 100644 src/Resources/displaynames.xml create mode 100644 src/Schema/DisplayNames.cs create mode 100644 src/Services/DisplayNamesService.cs diff --git a/src/Controllers/Common/ContentController.cs b/src/Controllers/Common/ContentController.cs index e249c31..9876073 100644 --- a/src/Controllers/Common/ContentController.cs +++ b/src/Controllers/Common/ContentController.cs @@ -20,10 +20,11 @@ public class ContentController : Controller { private AchievementService achievementService; private InventoryService inventoryService; private GameDataService gameDataService; + private DisplayNamesService displayNamesService; private Random random = new Random(); private readonly IOptions config; - public ContentController(DBContext ctx, KeyValueService keyValueService, ItemService itemService, MissionService missionService, RoomService roomService, AchievementService achievementService, InventoryService inventoryService, GameDataService gameDataService, IOptions config) { + public ContentController(DBContext ctx, KeyValueService keyValueService, ItemService itemService, MissionService missionService, RoomService roomService, AchievementService achievementService, InventoryService inventoryService, GameDataService gameDataService, DisplayNamesService displayNamesService, IOptions config) { this.ctx = ctx; this.keyValueService = keyValueService; this.itemService = itemService; @@ -32,6 +33,7 @@ public class ContentController : Controller { this.achievementService = achievementService; this.inventoryService = inventoryService; this.gameDataService = gameDataService; + this.displayNamesService = displayNamesService; this.config = config; } @@ -352,11 +354,13 @@ public class ContentController : Controller { } [HttpPost] - //[Produces("application/xml")] + [Produces("application/xml")] [Route("ContentWebService.asmx/GetAvatar")] // used by World Of Jumpstart [VikingSession(UseLock=false)] public IActionResult GetAvatar(Viking viking) { - return Ok(viking.AvatarSerialized); + AvatarData avatarData = XmlUtil.DeserializeXml(viking.AvatarSerialized); + avatarData.Id = viking.Id; + return Ok(avatarData); } [HttpPost] @@ -1281,7 +1285,19 @@ public class ContentController : Controller { [Route("ContentWebService.asmx/GetDisplayNamesByCategoryID")] // used by Math Blaster public IActionResult GetDisplayNames() { // TODO: This is a placeholder - return Ok(" 1 Aaliyah 1 2 Abby 2 3 Adrian 3 11 Karen 2 12 Luna 2 13 Tori 2 "); + return Ok(XmlUtil.ReadResourceXmlString("displaynames")); + } + + [HttpPost] + //[Produces("application/xml")] + [Route("ContentWebService.asmx/SetDisplayName")] // used by World Of Jumpstart + [VikingSession] + public IActionResult SetProduct(Viking viking, [FromForm] int firstNameID, [FromForm] int secondNameID, [FromForm] int thirdNameID) { + AvatarData avatarData = XmlUtil.DeserializeXml(viking.AvatarSerialized); + avatarData.DisplayName = displayNamesService.GetName(firstNameID, secondNameID, thirdNameID); + viking.AvatarSerialized = XmlUtil.SerializeXml(avatarData); + ctx.SaveChanges(); + return Ok(); } [HttpPost] diff --git a/src/Program.cs b/src/Program.cs index a6ce21c..e637dac 100644 --- a/src/Program.cs +++ b/src/Program.cs @@ -26,6 +26,7 @@ builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); +builder.Services.AddSingleton(); builder.Services.AddScoped(); builder.Services.AddScoped(); diff --git a/src/Resources/displaynames.xml b/src/Resources/displaynames.xml new file mode 100644 index 0000000..9cdd32c --- /dev/null +++ b/src/Resources/displaynames.xml @@ -0,0 +1,33 @@ + + + + 1 + Aaliyah + 1 + + + 2 + Abby + 2 + + + 3 + Adrian + 3 + + + 11 + Karen + 2 + + + 12 + Luna + 2 + + + 13 + Tori + 2 + + diff --git a/src/Schema/DisplayNames.cs b/src/Schema/DisplayNames.cs new file mode 100644 index 0000000..50c123e --- /dev/null +++ b/src/Schema/DisplayNames.cs @@ -0,0 +1,15 @@ +using System.Xml.Serialization; + +namespace sodoff.Schema; + +[Serializable] +[XmlRoot(ElementName = "DisplayNames", Namespace = "")] +public class DisplayNameList : List { +} +public class DisplayName { + [XmlElement("ID")] + public int Id; + + [XmlElement("Name")] + public string Name; +} diff --git a/src/Services/DisplayNamesService.cs b/src/Services/DisplayNamesService.cs new file mode 100644 index 0000000..ef963bb --- /dev/null +++ b/src/Services/DisplayNamesService.cs @@ -0,0 +1,19 @@ +using sodoff.Schema; +using sodoff.Util; + +namespace sodoff.Services; + +public class DisplayNamesService { + Dictionary displayNames = new(); + + public DisplayNamesService(ItemService itemService) { + DisplayNameList displayNamesList = XmlUtil.DeserializeXml(XmlUtil.ReadResourceXmlString("displaynames")); + foreach (var n in displayNamesList) { + displayNames.Add(n.Id, n.Name); + } + } + + public string GetName(int firstNameID, int secondNameID, int thirdNameID) { + return displayNames[firstNameID] + " " + displayNames[secondNameID] + displayNames[thirdNameID]; + } +} diff --git a/src/sodoff.csproj b/src/sodoff.csproj index c9d3f97..5c4fc66 100644 --- a/src/sodoff.csproj +++ b/src/sodoff.csproj @@ -41,6 +41,7 @@ + @@ -80,6 +81,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest From c842a2f3b2891a26bc1af55ae3d912b945869684 Mon Sep 17 00:00:00 2001 From: Robert Paciorek Date: Sun, 1 Oct 2023 11:16:16 +0000 Subject: [PATCH 10/17] implement Petz system --- src/Controllers/Common/ContentController.cs | 61 +++++++++++++++------ src/Model/Viking.cs | 1 + 2 files changed, 46 insertions(+), 16 deletions(-) diff --git a/src/Controllers/Common/ContentController.cs b/src/Controllers/Common/ContentController.cs index 9876073..ed45cbd 100644 --- a/src/Controllers/Common/ContentController.cs +++ b/src/Controllers/Common/ContentController.cs @@ -67,10 +67,53 @@ public class ContentController : Controller { //[Produces("application/xml")] [Route("ContentWebService.asmx/SetProduct")] // used by World Of Jumpstart [VikingSession] - public string? SetProduct(Viking viking, [FromForm] string contentXml) { + public bool SetProduct(Viking viking, [FromForm] string contentXml) { viking.ProductData = contentXml; ctx.SaveChanges(); - return viking.ProductData; + return true; + } + + // NOTE: "Pet" (Petz) system (GetCurrentPetByUserID, GetCurrentPet, SetCurrentPet, DelCurrentPet) is a totally different system than "RaisedPet" (Dragons) + + [HttpPost] + //[Produces("application/xml")] + [Route("ContentWebService.asmx/GetCurrentPetByUserID")] // used by World Of Jumpstart + public IActionResult GetCurrentPetByUserID([FromForm] Guid userId, [FromForm] bool isActive) { + string? petData = ctx.Vikings.FirstOrDefault(e => e.Uid == userId)?.PetSerialized; + if (petData is null) + return Ok(XmlUtil.SerializeXml(null)); + + return Ok(petData); + } + + [HttpPost] + //[Produces("application/xml")] + [Route("ContentWebService.asmx/GetCurrentPet")] // used by World Of Jumpstart + public IActionResult GetCurrentPet(Viking viking, [FromForm] bool isActive) { + if (viking.PetSerialized is null) + return Ok(XmlUtil.SerializeXml(null)); + + return Ok(viking.PetSerialized); + } + + [HttpPost] + [Produces("application/xml")] + [Route("ContentWebService.asmx/SetCurrentPet")] // used by World Of Jumpstart + [VikingSession] + public bool SetCurrentPet(Viking viking, [FromForm] string contentXml) { + viking.PetSerialized = contentXml; + ctx.SaveChanges(); + return true; + } + + [HttpPost] + [Produces("application/xml")] + [Route("ContentWebService.asmx/DelCurrentPet")] // used by World Of Jumpstart + [VikingSession] + public bool DelCurrentPet(Viking viking, [FromForm] bool isActive) { + viking.PetSerialized = null; + ctx.SaveChanges(); + return true; } [HttpPost] @@ -656,20 +699,6 @@ public class ContentController : Controller { return filteredDragons.ToArray(); } - [HttpPost] - [Produces("application/xml")] - [Route("ContentWebService.asmx/GetCurrentPetByUserID")] // used by World Of Jumpstart - [VikingSession(UseLock=false)] - public PetData? GetCurrentPetByUserID(Viking viking, [FromForm] string userId, [FromForm] bool isActive) { - Console.WriteLine(string.Format("\n{0}", Request.Path)); - foreach (var x in Request.Form) - Console.WriteLine(string.Format("{0}", x)); - - // TODO WoJS placeholder - - return null; - } - [HttpPost] [Produces("application/xml")] [Route("ContentWebService.asmx/GetActiveRaisedPet")] // used by World Of Jumpstart diff --git a/src/Model/Viking.cs b/src/Model/Viking.cs index d5146d8..f46eddf 100644 --- a/src/Model/Viking.cs +++ b/src/Model/Viking.cs @@ -35,4 +35,5 @@ public class Viking { public virtual Dragon? SelectedDragon { get; set; } public string? ProductData { get; set; } + public string? PetSerialized { get; set; } } From baab40c828e03b24b74999122e27ea2cb88e7ec9 Mon Sep 17 00:00:00 2001 From: Robert Paciorek Date: Sun, 1 Oct 2023 12:37:06 +0000 Subject: [PATCH 11/17] Mythies issues fixes - fix "Mythies" tab in profile - fix Minisaurs vs Mythies conflict --- src/Controllers/Common/ContentController.cs | 46 ++++++++++++++++++--- 1 file changed, 40 insertions(+), 6 deletions(-) diff --git a/src/Controllers/Common/ContentController.cs b/src/Controllers/Common/ContentController.cs index ed45cbd..ae9c0e1 100644 --- a/src/Controllers/Common/ContentController.cs +++ b/src/Controllers/Common/ContentController.cs @@ -623,9 +623,23 @@ public class ContentController : Controller { [Route("ContentWebService.asmx/SetRaisedPetInactive")] // used by World Of Jumpstart [VikingSession] public IActionResult SetRaisedPetInactive(Viking viking, [FromForm] int raisedPetID) { - viking.SelectedDragonId = null; - ctx.SaveChanges(); + if (raisedPetID == viking.SelectedDragonId) { + viking.SelectedDragonId = null; + } else { + Dragon? dragon = viking.Dragons.FirstOrDefault(e => e.Id == raisedPetID); + if (dragon is null) { + return Ok(false); + } + // check if Minisaurs - we real delete only Minisaurs + RaisedPetData dragonData = XmlUtil.DeserializeXml(dragon.RaisedPetData); + if (dragonData.PetTypeID != 2) { + return Ok(false); + } + + viking.Dragons.Remove(dragon); + } + ctx.SaveChanges(); return Ok(true); } @@ -703,14 +717,23 @@ public class ContentController : Controller { [Produces("application/xml")] [Route("ContentWebService.asmx/GetActiveRaisedPet")] // used by World Of Jumpstart [VikingSession(UseLock=false)] - public RaisedPetData[] GetActiveRaisedPet(Viking viking, [FromForm] string userId, [FromForm] bool isActive) { + public RaisedPetData[] GetActiveRaisedPet(Viking viking, [FromForm] string userId, [FromForm] int petTypeID) { + if (petTypeID == 2) { + // player can have multiple Minisaurs at the same time ... Minisaurs should never have been selected also ... so use GetUnselectedPetByTypes in this case + return GetUnselectedPetByTypes(viking, "2", false); + } + Dragon? dragon = viking.SelectedDragon; if (dragon is null) { return new RaisedPetData[0]; } + RaisedPetData dragonData = GetRaisedPetDataFromDragon(dragon); + if (petTypeID != dragonData.PetTypeID) + return new RaisedPetData[0]; + // NOTE: returned dragon PetTypeID should be equal value of pair 1967 → CurrentRaisedPetType - return new RaisedPetData[] {GetRaisedPetDataFromDragon(dragon)}; + return new RaisedPetData[] {dragonData}; } [HttpPost] @@ -732,13 +755,24 @@ public class ContentController : Controller { [Produces("application/xml")] [Route("ContentWebService.asmx/GetInactiveRaisedPet")] // used by World Of Jumpstart 1.1 [VikingSession(UseLock=false)] - public RaisedPetData[] GetInactiveRaisedPet(Viking viking) { + public RaisedPetData[] GetInactiveRaisedPet(Viking viking, [FromForm] int petTypeID) { RaisedPetData[] dragons = viking.Dragons .Where(d => d.RaisedPetData is not null && d.Id != viking.SelectedDragonId) .Select(d => GetRaisedPetDataFromDragon(d, viking.SelectedDragonId)) .ToArray(); - return dragons; + List filteredDragons = new List(); + foreach (RaisedPetData dragon in dragons) { + if (petTypeID == dragon.PetTypeID) { + filteredDragons.Add(dragon); + } + } + + if (filteredDragons.Count == 0) { + return null; + } + + return filteredDragons.ToArray(); } [HttpPost] From 88aa1848819a857d6343b15891937b0479f7b791 Mon Sep 17 00:00:00 2001 From: Robert Paciorek Date: Sun, 1 Oct 2023 18:53:57 +0000 Subject: [PATCH 12/17] bugfix: internal error when not use middle name --- src/Services/DisplayNamesService.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Services/DisplayNamesService.cs b/src/Services/DisplayNamesService.cs index ef963bb..ea7cdf6 100644 --- a/src/Services/DisplayNamesService.cs +++ b/src/Services/DisplayNamesService.cs @@ -8,6 +8,7 @@ public class DisplayNamesService { public DisplayNamesService(ItemService itemService) { DisplayNameList displayNamesList = XmlUtil.DeserializeXml(XmlUtil.ReadResourceXmlString("displaynames")); + displayNames.Add(0, ""); foreach (var n in displayNamesList) { displayNames.Add(n.Id, n.Name); } From f611b9203cade4808da7461cca2ba5b243f3acc4 Mon Sep 17 00:00:00 2001 From: Robert Paciorek Date: Thu, 5 Oct 2023 20:47:36 +0000 Subject: [PATCH 13/17] SetAvatar (v1) should return bool --- src/Controllers/Common/ContentController.cs | 23 +++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/Controllers/Common/ContentController.cs b/src/Controllers/Common/ContentController.cs index ae9c0e1..9801a97 100644 --- a/src/Controllers/Common/ContentController.cs +++ b/src/Controllers/Common/ContentController.cs @@ -409,6 +409,29 @@ public class ContentController : Controller { [HttpPost] [Produces("application/xml")] [Route("ContentWebService.asmx/SetAvatar")] // used by World Of Jumpstart + [VikingSession] + public IActionResult SetAvatarV1(Viking viking, [FromForm] string contentXML) { + if (viking.AvatarSerialized != null) { + AvatarData dbAvatarData = XmlUtil.DeserializeXml(viking.AvatarSerialized); + AvatarData reqAvatarData = XmlUtil.DeserializeXml(contentXML); + + int dbAvatarVersion = GetAvatarVersion(dbAvatarData); + int reqAvatarVersion = GetAvatarVersion(reqAvatarData); + + if (dbAvatarVersion > reqAvatarVersion) { + // do not allow override newer version avatar data by older version + return Ok(false); + } + } + + viking.AvatarSerialized = contentXML; + ctx.SaveChanges(); + + return Ok(true); + } + + [HttpPost] + [Produces("application/xml")] [Route("V2/ContentWebService.asmx/SetAvatar")] [VikingSession] public IActionResult SetAvatar(Viking viking, [FromForm] string contentXML) { From ca95caf78377e5f3bb0487e54b91d57bc6acbb23 Mon Sep 17 00:00:00 2001 From: Robert Paciorek Date: Sat, 18 Nov 2023 10:22:56 +0000 Subject: [PATCH 14/17] support for Futureland (IsValidApiToken) --- src/Controllers/Common/AuthenticationController.cs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/Controllers/Common/AuthenticationController.cs b/src/Controllers/Common/AuthenticationController.cs index fce21ce..57b5187 100644 --- a/src/Controllers/Common/AuthenticationController.cs +++ b/src/Controllers/Common/AuthenticationController.cs @@ -134,6 +134,19 @@ public class AuthenticationController : Controller { return Ok(new UserInfo {}); } + [HttpPost] + [Produces("application/xml")] + [Route("AuthenticationWebService.asmx/IsValidApiToken")] // used by World Of Jumpstart (FutureLand) + public IActionResult IsValidApiToken_V1([FromForm] Guid? apiToken) { + if (apiToken is null) + return Ok(false); + User? user = ctx.Sessions.FirstOrDefault(e => e.ApiToken == apiToken)?.User; + Viking? viking = ctx.Sessions.FirstOrDefault(e => e.ApiToken == apiToken)?.Viking; + if (user is null && viking is null) + return Ok(false); + return Ok(true); + } + [HttpPost] [Produces("application/xml")] [Route("AuthenticationWebService.asmx/IsValidApiToken_V2")] From 22b5a76147dcbe156aa0ef9d6a0118588fc9c642 Mon Sep 17 00:00:00 2001 From: Robert Paciorek Date: Mon, 4 Dec 2023 19:39:43 +0000 Subject: [PATCH 15/17] minisaur should start as baby (not powerup) --- src/Controllers/Common/ContentController.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Controllers/Common/ContentController.cs b/src/Controllers/Common/ContentController.cs index 9801a97..1aeed09 100644 --- a/src/Controllers/Common/ContentController.cs +++ b/src/Controllers/Common/ContentController.cs @@ -478,7 +478,10 @@ public class ContentController : Controller { raisedPetData.IsSelected = false; // The api returns false, not sure why raisedPetData.CreateDate = new DateTime(DateTime.Now.Ticks); raisedPetData.UpdateDate = new DateTime(DateTime.Now.Ticks); - raisedPetData.GrowthState = new RaisedPetGrowthState { Name = "BABY" }; + if (petTypeID == 2) + raisedPetData.GrowthState = new RaisedPetGrowthState { Name = "BABY" }; + else + raisedPetData.GrowthState = new RaisedPetGrowthState { Name = "POWERUP" }; int imageSlot = (viking.Images.Select(i => i.ImageSlot).DefaultIfEmpty(-1).Max() + 1); raisedPetData.ImagePosition = imageSlot; // NOTE: Placing an egg into a hatchery slot calls CreatePet, but doesn't SetImage. From 2a20cbd75837f9093a649b88108c2faefe50152d Mon Sep 17 00:00:00 2001 From: Robert Paciorek Date: Mon, 4 Dec 2023 20:33:33 +0000 Subject: [PATCH 16/17] add GetActiveRaisedPetsByTypes --- src/Controllers/Common/ContentController.cs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/Controllers/Common/ContentController.cs b/src/Controllers/Common/ContentController.cs index 1aeed09..686d68f 100644 --- a/src/Controllers/Common/ContentController.cs +++ b/src/Controllers/Common/ContentController.cs @@ -762,6 +762,25 @@ public class ContentController : Controller { return new RaisedPetData[] {dragonData}; } + [HttpPost] + [Produces("application/xml")] + [Route("ContentWebService.asmx/GetActiveRaisedPetsByTypes")] // used by Math Blaster + [VikingSession(UseLock=false)] + public RaisedPetData[] GetActiveRaisedPet([FromForm] Guid userId, [FromForm] string petTypeIDs) { + Viking? viking = ctx.Vikings.FirstOrDefault(e => e.Uid == userId); + Dragon? dragon = viking.SelectedDragon; + if (dragon is null) { + return new RaisedPetData[0]; + } + + RaisedPetData dragonData = GetRaisedPetDataFromDragon(dragon); + int[] petTypeIDsInt = Array.ConvertAll(petTypeIDs.Split(','), s => int.Parse(s)); + if (!petTypeIDsInt.Contains(dragonData.PetTypeID)) + return new RaisedPetData[0]; + + return new RaisedPetData[] {dragonData}; + } + [HttpPost] [Produces("application/xml")] [Route("ContentWebService.asmx/GetSelectedRaisedPet")] From d557871fd3ef74b5d869c5e516dc8051a3e77db0 Mon Sep 17 00:00:00 2001 From: Robert Paciorek Date: Sun, 3 Mar 2024 13:54:48 +0000 Subject: [PATCH 17/17] rework ProductData and Petz saves - support for separate saves for lands via ClientVersion.GetVersion(apiKey) - add Adventureland apiKey to ClientVersion --- src/Controllers/Common/ContentController.cs | 51 ++++++++++++--------- src/Model/DBContext.cs | 10 ++++ src/Model/SaveData.cs | 8 ++++ src/Model/Viking.cs | 4 +- src/Util/ClientVersion.cs | 4 ++ src/Util/SavedData.cs | 22 +++++++++ 6 files changed, 75 insertions(+), 24 deletions(-) create mode 100644 src/Model/SaveData.cs create mode 100644 src/Util/SavedData.cs diff --git a/src/Controllers/Common/ContentController.cs b/src/Controllers/Common/ContentController.cs index 686d68f..34fe6dd 100644 --- a/src/Controllers/Common/ContentController.cs +++ b/src/Controllers/Common/ContentController.cs @@ -59,16 +59,23 @@ public class ContentController : Controller { //[Produces("application/xml")] [Route("ContentWebService.asmx/GetProduct")] // used by World Of Jumpstart [VikingSession(UseLock=false)] - public string? GetProduct(Viking viking) { - return viking.ProductData; + public string? GetProduct(Viking viking, [FromForm] string apiKey) { + return Util.SavedData.Get( + viking, + ClientVersion.GetVersion(apiKey) + ); } [HttpPost] //[Produces("application/xml")] [Route("ContentWebService.asmx/SetProduct")] // used by World Of Jumpstart [VikingSession] - public bool SetProduct(Viking viking, [FromForm] string contentXml) { - viking.ProductData = contentXml; + public bool SetProduct(Viking viking, [FromForm] string contentXml, [FromForm] string apiKey) { + Util.SavedData.Set( + viking, + ClientVersion.GetVersion(apiKey), + contentXml + ); ctx.SaveChanges(); return true; } @@ -78,30 +85,34 @@ public class ContentController : Controller { [HttpPost] //[Produces("application/xml")] [Route("ContentWebService.asmx/GetCurrentPetByUserID")] // used by World Of Jumpstart - public IActionResult GetCurrentPetByUserID([FromForm] Guid userId, [FromForm] bool isActive) { - string? petData = ctx.Vikings.FirstOrDefault(e => e.Uid == userId)?.PetSerialized; - if (petData is null) - return Ok(XmlUtil.SerializeXml(null)); - - return Ok(petData); + public string GetCurrentPetByUserID([FromForm] Guid userId) { + return GetCurrentPet(ctx.Vikings.FirstOrDefault(e => e.Uid == userId)); } [HttpPost] //[Produces("application/xml")] [Route("ContentWebService.asmx/GetCurrentPet")] // used by World Of Jumpstart - public IActionResult GetCurrentPet(Viking viking, [FromForm] bool isActive) { - if (viking.PetSerialized is null) - return Ok(XmlUtil.SerializeXml(null)); - - return Ok(viking.PetSerialized); + [VikingSession] + public string GetCurrentPet(Viking viking) { + string? ret = Util.SavedData.Get( + viking, + ClientVersion.WoJS + 1 + ); + if (ret is null) + return XmlUtil.SerializeXml(null); + return ret; } [HttpPost] [Produces("application/xml")] [Route("ContentWebService.asmx/SetCurrentPet")] // used by World Of Jumpstart [VikingSession] - public bool SetCurrentPet(Viking viking, [FromForm] string contentXml) { - viking.PetSerialized = contentXml; + public bool SetCurrentPet(Viking viking, [FromForm] string? contentXml) { + Util.SavedData.Set( + viking, + ClientVersion.WoJS + 1, + contentXml + ); ctx.SaveChanges(); return true; } @@ -110,10 +121,8 @@ public class ContentController : Controller { [Produces("application/xml")] [Route("ContentWebService.asmx/DelCurrentPet")] // used by World Of Jumpstart [VikingSession] - public bool DelCurrentPet(Viking viking, [FromForm] bool isActive) { - viking.PetSerialized = null; - ctx.SaveChanges(); - return true; + public bool DelCurrentPet(Viking viking) { + return SetCurrentPet(viking, null); } [HttpPost] diff --git a/src/Model/DBContext.cs b/src/Model/DBContext.cs index 6448fb5..157603b 100644 --- a/src/Model/DBContext.cs +++ b/src/Model/DBContext.cs @@ -112,6 +112,9 @@ public class DBContext : DbContext { builder.Entity().HasMany(v => v.GameData) .WithOne(e => e.Viking); + builder.Entity().HasMany(v => v.SavedData) + .WithOne(e => e.Viking); + builder.Entity().HasMany(v => v.ProfileAnswers) .WithOne(e => e.Viking); @@ -204,6 +207,13 @@ public class DBContext : DbContext { .WithMany(e => e.AchievementPoints) .HasForeignKey(e => e.VikingId); + builder.Entity().HasKey(e => new { e.VikingId, e.SaveId }); + + builder.Entity() + .HasOne(e => e.Viking) + .WithMany(v => v.SavedData) + .HasForeignKey(e => e.VikingId); + builder.Entity().HasOne(i => i.Viking) .WithMany(i => i.ProfileAnswers) .HasForeignKey(e => e.VikingId); diff --git a/src/Model/SaveData.cs b/src/Model/SaveData.cs new file mode 100644 index 0000000..0d411cf --- /dev/null +++ b/src/Model/SaveData.cs @@ -0,0 +1,8 @@ +namespace sodoff.Model; +public class SavedData { + public int VikingId { get; set; } + public uint SaveId { get; set; } + public string? SerializedData { get; set; } + + public virtual Viking Viking { get; set; } = null!; +} diff --git a/src/Model/Viking.cs b/src/Model/Viking.cs index f46eddf..f5f0441 100644 --- a/src/Model/Viking.cs +++ b/src/Model/Viking.cs @@ -32,8 +32,6 @@ public class Viking { public virtual ICollection InventoryItems { get; set; } = null!; public virtual ICollection GameData { get; set; } = null!; public virtual ICollection ProfileAnswers { get; set; } = null!; + public virtual ICollection SavedData { get; set; } = null!; public virtual Dragon? SelectedDragon { get; set; } - - public string? ProductData { get; set; } - public string? PetSerialized { get; set; } } diff --git a/src/Util/ClientVersion.cs b/src/Util/ClientVersion.cs index d28c328..50e2257 100644 --- a/src/Util/ClientVersion.cs +++ b/src/Util/ClientVersion.cs @@ -28,6 +28,10 @@ public class ClientVersion { apiKey == "1552008f-4a95-46f5-80e2-58574da65875" ) { return WoJS; + } else if ( + apiKey == "b4e0f71a-1cda-462a-97b3-0b355e87e0c8" + ) { + return WoJS+10; // WoJS--Adventureland } return 0; } diff --git a/src/Util/SavedData.cs b/src/Util/SavedData.cs new file mode 100644 index 0000000..845e1ab --- /dev/null +++ b/src/Util/SavedData.cs @@ -0,0 +1,22 @@ +using sodoff.Model; + +namespace sodoff.Util; +public class SavedData { + public static string? Get(Viking? viking, uint saveId) { + return viking?.SavedData.FirstOrDefault(s => s.SaveId == saveId)?.SerializedData; + } + + public static void Set(Viking viking, uint saveId, string? contentXml) { + Console.WriteLine($"\n\n{saveId} {contentXml}\n"); + Model.SavedData? savedData = viking.SavedData.FirstOrDefault(s => s.SaveId == saveId); + if (savedData is null) { + savedData = new() { + SaveId = saveId, + SerializedData = contentXml + }; + viking.SavedData.Add(savedData); + } else { + savedData.SerializedData = contentXml; + } + } +}