rework achievements system:
- support for Achievements page in journal
- register achievement tasks in database to avoid duplicate rewards and to register progress (achievement levels)
- better achievement tasks xml database (for multiple games)
- support for older games SetUserAchievementTask (V1)
- add some missed achievement IDs
- move achievement data to Resources/achievements/
additionally:
- add mmo zones for MaM and some additional mmo zones for EMD
- move missions Resources into Resources/missions/
- split SoD/MaM missions into separte files
- move rank data to Resources/ranks/
- cleanup sodoff.csproj
SQLite database schema changes:
```
CREATE TABLE "AchievementTaskState" (
"VikingId" INTEGER NOT NULL,
"TaskId" INTEGER NOT NULL,
"Points" INTEGER NOT NULL,
CONSTRAINT "PK_AchievementTaskState" PRIMARY KEY("TaskId","VikingId"),
CONSTRAINT "FK_AchievementTaskState_Vikings_VikingId" FOREIGN KEY("VikingId") REFERENCES "Vikings"("Id") ON DELETE CASCADE
);
```
Implements the rating system.
Shipwreck Lagoon tracks theoretically work, but there's currently no way of testing them.
There is a hack to make the ranked pods section of the blaster party board work. Don't know if that'll cause any issues (but I don't think so).
SQLite database schema changes:
```sql
CREATE TABLE "RatingRanks" (
"Id" INTEGER NOT NULL,
"CategoryID" INTEGER NOT NULL,
"RatedEntityID" INTEGER,
"RatedUserID" TEXT,
"Rank" INTEGER NOT NULL,
"RatingAverage" REAL NOT NULL,
"UpdateDate" TEXT NOT NULL,
CONSTRAINT "PK_RatingRanks" PRIMARY KEY("Id" AUTOINCREMENT)
);
CREATE TABLE "Ratings" (
"Id" INTEGER NOT NULL,
"VikingId" INTEGER NOT NULL,
"RankId" INTEGER NOT NULL,
"Value" INTEGER NOT NULL,
"Date" TEXT NOT NULL,
CONSTRAINT "FK_Ratings_RatingRanks_RankId" FOREIGN KEY("RankId") REFERENCES "RatingRanks"("Id") ON DELETE CASCADE,
CONSTRAINT "PK_Ratings" PRIMARY KEY("Id" AUTOINCREMENT),
CONSTRAINT "FK_Ratings_Vikings_VikingId" FOREIGN KEY("VikingId") REFERENCES "Vikings"("Id") ON DELETE CASCADE
);
```
---------
Co-authored-by: Robert Paciorek <robert@opcode.eu.org>
DB MODEL CHANGES! I don't know how to deal with those.
Support for EMD's MMO rooms and API token.
Groundwork for group/clan system (hence schema changes). Only functional for EMD right now (if I implemented it correctly).
* Removed debug logged messages.
* Update comments in GroupController.cs
* Fixed position of parenthesis in ConfigurationController.cs
* Noted changes in README
* Amendment to previous commit, these are supposed to be alphabetical.
* Changed unnecessary extra check for EMD ClientVersion.
* Change automatic RaisedPet name to not happen for WoJS
This is because Voltage Dragons get a name later, so this placeholder name currently gets assigned first.
I've never done this before, so let me know if I did it wrong lol
* Added Max_OldJS to the previous PR
* Added HaiFire's suggestion
* Added [FromForm] string apiKey
Ty HaiFire again!
* Add Announcement To Send Player To SanctuaryBabySS In SuperSecret
* Add Announcement for Amphitheater in WoJS
* Announcements are send based on per game resources file
Co-authored-by: Robert Paciorek <robert@opcode.eu.org>
* Added support for Math Blaster Pod and Birthday parties.
* Now sends only the appropriate parties for each game.
Math Blaster only gets parties in MyPodInt.
JumpStart only gets parties in MyNeighborhood or MyVIPRoomInt.
Parties in any other rooms don't get sent.
Any other games don't get sent parties (I couldn't work out how to set up SuperSecret for testing).
* Mutt Couch Fixes
Removed duplicate mutt from the couch.
Mutts on couch in other players' mutt pods will now reflect that player's account.
* Buddies list will now appear on the sidebar, making the mutt pod tutorial possible.
---------
* Fixed some issues that were pointed out.
* ContentController.GetUnselectedPetByTypes now uses regular IF check for setting owner viking.
* remove unused apiKey from GetActiveRaisedPet args
Will now set to appropriate mutt texture if pet is using a larva texture and is older than HATCHING.
The pet data saving code will now set to appropriate mutt texture if pet is using a larva texture and is older than HATCHING.
This fixes the issue that mutts were using their old larva's texture instead of the mutt's default texture.
Any existing mutts using the wrong texture will have it changed when the pet is saved (not when loaded). For users to see the fixed texture they would need to restart the game after the affected mutt(s)' data changed in any way (or otherwise saved to the server).
Also:
* implemented ``GetAvatarByUserID`` from @Moonbase's previous PR.
* implemented ``GetPeriodicGameDataByGame`` and ``GetGamePlayDataForDateRange``
---------
Co-authored-by: Alan Moon <alanmoonbase2004@gmail.com>
- fix "No soil plots in v.2.9"
- do not send null `UserItemPosition.Uses` for old clients
- fix "unable to do the expansion missions in Sodoff 2.9"
- move expansion board missions to Headmaster for old versions
- fix race condition on PurchaseItems (causing negative gems amount issue)
- move gems bundles to correct store
- also fix "gems bundles not show after click on gems counter" issue
- fix "internal error neighborhood" (WoJS)
(caused by room item with null item)
- fix "Release date is set to creation date upon being released" (WoJS)
- update GrowTime value in SetRaisedPetInactive
- use generic XML save system (SavedData) for Houses
- add support for return different stores for WoJS 1.1 and 1.21 (based on ApiKey)
- change values of ClientVersion / gameVersion for non SoD games and some version checks logic
- common function for Viking creation for call in RegisterChild and in RegisterParent
- add SS (standard) apiKey and WoJS 1.21 (custom) apiKey
- Add ``UserProfileTag`` Placeholder
- Add Placeholder Profile Tags
- Reimplement ``GetContentByTypeByUser``
- Fix ``GetContentByTypeByUser``
- Add Test Movie Theater Content
- Add Real Movie Content
- Add Big Cat
- Fix CatURL
- Add Arcade Content
- Add Proper Response For Arcade Content
- Replace ContentInfo With ContentInfoData
- Still Trying Arcade Things
- Update Jukebox
- Movie Theater Thumbnails
- Replace All Content And MMO URL's To Point To New Server
- Replace https With http And Do Similar Action To ``allranks_wojs``
- Fix Typo
- Add All Other MainStreet Missions
- Add WoJS Ranks
- Add Learning Content (Brain Arcade)
- Restore Original Jukebox Content
- Add External Games And Fruit Salad Chop To Arcade Content
- Update Learning Content
- Add Placeholder For GetActiveParties
- Add Proper Placeholder For GetActiveParties
- Attempt Party Implementation
- Return Null When Party Time Is Not One Hour
- Do Not Buy Party If It Already Exists
- Remove Coins From User After Buying Party
- Fix Parties Not Getting Removed After One Hour
- db model fixes
- Make Party ID key an integer
- Add ``GetPartiesByUserId``
- Fixes Parties Not Having Decorations
- Add All Other Party Durations And Types
- Fix Mistake In ``GetActiveParties``
add:
- SetGameCurrency
- GetDisplayNameByUserId
- GetCommonInventoryByUserId
and some placeholders
- Reimplement Currency System (WoJS)
- Implement ``GetDisplayNameByUserId``
- Move ``GetCombinedListMessage`` To Messaging Controller
- Add More Placeholders For MMO
- ``SetScore`` Placeholder
- Add ``GetRevealIndex`` For Learning Games
Co-authored-by: Robert Paciorek <robert@opcode.eu.org>