public async Task AddUnitDataAsync(UnitDetailsViewModel unit) { List <UnitDetailsViewModel> units = await GetUnitDataAsync(); units.Add(unit); await SetUnitDataAsync(units); }
public ActionResult ShowUnitContent(int unitId) { if (unitId < 1) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } UnitDetailsViewModel viewModel = this.service.GetUnitPreview(unitId); return(this.PartialView("_ShowUnitContent", viewModel)); }
public ActionResult UnitPreview(int id) { if (id < 1) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } UnitDetailsViewModel viewModel = this.service.GetUnitDetailsViewModel(id); return(this.View(viewModel)); }
public UnitDetailsViewModel GetUnitPreview(int unitId) { Unit unit = this.Context.Units.Find(unitId); if (unit == null) { throw new ArgumentNullException(nameof(unitId), "There is no Unit with such Id."); } UnitDetailsViewModel viewModel = Mapper.Instance .Map <Unit, UnitDetailsViewModel>(unit); return(viewModel); }
// GET: UniversityUsers/Details/5 public async Task <IActionResult> Details(int?id) { if (id == null) { return(NotFound()); } var universityUser = await _context.UniversityUsers .FirstOrDefaultAsync(m => m.UniversityId == id); if (universityUser == null) { return(NotFound()); } var registrations = await _context.Registrations.Where(r => r.StudentId == id).ToListAsync(); var studentDashboardVM = new StudentDashboardViewModel(); studentDashboardVM.UniversityUser = universityUser; studentDashboardVM.BusyTimes = StudentAvailability.GetStudentsBusyTimes(id ?? 1, _context); studentDashboardVM.WorkDays = _context.WorkDays.ToList(); foreach (var registration in registrations) { var groupMembership = await _context.GroupMemberships.Where(gm => gm.StudentId == id && gm.UnitId == registration.UnitId).ToListAsync(); int?groupId = groupMembership.Count > 0 ? groupMembership.FirstOrDefault().GroupId: null; var group = groupId != null ? await _context.Groups.FindAsync(groupId):null; var allGroupMembers = groupId != null ? await _context.GroupMemberships.Where(gm => gm.GroupId == groupId).ToListAsync() : null; var unit = await _context.Units.FindAsync(registration.UnitId); //create the unit details VM var unitDetailsVM = new UnitDetailsViewModel(); unitDetailsVM.UnitId = registration.UnitId; unitDetailsVM.UnitName = unit.Name; unitDetailsVM.GroupId = group != null ? group.GroupId : 0; unitDetailsVM.GroupName = group != null ? group.Name: String.Empty; unitDetailsVM.OwnerId = group != null ? group.OwnerId: 0; unitDetailsVM.GroupMemberships = allGroupMembers; //add to students studentDashboardVM.UnitDetails.Add(unitDetailsVM); } return(View(studentDashboardVM)); }
[HttpPost] //post method public async Task <IActionResult> AddUnit([Bind("Id, UnitCode, UnitName, CourseId, UniversityId ")] UnitDetailsViewModel unit) { if (ModelState.IsValid) { var newUnit = new UnitDetailsModel() { Id = unit.Id, UnitName = unit.UnitName, UnitCode = unit.UnitCode, Course = _db.Course.Find(unit.UniversityId), University = _db.University.Find(unit.UniversityId) }; _db.Add(newUnit); //add data to University table await _db.SaveChangesAsync(); //wait for database response return(RedirectToAction(nameof(UnitManagement))); // redirect to index } return(View(unit)); }
public UnitDetailsViewModel GetUnitDetailsViewModel(int id) { Unit unit = this.Context.Units.Find(id); if (unit == null) { throw new ArgumentNullException(nameof(id), "There is no Unit with such Id."); } UnitDetailsViewModel viewModel = Mapper.Instance.Map <Unit, UnitDetailsViewModel>(unit); if (unit.CourseId != null) { viewModel.CourseName = unit.Course.Title; } else { viewModel.CourseName = "Unassigned"; } return(viewModel); }
public static UnitDetailsViewModel CalculateResistancesAndImmunities(List <Item> characterItems, UnitDetailsViewModel unit) { Dictionary <string, int> resistLevels = elementSVGLocations.ToDictionary(m => m.Key, m => 0); unit.Resistances = new UnitResistAndImmunityViewModel(); foreach (Item item in characterItems) { resistLevels["Fire"] += (int)(item?.ElementAbsorbed?.Contains("Fire") == true ? ResistLevel.Absorbed : item?.ElementNegated?.Contains("Fire") == true ? ResistLevel.Negated : item?.ElementHalved?.Contains("Fire") == true ? ResistLevel.Halved : item?.ElementWeakness?.Contains("Fire") == true ? ResistLevel.Weak : ResistLevel.Normal); resistLevels["Ice"] += (int)(item?.ElementAbsorbed?.Contains("Ice") == true ? ResistLevel.Absorbed : item?.ElementNegated?.Contains("Ice") == true ? ResistLevel.Negated : item?.ElementHalved?.Contains("Ice") == true ? ResistLevel.Halved : item?.ElementWeakness?.Contains("Ice") == true ? ResistLevel.Weak : ResistLevel.Normal); resistLevels["Lightning"] += (int)(item?.ElementAbsorbed?.Contains("Lightning") == true ? ResistLevel.Absorbed : item?.ElementNegated?.Contains("Lightning") == true ? ResistLevel.Negated : item?.ElementHalved?.Contains("Lightning") == true ? ResistLevel.Halved : item?.ElementWeakness?.Contains("Lightning") == true ? ResistLevel.Weak : ResistLevel.Normal); resistLevels["Water"] += (int)(item?.ElementAbsorbed?.Contains("Water") == true ? ResistLevel.Absorbed : item?.ElementNegated?.Contains("Water") == true ? ResistLevel.Negated : item?.ElementHalved?.Contains("Water") == true ? ResistLevel.Halved : item?.ElementWeakness?.Contains("Water") == true ? ResistLevel.Weak : ResistLevel.Normal); resistLevels["Wind"] += (int)(item?.ElementAbsorbed?.Contains("Wind") == true ? ResistLevel.Absorbed : item?.ElementNegated?.Contains("Wind") == true ? ResistLevel.Negated : item?.ElementHalved?.Contains("Wind") == true ? ResistLevel.Halved : item?.ElementWeakness?.Contains("Wind") == true ? ResistLevel.Weak : ResistLevel.Normal); resistLevels["Earth"] += (int)(item?.ElementAbsorbed?.Contains("Earth") == true ? ResistLevel.Absorbed : item?.ElementNegated?.Contains("Earth") == true ? ResistLevel.Negated : item?.ElementHalved?.Contains("Earth") == true ? ResistLevel.Halved : item?.ElementWeakness?.Contains("Earth") == true ? ResistLevel.Weak : ResistLevel.Normal); resistLevels["Holy"] += (int)(item?.ElementAbsorbed?.Contains("Holy") == true ? ResistLevel.Absorbed : item?.ElementNegated?.Contains("Holy") == true ? ResistLevel.Negated : item?.ElementHalved?.Contains("Holy") == true ? ResistLevel.Halved : item?.ElementWeakness?.Contains("Holy") == true ? ResistLevel.Weak : ResistLevel.Normal); resistLevels["Dark"] += (int)(item?.ElementAbsorbed?.Contains("Dark") == true ? ResistLevel.Absorbed : item?.ElementNegated?.Contains("Dark") == true ? ResistLevel.Negated : item?.ElementHalved?.Contains("Dark") == true ? ResistLevel.Halved : item?.ElementWeakness?.Contains("Dark") == true ? ResistLevel.Weak : ResistLevel.Normal); unit.Resistances.PhysicalResist = "Normal"; unit.Resistances.MagicalResist = "Normal"; unit.Resistances.IsBerserkImmune = !unit.Resistances.IsBerserkImmune ? item?.ImmuneStatusEffect?.Contains("Berserk") == true ? true : false : true; unit.Resistances.IsBlindImmune = !unit.Resistances.IsBlindImmune ? item?.ImmuneStatusEffect?.Contains("Blind") == true ? true : false : true; unit.Resistances.IsCharmImmune = !unit.Resistances.IsCharmImmune ? item?.ImmuneStatusEffect?.Contains("Charm") == true ? true : false : true; unit.Resistances.IsConfusedImmune = !unit.Resistances.IsConfusedImmune ? item?.ImmuneStatusEffect?.Contains("Confused") == true ? true : false : true; unit.Resistances.IsDontActImmune = !unit.Resistances.IsDontActImmune ? item?.ImmuneStatusEffect?.Contains("Disable") == true ? true : false : true; unit.Resistances.IsDontMoveImmune = !unit.Resistances.IsDontMoveImmune ? item?.ImmuneStatusEffect?.Contains("Immobilize") == true ? true : false : true; unit.Resistances.IsDoomImmune = !unit.Resistances.IsDoomImmune ? item?.ImmuneStatusEffect?.Contains("Doom") == true ? true : false : true; unit.Resistances.IsKOImmune = !unit.Resistances.IsKOImmune ? item?.ImmuneStatusEffect?.Contains("KO") == true ? true : false : true; unit.Resistances.IsPoisonImmune = !unit.Resistances.IsPoisonImmune ? item?.ImmuneStatusEffect?.Contains("Poison") == true ? true : false : true; unit.Resistances.IsSilenceImmune = !unit.Resistances.IsSilenceImmune ? item?.ImmuneStatusEffect?.Contains("Silence") == true ? true : false : true; unit.Resistances.IsSleepImmune = !unit.Resistances.IsSleepImmune ? item?.ImmuneStatusEffect?.Contains("Sleep") == true ? true : false : true; unit.Resistances.IsSlowImmune = !unit.Resistances.IsSlowImmune ? item?.ImmuneStatusEffect?.Contains("Slow") == true ? true : false : true; unit.Resistances.IsStoneImmune = !unit.Resistances.IsStoneImmune ? item?.ImmuneStatusEffect?.Contains("Stone") == true ? true : false : true; unit.Resistances.IsStopImmune = !unit.Resistances.IsStopImmune ? item?.ImmuneStatusEffect?.Contains("Stop") == true ? true : false : true; unit.Resistances.IsToadImmune = !unit.Resistances.IsToadImmune ? item?.ImmuneStatusEffect?.Contains("Toad") == true ? true : false : true; unit.Resistances.IsTraitorImmune = !unit.Resistances.IsTraitorImmune ? item?.ImmuneStatusEffect?.Contains("Traitor") == true ? true : false : true; unit.Resistances.IsUndeadImmune = !unit.Resistances.IsUndeadImmune ? item?.ImmuneStatusEffect?.Contains("Undead") == true ? true : false : true; unit.Resistances.IsVampireImmune = !unit.Resistances.IsVampireImmune ? item?.ImmuneStatusEffect?.Contains("Vampire") == true ? true : false : true; } unit.Resistances.FireResist = UnitResistAndImmunityViewModel.resistLevelDescriptions[(ResistLevel)resistLevels["Fire"]]; unit.Resistances.IceResist = UnitResistAndImmunityViewModel.resistLevelDescriptions[(ResistLevel)resistLevels["Ice"]]; unit.Resistances.LightningResist = UnitResistAndImmunityViewModel.resistLevelDescriptions[(ResistLevel)resistLevels["Lightning"]]; unit.Resistances.WaterResist = UnitResistAndImmunityViewModel.resistLevelDescriptions[(ResistLevel)resistLevels["Water"]]; unit.Resistances.WindResist = UnitResistAndImmunityViewModel.resistLevelDescriptions[(ResistLevel)resistLevels["Wind"]]; unit.Resistances.EarthResist = UnitResistAndImmunityViewModel.resistLevelDescriptions[(ResistLevel)resistLevels["Earth"]]; unit.Resistances.HolyResist = UnitResistAndImmunityViewModel.resistLevelDescriptions[(ResistLevel)resistLevels["Holy"]]; unit.Resistances.DarkResist = UnitResistAndImmunityViewModel.resistLevelDescriptions[(ResistLevel)resistLevels["Dark"]]; return(unit); }
public static UnitDetailsViewModel CalculateEvasionStats(Item shieldItem, Item accessoryItem, Job unitJob, UnitDetailsViewModel unit) { unit.PhysicalCharacterEvade = unitJob.BaseCombatEvasion.ToString("00"); unit.MagicalCharacterEvade = unitJob.BaseCombatEvasion.ToString("00"); unit.PhysicalShieldEvade = (shieldItem != null ? shieldItem.PhysicalEvade ?? 0 : 0).ToString("00"); unit.MagicalShieldEvade = (shieldItem != null ? shieldItem.MagicalEvade ?? 0 : 0).ToString("00"); unit.PhysicalAccessoryEvade = (accessoryItem != null ? accessoryItem.PhysicalEvade ?? 0 : 0).ToString("00"); unit.MagicalAccessoryEvade = (accessoryItem != null ? accessoryItem.MagicalEvade ?? 0 : 0).ToString("00"); return(unit); }
public static UnitDetailsViewModel CalculateBasicStats(Item weaponItem1, Item weaponItem2, Item headItem, Item bodyItem, Item accessoryItem, UnitDetailsViewModel unit, Job job) { unit.Move = (job.BaseMoveLength + (unit.Accessory != null ? unit.Accessory.MoveBonus : 0)).ToString(); unit.Jump = (job.BaseJumpHeight + (unit.Accessory != null ? unit.Accessory.JumpBonus : 0)).ToString(); unit.Speed = ((job.SpeedMulitplier * unit.RawSpeed) / UNIT_STAT_NORMALIZER).ToString(); unit.PhysicalAttackPower = (((job.PhysicalAttackMultiplier * unit.RawPhysicalAttack) / UNIT_STAT_NORMALIZER) + (weaponItem1 != null ? weaponItem1.PhysicalAttackBoost ?? 0 : 0) + (weaponItem2 != null ? weaponItem2.PhysicalAttackBoost ?? 0 : 0) + (headItem != null ? headItem.PhysicalAttackBoost ?? 0 : 0) + (bodyItem != null ? bodyItem.PhysicalAttackBoost ?? 0 : 0) + (accessoryItem != null ? accessoryItem.PhysicalAttackBoost ?? 0 : 0)).ToString("00"); unit.MagicalAttackPower = (((job.MagicalAttackMultiplier * unit.RawMagicalAttack) / UNIT_STAT_NORMALIZER) + (weaponItem1 != null ? weaponItem1.MagicAttackBoost ?? 0 : 0) + (weaponItem2 != null ? weaponItem2.MagicAttackBoost ?? 0 : 0) + (headItem != null ? headItem.MagicAttackBoost ?? 0 : 0) + (bodyItem != null ? bodyItem.MagicAttackBoost ?? 0 : 0) + (accessoryItem != null ? accessoryItem.MagicAttackBoost ?? 0 : 0)).ToString("00"); return(unit); }
public static UnitDetailsViewModel CalculateHPAndMP(Item headItem, Item bodyItem, UnitDetailsViewModel unit, Job job) { unit.Unit.MaxHP = ((job.HPMultiplier * unit.RawHP) / 1638400) + (headItem != null ? headItem.HPBonus ?? 0 : 0) + (bodyItem != null ? bodyItem.HPBonus ?? 0 : 0); unit.Unit.MaxMP = ((job.MPMultiplier * unit.RawMP) / 1638400) + (headItem != null ? headItem.MPBonus ?? 0 : 0) + (bodyItem != null ? bodyItem.MPBonus ?? 0 : 0); return(unit); }
public async Task <UnitDetailsViewModel> PopulateNewUnitDataAsync(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 = await context.Jobs.SingleAsync(m => m.JobId == JobId); int nameCount = context.UnitNames.Count(m => m.Gender == gender); unit = new UnitDetailsViewModel { Unit = new UnitOverviewViewModel { UnitName = await context.UnitNames.Where(m => m.Gender == gender).Skip(r.Next(nameCount)).Select(m => m.Name).FirstAsync() } }; unit.Unit.JobID = JobId; unit.Unit.JobName = Enum.GetName(typeof(Enums.Jobs), JobId); unit.Unit.Gender = gender; unit.Unit.GenderName = Enum.GetName(typeof(Enums.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 <ItemCategoryViewModel> jobItems = await context.JobItems.Where(m => m.JobId == unit.Unit.JobID).Select(m => new ItemCategoryViewModel { EquipmentCategoryID = m.ItemCategory.EquipmentCategoryId, ItemCategoryID = m.ItemCategoryId }).ToListAsync(); if (jobItems.Any(m => m.EquipmentCategoryID == (int)Enums.EquipmentCategoriesList.Weapon)) { int randomWeaponID = jobItems.FirstOrDefault(m => m.EquipmentCategoryID == (int)Enums.EquipmentCategoriesList.Weapon).ItemCategoryID; weaponItem1 = jobItems.Any(m => m.EquipmentCategoryID == (int)Enums.EquipmentCategoriesList.Weapon) ? context.Items.FirstOrDefault(m => m.ItemCategoryId == randomWeaponID && m.IsStartingItem) : null; unit.WeaponID = weaponItem1 != null ? weaponItem1.ItemId : 0; unit.ShieldID = JobId == (int)Enums.Jobs.Ninja ? unit.WeaponID : 0; } if (jobItems.Any(m => m.EquipmentCategoryID == (int)Enums.EquipmentCategoriesList.Shield)) { int randomShieldID = jobItems.FirstOrDefault(m => m.EquipmentCategoryID == (int)Enums.EquipmentCategoriesList.Shield).ItemCategoryID; weaponItem2 = jobItems.Any(m => m.EquipmentCategoryID == (int)Enums.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)Enums.EquipmentCategoriesList.Helmet)) { int randomHeadID = jobItems.FirstOrDefault(m => m.EquipmentCategoryID == (int)Enums.EquipmentCategoriesList.Helmet).ItemCategoryID; headItem = jobItems.Any(m => m.EquipmentCategoryID == (int)Enums.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)Enums.EquipmentCategoriesList.Armor)) { int randomBodyID = jobItems.FirstOrDefault(m => m.EquipmentCategoryID == (int)Enums.EquipmentCategoriesList.Armor).ItemCategoryID; bodyItem = jobItems.Any(m => m.EquipmentCategoryID == (int)Enums.EquipmentCategoriesList.Armor) ? context.Items.FirstOrDefault(m => m.ItemCategoryId == randomBodyID && m.IsStartingItem) : null; unit.BodyID = bodyItem != null ? bodyItem.ItemId : 0; } unit.Resistances = new UnitResistAndImmunityViewModel(); unit = AttributeCalculatorService.CalculateHPAndMP(headItem, bodyItem, unit, unitJob); unit = AttributeCalculatorService.CalculateBasicStats(weaponItem1, weaponItem2, headItem, bodyItem, null, unit, unitJob); unit = AttributeCalculatorService.CalculateEvasionStats(weaponItem2, null, unitJob, unit); unit = AttributeCalculatorService.CalculateResistancesAndImmunities(new List <Item> { weaponItem1, weaponItem2, headItem, bodyItem }, unit); unit.PrimaryAbilityJobID = unit.Unit.JobID; unit.PrimaryAbilityName = unitJob.AbilitySetPspName; } return(unit); }
public async Task <UnitDetailsViewModel> GetUnitStatsDetailDataAsync(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(Enums.Jobs), unit.Unit.JobID); unit.Unit.JobName = unit.Unit.JobName.Contains("Onion") ? "Onion Knight" : unit.Unit.JobName; unit.Unit.JobPortraitPath = String.Format("/img/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(Enums.Gender), unit.Unit.Gender); using (FFTContext context = new FFTContext()) { if (ItemId != null) { int categoryListLength = Enum.GetNames(typeof(Enums.EquipmentCategoriesList)).Length; Item selectedItem = await context.Items.SingleAsync(m => m.ItemId == ItemId); switch ((Enums.EquipmentCategoriesList)selectedItem.ItemCategory.EquipmentCategoryId) { case Enums.EquipmentCategoriesList.Weapon: unit.WeaponID = selectedItem.ItemId; break; case Enums.EquipmentCategoriesList.Shield: unit.ShieldID = selectedItem.ItemId; break; case Enums.EquipmentCategoriesList.Helmet: unit.HeadID = selectedItem.ItemId; break; case Enums.EquipmentCategoriesList.Armor: unit.BodyID = selectedItem.ItemId; break; case Enums.EquipmentCategoriesList.Accessory: unit.AccessoryID = selectedItem.ItemId; break; } } if (unit.WeaponID != default(int)) { weaponItem1 = await context.Items.SingleAsync(m => m.ItemId == unit.WeaponID); unit.WeaponRight = new ItemOverviewViewModel { WeaponPower = weaponItem1.ItemCategory.EquipmentCategoryId == (int)Enums.EquipmentCategoriesList.Weapon ? weaponItem1.AttackPower.Value.ToString("D3") : "000", WeaponHit = weaponItem1.ItemCategory.EquipmentCategoryId == (int)Enums.EquipmentCategoriesList.Weapon ? weaponItem1.HitPercentage.Value.ToString("D3") : "000", ShieldPhysicalEvade = weaponItem1.ItemCategory.EquipmentCategoryId == (int)Enums.EquipmentCategoriesList.Shield ? weaponItem1.PhysicalEvade.Value.ToString("D2") : "00", ShieldMagicalEvade = weaponItem1.ItemCategory.EquipmentCategoryId == (int)Enums.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)Enums.EquipmentCategoriesList.Weapon ? @"/img/Item_Icons/Weapons/" + weaponItem1.IconFileName : @"/img/Item_Icons/Armour/" + weaponItem1.IconFileName, Name = weaponItem1.PspName, }; items.Add(weaponItem1); } else { unit.WeaponRight = new ItemOverviewViewModel(); } if (unit.ShieldID != default && weaponItem1.ItemCategory.IsTwoHandOnly) { weaponItem2 = await context.Items.SingleAsync(m => m.ItemId == unit.ShieldID); unit.WeaponLeft = new ItemOverviewViewModel { WeaponPower = weaponItem2 != null ? weaponItem2.ItemCategory.EquipmentCategoryId == (int)Enums.EquipmentCategoriesList.Weapon ? weaponItem2.AttackPower.HasValue ? weaponItem2.AttackPower.Value.ToString("D3") : "000" : "000" : "000", WeaponHit = weaponItem2 != null ? weaponItem2.ItemCategory.EquipmentCategoryId == (int)Enums.EquipmentCategoriesList.Weapon ? weaponItem2.HitPercentage.HasValue ? weaponItem2.HitPercentage.Value.ToString("D3") : "000" : "000" : "000", ShieldPhysicalEvade = weaponItem2 != null ? weaponItem2.ItemCategory.EquipmentCategoryId == (int)Enums.EquipmentCategoriesList.Shield ? weaponItem2.PhysicalEvade.HasValue ? weaponItem2.PhysicalEvade.Value.ToString("D3") : "00" : "00" : "00", ShieldMagicalEvade = weaponItem2 != null ? weaponItem2.ItemCategory.EquipmentCategoryId == (int)Enums.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)Enums.EquipmentCategoriesList.Weapon ? @"/img/Item_Icons/Weapons/" + weaponItem2.IconFileName : @"/img/Item_Icons/Armour/" + weaponItem2.IconFileName : "", Name = weaponItem2 != null ? weaponItem2.PspName : "", }; items.Add(weaponItem2); } else { unit.WeaponLeft = new ItemOverviewViewModel(); } if (unit.HeadID != default(int)) { headItem = await context.Items.SingleAsync(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 = @"/img/Item_Icons/Armour/" + headItem.IconFileName, Name = headItem.PspName, }; items.Add(headItem); } else { unit.Head = new ItemOverviewViewModel(); } if (unit.BodyID != default(int)) { bodyItem = await context.Items.SingleAsync(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 = @"/img/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); } else { unit.Body = new ItemOverviewViewModel(); } if (unit.AccessoryID != default(int)) { accessoryItem = await context.Items.SingleAsync(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)Enums.EquipmentCategoriesList.Accessory ? accessoryItem.PhysicalEvade.HasValue ? accessoryItem.PhysicalEvade.Value.ToString("D3") : "00" : "00", AccessoryMagicalEvade = accessoryItem.ItemCategory.EquipmentCategoryId == (int)Enums.EquipmentCategoriesList.Accessory ? accessoryItem.MagicalEvade.HasValue ? accessoryItem.MagicalEvade.Value.ToString("D3") : "00" : "00", ImagePath = @"/img/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); } else { unit.Accessory = new ItemOverviewViewModel(); } Job unitJob = await context.Jobs.SingleAsync(m => m.JobId == unit.Unit.JobID); unit = AttributeCalculatorService.CalculateHPAndMP(headItem, bodyItem, unit, unitJob); unit = AttributeCalculatorService.CalculateBasicStats(weaponItem1, weaponItem2, headItem, bodyItem, accessoryItem, unit, unitJob); unit = AttributeCalculatorService.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 = AttributeCalculatorService.CalculateResistancesAndImmunities(items, unit); return(unit); }