From cecaa50610f638ba7bf46108d0ee64e1f2441359 Mon Sep 17 00:00:00 2001 From: YoshiCraft64 <159088071+YoshiCraft64@users.noreply.github.com> Date: Thu, 13 Feb 2025 15:58:19 -0600 Subject: [PATCH] support for old ("steps") missions (#20) * add support for old missions API (aka "steps missions") * config option to disable loading non SoD Data (used only for missions and achievements for now) * make AuthenticateUser endpoint compatible with games that use e-mail as login * add api keys for lands * add GetGameCurrency endpoint * allow create empty stores and add store "8" (empty) --------- Co-authored-by: Robert Paciorek --- README.md | 2 + src/Configuration/ApiServerConfig.cs | 2 + .../Common/AuthenticationController.cs | 6 +- src/Controllers/Common/ContentController.cs | 85 +- src/Model/DBContext.cs | 17 + src/Model/UserBadgeCompleteData.cs | 11 + src/Model/UserMissionData.cs | 18 + src/Model/Viking.cs | 2 + src/Program.cs | 1 + src/Resources/missions/badge_wojs_al.xml | 23 + src/Resources/missions/step_missions.xml | 3834 +++ .../missions/step_missions_steps.xml | 23706 ++++++++++++++++ src/Resources/store.xml | 5 + src/Resources/worlds.xml | 152 + src/Schema/BadgeData.cs | 12 + src/Schema/BadgeDataBadge.cs | 39 + src/Schema/BadgeDataBadgeCompleteDialog.cs | 18 + src/Schema/BadgeDataBadgePieceDialog.cs | 18 + src/Schema/MissionData.cs | 12 + src/Schema/MissionDataMission.cs | 36 + src/Schema/MissionDataMissionRewardDialog.cs | 18 + src/Schema/MissionDataMissionStep.cs | 15 + src/Schema/Step.cs | 36 + src/Schema/StepEndSpeech.cs | 18 + src/Schema/StepMessage.cs | 18 + src/Schema/StepNPCData.cs | 21 + src/Schema/StepOfferSpeech.cs | 18 + src/Schema/StepStartPlayerItem.cs | 15 + src/Schema/StepStepID.cs | 12 + src/Schema/StepStoreItem.cs | 15 + src/Schema/StepTask.cs | 42 + src/Schema/StepTaskDialog.cs | 18 + src/Schema/StepTaskHelp.cs | 18 + src/Schema/StepTaskMessage.cs | 18 + src/Schema/StepTaskObjective.cs | 57 + src/Schema/StepTaskObjectiveCreative.cs | 15 + src/Schema/StepTaskObjectivePhoto.cs | 24 + src/Schema/StepTaskRewardPlayerItem.cs | 15 + src/Schema/StepsMissionsGroup.cs | 16 + src/Schema/UserBadge.cs | 12 + src/Schema/UserMissionData.cs | 15 + src/Schema/UserMissionDataMission.cs | 15 + src/Schema/UserMissionDataMissionStep.cs | 15 + src/Schema/World.cs | 12 + src/Services/AchievementStoreSingleton.cs | 16 +- src/Services/MissionService.cs | 103 + src/Services/MissionStoreSingleton.cs | 59 +- src/Services/StoreService.cs | 12 +- src/Services/WorldIdService.cs | 25 + src/Util/ClientVersion.cs | 19 +- src/appsettings.json | 3 + src/sodoff.csproj | 14 +- 52 files changed, 28693 insertions(+), 35 deletions(-) create mode 100644 src/Model/UserBadgeCompleteData.cs create mode 100644 src/Model/UserMissionData.cs create mode 100644 src/Resources/missions/badge_wojs_al.xml create mode 100644 src/Resources/missions/step_missions.xml create mode 100644 src/Resources/missions/step_missions_steps.xml create mode 100644 src/Resources/worlds.xml create mode 100644 src/Schema/BadgeData.cs create mode 100644 src/Schema/BadgeDataBadge.cs create mode 100644 src/Schema/BadgeDataBadgeCompleteDialog.cs create mode 100644 src/Schema/BadgeDataBadgePieceDialog.cs create mode 100644 src/Schema/MissionData.cs create mode 100644 src/Schema/MissionDataMission.cs create mode 100644 src/Schema/MissionDataMissionRewardDialog.cs create mode 100644 src/Schema/MissionDataMissionStep.cs create mode 100644 src/Schema/Step.cs create mode 100644 src/Schema/StepEndSpeech.cs create mode 100644 src/Schema/StepMessage.cs create mode 100644 src/Schema/StepNPCData.cs create mode 100644 src/Schema/StepOfferSpeech.cs create mode 100644 src/Schema/StepStartPlayerItem.cs create mode 100644 src/Schema/StepStepID.cs create mode 100644 src/Schema/StepStoreItem.cs create mode 100644 src/Schema/StepTask.cs create mode 100644 src/Schema/StepTaskDialog.cs create mode 100644 src/Schema/StepTaskHelp.cs create mode 100644 src/Schema/StepTaskMessage.cs create mode 100644 src/Schema/StepTaskObjective.cs create mode 100644 src/Schema/StepTaskObjectiveCreative.cs create mode 100644 src/Schema/StepTaskObjectivePhoto.cs create mode 100644 src/Schema/StepTaskRewardPlayerItem.cs create mode 100644 src/Schema/StepsMissionsGroup.cs create mode 100644 src/Schema/UserBadge.cs create mode 100644 src/Schema/UserMissionData.cs create mode 100644 src/Schema/UserMissionDataMission.cs create mode 100644 src/Schema/UserMissionDataMissionStep.cs create mode 100644 src/Schema/World.cs create mode 100644 src/Services/WorldIdService.cs diff --git a/README.md b/README.md index 68b092f..afc55f1 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,8 @@ By default (modifiable in appsettings.json), files for version 2.5.0 and newer w A sample file is provided for `{PLATFORM} = WIN`, `{VERSION} = 3.31.0`. It assumes that the server address are `localhost:5000` (API) and `localhost:5001` (assets). +To use this server with games other than School of Dragons you need to change the `LoadNonSoDData` value in `appsettings.json` to `true`. + #### Asset Server Various settings for the asset server are customizable, with the key one being `ProviderURL`, which specifies the source for downloading assets in `partial` mode. By default, it's configured to use archive.org diff --git a/src/Configuration/ApiServerConfig.cs b/src/Configuration/ApiServerConfig.cs index 58b079b..958c3e8 100644 --- a/src/Configuration/ApiServerConfig.cs +++ b/src/Configuration/ApiServerConfig.cs @@ -5,6 +5,8 @@ public class ApiServerConfig { public string MMOAdress { get; set; } = "127.0.0.1"; public int MMOPort { get; set; } = 9933; public uint MMOSupportMinVersion { get; set; } = 0; + + public bool LoadNonSoDData { get; set; } = false; public DbProviders DbProvider { get; set; } = DbProviders.SQLite; public string DbPath { get; set; } = string.Empty; diff --git a/src/Controllers/Common/AuthenticationController.cs b/src/Controllers/Common/AuthenticationController.cs index 78f1838..3fc5548 100644 --- a/src/Controllers/Common/AuthenticationController.cs +++ b/src/Controllers/Common/AuthenticationController.cs @@ -87,12 +87,14 @@ public class AuthenticationController : Controller { [Route("v3/AuthenticationWebService.asmx/AuthenticateUser")] [DecryptRequest("username")] [DecryptRequest("password")] - public bool AuthenticateUser() { + public bool AuthenticateUser([FromForm] string apiKey) { String username = Request.Form["username"]; String password = Request.Form["password"]; // Authenticate the user - User? user = ctx.Users.FirstOrDefault(e => e.Username == username); + User? user = (ClientVersion.GetVersion(apiKey) <= ClientVersion.Max_OldJS) + ? ctx.Users.FirstOrDefault(e => e.Email == username) + : ctx.Users.FirstOrDefault(e => e.Username == username); if (user is null || new PasswordHasher().VerifyHashedPassword(null, user.Password, password) != PasswordVerificationResult.Success) { return false; } diff --git a/src/Controllers/Common/ContentController.cs b/src/Controllers/Common/ContentController.cs index a5c93aa..4916ab6 100644 --- a/src/Controllers/Common/ContentController.cs +++ b/src/Controllers/Common/ContentController.cs @@ -15,6 +15,7 @@ public class ContentController : Controller { private readonly DBContext ctx; private KeyValueService keyValueService; private ItemService itemService; + private MissionStoreSingleton missionStore; private MissionService missionService; private RoomService roomService; private AchievementService achievementService; @@ -22,6 +23,7 @@ public class ContentController : Controller { private GameDataService gameDataService; private DisplayNamesService displayNamesService; private NeighborhoodService neighborhoodService; + private WorldIdService worldIdService; private Random random = new Random(); private readonly IOptions config; @@ -29,6 +31,7 @@ public class ContentController : Controller { DBContext ctx, KeyValueService keyValueService, ItemService itemService, + MissionStoreSingleton missionStore, MissionService missionService, RoomService roomService, AchievementService achievementService, @@ -36,11 +39,13 @@ public class ContentController : Controller { GameDataService gameDataService, DisplayNamesService displayNamesService, NeighborhoodService neighborhoodService, + WorldIdService worldIdService, IOptions config ) { this.ctx = ctx; this.keyValueService = keyValueService; this.itemService = itemService; + this.missionStore = missionStore; this.missionService = missionService; this.roomService = roomService; this.achievementService = achievementService; @@ -48,6 +53,7 @@ public class ContentController : Controller { this.gameDataService = gameDataService; this.displayNamesService = displayNamesService; this.neighborhoodService = neighborhoodService; + this.worldIdService = worldIdService; this.config = config; } @@ -1673,10 +1679,17 @@ public class ContentController : Controller { [Route("ContentWebService.asmx/GetUserGameCurrency")] [VikingSession] public IActionResult GetUserGameCurrency(Viking viking) { - // TODO: This is a placeholder return Ok(achievementService.GetUserCurrency(viking)); } + [HttpPost] + [Produces("application/xml")] + [Route("ContentWebService.asmx/GetGameCurrency")] + [VikingSession] + public IActionResult GetGameCurrency(Viking viking) { + return Ok(achievementService.GetUserCurrency(viking).GameCurrency); + } + [HttpPost] [Produces("application/xml")] [Route("ContentWebService.asmx/SetGameCurrency")] // used by World Of Jumpstart @@ -2121,10 +2134,72 @@ public class ContentController : Controller { [HttpPost] [Produces("application/xml")] - [Route("MissionWebService.asmx/GetWorldId")] // used by Math Blaster - public IActionResult GetWorldId() { - // TODO: This is a placeholder - return Ok(0); + [Route("MissionWebService.asmx/GetWorldId")] // used by Math Blaster and WoJS Adventureland + public IActionResult GetWorldId([FromForm] int gameId, [FromForm] string sceneName) { + return Ok(worldIdService.GetWorldID(sceneName)); + } + + [HttpPost] + [Produces("application/xml")] + [Route("MissionWebService.asmx/GetMission")] // old ("step") missions - used by MB and WoJS lands + public IActionResult GetMission([FromForm] int gameId, [FromForm] string name) { + return Ok(missionStore.GetStepsMissions(gameId, name)); + } + + [HttpPost] + [Produces("application/xml")] + [Route("MissionWebService.asmx/GetStep")] // old ("step") missions - used by MB and WoJS lands + public IActionResult GetMissionStep([FromForm] int stepId) { + return Ok(missionStore.GetStep(stepId)); + } + + [HttpPost] + [Produces("application/xml")] + [Route("ContentWebService.asmx/GetUserMission")] // old ("step") missions - used by MB and WoJS lands + [VikingSession] + public IActionResult GetUserMission(Viking viking, [FromForm] int worldId) { + return Ok(missionService.GetUserMissionData(viking, worldId)); + } + + [HttpPost] + [Produces("application/xml")] + [Route("ContentWebService.asmx/SetUserMission")] // old ("step") missions - used by MB and WoJS lands + [VikingSession(UseLock=true)] + public IActionResult SetUserMission(Viking viking, [FromForm] int worldId, [FromForm] int missionId, [FromForm] int stepId, [FromForm] int taskId) { + missionService.SetOrUpdateUserMissionData(viking, worldId, missionId, stepId, taskId); + return Ok(true); + } + + [HttpPost] + [Produces("application/xml")] + [Route("ContentWebService.asmx/SetUserMissionComplete")] // old ("step") missions - used by MB and WoJS lands + [VikingSession] + public IActionResult SetUserMissionComplete(Viking viking, [FromForm] int worldId, [FromForm] int missionId) { + return Ok(missionService.SetUserMissionCompleted(viking, worldId, missionId, true)); + } + + [HttpPost] + //[Produces("application/xml")] + [Route("MissionWebService.asmx/GetBadge")] // old ("step") missions - used by MB and WoJS lands + public IActionResult GetBadge([FromForm] int gameId) { + if (gameId == 1) return Ok(XmlUtil.ReadResourceXmlString("missions.badge_wojs_al")); + return Ok(); + } + + [HttpPost] + [Produces("application/xml")] + [Route("ContentWebService.asmx/SetUserBadgeComplete")] // old ("step") missions - used by MB and WoJS lands + [VikingSession] + public IActionResult SetUserBadgeComplete(Viking viking, [FromForm] int badgeId) { + return Ok(missionService.SetUserBadgeComplete(viking, badgeId)); + } + + [HttpPost] + [Produces("application/xml")] + [Route("ContentWebService.asmx/GetUserBadgeComplete")] // old ("step") missions - used by MB and WoJS lands + [VikingSession] + public IActionResult GetUserBadgeComplete(Viking viking) { + return Ok(missionService.GetUserBadgesCompleted(viking)); } [HttpPost] diff --git a/src/Model/DBContext.cs b/src/Model/DBContext.cs index cd75567..1832763 100644 --- a/src/Model/DBContext.cs +++ b/src/Model/DBContext.cs @@ -28,6 +28,8 @@ public class DBContext : DbContext { public DbSet Groups { get; set; } = null!; public DbSet Ratings { get; set; } = null!; public DbSet RatingRanks { get; set; } = null!; + public DbSet UserMissionData { get; set; } = null!; + public DbSet UserBadgesCompleted { get; set; } = null!; private readonly IOptions config; @@ -148,6 +150,12 @@ public class DBContext : DbContext { builder.Entity().HasMany(v => v.Ratings) .WithOne(r => r.Viking); + builder.Entity().HasMany(v => v.UserMissions) + .WithOne(r => r.Viking); + + builder.Entity().HasMany(v => v.UserBadgesCompleted) + .WithOne(r => r.Viking); + // Dragons builder.Entity().HasOne(d => d.Viking) .WithMany(e => e.Dragons) @@ -284,5 +292,14 @@ public class DBContext : DbContext { builder.Entity().HasMany(rr => rr.Ratings) .WithOne(r => r.Rank); + + // old ("step") missions + builder.Entity().HasOne(r => r.Viking) + .WithMany(v => v.UserMissions) + .HasForeignKey(r => r.VikingId); + + builder.Entity().HasOne(r => r.Viking) + .WithMany(v => v.UserBadgesCompleted) + .HasForeignKey(r => r.VikingId); } } diff --git a/src/Model/UserBadgeCompleteData.cs b/src/Model/UserBadgeCompleteData.cs new file mode 100644 index 0000000..efab4c9 --- /dev/null +++ b/src/Model/UserBadgeCompleteData.cs @@ -0,0 +1,11 @@ +namespace sodoff.Model +{ + public class UserBadgeCompleteData + { + public int Id { get; set; } + public int VikingId { get; set; } + public int BadgeId { get; set; } + + public virtual Viking? Viking { get; set; } + } +} diff --git a/src/Model/UserMissionData.cs b/src/Model/UserMissionData.cs new file mode 100644 index 0000000..1a971b9 --- /dev/null +++ b/src/Model/UserMissionData.cs @@ -0,0 +1,18 @@ +using System.ComponentModel.DataAnnotations; +using Microsoft.EntityFrameworkCore; + +namespace sodoff.Model +{ + [PrimaryKey(nameof(VikingId), nameof(WorldId), nameof(MissionId))] + public class UserMissionData + { + public int VikingId { get; set; } + public int WorldId { get; set; } + public int MissionId { get; set; } + public int StepId { get; set; } + public int TaskId { get; set; } + public bool IsCompleted { get; set; } = false; + + public virtual Viking? Viking { get; set; } + } +} diff --git a/src/Model/Viking.cs b/src/Model/Viking.cs index 6403745..a787107 100644 --- a/src/Model/Viking.cs +++ b/src/Model/Viking.cs @@ -42,6 +42,8 @@ public class Viking { public virtual ICollection Groups { get; set; } = null!; public virtual ICollection Ratings { get; set; } = null!; public virtual Dragon? SelectedDragon { get; set; } + public virtual ICollection UserMissions { get; set; } = null!; + public virtual ICollection UserBadgesCompleted { get; set; } = null!; public DateTime? CreationDate { get; set; } public DateTime? BirthDate { get; set; } diff --git a/src/Program.cs b/src/Program.cs index 1eca9c4..91cbbaa 100644 --- a/src/Program.cs +++ b/src/Program.cs @@ -30,6 +30,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/missions/badge_wojs_al.xml b/src/Resources/missions/badge_wojs_al.xml new file mode 100644 index 0000000..8092ba5 --- /dev/null +++ b/src/Resources/missions/badge_wojs_al.xml @@ -0,0 +1,23 @@ + + + + 1 + Explorer Badge + Adventure Land Badge 01 + 1 + 10 + Badges01.unity3d/MskBadge10 + Badges01.unity3d/BadgeK07Color + Badges01.unity3d/BadgeK07Grey + + DlgFrankieB1Piece + NPCs.unity3d/PfFrankie + RS_DATA/Badges01.unity3d + + + DlgFrankieB1Complete + NPCs.unity3d/PfFrankie + RS_DATA/Badges01.unity3d + + + diff --git a/src/Resources/missions/step_missions.xml b/src/Resources/missions/step_missions.xml new file mode 100644 index 0000000..b699671 --- /dev/null +++ b/src/Resources/missions/step_missions.xml @@ -0,0 +1,3834 @@ + + + + + 1 + _default_ + + + 4 + Lost Island Mission 1 + + + Welcome to Training Island + 1 + + + 1 + 1 + + + 2 + 2 + + + 3 + 3 + + + 4 + 4 + + + 5 + 5 + + + 179 + 349 + + + 6 + 6 + + + 7 + 7 + + + 8 + 8 + + + 9 + 9 + + + 10 + 10 + + + 23 + 18 + + + 24 + 19 + + + + 18 + Lost Island Mission 2 + + + Mission 2- Congrats! Take the ship to Lost Island and get familar with home base. + 1 + + + 26 + 250 + + + 27 + 251 + + + 28 + 252 + + + 106 + 348 + + + 29 + 253 + + + 30 + 254 + + + 31 + 255 + + + 32 + 256 + + + 33 + 257 + + + + 19 + Lost Island Mission 3 + + + Mission 3- Introduction to Lost Shores + 1 + + + 34 + 258 + + + 35 + 259 + + + 36 + 260 + + + 37 + 261 + + + 38 + 262 + + + 39 + 263 + + + 40 + 264 + + + + 20 + Lost Island Mission 4 + + + Mission 4- Explore Lost Island and intro to the store + 1 + + + 41 + 265 + + + 42 + 266 + + + 43 + 267 + + + 44 + 268 + + + 45 + 269 + + + + 21 + Lost Island Mission 5 + + + Mission 5- Explore the mountain with Hops + 1 + + + 46 + 270 + + + 47 + 271 + + + 48 + 272 + + + 49 + 273 + + + 50 + 274 + + + 51 + 275 + + + + 22 + Lost Island Mission 6 + + + Mission 6- Punk Punk invade- Time to clean house + 1 + + + 52 + 276 + + + 53 + 277 + + + 54 + 278 + + + 55 + 279 + 280 + 281 + 282 + 283 + + + 56 + 284 + + + 57 + 285 + + + 58 + 286 + + + + 23 + Lost Island Mission 7 + + + Mission 7- Get the Lost Shores ready for the celebration + 1 + + + 59 + 287 + + + 60 + 288 + + + 61 + 289 + 290 + 291 + + + 62 + 292 + 293 + 294 + + + 63 + 295 + + + 64 + 296 + + + 65 + 297 + + + 66 + 298 + + + 67 + 299 + + + + 24 + Lost Island Mission 8 + + + Mission 8- Lets Party + 1 + + + 68 + 300 + + + 69 + 301 + + + 70 + 302 + + + 71 + 303 + + + 72 + 304 + + + 73 + 305 + + + 74 + 306 + + + 75 + 307 + + + 76 + 308 + + + 77 + 309 + + + 78 + 310 + + + + 25 + Lost Island Mission 9 + + + Mission 9- Find where Punk Punks are coming from. + 1 + + + 79 + 311 + + + 80 + 312 + + + 81 + 313 + + + 82 + 314 + + + 83 + 315 + + + 84 + 316 + + + 85 + 317 + + + + 26 + Lost Island Mission 10 + + + Mission 10- Introduce Rabbit holes and get statue + 1 + + + 86 + 318 + + + 87 + 319 + + + 88 + 320 + + + 89 + 321 + + + 90 + 322 + + + 91 + 323 + + + 92 + 324 + 325 + + + 93 + 326 + + + + 27 + Lost Island Mission 11 + + + Mission 11- Protect Lost Island from the Punk Punks + 1 + + + 94 + 327 + + + 95 + 328 + + + 96 + 329 + + + 97 + 330 + + + 98 + 331 + + + 99 + 332 + + + 100 + 333 + + + + 28 + Lost Island Mission 12 + + + Mission 12- Need to take the statue back to the valley + 1 + + + 101 + 334 + + + 102 + 335 + + + 103 + 336 + + + 104 + 338 + + + 105 + 339 + + + + + + + 2 + Ancient01Zone01 + + + 12 + Ancient01Zone01SP + + IcoSpeedPathTex + 10.200 entry: Greetings! My name is Dr. Brain and I have chosen you to be part of my secret society. The Secret Society of Dr. Brain is dedicated to exploration, adventure, and learning through time travel! You may even encounter a Goo Gord or two! However, you must first prove that you have the right stuff by completing all of these missions. Good luck time traveler! + 0 + + DlgDrBrainM12End + DrBrain + RS_DATA/DrBrainJournalIntro.unity3d + + + 17 + 108 + + + + 1 + Ancient01Zone01Collect + + IcoCollectMissionsTex + + 0 + + 12 + + 11 + 11 + 12 + 13 + 21 + 22 + 23 + 24 + 25 + 26 + + + + 2 + Ancient01Zone01Battle + + IcoBattleMissionsTex + 10.100 entry: + I have built a small time machine in my lab for testing, I call it the Time Slicer. So far, I have only tried to send inanimate objects through time. They end up as exploding globs of primordial ooze. Will continue experiments after cleaning up ...I am starting to smell. + 0 + + DlgDrBrainM2End + DrBrain + RS_DATA/DrBrainJournal01.unity3d + + 12 + + 14 + 27 + 28 + 29 + 30 + 31 + 32 + 33 + 34 + 35 + + + + 13 + Ancient01Zone01Nav01 + + IcoNavRoomTex + + 0 + + 12 + + 18 + 113 + + + + 14 + Ancient01Zone01Nav02 + + IcoNavRoomTex + + 0 + + 12 + + 19 + 118 + + + + 15 + Ancient01Zone01Roller01 + + IcoRollerSquashTex + + 0 + + 12 + + 20 + 123 + + + + 16 + Ancient01Zone01Roller02 + + IcoRollerSquashTex + + 0 + + 12 + + 21 + 128 + + + + 17 + Ancient01Zone01Boss01 + + IcoHenchmanTex + 10.111 entry: The time slicer has been working with great success! Tomorrow I will try sending my goat Rudolph back in time. I have set up safety precautions to make sure nothing happens to her. She looks quite fearless in her flight helmet and goggles. + 0 + + DlgDrBrainM17End + DrBrain + RS_DATA/DrBrainJournal02.unity3d + + 1 + 2 + 13 + 14 + 15 + 16 + + 22 + 340 + + + + + + + 2 + Ancient01Zone02 + + + 29 + Anc01Zone02SP + + IcoSpeedPathTex + + 0 + + + 109 + 109 + + + + 3 + Ancient01Zone02Collect + + IcoCollectMissionsTex + 10.112 entry: +Rudolph successfully time travelled today! Unfortunately she ended up in a tree...when I found her, she was happily grazing up there. She is home now, asleep on my bed. Time travelling gave her a bad case of goat gas! I will be sleeping in the Lab tonight. + 0 + + DlgDrBrainM3End + DrBrain + RS_DATA/DrBrainJournal03.unity3d + + 29 + + 107 + 36 + 37 + 38 + 39 + 40 + 41 + 42 + 43 + 44 + + + + 5 + Ancient01Zone02Battle + + IcoBattleMissionsTex + + 0 + + 29 + + 108 + 45 + 46 + 47 + 48 + 49 + 50 + 51 + 52 + 53 + + + + 30 + Anc01Zone02Nav01 + + IcoNavRoomTex + + 0 + + 29 + + 110 + 114 + + + + 31 + Anc01Zone02Nav02 + + IcoNavRoomTex + + 0 + + 29 + + 111 + 119 + + + + 32 + Anc01Zone02Roller01 + + IcoRollerSquashTex + + 0 + + 29 + + 112 + 124 + + + + 33 + Anc01Zone02Roller02 + + IcoRollerSquashTex + + 0 + + 29 + + 113 + 129 + + + + 34 + Anc01Zone02Boss01 + + IcoHenchmanTex + 10.116 entry: +I am ready to time travel myself. So excited I can barely tpye. If Rudolph can do it, I certainly can! + 0 + + DlgDrBrainM34End + DrBrain + RS_DATA/DrBrainJournal04.unity3d + + 3 + 5 + 30 + 31 + 32 + 33 + + 114 + 341 + + + + + + + 2 + Ancient01Zone03 + + + 35 + Anc01Zone03SP + + IcoSpeedPathTex + + 0 + + + 117 + 110 + + + + 6 + Ancient01Zone03Collect + + IcoCollectMissionsTex + + 0 + + 35 + + 115 + 54 + 55 + 56 + 57 + 58 + 59 + 60 + 61 + 62 + + + + 7 + Ancient01Zone03Battle + + IcoBattleMissionsTex + + 0 + + 35 + + 116 + 63 + 64 + 65 + 66 + 67 + 68 + 69 + 70 + 71 + + + + 36 + Anc01Zone03Nav01 + + IcoNavRoomTex + 10.120 entry: Just returned from a time trek back to the Ancient Era. Fascinating Egyptian hieroglyphics and statues! Saw a Gord...that means the Hench.... Will write more later… + 0 + + DlgDrBrainM36End + DrBrain + RS_DATA/DrBrainJournal05.unity3d + + 35 + + 118 + 115 + + + + 37 + Anc01Zone03Nav02 + + IcoNavRoomTex + + 0 + + 35 + + 119 + 120 + + + + 38 + Anc01Zone03Roller01 + + IcoRollerSquashTex + + 0 + + 35 + + 120 + 125 + + + + 39 + Anc01Zone03Roller02 + + IcoRollerSquashTex + + 0 + + 35 + + 121 + 130 + + + + 40 + Anc01Zone03Boss01 + + IcoHenchmanTex + 10.127 entry: Success on another Time Trek! However, I just barely made it back...need to build a more powerful time machine -- The Super Time Slicer! The Hench's Henchmen and their Gords all over the universe. I must hurry… + 0 + + DlgDrBrainM40End + DrBrain + RS_DATA/DrBrainJournal06.unity3d + + 6 + 7 + 36 + 37 + 38 + 39 + + 122 + 342 + + + + + + + 2 + Ancient01Zone04 + + + 41 + Anc01Zone04SP + + IcoSpeedPathTex + + 0 + + + 125 + 111 + + + + 8 + Ancient01Zone04Collect + + IcoCollectMissionsTex + + 0 + + 41 + + 123 + 72 + 73 + 74 + 75 + 76 + 77 + 78 + 79 + 80 + + + + 9 + Ancient01Zone04Battle + + IcoBattleMissionsTex + + 0 + + 41 + + 124 + 81 + 82 + 83 + 84 + 85 + 86 + 87 + 88 + 89 + + + + 42 + Anc01Zone04Nav01 + + IcoNavRoomTex + + 0 + + 41 + + 126 + 116 + + + + 43 + Anc01Zone04Nav02 + + IcoNavRoomTex + + 0 + + 41 + + 127 + 121 + + + + 44 + Anc01Zone04Roller01 + + IcoRollerSquashTex + + 0 + + 41 + + 128 + 126 + + + + 45 + Anc01Zone04Roller02 + + IcoRollerSquashTex + + 0 + + 41 + + 129 + 131 + + + + 46 + Anc01Zone04Boss01 + + IcoHenchmanTex + 10.133 entry: +Yet another time trek! This time I was able to procure a blob of Globulus Utonium from the Hench! Although a bit gooey, it should power the Super Time Slicer for years to come. + 0 + + DlgDrBrainM46End + DrBrain + RS_DATA/DrBrainJournal07.unity3d + + 8 + 9 + 42 + 43 + 44 + 45 + + 130 + 343 + + + + + + + 2 + Ancient01Zone05 + + + 47 + Anc01Zone05SP + + IcoSpeedPathTex + + 0 + + + 133 + 112 + + + + 10 + Ancient01Zone05Collect + + IcoCollectMissionsTex + + 0 + + 47 + + 131 + 90 + 91 + 92 + 93 + 94 + 95 + 96 + 97 + 98 + + + + 11 + Ancient01Zone05Battle + + IcoBattleMissionsTex + + 0 + + 47 + + 132 + 99 + 100 + 101 + 102 + 103 + 104 + 105 + 106 + 107 + + + + 48 + Anc01Zone05Nav01 + + IcoNavRoomTex + + 0 + + 47 + + 134 + 117 + + + + 49 + Anc01Zone05Nav02 + + IcoNavRoomTex + + 0 + + 47 + + 135 + 122 + + + + 50 + Anc01Zone05Roller01 + + IcoRollerSquashTex + + 0 + + 47 + + 136 + 127 + + + + 51 + Anc01Zone05Roller02 + + IcoRollerSquashTex + + 0 + + 47 + + 137 + 132 + + + + 52 + Anc01Zone05Boss01 + + IcoHenchmanTex + 10.150 entry: The Super Time Slicer is fully operational! If Henchs' spies find out about it, he will surely try to steal it! I know, I need to build a secret lab to keep it hidden! But Where? Where do you hide a time machine? + 0 + + DlgDrBrainM52End + DrBrain + RS_DATA/DrBrainJournal08.unity3d + + 10 + 11 + 48 + 49 + 50 + 51 + + 138 + 133 + + + + + + + 2 + Industrial01Zone01 + + + 63 + Ind01Zone01SP + + IcoSpeedPathTex + 10.163 entry: +In my last Time Trek I had an encounter with a Gord. Gords are robotic creatures invented by the Hench. He has sent out his Henchmen with armies of Gords, planting farms of Goopods everywhere they go! + 0 + + DlgDrBrainM63End + DrBrain + RS_DATA/DrBrainJournal09.unity3d + + + 141 + 224 + + + + 53 + Ind01Zone01Collect + + IcoCollectMissionsTex + + 0 + + 63 + + 139 + 134 + 135 + 136 + 137 + 138 + 139 + 140 + 141 + 142 + + + + 54 + Ind01Zone01Battle + + IcoBattleMissionsTex + + 0 + + 63 + + 140 + 143 + 144 + 145 + 146 + 147 + 148 + 149 + 150 + 151 + + + + 64 + Ind01Zone01Nav01 + + IcoNavRoomTex + + 0 + + 63 + + 142 + 229 + + + + 65 + Ind01Zone01Nav02 + + IcoNavRoomTex + + 0 + + 63 + + 143 + 234 + + + + 66 + Ind01Zone01Roller01 + + IcoRollerSquashTex + + 0 + + 63 + + 144 + 239 + + + + 67 + Ind01Zone01Roller02 + + IcoRollerSquashTex + + 0 + + 63 + + 145 + 244 + + + + 68 + Ind01Zone01Boss01 + + IcoHenchmanTex + 10.172 entry: That Slobbering slugworm the Hench has infected time with his Goopods. I need help to stop him or else the universe will turn into a giant gelatinous glop of goo! + 0 + + DlgDrBrainM68End + DrBrain + RS_DATA/DrBrainJournal15.unity3d + + 53 + 54 + 64 + 65 + 66 + 67 + + 146 + 344 + + + + + + + 2 + Industrial01Zone02 + + + 69 + Ind01Zone02SP + + IcoSpeedPathTex + + 0 + + + 149 + 225 + + + + 55 + Ind01Zone02Collect + + IcoCollectMissionsTex + + 0 + + 69 + + 147 + 152 + 153 + 154 + 155 + 156 + 157 + 158 + 159 + 160 + + + + 56 + Ind01Zone02Battle + + IcoBattleMissionsTex + + 0 + + 69 + + 148 + 161 + 162 + 163 + 164 + 165 + 166 + 167 + 168 + 169 + + + + 70 + Ind01Zone02Nav01 + + IcoNavRoomTex + + 0 + + 69 + + 150 + 230 + + + + 71 + Ind01Zone02Nav02 + + IcoNavRoomTex + + 0 + + 69 + + 151 + 235 + + + + 72 + Ind01Zone02Roller01 + + IcoRollerSquashTex + + 0 + + 69 + + 152 + 240 + + + + 73 + Ind01Zone02Roller02 + + IcoRollerSquashTex + + 0 + + 69 + + 153 + 245 + + + + 74 + Ind01Zone02Boss01 + + IcoHenchmanTex + 10.179 entry: Peter Piper Picked a Peck of Pickled Peppers. Goo Gords Grab Green Goo Globs of Globulus Goo. All work and no play, makes Dr. Brain a boring thinker, unable to tinker… + 0 + + DlgDrBrainM74End + DrBrain + RS_DATA/DrBrainJournal14.unity3d + + 55 + 56 + 70 + 71 + 72 + 73 + + 154 + 345 + + + + + + + 2 + Industrial01Zone03 + + + 75 + Ind01Zone03SP + + IcoSpeedPathTex + + 0 + + + 157 + 226 + + + + 57 + Ind01Zone03Collect + + IcoCollectMissionsTex + 10.189 entry: + +!can you "think" you if things amazing do can You !muscles other your like just regularly out worked be to needs It .body your in muscle strongest the is It !brain your of power the underestimate Never--myself to Note + 0 + + DlgDrBrainM57End + DrBrain + RS_DATA/DrBrainJournal16.unity3d + + 75 + + 155 + 170 + 171 + 172 + 173 + 174 + 175 + 176 + 177 + 178 + + + + 58 + Ind01Zone03Battle + + IcoBattleMissionsTex + + 0 + + 75 + + 156 + 179 + 180 + 181 + 182 + 183 + 184 + 185 + 186 + 187 + + + + 76 + Ind01Zone03Nav01 + + IcoNavRoomTex + + 0 + + 75 + + 158 + 231 + + + + 77 + Ind01Zone03Nav02 + + IcoNavRoomTex + + 0 + + 75 + + 159 + 236 + + + + 78 + Ind01Zone03Roller01 + + IcoRollerSquashTex + + 0 + + 75 + + 160 + 241 + + + + 79 + Ind01Zone03Roller02 + + IcoRollerSquashTex + + 0 + + 75 + + 161 + 246 + + + + 80 + Ind01Zone03Boss01 + + IcoHenchmanTex + 10.170 entry: Tired of fighting the Hench's Gord armies. No time to do my experiments and inventions, Need help...Jumpeez… + 0 + + DlgDrBrainM80End + DrBrain + RS_DATA/DrBrainJournal12.unity3d + + 57 + 58 + 76 + 77 + 78 + 79 + + 162 + 346 + + + + + + + 2 + Industrial01Zone04 + + + 81 + Ind01Zone04SP + + IcoSpeedPathTex + + 0 + + + 165 + 227 + + + + 59 + Ind01Zone04Collect + + IcoCollectMissionsTex + + 0 + + 81 + + 163 + 188 + 189 + 190 + 191 + 192 + 193 + 194 + 195 + 196 + + + + 60 + Ind01Zone04Battle + + IcoBattleMissionsTex + + 0 + + 81 + + 164 + 197 + 198 + 199 + 200 + 201 + 202 + 203 + 204 + 205 + + + + 82 + Ind01Zone04Nav01 + + IcoNavRoomTex + + 0 + + 81 + + 166 + 232 + + + + 83 + Ind01Zone04Nav02 + + IcoNavRoomTex + + 0 + + 81 + + 167 + 237 + + + + 84 + Ind01Zone04Roller01 + + IcoRollerSquashTex + 10.141 entry: Goats are intelligent and amazing creatures! They are great companions as far as Bovids go. + 0 + + DlgDrBrainM84End + DrBrain + RS_DATA/DrBrainJournal13.unity3d + + 81 + + 168 + 242 + + + + 85 + Ind01Zone04Roller02 + + IcoRollerSquashTex + + 0 + + 81 + + 169 + 247 + + + + 86 + Ind01Zone04Boss01 + + IcoHenchmanTex + 10.183 entry: +I have scattered Holomorphic treasure chests throughout the worlds I've visited. They are linked to the Master Database so that I can change what treasures are inside and I know when they are activated. I hope the Jumpeez can find them and put them to good use! + 0 + + DlgDrBrainM86End + DrBrain + RS_DATA/DrBrainJournal17.unity3d + + 59 + 60 + 82 + 83 + 84 + 85 + + 170 + 347 + + + + + + + 2 + Industrial01Zone05 + + + 87 + Ind01Zone05SP + + IcoSpeedPathTex + + 0 + + + 173 + 228 + + + + 61 + Ind01Zone05Collect + + IcoCollectMissionsTex + + 0 + + 87 + + 171 + 206 + 207 + 208 + 209 + 210 + 211 + 212 + 213 + 214 + + + + 62 + Ind01Zone05Battle + + IcoBattleMissionsTex + + 0 + + 87 + + 172 + 215 + 216 + 217 + 218 + 219 + 220 + 221 + 222 + 223 + + + + 88 + Ind01Zone05Nav01 + + IcoNavRoomTex + 10.167 entry: +Ichthyoids or fish... come in so many colors, shapes, and sizes. And they breathe in water! I will build a home for these incredible creatures. I will create an underwater refuge where sea creatures of all types can frolic and thrive. + 0 + + DlgDrBrainM88End + DrBrain + RS_DATA/DrBrainJournal10.unity3d + + 87 + + 174 + 233 + + + + 89 + Ind01Zone05Nav02 + + IcoNavRoomTex + + 0 + + 87 + + 175 + 238 + + + + 90 + Ind01Zone05Roller01 + + IcoRollerSquashTex + + 0 + + 87 + + 176 + 243 + + + + 91 + Ind01Zone05Roller02 + + IcoRollerSquashTex + + 0 + + 87 + + 177 + 248 + + + + 92 + Ind01Zone05Boss01 + + IcoHenchmanTex + 10.196 entry: I am wrtniig tihs in a knid of Cdoe. I beileve the Hench has cretaed a goo-lkie wlrod kwonn as Goolag. I do not konw wrehe it is so I can tmie treval trehe. I msut fnid it and sotp him berofe he teaks oevr the entrie unevirse wtih Goo! + 0 + + DlgDrBrainM92End + DrBrain + RS_DATA/DrBrainJournal11.unity3d + + 61 + 62 + 88 + 89 + 90 + 91 + + 178 + 249 + + + + + + + 4 + _default_ + + + 93 + ScubaWreckCollect01 + + + Crystal Rock Cleanup + 0 + + + 180 + 350 + + + 181 + 351 + + + + 94 + ScubaPhotoCrab + + + Cranky Crab Capture + 0 + + + 182 + 352 + + + 183 + 353 + + + + 98 + ScubaPhotoStatue + + + Riddle Me This + 0 + + + 189 + 366 + + + + 96 + ScubaPearl01 + + + Pearl Rescue + 0 + + + 186 + 356 + + + + 97 + ScubaPhotoCappy + + + Cappy Snap + 0 + + + 187 + 364 + + + + 95 + ScubaBuyJCFlower + + + Diva Daisy Delivery + 0 + + + 184 + 354 + + + 185 + 355 + + + + 99 + ScubaRuinsCollect02 + + + Lighten up! + 0 + + + 190 + 367 + + + 191 + 368 + + + + 100 + ScubaKelpCollect3 + + + Kelp Forest Cleanup + 0 + + + 192 + 369 + + + 193 + 370 + + + + 101 + ScubaRuinsPhoto + + + Photo Art for Sale + 0 + + + 194 + 371 + + + 195 + 372 + + + + 102 + ScubaPhotoJC + + + Riddle Me Who? Here's a Clue + 0 + + + 196 + 373 + + + + 103 + ScubaRuinsCollect04 + + + Pearl Hunt + 0 + + + 197 + 374 + + + 198 + 375 + + + + 104 + ScubaPhotoIsabella + + + Unravel This Riddle + 0 + + + 199 + 376 + + + + 105 + ScubaBuyJCRainbow + + + Happy Birthday Jean Claude! + 0 + + + 200 + 377 + + + 201 + 378 + + + + 106 + ScubaPhotoSeaHorse + + + Portrait of a Sea Horse + 0 + + + 202 + 379 + + + 203 + 380 + + + + 107 + ScubaPearl02 + + + Pearl Roll & Rescue + 0 + + + 204 + 381 + + + + 108 + ScubaKelpCollect05 + + + Cart Away + 0 + + + 205 + 382 + + + + 109 + ScubaKelpVisitSC + + + Riddle Me What? + 0 + + + 206 + 383 + + + + 110 + ScubaRuinsVisitSC + + + Castle in the Sand + 0 + + + 207 + 384 + + + + 111 + ScubaWreckVisitSC + + + ShipWreck Castle + 0 + + + 208 + 385 + + + + 112 + ScubaWreckCollect06 + + + Crab Corral + 0 + + + 209 + 386 + + + 210 + 387 + + + + 113 + ScubaWreckCollect07 + + + Shell Sell + 0 + + + 211 + 388 + + + 212 + 389 + + + + 114 + ScubaPhotoHead + + + StoneHead Photo Opp + 0 + + + 213 + 390 + + + + 115 + ScubaBuyOceanCD + + + Ocean Breeze Tunes + 0 + + + 214 + 391 + + + 215 + 392 + + + + 116 + ScubaPhotoPearlStatue + + + Precious Pearl Pedestal + 0 + + + 216 + 393 + + + 217 + 394 + + + + 117 + ScubaRuinsCollect08 + + + Flashlight Flood + 0 + + + 218 + 395 + + + 219 + 396 + + + + 118 + ScubaBuyButterfly + + + Butterfly Suprise + 0 + + + 220 + 397 + + + 221 + 398 + + + + 119 + ScubaVisitCave + + + Cave Encounter + 0 + + + 222 + 399 + + + + 120 + ScubaRuinCollect09 + + + Rollin with the tides + + 0 + + + 223 + 400 + + + 224 + 401 + + + + 121 + ScubaBuySunnyCD + + + Tune-a fish Music + 0 + + + 225 + 402 + + + 226 + 403 + + + + 122 + ScubaPhotoAnchor + + + Photo Riddle Opp + 0 + + + 227 + 404 + + + + + + 183 + Pearl Push Levels + + + Complete all 30 pearl push levels + -1 + + + + 184 + Bubble Trouble math + + + Complete all the bubble trouble math lessons + -1 + + + + 185 + Bubble Trouble reading + + + Complete all the reading lessons + -1 + + + + + + 4 + MerCaverns + + + 123 + CavePunkTutorial + + + Punk-Punk Pounce + 0 + + + 228 + 405 + + + 229 + 406 + + + + 124 + CaveVisitFishFount + + + Find the Fishy Fountain + 0 + + + 230 + 407 + + + + 125 + CaveCollectFlag + + + Capture the Flag + 0 + + + 231 + 408 + + + 232 + 409 + + + + 126 + CaveCollect10Punks + + + Punk-Punk Be Gone + 0 + + + 233 + 410 + + + + 127 + CavePhotoDrawings + + + Cave Creations + 0 + + + 234 + 411 + + + 235 + 412 + + + + 128 + CaveCollectRocks + + + Crystal Rock Collect + 0 + + + 236 + 413 + + + 237 + 414 + + + + 129 + CavePhotoYellowPunk + + + Punk-Punks Say "Cheese!" + 0 + + + 238 + 415 + + + 239 + 416 + + + + 130 + CaveCollectPurplePunk + + + Purple Punk-Punk Pounding + 0 + + + 240 + 417 + + + + 131 + CaveCollectAnchors + + + Anchors Away + 0 + + + 241 + 418 + + + + 132 + CaveVisitSlide + + + Water Slide Wild Ride + 0 + + + 242 + 419 + + + + 133 + CollecthidingPunks + + + Five Fishy Fiends + 0 + + + 243 + 420 + + + + 134 + CaveCollectFlashlight + + + Cappy's Flashlight + + 0 + + + 244 + 421 + + + 245 + 422 + + + + 135 + CaveCollectTimer01 + + + Sea Floor Sweep Up + + 0 + + + 246 + 423 + + + + 136 + CaveCollectlanterns + + + Lantern Lookout + + 0 + + + 247 + 424 + + + + 137 + CavePhotoStatue + + + Portrait of General Shellback + 0 + + + 248 + 425 + + + 249 + 426 + + + + 138 + CaveCollectPaintCans + + + Punked out Paint Cans + + 0 + + + 250 + 427 + + + + 139 + CaveVisitMushrooms + + + Pink and Purple Plants + + 0 + + + 251 + 428 + + + + 140 + CavePhotoPPStatue + + + Sir Punk-A-Lot + + 0 + + + 252 + 429 + + + 253 + 430 + + + + 141 + CaveCollectShoes + + + Running Shoes Rundown + + 0 + + + 254 + 431 + + + + 142 + CaveCollectKey + + + Cappy's Key Hunt + + 0 + + + 255 + 432 + + + 256 + 433 + + + + 143 + CavePhotoCrab + + + Crab Shot + + 0 + + + 257 + 434 + + + 258 + 435 + + + + 144 + CaveCollectPearl + + + It's a Surprise! + + 0 + + + 259 + 436 + + + + 145 + CaveCollectPunks02 + + + Cavern Clean Up + + 0 + + + 260 + 437 + + + + 146 + CavePhotoOutofplace + + + The UnPunk-Punk + + 0 + + + 261 + 438 + + + 262 + 439 + + + + 147 + CaveCollectTimer02 + + + Here Comes Trouble + + 0 + + + 263 + 440 + + + + 148 + CaveCollectWhistle + + + Whistle Thief + + 0 + + + 264 + 441 + + + 265 + 442 + + + + 149 + CaveCollectWhistle + + + Statue of a Sea Horse + + 0 + + + 266 + 443 + + + 267 + 444 + + + + 150 + CaveCollectTreasChest + + + Treasures of the Fishy Fountain + + 0 + + + 268 + 445 + + + + 151 + CavePhotoFishStatue + + + Fish Statue Frame-up + + 0 + + + 269 + 446 + + + 270 + 447 + + + + 152 + CavePhotoCrabStatue + + + Stone Crab Snapshot + + 0 + + + 271 + 448 + + + 272 + 449 + + + + + + + 4 + MerTown + + + 153 + TownVisit Areas + + + Merllywood Tour + 0 + + + 273 + 450 + + + 274 + 451 + + + + 154 + TownPunkTutorial + + + Punk-Punk Pouncing 101 + + 0 + + + 275 + 452 + + + 276 + 453 + + + + 155 + TownFSGameplay01 + + + Runway Away + 0 + + + 277 + 454 + + + + 156 + TownCollectDDCD + + + Disco Dreams + 0 + + + 278 + 455 + + + 279 + 456 + + + + 157 + TownPhotoMerStatue + + + Photo Finish + + 0 + + + 280 + 457 + + + 281 + 458 + + + + 158 + TownCollectPearls + + + Pearly Finds + + 0 + + + 282 + 459 + + + 283 + 460 + + + + 159 + TownFSGameplay02 + + + Called in Sick + + 0 + + + 284 + 461 + + + + 160 + TownVisitBigHand + + + Lucky Charm + + 0 + + + 285 + 462 + + + + 161 + TownPhotoGoldPunk + + + Golden Imposter + + 0 + + + 286 + 463 + + + 287 + 464 + + + + 162 + TownCollectPunk01 + + + Disguised Guests + + 0 + + + 288 + 465 + + + + 163 + TownPhotoSpiralShell + + + Spiral Shell Snapshot + + 0 + + + 289 + 466 + + + 290 + 467 + + + + 164 + TownCollectTrash + + + Trendy Tides De-trashing + + 0 + + + 291 + 468 + + + + 165 + TownPhotoRedRock + + + Red Ruby Rock of Runway Grace + + 0 + + + 292 + 469 + + + 293 + 470 + + + + 166 + TownVisitStatue + + + De-Punk Statue + + 0 + + + 294 + 471 + + + + 167 + TownFSGameplay03 + + + Strut Your Stuff + + 0 + + + 295 + 472 + + + + 168 + TownCollectLanterns + + + Lantern Collection + + 0 + + + 296 + 473 + + + + 169 + TownArtBillboard01 + + + Masterpiece Minute + + 0 + + + 297 + 474 + + + 298 + 475 + + + + 170 + TownCollectClothes + + + Spring Line Sprucing + + 0 + + + 299 + 476 + + + + 171 + TownPhotoPinkShell + + + Prized Shell Photo + + 0 + + + 300 + 477 + + + 301 + 478 + + + + 172 + TownArtBillboard02 + + + Poster Props + + 0 + + + 302 + 479 + + + 303 + 480 + + + + 173 + TownMakeCard + + + Making of a Mer-card + + 0 + + + 304 + 481 + + + 305 + 482 + + + + 174 + TownBuyFunkyCD + + + Funky Fever + + 0 + + + 306 + 483 + + + 307 + 484 + + + + 175 + TownCollectPPTimer + + + Punk-Punk Pounce + 0 + + + 308 + 485 + + + + 176 + TownBuyFlowers + + + Flower Flourish + + 0 + + + 309 + 486 + 497 + + + 310 + 487 + 498 + + + + 177 + TownFSGameplay04 + + + Fashionable Fins + + 0 + + + 311 + 488 + + + + 178 + TownCollectPaint + + + The Brush Off + + 0 + + + 312 + 489 + + + 313 + 490 + + + + 179 + TownPhotoMovie + + + Movie Magic + + 0 + + + 314 + 491 + + + 315 + 492 + + + + 180 + TownBuyItem + + + Shopping Spree + + 0 + + + 316 + 493 + + + 317 + 494 + + + + 181 + TownCollectPunkOld + + + Showdown Before the Show + 0 + + + 318 + 495 + + + + 182 + TownTreasureChest + + + There's Treasure in Them Hills + + 0 + + + 319 + 496 + + + + + + + 5 + MB Boys + + + 189 + Rescue a Larva + ADOPT A PET TO RAISE AND TRAIN. + + ADOPT A PET TO RAISE AND TRAIN. + -1 + + + 326 + 505 + + + + 213 + Larva Attachment + Play and Feed your larva + + Lets get emotionally attached to the larva + -1 + + DlgGCM213End + GC + RS_DATA/MBDirectedM213.unity3d + + + 350 + 529 + + + 351 + 530 + + + 354 + 533 + 534 + + + + 215 + MB Boy Visit Mutt Pod + Go to your Mutt Pod + + Visit Mutt Pod Boy + -1 + + DlgGCM215End + GC + RS_DATA/MBDirectedM215.unity3d + + + 358 + 539 + + + 360 + 541 + + + + 217 + MB Boy Visit Pod + Go to your Pod + + Visit Pod Boy + -1 + + DlgGCM217End + GC + RS_DATA/MBDirectedM217.unity3d + + + 366 + 547 + + + 368 + 549 + + + 370 + 551 + + + + 220 + MB Boy Play Hyperblast + Play Hyperblast + + Play Hyperblast Boy + -1 + + + 373 + 554 + + + + 187 + Play HyperBlast + Pilot Skills Challenge + + Pilot Skills Challenge + -1 + + + 324 + 503 + + + + 188 + Play Galaxy Grand Prix + Skill and Bravery Challenge + + Skill and Bravery Challenge + -1 + + + 325 + 504 + + + + 190 + Master Morph Madness + IQ Challenge + + IQ Challenge + -1 + + + 327 + 506 + + + + 191 + Home Sweet Home + FIND YOUR ROOM AND SETTLE IN. + + Navigational Challenge + -1 + + + 328 + 507 + + + + + + + 5 + MB Girls + + + 192 + Rescue a larva Girl + ADOPT A PET TO RAISE AND TRAIN. + + Adopt a pet to raise and train. + -1 + + + 329 + 508 + + + + 214 + Larva Attachment Girl + Love and attachment + + Love and attachment + -1 + + DlgGCM214End + GC + RS_DATA/MBDirectedM214.unity3d + + + 352 + 531 + + + 353 + 532 + + + 355 + 535 + 536 + + + + 216 + MB Girl Visit Mutt Pod + Go to your Mutt Pod + + Visit Mutt Pod Girl + -1 + + DlgGCM216End + GC + RS_DATA/MBDirectedM216.unity3d + + + 359 + 540 + + + 361 + 542 + + + + 218 + MB Girl Visit Pod + Go to your Pod + + Visit Pod Girl + -1 + + DlgGCM218End + GC + RS_DATA/MBDirectedM218.unity3d + + + 367 + 548 + + + 369 + 550 + + + 371 + 552 + + + + 219 + MB Girl Play Hyperblast + Play Hyperblast + + Play Hyperblast Girl + -1 + + + 372 + 553 + + + + 193 + Master Morph Madness Girl + IQ Challenge + + IQ Challenge + -1 + + + 330 + 509 + + + + 194 + PLay Alien Wrangler Girl + Bravery and Stamina Challenge + + Bravery and Stamina Challenge + -1 + + + 331 + 510 + + + + 195 + Play Zapper Girl + Skill and Agility Challenge + + Skill and Agility Challenge + -1 + + + 332 + 511 + + + + 196 + Home Sweet Home Girl + FIND YOUR ROOM AND SETTLE IN. + + Navigational Challenge + -1 + + + 333 + 512 + + + + + + 6 + _default_ + + + 197 + Check out your garage! + Check out your garage! + + Every racer needs a GARAGE. A place where you can mod your ride. Check it out! + -1 + + + 334 + 513 + + + + 198 + Make it through the Big Chomper! + Survive the Big Chomper. + + Feeling brave and reckless? Looking for speed and glory? I know exactly where to send you. Go check out the Big Chomper Race Track! + -1 + + + 335 + 514 + + + + 199 + Buy some new wheels for your ride. + Buy some new wheels for your ride. + + Are you ready to move ahead of the pack? Speed on over to the MECHANIC SHOP and cruise out with some new wheels. + -1 + + + 336 + 515 + + + + 200 + Buy a weapon for the front of your car. + Buy a weapon for the front of your car. + + Are you ready to DESTROY your competition?! We've got WEAPONS and lots of them at the ARMORY! Why don't you buy that massive one for the front of your car. + -1 + + + 337 + 516 + + + + 201 + Create a race. + Create a race. + + Be the BOSS! Create a Race in the RACING CIRCUIT and pick your favorite style and track. + -1 + + + 338 + 517 + + + + 212 + Kill 10 Zombies in the Combat Zone! + Kill 10 Zombies in the Combat Zone! + + Zombies are trying to take over the Combat Zone, go help out and kill 10 of them! + -1 + + + 349 + 528 + + + + + + diff --git a/src/Resources/missions/step_missions_steps.xml b/src/Resources/missions/step_missions_steps.xml new file mode 100644 index 0000000..255dd96 --- /dev/null +++ b/src/Resources/missions/step_missions_steps.xml @@ -0,0 +1,23706 @@ + + + + 1 + + DlgFrankieS1Offer + NPCs.unity3d/PfFrankie + RS_DATA/DlgsAdventureM01S01.unity3d + + + DlgFrankieS1End + NPCs.unity3d/PfFrankie + RS_DATA/DlgsAdventureM01S01.unity3d + + -1 + + 1 + Visit + + GrpTiMis01St01 + TrainingIsland + + DlgEleanorT1Help + NPCs.unity3d/PfEleanor + RS_DATA/DlgsAdventureM01S01.unity3d + + + DlgPierreT1Help + NPCs.unity3d/PfPierre + RS_DATA/DlgsAdventureM01S01.unity3d + + 0 +