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
|
// get playerxp, if null than its 0
|
||||||
AchievementPoints? achievementPoints = viking.AchievementPoints.FirstOrDefault(e => e.Type == (int)AchievementPointTypes.PlayerXP);
|
AchievementPoints? achievementPoints = viking.AchievementPoints.FirstOrDefault(e => e.Type == (int)AchievementPointTypes.PlayerXP);
|
||||||
int playerxp = 0;
|
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
|
// Build the AvatarDisplayData
|
||||||
AvatarDisplayData avatar = new AvatarDisplayData {
|
AvatarDisplayData avatar = new AvatarDisplayData {
|
||||||
@ -148,7 +154,7 @@ public class ProfileController : Controller {
|
|||||||
SubscriptionID = -3, // placeholder
|
SubscriptionID = -3, // placeholder
|
||||||
IsActive = true, // placeholder
|
IsActive = true, // placeholder
|
||||||
},
|
},
|
||||||
RankID = achievementStore.GetRankFromXP(playerxp, AchievementPointTypes.PlayerXP, viking.GameVersion ?? ClientVersion.Min_SoD), // placeholder
|
RankID = rank,
|
||||||
AchievementInfo = null, // placeholder
|
AchievementInfo = null, // placeholder
|
||||||
Achievements = new UserAchievementInfo[] {
|
Achievements = new UserAchievementInfo[] {
|
||||||
achievementService.CreateUserAchievementInfo(viking, AchievementPointTypes.PlayerXP),
|
achievementService.CreateUserAchievementInfo(viking, AchievementPointTypes.PlayerXP),
|
||||||
|
@ -19,19 +19,21 @@ namespace sodoff.Services {
|
|||||||
this.ctx = ctx;
|
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)
|
if (value is null)
|
||||||
value = 0;
|
value = 0;
|
||||||
return new UserAchievementInfo {
|
return new UserAchievementInfo {
|
||||||
UserID = userId,
|
UserID = userId,
|
||||||
AchievementPointTotal = value,
|
AchievementPointTotal = value,
|
||||||
RankID = achievementStore.GetRankFromXP(value, type, gameVersion),
|
RankID = rank,
|
||||||
PointTypeID = type
|
PointTypeID = type
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public UserAchievementInfo CreateUserAchievementInfo(Viking viking, AchievementPointTypes 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) {
|
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)
|
if(viking.GameVersion <= ClientVersion.WoJS && xpPoints.Type == (int)AchievementPointTypes.PlayerXP)
|
||||||
{
|
{
|
||||||
int initialRank = achievementStore.GetRankFromXP(initialPoints, AchievementPointTypes.PlayerXP, viking.GameVersion.Value);
|
int initialRank = achievementStore.GetRankFromXP(initialPoints, AchievementPointTypes.PlayerXP);
|
||||||
int newRank = achievementStore.GetRankFromXP(xpPoints.Value, AchievementPointTypes.PlayerXP, viking.GameVersion.Value);
|
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
|
// wojs shows level up screen when a message of type rank is posted to their message board
|
||||||
if(newRank > initialRank)
|
if(newRank > initialRank)
|
||||||
{
|
{
|
||||||
|
@ -60,9 +60,9 @@ namespace sodoff.Services {
|
|||||||
dragonTitanMinXP = ranks[AchievementPointTypes.DragonXP][20].Value;
|
dragonTitanMinXP = ranks[AchievementPointTypes.DragonXP][20].Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int GetRankFromXP(int? xpPoints, AchievementPointTypes type, uint gameVersion = ClientVersion.Min_SoD) {
|
public int GetRankFromXP(int? xpPoints, AchievementPointTypes type) {
|
||||||
if (gameVersion <= ClientVersion.WoJS) return ranks[type].Count(r => r.Value <= xpPoints) - 1; // still kind of a shitty fix but hey it fixed sod :)
|
if (xpPoints <= 20) return ranks[type].Count(r => r.Value <= xpPoints);
|
||||||
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) {
|
public AchievementReward[]? GetAchievementRewardsById(int achievementID) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user