* 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
);
```
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.
Also:
* implemented ``GetAvatarByUserID`` from @Moonbase's previous PR.
* implemented ``GetPeriodicGameDataByGame`` and ``GetGamePlayDataForDateRange``
---------
Co-authored-by: Alan Moon <alanmoonbase2004@gmail.com>
- 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``
* return battle item as battle items
placeholder - no saved stats, always use default stats
* Blacksmith API implementation
* ApplyRewards (DT rewards) and AddBattleItems
also temporary disable some AchievementsTask rewards from DT ... probably should not be repeatable ...
* support "box tickets" blueprints
- add OpenBox in ItemService (should be useful for other boxes also)
- move checking item category to ItemService (ItemHasCategory)
* InventoryService and full DragonTactics rewards
- move "add to inventory" to InventoryService
- move creating CommonInventoryData from inventory to InventoryService
- move CreateItemStats() to ItemService
- assigning random "item" reward from DT based on dtrewards.xml (at this moment list of all DT items not listed in store)
- rework dragon XP and add player XP and gems reward to DT
- add task and id reward xml databases
- thanks to Project Edge community for sniffed network data!
- implement SetAchievementAndGetReward, SetUserAchievementAndGetReward
- partially implement SetUserAchievementTask
- move rewards logic to AchievementService
- show real value of farming and fishing XP
- show UDP points
Co-authored-by: Spirtix <michal.prazak1@gmail.com>
* GetPetAchievementsByUserID and enum for PointTypes
* add RankService
* use AchievementPointTypes for PointTypeID
... insted of int in schema
* support for player XP, fix dragon XP
- database table
- return correct value in API call
- save XP from mission
* rename RankService to AchievementService
* use addAchievementPoints for all non item reward
this could be a good place for wallet servicing too ... so currency reward too
* return const XP value for farming and fishing
we don't have gathering method for those XPs yet
* fix avatar schema, fix coding style