forked from SoDOff-Project/sodoff
144 lines
4.3 KiB
Markdown
144 lines
4.3 KiB
Markdown
# SoD-Off - School of Dragons, Offline
|
|
|
|
On 7th June, 2023, School of Dragons announced they were "sunsetting" the game, and turning the servers off on the 30th of June.
|
|
|
|
## Discord
|
|
[](https://discord.gg/bqHtMRbhM3)
|
|
|
|
## Getting started
|
|
|
|
For the first time setup, run the following command:
|
|
|
|
```
|
|
dotnet restore
|
|
```
|
|
|
|
Then run the server as follows:
|
|
|
|
```
|
|
# run mitmproxy to redirect requests to the app
|
|
mitmproxy -s mitm-redirect.py
|
|
|
|
# run the server
|
|
dotnet run --project src/sodoff.csproj
|
|
```
|
|
|
|
Then run School of Dragons.
|
|
|
|
## Status
|
|
|
|
### What works
|
|
- register/login
|
|
- create profile
|
|
- list profiles
|
|
- tutorial
|
|
- roaming in the open world
|
|
- inventory
|
|
- store
|
|
- missions
|
|
- hideouts
|
|
- farms
|
|
- minigames
|
|
- MMO (using sodoff-mmo)
|
|
|
|
### Methods
|
|
|
|
#### Fully implemented
|
|
- AcceptMission
|
|
- AddBattleItems
|
|
- AuthenticateUser
|
|
- CreatePet
|
|
- DeleteAccountNotification
|
|
- DeleteProfile
|
|
- FuseItems
|
|
- GetAchievementsByUserID
|
|
- GetAllActivePetsByuserId
|
|
- GetAuthoritativeTime
|
|
- GetChildList
|
|
- GetCommonInventory (V2)
|
|
- GetDefaultNameSuggestion
|
|
- GetDetailedChildList
|
|
- GetGameData
|
|
- GetImage
|
|
- GetImageByUserId
|
|
- GetItem
|
|
- GetKeyValuePair
|
|
- GetKeyValuePairByUserID
|
|
- GetMMOServerInfoWithZone (uses resource xml as response)
|
|
- GetPetAchievementsByUserID
|
|
- GetSelectedRaisedPet
|
|
- GetStore
|
|
- GetUnselectedPetByTypes
|
|
- GetUserActiveMissionState
|
|
- GetUserCompletedMissionState
|
|
- GetUserInfoByApiToken
|
|
- GetUserMissionState
|
|
- GetUserProfile
|
|
- GetUserProfileByUserID
|
|
- GetUserRoomItemPositions
|
|
- GetUserUpcomingMissionState
|
|
- IsValidApiToken_V2
|
|
- LoginChild
|
|
- LoginParent
|
|
- PurchaseItems (V1)
|
|
- PurchaseItems (V2)
|
|
- RedeemMysteryBoxItems
|
|
- RegisterChild
|
|
- RegisterParent
|
|
- RerollUserItem
|
|
- SetAchievementAndGetReward
|
|
- SetAchievementByEntityIDs
|
|
- SetAvatar
|
|
- SetCommonInventory
|
|
- SetDisplayName (V2)
|
|
- SetDragonXP (used by account import tools)
|
|
- SetImage
|
|
- SetKeyValuePair
|
|
- SetKeyValuePairByUserID
|
|
- SetPlayerXP (used by account import tools)
|
|
- SetRaisedPet
|
|
- SetSelectedPet
|
|
- SetUserRoomItemPositions
|
|
- UseInventory
|
|
|
|
#### Implemented enough (probably)
|
|
- GetCommonInventory (V1 - returns the viking's inventory if it is called with a viking; otherwise returns 8 viking slots)
|
|
- GetQuestions (doesn't return all questions, probably doesn't need to)
|
|
- GetRules (doesn't return any rules, probably doesn't need to)
|
|
- GetSubscriptionInfo (always returns member, with end date 10 years from now)
|
|
- SendRawGameData
|
|
- SetNextItemState
|
|
- SetTaskState (only the TaskCanBeDone status is supported; might contain a serious problem - see the MissionService class)
|
|
- SetUserAchievementAndGetReward (works like SetAchievementAndGetReward)
|
|
- SetUserRoom
|
|
- ValidateName
|
|
|
|
#### Partially implemented
|
|
- ApplyPayout (doesn't calculate rewards properly)
|
|
- ApplyRewards
|
|
- GetGameDataByGame (friend tab displays all players - friend filter is not yet implemented because friend lists are not implemented)
|
|
- GetGameDataByGameForDateRange (friend tab displays all players)
|
|
- GetTopAchievementPointUsers (ignores type [all, buddy, hall of fame, ...] and mode [overall, monthly, weekly] properties)
|
|
- GetUserAchievements (used by Magic & Mythies)
|
|
- GetUserRoomList (room categories are not implemented, but it's enough for SoD)
|
|
- ProcessRewardedItems (gives gems, but doesn't give gold, gold is not yet implemented)
|
|
- SellItems (gives gems, but doesn't give gold, gold is not yet implemented)
|
|
- SetUserAchievementTask (returns a real reward but still use task placeholder)
|
|
|
|
#### Currently static or stubbed
|
|
- GetAchievementTaskInfo (returns a static XML)
|
|
- GetActiveChallenges (returns an empty array)
|
|
- GetAllRanks (needs to be populated with what ranks the user has)
|
|
- GetAllRewardTypeMultiplier (returns a static XML)
|
|
- GetAllRewardTypeMultiplier (returns a static XML)
|
|
- GetAnnouncementsByUser (returns no announcements, but that might be sufficient)
|
|
- GetAverageRatingForRoom (return max rating)
|
|
- GetBuddyList (returns an emtpy array)
|
|
- GetProfileTagAll (returns an empty array - used by Magic & Mythies)
|
|
- GetRankAttributeData (returns a static XML)
|
|
- GetUserActivityByUserID (returns an empty array)
|
|
- GetUserGameCurrency (return 65536 gems and 65536 coins)
|
|
- GetUserMessageQueue (returns an emtpy array)
|
|
- SaveMessage (doesn't do anything and returns false)
|
|
- SendMessage (doesn't do anything and returns false)
|