From baab40c828e03b24b74999122e27ea2cb88e7ec9 Mon Sep 17 00:00:00 2001 From: Robert Paciorek Date: Sun, 1 Oct 2023 12:37:06 +0000 Subject: [PATCH] Mythies issues fixes - fix "Mythies" tab in profile - fix Minisaurs vs Mythies conflict --- src/Controllers/Common/ContentController.cs | 46 ++++++++++++++++++--- 1 file changed, 40 insertions(+), 6 deletions(-) diff --git a/src/Controllers/Common/ContentController.cs b/src/Controllers/Common/ContentController.cs index ed45cbd..ae9c0e1 100644 --- a/src/Controllers/Common/ContentController.cs +++ b/src/Controllers/Common/ContentController.cs @@ -623,9 +623,23 @@ public class ContentController : Controller { [Route("ContentWebService.asmx/SetRaisedPetInactive")] // used by World Of Jumpstart [VikingSession] public IActionResult SetRaisedPetInactive(Viking viking, [FromForm] int raisedPetID) { - viking.SelectedDragonId = null; - ctx.SaveChanges(); + if (raisedPetID == viking.SelectedDragonId) { + viking.SelectedDragonId = null; + } else { + Dragon? dragon = viking.Dragons.FirstOrDefault(e => e.Id == raisedPetID); + if (dragon is null) { + return Ok(false); + } + // check if Minisaurs - we real delete only Minisaurs + RaisedPetData dragonData = XmlUtil.DeserializeXml(dragon.RaisedPetData); + if (dragonData.PetTypeID != 2) { + return Ok(false); + } + + viking.Dragons.Remove(dragon); + } + ctx.SaveChanges(); return Ok(true); } @@ -703,14 +717,23 @@ public class ContentController : Controller { [Produces("application/xml")] [Route("ContentWebService.asmx/GetActiveRaisedPet")] // used by World Of Jumpstart [VikingSession(UseLock=false)] - public RaisedPetData[] GetActiveRaisedPet(Viking viking, [FromForm] string userId, [FromForm] bool isActive) { + public RaisedPetData[] GetActiveRaisedPet(Viking viking, [FromForm] string userId, [FromForm] int petTypeID) { + if (petTypeID == 2) { + // player can have multiple Minisaurs at the same time ... Minisaurs should never have been selected also ... so use GetUnselectedPetByTypes in this case + return GetUnselectedPetByTypes(viking, "2", false); + } + Dragon? dragon = viking.SelectedDragon; if (dragon is null) { return new RaisedPetData[0]; } + RaisedPetData dragonData = GetRaisedPetDataFromDragon(dragon); + if (petTypeID != dragonData.PetTypeID) + return new RaisedPetData[0]; + // NOTE: returned dragon PetTypeID should be equal value of pair 1967 → CurrentRaisedPetType - return new RaisedPetData[] {GetRaisedPetDataFromDragon(dragon)}; + return new RaisedPetData[] {dragonData}; } [HttpPost] @@ -732,13 +755,24 @@ public class ContentController : Controller { [Produces("application/xml")] [Route("ContentWebService.asmx/GetInactiveRaisedPet")] // used by World Of Jumpstart 1.1 [VikingSession(UseLock=false)] - public RaisedPetData[] GetInactiveRaisedPet(Viking viking) { + public RaisedPetData[] GetInactiveRaisedPet(Viking viking, [FromForm] int petTypeID) { RaisedPetData[] dragons = viking.Dragons .Where(d => d.RaisedPetData is not null && d.Id != viking.SelectedDragonId) .Select(d => GetRaisedPetDataFromDragon(d, viking.SelectedDragonId)) .ToArray(); - return dragons; + List filteredDragons = new List(); + foreach (RaisedPetData dragon in dragons) { + if (petTypeID == dragon.PetTypeID) { + filteredDragons.Add(dragon); + } + } + + if (filteredDragons.Count == 0) { + return null; + } + + return filteredDragons.ToArray(); } [HttpPost]