stub achievements to progress in missions

This commit is contained in:
Spirtix 2023-07-07 22:23:24 +02:00
parent 535cfc418c
commit f821a0b1cb
5 changed files with 98 additions and 2 deletions

View File

@ -54,7 +54,9 @@ methods = [
'GetAchievementsByUserID',
'PurchaseItems',
'AcceptMission',
'GetUserMissionState'
'GetUserMissionState',
'SetAchievementAndGetReward',
'SetUserAchievementTask'
]
def routable(path):

View File

@ -1,6 +1,7 @@
using System.Reflection;
using Microsoft.AspNetCore.Mvc;
using sodoff.Attributes;
using sodoff.Model;
using sodoff.Schema;
using sodoff.Util;
@ -63,4 +64,48 @@ public class AchievementController : Controller {
return Ok(arrAchievements);
}
[HttpPost]
[Produces("application/xml")]
[Route("AchievementWebService.asmx/SetAchievementAndGetReward")]
public IActionResult SetAchievementAndGetReward([FromForm] string apiToken, [FromForm] int achievementID) {
// TODO: This is a placeholder; returns 5 gems
Viking? viking = ctx.Sessions.FirstOrDefault(x => x.ApiToken == apiToken).Viking;
return Ok(new AchievementReward[1] {
new AchievementReward {
Amount = 5,
PointTypeID = 5,
EntityID = Guid.Parse(viking.Id),
EntityTypeID = 1,
RewardID = 552
}
});
}
[HttpPost]
[Produces("application/xml")]
[Route("V2/AchievementWebService.asmx/SetUserAchievementTask")]
[DecryptRequest("achievementTaskSetRequest")]
public IActionResult SetUserAchievementTask([FromForm] string apiToken, [FromForm] int achievementID) {
// TODO: This is a placeholder
string xml = Request.Form["achievementTaskSetRequest"];
AchievementTaskSetResponse response = new AchievementTaskSetResponse {
Success = true,
UserMessage = true,
AchievementName = "Placeholder Achievement",
Level = 1,
AchievementTaskGroupID = 1279,
LastLevelCompleted = true,
AchievementInfoID = 1279,
AchievementRewards = new AchievementReward[1] {
new AchievementReward {
Amount = 25,
PointTypeID = 1,
RewardID = 910,
EntityTypeID =1
}
}
};
return Ok(new ArrayOfAchievementTaskSetResponse { AchievementTaskSetResponse = new AchievementTaskSetResponse[1] { response } });
}
}

View File

@ -6,7 +6,7 @@ public class ChallengeController : Controller {
[HttpPost]
[Produces("application/xml")]
[Route("ContentWebService.asmx/ChallengeWebService.asmx/GetActiveChallenges")]
[Route("ChallengeWebService.asmx/GetActiveChallenges")]
public IActionResult GetActiveChallenges() {
// TODO: this is a placeholder
return Ok(new ChallengeInfo[0]);

View File

@ -0,0 +1,38 @@
using System.Xml.Serialization;
namespace sodoff.Schema;
// Token: 0x020008AB RID: 2219
[XmlRoot(ElementName = "ATSR", Namespace = "")]
[Serializable]
public class AchievementTaskSetResponse
{
public AchievementTaskSetResponse()
{
this.AchievementRewards = null;
}
[XmlElement(ElementName = "s")]
public bool Success;
[XmlElement(ElementName = "u")]
public bool UserMessage;
[XmlElement(ElementName = "a")]
public string AchievementName;
[XmlElement(ElementName = "l")]
public int Level;
[XmlElement(ElementName = "AR", IsNullable = true)]
public AchievementReward[] AchievementRewards;
[XmlElement(ElementName = "aid", IsNullable = true)]
public int? AchievementTaskGroupID;
[XmlElement(ElementName = "LL", IsNullable = true)]
public bool? LastLevelCompleted;
[XmlElement(ElementName = "aiid", IsNullable = true)]
public int? AchievementInfoID;
}

View File

@ -0,0 +1,11 @@
using System.Xml.Serialization;
namespace sodoff.Schema;
[XmlRoot(ElementName = "ArrayOfAchievementTaskSetResponse", Namespace = "http://api.jumpstart.com/")]
[Serializable]
public class ArrayOfAchievementTaskSetResponse
{
[XmlElement(ElementName = "AchievementTaskSetResponse")]
public AchievementTaskSetResponse[] AchievementTaskSetResponse;
}