mirror of
https://github.com/SoDOff-Project/sodoff.git
synced 2025-10-11 08:18:49 -07:00
bugfixes
- fix "No soil plots in v.2.9" - do not send null `UserItemPosition.Uses` for old clients - fix "unable to do the expansion missions in Sodoff 2.9" - move expansion board missions to Headmaster for old versions - fix race condition on PurchaseItems (causing negative gems amount issue) - move gems bundles to correct store - also fix "gems bundles not show after click on gems counter" issue - fix "internal error neighborhood" (WoJS) (caused by room item with null item) - fix "Release date is set to creation date upon being released" (WoJS) - update GrowTime value in SetRaisedPetInactive
This commit is contained in:
parent
39ab2802a3
commit
2d9b83db89
@ -670,6 +670,12 @@ public class ContentController : Controller {
|
||||
[VikingSession]
|
||||
public IActionResult SetRaisedPetInactive(Viking viking, [FromForm] int raisedPetID) {
|
||||
if (raisedPetID == viking.SelectedDragonId) {
|
||||
RaisedPetData dragonData = XmlUtil.DeserializeXml<RaisedPetData>(viking.SelectedDragon.RaisedPetData);
|
||||
RaisedPetAttribute? attribute = dragonData.Attributes.FirstOrDefault(a => a.Key == "GrowTime");
|
||||
if (attribute != null) {
|
||||
attribute.Value = DateTime.UtcNow.ToString("yyyy#M#d#H#m#s");
|
||||
viking.SelectedDragon.RaisedPetData = XmlUtil.SerializeXml(dragonData);
|
||||
}
|
||||
viking.SelectedDragonId = null;
|
||||
} else {
|
||||
Dragon? dragon = viking.Dragons.FirstOrDefault(e => e.Id == raisedPetID);
|
||||
@ -1151,7 +1157,7 @@ public class ContentController : Controller {
|
||||
[HttpPost]
|
||||
[Produces("application/xml")]
|
||||
[Route("V2/ContentWebService.asmx/PurchaseItems")]
|
||||
[VikingSession]
|
||||
[VikingSession(UseLock = true)]
|
||||
public IActionResult PurchaseItems(Viking viking, [FromForm] string purchaseItemRequest) {
|
||||
PurchaseStoreItemRequest request = XmlUtil.DeserializeXml<PurchaseStoreItemRequest>(purchaseItemRequest);
|
||||
List<CommonInventoryResponseItem> items = new List<CommonInventoryResponseItem>();
|
||||
@ -1217,7 +1223,7 @@ public class ContentController : Controller {
|
||||
[HttpPost]
|
||||
[Produces("application/xml")]
|
||||
[Route("ContentWebService.asmx/PurchaseItems")]
|
||||
[VikingSession]
|
||||
[VikingSession(UseLock = true)]
|
||||
public IActionResult PurchaseItemsV1(Viking viking, [FromForm] string itemIDArrayXml) {
|
||||
int[] itemIdArr = XmlUtil.DeserializeXml<int[]>(itemIDArrayXml);
|
||||
List<CommonInventoryResponseItem> items = new List<CommonInventoryResponseItem>();
|
||||
@ -1270,7 +1276,7 @@ public class ContentController : Controller {
|
||||
[HttpPost]
|
||||
[Produces("application/xml")]
|
||||
[Route("ContentWebService.asmx/GetUserRoomItemPositions")]
|
||||
public IActionResult GetUserRoomItemPositions([FromForm] Guid userId, [FromForm] string roomID) {
|
||||
public IActionResult GetUserRoomItemPositions([FromForm] Guid userId, [FromForm] string roomID, [FromForm] string apiKey) {
|
||||
// NOTE: this is public info (for mmo) - no session check
|
||||
Viking? viking = ctx.Vikings.FirstOrDefault(e => e.Uid == userId);
|
||||
|
||||
@ -1280,7 +1286,7 @@ public class ContentController : Controller {
|
||||
if (room is null)
|
||||
return Ok(new UserItemPositionList { UserItemPosition = new UserItemPosition[0] });
|
||||
|
||||
return Ok(roomService.GetUserItemPositionList(room));
|
||||
return Ok(roomService.GetUserItemPositionList(room, ClientVersion.GetVersion(apiKey)));
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
|
@ -9,6 +9,14 @@ namespace sodoff.Controllers.Common;
|
||||
public class RatingController : Controller
|
||||
{
|
||||
|
||||
[HttpPost]
|
||||
[Produces("application/xml")]
|
||||
[Route("MissionWebService.asmx/GetPayout")] // used by World Of Jumpstart
|
||||
public IActionResult GetPayout([FromForm] int points) {
|
||||
// TODO - placeholder
|
||||
return Ok(points / 100);
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[Produces("application/xml")]
|
||||
[Route("ScoreWebService.asmx/SetScore")] // used by World Of Jumpstart
|
||||
|
@ -13001,8 +13001,6 @@ SoD 3.31 main store section and subsection filtering:
|
||||
<ii>12251</ii>
|
||||
<ii>12252</ii>
|
||||
<ii>12253</ii>
|
||||
<ii>12721</ii>
|
||||
<ii>12732</ii>
|
||||
<ii>13106</ii>
|
||||
<ii>13151</ii>
|
||||
<ii>13152</ii>
|
||||
@ -17133,6 +17131,8 @@ SoD 3.31 main store section and subsection filtering:
|
||||
<id>10919</id>
|
||||
<c>6</c>
|
||||
</pitem>
|
||||
<ii>12732</ii>
|
||||
<ii>12721</ii>
|
||||
<ii>10824</ii>
|
||||
<ii>12487</ii>
|
||||
<ii>13166</ii>
|
||||
|
@ -41,6 +41,15 @@ public class MissionService {
|
||||
mission.MissionID = missionId;
|
||||
}
|
||||
|
||||
// move expansion board missions to Headmaster for old versions
|
||||
if (mission.GroupID == 61 && gameVersion <= 0xa3a23a0a) {
|
||||
mission.GroupID = 6;
|
||||
foreach (var m in mission.Missions) {
|
||||
if (mission.GroupID == 61)
|
||||
mission.GroupID = 6;
|
||||
}
|
||||
}
|
||||
|
||||
UpdateMissionRecursive(mission, userId);
|
||||
return mission;
|
||||
}
|
||||
|
@ -104,12 +104,14 @@ public class RoomService {
|
||||
ctx.SaveChanges();
|
||||
}
|
||||
|
||||
public UserItemPositionList GetUserItemPositionList(Room room) {
|
||||
public UserItemPositionList GetUserItemPositionList(Room room, uint gameVersion) {
|
||||
List<UserItemPosition> itemPosition = new();
|
||||
foreach (var item in room.Items) {
|
||||
UserItemPosition data = XmlUtil.DeserializeXml<UserItemPosition>(item.RoomItemData);
|
||||
data.UserItemPositionID = item.Id;
|
||||
data.ItemID = data.Item.ItemID;
|
||||
data.ItemID = data.Item?.ItemID;
|
||||
if (gameVersion < 0xa3a00a0a && data.Uses is null)
|
||||
data.Uses = -1;
|
||||
itemPosition.Add(data);
|
||||
}
|
||||
return new UserItemPositionList { UserItemPosition = itemPosition.ToArray() };
|
||||
|
Loading…
x
Reference in New Issue
Block a user