-also added messages for anyone on wojs or earlier for ribbons
-mmo communication occurs in the ``MessagingService`` and ``BuddyService``
-for now this requires a DLL from the game client as we should not distribute the SmartFox client openly here due to it being closed sourced
- add message to viking if level up is detected and wojs is game version
- crappy fix for bug where viking rank isn't displayed correctly in some areas
- add empty url's for audio and image (otherwise cutscene would not play)
- allow to add items to store while using replace action in server-side mods
- fixed wrong (inverted) logic for LastLevelCompleted
- fixed 'already an open DataReader' isse on GetTopRated* endpoints
- disabled AchievementTaskID 37 (WoJS) due to causing bug
* 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