forked from SoDOff-Project/sodoff
bugfixes
- wojs sucks
This commit is contained in:
parent
f739a44fcb
commit
feb0291dc6
@ -117,8 +117,14 @@ public class ProfileController : Controller {
|
||||
// get playerxp, if null than its 0
|
||||
AchievementPoints? achievementPoints = viking.AchievementPoints.FirstOrDefault(e => e.Type == (int)AchievementPointTypes.PlayerXP);
|
||||
int playerxp = 0;
|
||||
AchievementPointTypes pointType = AchievementPointTypes.Unknown3;
|
||||
|
||||
if (achievementPoints != null) playerxp = achievementPoints.Value;
|
||||
if (achievementPoints != null) { playerxp = achievementPoints.Value; pointType = (AchievementPointTypes)achievementPoints.Type; }
|
||||
|
||||
int rank = 0;
|
||||
rank = achievementStore.GetRankFromXP(playerxp, pointType);
|
||||
|
||||
if (viking.GameVersion >= ClientVersion.WoJS) rank += 1; // keep sod compatibility
|
||||
|
||||
// Build the AvatarDisplayData
|
||||
AvatarDisplayData avatar = new AvatarDisplayData {
|
||||
@ -148,7 +154,7 @@ public class ProfileController : Controller {
|
||||
SubscriptionID = -3, // placeholder
|
||||
IsActive = true, // placeholder
|
||||
},
|
||||
RankID = achievementStore.GetRankFromXP(playerxp, AchievementPointTypes.PlayerXP, viking.GameVersion ?? ClientVersion.Min_SoD), // placeholder
|
||||
RankID = rank,
|
||||
AchievementInfo = null, // placeholder
|
||||
Achievements = new UserAchievementInfo[] {
|
||||
achievementService.CreateUserAchievementInfo(viking, AchievementPointTypes.PlayerXP),
|
||||
|
@ -19,19 +19,21 @@ namespace sodoff.Services {
|
||||
this.ctx = ctx;
|
||||
}
|
||||
|
||||
public UserAchievementInfo CreateUserAchievementInfo(Guid userId, int? value, AchievementPointTypes type, uint gameVersion = ClientVersion.Min_SoD) {
|
||||
public UserAchievementInfo CreateUserAchievementInfo(Guid userId, int? value, AchievementPointTypes type) {
|
||||
int rank = achievementStore.GetRankFromXP(value, type);
|
||||
|
||||
if (value is null)
|
||||
value = 0;
|
||||
return new UserAchievementInfo {
|
||||
UserID = userId,
|
||||
AchievementPointTotal = value,
|
||||
RankID = achievementStore.GetRankFromXP(value, type, gameVersion),
|
||||
RankID = rank,
|
||||
PointTypeID = type
|
||||
};
|
||||
}
|
||||
|
||||
public UserAchievementInfo CreateUserAchievementInfo(Viking viking, AchievementPointTypes type) {
|
||||
return CreateUserAchievementInfo(viking.Uid, viking.AchievementPoints.FirstOrDefault(a => a.Type == (int)type)?.Value, type, viking.GameVersion ?? ClientVersion.Min_SoD);
|
||||
return CreateUserAchievementInfo(viking.Uid, viking.AchievementPoints.FirstOrDefault(a => a.Type == (int)type)?.Value, type);
|
||||
}
|
||||
|
||||
public void DragonLevelUpOnAgeUp(Dragon dragon, RaisedPetGrowthState oldGrowthState, RaisedPetGrowthState newGrowthState) {
|
||||
@ -107,8 +109,8 @@ namespace sodoff.Services {
|
||||
|
||||
if(viking.GameVersion <= ClientVersion.WoJS && xpPoints.Type == (int)AchievementPointTypes.PlayerXP)
|
||||
{
|
||||
int initialRank = achievementStore.GetRankFromXP(initialPoints, AchievementPointTypes.PlayerXP, viking.GameVersion.Value);
|
||||
int newRank = achievementStore.GetRankFromXP(xpPoints.Value, AchievementPointTypes.PlayerXP, viking.GameVersion.Value);
|
||||
int initialRank = achievementStore.GetRankFromXP(initialPoints, AchievementPointTypes.PlayerXP);
|
||||
int newRank = achievementStore.GetRankFromXP(xpPoints.Value, AchievementPointTypes.PlayerXP);
|
||||
// wojs shows level up screen when a message of type rank is posted to their message board
|
||||
if(newRank > initialRank)
|
||||
{
|
||||
|
@ -60,9 +60,9 @@ namespace sodoff.Services {
|
||||
dragonTitanMinXP = ranks[AchievementPointTypes.DragonXP][20].Value;
|
||||
}
|
||||
|
||||
public int GetRankFromXP(int? xpPoints, AchievementPointTypes type, uint gameVersion = ClientVersion.Min_SoD) {
|
||||
if (gameVersion <= ClientVersion.WoJS) return ranks[type].Count(r => r.Value <= xpPoints) - 1; // still kind of a shitty fix but hey it fixed sod :)
|
||||
return ranks[type].Count(r => r.Value <= xpPoints);
|
||||
public int GetRankFromXP(int? xpPoints, AchievementPointTypes type) {
|
||||
if (xpPoints <= 20) return ranks[type].Count(r => r.Value <= xpPoints);
|
||||
else return ranks[type].Count(r => r.Value <= xpPoints) - 1; // i've given up
|
||||
}
|
||||
|
||||
public AchievementReward[]? GetAchievementRewardsById(int achievementID) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user