* 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 <robert@opcode.eu.org>
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
);
```
This is for minisaurs in WoJ, but I think it would be a good idea in general, so I didn't limit it to WoJ.
The issue happens because if you buy medicine for minisaurs. It takes away one coin, and so if you already have 0 coins, the server currently returns your coin count as int.MaxValue.
This is tested in WoJ 1.1.0 and 1.21.0. I tested buying, overflowing, underflowing, using commands with big and negative values and playing games.
* 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
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
* old tutorial, works on 3.0.0 (partial on 2.9 also)
thanks to BrokenTV for quest data
* support for Magic And Mythies
* oldclients - avatar fix for 3.12
* register and create viking on 1.13
* fix Data Validation Failed on viking create in 2.9
* fix tutorial on 2.9
- fix opening cryptex cage
- replace initial dialogs (Grimmel version) by old version (based on wiki info)
- replace final dialogs (Harald bomb reference)
* missions support and better init profile on 1.13
- add support for mission in old SoD
- add stub for "New Student" quest for pre 2.3
- properly set HubBerkDOFirstCommon (via tutorial/quest, not via RegisterChild)
- this allow show intro movie
- allow select and hatch first dragon (in hatchery as part of New Student quest)
- this also fix stables on 1.13
* disable mmo on old clients
- fix removing item from inventtory in SetCommonInventory (regresion after switch to InventoryService)
- fix null exception in SellItem on invalid UserInventoryCommonIDs
- remove unused fields in AchievementService (are in AchievementStoreSingleton)