diff --git a/src/Controllers/Common/AchievementController.cs b/src/Controllers/Common/AchievementController.cs index a75e928..b56117a 100644 --- a/src/Controllers/Common/AchievementController.cs +++ b/src/Controllers/Common/AchievementController.cs @@ -160,6 +160,20 @@ public class AchievementController : Controller { return Ok(new ArrayOfAchievementTaskSetResponse { AchievementTaskSetResponse = response.ToArray() }); } + [HttpPost] + [Produces("application/xml")] + [Route("AchievementWebService.asmx/ApplyPayout")] + [VikingSession] + public IActionResult ApplyPayout(Viking viking, string ModuleName, int points) { + // TODO: use args (ModuleName and points) to calculate reward + return Ok(new AchievementReward[]{ + achievementService.AddAchievementPointsAndGetReward(viking, AchievementPointTypes.PlayerXP, 10), + achievementService.AddAchievementPointsAndGetReward(viking, AchievementPointTypes.GameCurrency, 5), + achievementService.AddAchievementPointsAndGetReward(viking, AchievementPointTypes.DragonXP, 6), + achievementService.AddAchievementPointsAndGetReward(viking, AchievementPointTypes.UDTPoints, 6), + }); + } + [HttpPost] [Produces("application/xml")] [Route("AchievementWebService.asmx/SetAchievementByEntityIDs")] diff --git a/src/Services/AchievementService.cs b/src/Services/AchievementService.cs index 727e460..c1f3e66 100644 --- a/src/Services/AchievementService.cs +++ b/src/Services/AchievementService.cs @@ -44,7 +44,7 @@ namespace sodoff.Services { } public void SetAchievementPoints(Viking viking, AchievementPointTypes type, int value) { - if (type == AchievementPointTypes.DragonXP) { + if (type == AchievementPointTypes.DragonXP && viking.SelectedDragon != null) { viking.SelectedDragon.PetXP = value; } else if (type != null) { AchievementPoints xpPoints = viking.AchievementPoints.FirstOrDefault(a => a.Type == (int)type); @@ -59,7 +59,7 @@ namespace sodoff.Services { } public void AddAchievementPoints(Viking viking, AchievementPointTypes? type, int? value) { - if (type == AchievementPointTypes.DragonXP) { + if (type == AchievementPointTypes.DragonXP && viking.SelectedDragon != null) { viking.SelectedDragon.PetXP = (viking.SelectedDragon.PetXP ?? 0) + (value ?? 0); } else if (type != null) { AchievementPoints xpPoints = viking.AchievementPoints.FirstOrDefault(a => a.Type == (int)type);