public static void DownloadUnit(Unit unit, bool dlStatusEffects = false) { UnitParam unitParam = unit.UnitParam; JobParam job = unit.Job == null ? (JobParam)null : unit.Job.Param; ArtifactParam selectedSkin = unit.UnitData.GetSelectedSkin(-1); CharacterDB.Job characterData = DownloadUtility.GetCharacterData(unitParam, job, selectedSkin); if (characterData == null) { return; } DownloadUtility.PrepareUnitAssets(characterData, job); if (unit.Job != null) { DownloadUtility.PrepareJobAssets(unit.Job.Param); } string jobName = unit.UnitData.CurrentJob == null ? string.Empty : unit.UnitData.CurrentJob.JobID; AssetManager.PrepareAssets(AssetPath.UnitSkinIconSmall(unitParam, selectedSkin, jobName)); AssetManager.PrepareAssets(AssetPath.UnitSkinIconMedium(unitParam, selectedSkin, jobName)); AssetManager.PrepareAssets(AssetPath.UnitSkinEyeImage(unitParam, selectedSkin, jobName)); SkillData attackSkill = unit.GetAttackSkill(); if (attackSkill != null) { DownloadUtility.PrepareSkillAssets(characterData, attackSkill.SkillParam); } for (int index = unit.BattleSkills.Count - 1; index >= 0; --index) { DownloadUtility.PrepareSkillAssets(characterData, unit.BattleSkills[index].SkillParam); } for (int index = unit.BattleAbilitys.Count - 1; index >= 0; --index) { AbilityData battleAbility = unit.BattleAbilitys[index]; if (battleAbility != null && battleAbility.Param != null) { AssetManager.PrepareAssets(AssetPath.AbilityIcon(battleAbility.Param)); } } if (unit != null) { DownloadUtility.PrepareUnitVoice(unit.UnitParam); } if (dlStatusEffects) { for (int index = 0; index < BadStatusEffects.Effects.Count; ++index) { if (!string.IsNullOrEmpty(BadStatusEffects.Effects[index].AnimationName)) { DownloadUtility.PrepareUnitAnimation(characterData, BadStatusEffects.Effects[index].AnimationName, false, (JobParam)null); } } } JobData[] jobs = unit.UnitData.Jobs; int artifactSlotIndex = JobData.GetArtifactSlotIndex(ArtifactTypes.Arms); if (jobs != null) { List <ArtifactParam> artifacts = MonoSingleton <GameManager> .GetInstanceDirect().MasterParam.Artifacts; foreach (JobData jobData in jobs) { if (jobData != null) { // ISSUE: object of a compiler-generated type is created // ISSUE: reference to a compiler-generated method ArtifactParam artifalct = artifacts.Find(new Predicate <ArtifactParam>(new DownloadUtility.\u003CDownloadUnit\u003Ec__AnonStorey1F2() { uniqId = (string)null, uniqId = jobData.ArtifactDatas[artifactSlotIndex] == null ? jobData.Param.artifact : jobData.ArtifactDatas[artifactSlotIndex].ArtifactParam.iname }.\u003C\u003Em__1B8)); if (artifalct != null) { DownloadUtility.DownloadArtifact(artifalct); } } } } else { if (unit.Job == null) { return; } DownloadUtility.DownloadArtifact(MonoSingleton <GameManager> .GetInstanceDirect().MasterParam.GetArtifactParam(unit.Job.Param.artifact)); } }