public ActionResult GetItemDetailsPartial(int itemID) { using (FFTContext context = new FFTContext()) { Item item = context.Items.Single(m => m.ItemID == itemID); ItemDetailsViewModel itemDetails = new ItemDetailsViewModel { ItemID = item.ItemID, AcquiredViaCatch = item.AcquiredViaCatch, AcquiredViaInitialEquip = item.AcquiredViaInitialEquip, AcquiredViaLocation = item.AcquiredViaLocation, AcquiredViaMode = item.AcquiredViaMode, AcquiredViaPoach = item.AcquiredViaPoach, AcquiredViaSteal = item.AcquiredViaSteal, AcquiredViaTreasureHunt = item.AcquiredViaTreasureHunt, AttackPower = item.AttackPower?.ToString("D3") ?? "0", Cost = item.Cost, Description = item.Description, Element = AttributeCalculator.GetElementSVGLocations(item.Element), ElementAbsorbed = AttributeCalculator.GetElementSVGLocations(item.ElementAbsorbed), ElementBoosted = AttributeCalculator.GetElementSVGLocations(item.ElementBoosted), ElementHalved = AttributeCalculator.GetElementSVGLocations(item.ElementHalved), ElementNegated = AttributeCalculator.GetElementSVGLocations(item.ElementNegated), ElementWeakness = AttributeCalculator.GetElementSVGLocations(item.ElementWeakness), EquipStatusEffect = AttributeCalculator.GetEffectSVGLocations(item.EquipStatusEffect), HitPercentage = item.HitPercentage?.ToString("D2") ?? "0", HitStatusEffect = AttributeCalculator.GetEffectSVGLocations(item.HitStatusEffect), HPBonus = item.HPBonus?.ToString() ?? "0", ImagePath = (item.ItemCategory.EquipmentCategoryID == (int)EquipmentCategoriesList.Weapon ? @"/Content/Images/Item_Icons/Weapons/" : item.ItemCategory.EquipmentCategoryID > (int)EquipmentCategoriesList.Weapon && item.ItemCategory.EquipmentCategoryID < (int)EquipmentCategoriesList.Accessory ? @"/Content/Images/Item_Icons/Armour/" : @"/Content/Images/Item_Icons/Accessories/") + item.IconFileName, ImmuneStatusEffect = AttributeCalculator.GetEffectSVGLocations(item.ImmuneStatusEffect), JumpBoost = item.JumpBoost?.ToString() ?? "0", MagicalEvade = item.MagicalEvade?.ToString() ?? "0", MagicAttackBoost = item.MagicAttackBoost?.ToString() ?? "0", MoveBoost = item.MoveBoost?.ToString() ?? "0", MPBonus = item.MPBonus?.ToString() ?? "0", Name = item.PspName, PhysicalAttackBoost = item.PhysicalAttackBoost?.ToString() ?? "0", PhysicalEvade = item.PhysicalEvade?.ToString() ?? "0", RemoveStatusEffect = AttributeCalculator.GetEffectSVGLocations(item.RemoveStatusEffect), SpeedBoost = item.SpeedBoost?.ToString() ?? "0", SpellEffect = AttributeCalculator.GetEffectSVGLocations(item.SpellEffect), ItemCategoryName = item.ItemCategory.ItemCategoryName }; return(PartialView("~/Views/Home/_UnitItemDetailsPartial.cshtml", itemDetails)); } }
public JsonResult GetUnitStatsDetailPartial(UnitDetailsViewModel unit, int?itemID = null) { Item weaponItem1 = null, weaponItem2 = null, headItem = null, bodyItem = null, accessoryItem = null; List <Item> items = new List <Item>(); unit.Unit.JobName = Enum.GetName(typeof(Jobs), unit.Unit.JobID); unit.Unit.JobName = unit.Unit.JobName.Contains("Onion") ? "Onion Knight" : unit.Unit.JobName; unit.Unit.JobPortraitPath = String.Format("/Content/Images/Jobs/{0}_{1}_Portrait.png", unit.Unit.JobName.Contains("Onion") ? "OnionKnight" : unit.Unit.JobName, unit.Unit.GenderName); unit.Unit.JobName = string.Concat(unit.Unit.JobName.Select(m => Char.IsUpper(m) ? " " + m : m.ToString())).Trim(); unit.Unit.GenderName = Enum.GetName(typeof(Gender), unit.Unit.Gender); using (FFTContext context = new FFTContext()) { if (itemID != null) { int categoryListLength = Enum.GetNames(typeof(EquipmentCategoriesList)).Length; Item selectedItem = context.Items.Single(m => m.ItemID == itemID); switch ((EquipmentCategoriesList)selectedItem.ItemCategory.EquipmentCategoryID) { case EquipmentCategoriesList.Weapon: unit.WeaponID = selectedItem.ItemID; break; case EquipmentCategoriesList.Shield: unit.ShieldID = selectedItem.ItemID; break; case EquipmentCategoriesList.Helmet: unit.HeadID = selectedItem.ItemID; break; case EquipmentCategoriesList.Armor: unit.BodyID = selectedItem.ItemID; break; case EquipmentCategoriesList.Accessory: unit.AccessoryID = selectedItem.ItemID; break; } } if (unit.WeaponID != default(int)) { weaponItem1 = context.Items.Single(m => m.ItemID == unit.WeaponID); unit.WeaponRight = new ItemOverviewViewModel { WeaponPower = weaponItem1.ItemCategory.EquipmentCategoryID == (int)EquipmentCategoriesList.Weapon ? weaponItem1.AttackPower.Value.ToString("D3") : "000", WeaponHit = weaponItem1.ItemCategory.EquipmentCategoryID == (int)EquipmentCategoriesList.Weapon ? weaponItem1.HitPercentage.Value.ToString("D3") : "000", ShieldPhysicalEvade = weaponItem1.ItemCategory.EquipmentCategoryID == (int)EquipmentCategoriesList.Shield ? weaponItem1.PhysicalEvade.Value.ToString("D2") : "00", ShieldMagicalEvade = weaponItem1.ItemCategory.EquipmentCategoryID == (int)EquipmentCategoriesList.Shield ? weaponItem1.MagicalEvade.Value.ToString("D2") : "00", PhysicalAttackPower = weaponItem1.PhysicalAttackBoost.HasValue ? weaponItem1.PhysicalAttackBoost.Value.ToString("D2") : "00", MagicalAttackPower = weaponItem1.MagicAttackBoost.HasValue ? weaponItem1.MagicAttackBoost.Value.ToString("D2") : "00", ImagePath = weaponItem1.ItemCategory.EquipmentCategoryID == (int)EquipmentCategoriesList.Weapon ? @"/Content/Images/Item_Icons/Weapons/" + weaponItem1.IconFileName : @"/Content/Images/Item_Icons/Armour/" + weaponItem1.IconFileName, Name = weaponItem1.PspName, }; items.Add(weaponItem1); } if (unit.ShieldID != default(int) && !weaponItem1.ItemCategory.IsTwoHandOnly) { weaponItem2 = context.Items.FirstOrDefault(m => m.ItemID == unit.ShieldID); unit.WeaponLeft = new ItemOverviewViewModel { WeaponPower = weaponItem2 != null ? weaponItem2.ItemCategory.EquipmentCategoryID == (int)EquipmentCategoriesList.Weapon ? weaponItem2.AttackPower.HasValue ? weaponItem2.AttackPower.Value.ToString("D3") : "000" : "000" : "000", WeaponHit = weaponItem2 != null ? weaponItem2.ItemCategory.EquipmentCategoryID == (int)EquipmentCategoriesList.Weapon ? weaponItem2.HitPercentage.HasValue ? weaponItem2.HitPercentage.Value.ToString("D3") : "000" : "000" : "000", ShieldPhysicalEvade = weaponItem2 != null ? weaponItem2.ItemCategory.EquipmentCategoryID == (int)EquipmentCategoriesList.Shield ? weaponItem2.PhysicalEvade.HasValue ? weaponItem2.PhysicalEvade.Value.ToString("D3") : "00" : "00" : "00", ShieldMagicalEvade = weaponItem2 != null ? weaponItem2.ItemCategory.EquipmentCategoryID == (int)EquipmentCategoriesList.Shield ? weaponItem2.MagicalEvade.HasValue ? weaponItem2.MagicalEvade.Value.ToString("D3") : "00" : "00" : "00", PhysicalAttackPower = weaponItem2 != null?weaponItem2.PhysicalAttackBoost.HasValue?weaponItem2.PhysicalAttackBoost.Value.ToString("D2") : "00" : "00", MagicalAttackPower = weaponItem2 != null?weaponItem2.MagicAttackBoost.HasValue?weaponItem2.MagicAttackBoost.Value.ToString("D2") : "00" : "00", ImagePath = weaponItem2 != null ? weaponItem2.ItemCategory.EquipmentCategoryID == (int)EquipmentCategoriesList.Weapon ? @"/Content/Images/Item_Icons/Weapons/" + weaponItem2.IconFileName : @"/Content/Images/Item_Icons/Armour/" + weaponItem2.IconFileName : "", Name = weaponItem2 != null ? weaponItem2.PspName : "", }; items.Add(weaponItem2); } if (unit.HeadID != default(int)) { headItem = context.Items.Single(m => m.ItemID == unit.HeadID); unit.Head = new ItemOverviewViewModel { HPBonus = headItem.HPBonus ?? 0, MPBonus = headItem.MPBonus ?? 0, PhysicalAttackPower = headItem.PhysicalAttackBoost.HasValue ? headItem.PhysicalAttackBoost.Value.ToString("D2") : "00", MagicalAttackPower = headItem.MagicAttackBoost.HasValue ? headItem.MagicAttackBoost.Value.ToString("D2") : "00", SpeedBonus = headItem.SpeedBoost ?? 0, ImagePath = @"/Content/Images/Item_Icons/Armour/" + headItem.IconFileName, Name = headItem.PspName, }; items.Add(headItem); } if (unit.BodyID != default(int)) { bodyItem = context.Items.Single(m => m.ItemID == unit.BodyID); unit.Body = new ItemOverviewViewModel { HPBonus = bodyItem.HPBonus ?? 0, MPBonus = bodyItem.MPBonus ?? 0, PhysicalAttackPower = bodyItem.PhysicalAttackBoost.HasValue ? bodyItem.PhysicalAttackBoost.Value.ToString("D2") : "00", MagicalAttackPower = bodyItem.MagicAttackBoost.HasValue ? bodyItem.MagicAttackBoost.Value.ToString("D2") : "00", SpeedBonus = bodyItem.SpeedBoost ?? 0, ImagePath = @"/Content/Images/Item_Icons/Armour/" + context.Items.Single(m => m.ItemID == unit.BodyID).IconFileName, Name = context.Items.Single(m => m.ItemID == unit.BodyID).PspName, }; items.Add(bodyItem); } if (unit.AccessoryID != default(int)) { accessoryItem = context.Items.Single(m => m.ItemID == unit.AccessoryID); unit.Accessory = new ItemOverviewViewModel { ItemCategoryID = accessoryItem.ItemCategoryID, MoveBonus = accessoryItem.MoveBoost ?? 0, JumpBonus = accessoryItem.JumpBoost ?? 0, SpeedBonus = accessoryItem.SpeedBoost ?? 0, PhysicalAttackPower = accessoryItem.PhysicalAttackBoost.HasValue ? accessoryItem.PhysicalAttackBoost.Value.ToString() : "00", MagicalAttackPower = accessoryItem.MagicAttackBoost.HasValue ? accessoryItem.MagicAttackBoost.Value.ToString() : "00", AccessoryPhysicalEvade = accessoryItem.ItemCategory.EquipmentCategoryID == (int)EquipmentCategoriesList.Accessory ? accessoryItem.PhysicalEvade.HasValue ? accessoryItem.PhysicalEvade.Value.ToString("D3") : "00" : "00", AccessoryMagicalEvade = accessoryItem.ItemCategory.EquipmentCategoryID == (int)EquipmentCategoriesList.Accessory ? accessoryItem.MagicalEvade.HasValue ? accessoryItem.MagicalEvade.Value.ToString("D3") : "00" : "00", ImagePath = @"/Content/Images/Item_Icons/Accessories/" + context.Items.Single(m => m.ItemID == unit.AccessoryID).IconFileName, Name = context.Items.Single(m => m.ItemID == unit.AccessoryID).PspName, }; items.Add(accessoryItem); } Job unitJob = context.Jobs.Single(m => m.JobID == unit.Unit.JobID); unit = AttributeCalculator.CalculateHPAndMP(headItem, bodyItem, unit, unitJob); unit = AttributeCalculator.CalculateBasicStats(weaponItem1, weaponItem2, headItem, bodyItem, accessoryItem, unit, unitJob); unit = AttributeCalculator.CalculateEvasionStats(weaponItem2, accessoryItem, unitJob, unit); unit.PrimaryAbilityJobID = unitJob.JobID; unit.PrimaryAbilityName = unitJob.AbilitySetPspName; } unit.Unit.AttributeDigits = new UnitOverviewHpMpViewModel { HpDigits = unit.Unit.MaxHP.ToString().ToCharArray(), MpDigits = unit.Unit.MaxMP.ToString().ToCharArray(), ExperienceDigits = unit.Unit.Experience < 10 ? ("0" + unit.Unit.Experience.ToString()).ToCharArray() : unit.Unit.Experience.ToString().ToCharArray(), LevelDigits = unit.Unit.Level < 10 ? ("0" + unit.Unit.Level.ToString()).ToCharArray() : unit.Unit.Level.ToString().ToCharArray(), PositionDigits = unit.Unit.Position < 10 ? ("0" + unit.Unit.Position.ToString()).ToCharArray() : unit.Unit.Position.ToString().ToCharArray() }; unit = AttributeCalculator.CalculateResistancesAndImmunities(items, unit); return(Json(new { View = RenderPartialViewToString("~/Views/Home/_UnitStatDetailsPartial.cshtml", unit), Data = unit })); }
public ActionResult PopulateNewUnitData(int jobID, int gender, int position) { UnitDetailsViewModel unit; Item weaponItem1 = null, weaponItem2 = null, headItem = null, bodyItem = null; Random r = new Random(); using (FFTContext context = new FFTContext()) { Job unitJob = context.Jobs.Single(m => m.JobID == jobID); unit = new UnitDetailsViewModel { Unit = new UnitOverviewViewModel { UnitName = context.UnitNames.Where(m => m.Gender == gender).OrderBy(m => Guid.NewGuid()).First().Name } }; unit.Unit.JobID = jobID; unit.Unit.JobName = Enum.GetName(typeof(Jobs), jobID); unit.Unit.Gender = gender; unit.Unit.GenderName = Enum.GetName(typeof(Gender), gender); unit.Unit.Position = position; unit.Unit.Level = 1; unit.Unit.Experience = r.Next(0, 99); unit.Unit.Brave = r.Next(40, 70); unit.Unit.Faith = r.Next(40, 70); unit.RawHP = gender == 0 ? r.Next(491520, 524287) : gender == 1 ? r.Next(458752, 491519) : r.Next(573440, 622591); unit.RawMP = gender == 0 ? r.Next(229376, 245759) : gender == 1 ? r.Next(245760, 262143) : r.Next(98304, 147455); unit.RawPhysicalAttack = gender == 0 ? 81920 : gender == 1 ? 65536 : r.Next(81920, 98303); unit.RawMagicalAttack = gender == 0 ? 65536 : gender == 1 ? 81920 : r.Next(81920, 98303); unit.RawSpeed = gender == 0 ? 98304 : gender == 1 ? 98304 : 81920; List <ItemCategoryDTO> jobItems = context.JobItems.Where(m => m.JobID == unit.Unit.JobID).Select(m => new ItemCategoryDTO { EquipmentCategoryID = m.ItemCategory.EquipmentCategoryID, ItemCategoryID = m.ItemCategoryID }).ToList(); if (jobItems.Any(m => m.EquipmentCategoryID == (int)EquipmentCategoriesList.Weapon)) { int randomWeaponID = jobItems.FirstOrDefault(m => m.EquipmentCategoryID == (int)EquipmentCategoriesList.Weapon).ItemCategoryID; weaponItem1 = jobItems.Any(m => m.EquipmentCategoryID == (int)EquipmentCategoriesList.Weapon) ? context.Items.FirstOrDefault(m => m.ItemCategoryID == randomWeaponID && m.IsStartingItem) : null; unit.WeaponID = weaponItem1 != null ? weaponItem1.ItemID : 0; unit.ShieldID = jobID == (int)Jobs.Ninja ? unit.WeaponID : 0; } if (jobItems.Any(m => m.EquipmentCategoryID == (int)EquipmentCategoriesList.Shield)) { int randomShieldID = jobItems.FirstOrDefault(m => m.EquipmentCategoryID == (int)EquipmentCategoriesList.Shield).ItemCategoryID; weaponItem2 = jobItems.Any(m => m.EquipmentCategoryID == (int)EquipmentCategoriesList.Shield) ? context.Items.FirstOrDefault(m => m.ItemCategoryID == randomShieldID && m.IsStartingItem) : null; unit.ShieldID = weaponItem2 != null ? weaponItem2.ItemID : 0; } if (jobItems.Any(m => m.EquipmentCategoryID == (int)EquipmentCategoriesList.Helmet)) { int randomHeadID = jobItems.FirstOrDefault(m => m.EquipmentCategoryID == (int)EquipmentCategoriesList.Helmet).ItemCategoryID; headItem = jobItems.Any(m => m.EquipmentCategoryID == (int)EquipmentCategoriesList.Helmet) ? context.Items.Where(c => c.ItemCategoryID == randomHeadID) .FirstOrDefault(m => m.IsStartingItem) : null; unit.HeadID = headItem != null ? headItem.ItemID : 0; } if (jobItems.Any(m => m.EquipmentCategoryID == (int)EquipmentCategoriesList.Armor)) { int randomBodyID = jobItems.FirstOrDefault(m => m.EquipmentCategoryID == (int)EquipmentCategoriesList.Armor).ItemCategoryID; bodyItem = jobItems.Any(m => m.EquipmentCategoryID == (int)EquipmentCategoriesList.Armor) ? context.Items.FirstOrDefault(m => m.ItemCategoryID == randomBodyID && m.IsStartingItem) : null; unit.BodyID = bodyItem != null ? bodyItem.ItemID : 0; } unit.Resistances = new UnitResistAndImmunityViewModel(); unit = AttributeCalculator.CalculateHPAndMP(headItem, bodyItem, unit, unitJob); unit = AttributeCalculator.CalculateBasicStats(weaponItem1, weaponItem2, headItem, bodyItem, null, unit, unitJob); unit = AttributeCalculator.CalculateEvasionStats(weaponItem2, null, unitJob, unit); unit = AttributeCalculator.CalculateResistancesAndImmunities(new List <Item> { weaponItem1, weaponItem2, headItem, bodyItem }, unit); unit.PrimaryAbilityJobID = unit.Unit.JobID; unit.PrimaryAbilityName = unitJob.AbilitySetPspName; } return(Json(unit)); }