public void Load(string name) { ContentFile file = new ContentFile(); try { var path = _game.Config.ContentManager.GetUnitStatPath(name); _logger.LogCoreInfo($"Loading {name}'s stats from path: {Path.GetFullPath(path)}!"); var text = File.ReadAllText(Path.GetFullPath(path)); file = JsonConvert.DeserializeObject <ContentFile>(text); } catch (ContentNotFoundException notfound) { _logger.LogCoreWarning($"Stats for {name} was not found: {notfound.Message}"); return; } BaseHP = file.GetFloat("Data", "BaseHP", BaseHP); BaseMP = file.GetFloat("Data", "BaseMP", BaseMP); BaseDamage = file.GetFloat("Data", "BaseDamage", BaseDamage); AttackRange = file.GetFloat("Data", "AttackRange", AttackRange); MoveSpeed = file.GetInt("Data", "MoveSpeed", MoveSpeed); Armor = file.GetFloat("Data", "Armor", Armor); SpellBlock = file.GetFloat("Data", "SpellBlock", SpellBlock); BaseStaticHPRegen = file.GetFloat("Data", "BaseStaticHPRegen", BaseStaticHPRegen); BaseStaticMPRegen = file.GetFloat("Data", "BaseStaticMPRegen", BaseStaticMPRegen); AttackDelayOffsetPercent = file.GetFloat("Data", "AttackDelayOffsetPercent", AttackDelayOffsetPercent); HPPerLevel = file.GetFloat("Data", "HPPerLevel", HPPerLevel); MPPerLevel = file.GetFloat("Data", "MPPerLevel", MPPerLevel); DamagePerLevel = file.GetFloat("Data", "DamagePerLevel", DamagePerLevel); ArmorPerLevel = file.GetFloat("Data", "ArmorPerLevel", ArmorPerLevel); SpellBlockPerLevel = file.GetFloat("Data", "SpellBlockPerLevel", SpellBlockPerLevel); HPRegenPerLevel = file.GetFloat("Data", "HPRegenPerLevel", HPRegenPerLevel); MPRegenPerLevel = file.GetFloat("Data", "MPRegenPerLevel", MPRegenPerLevel); AttackSpeedPerLevel = file.GetFloat("Data", "AttackSpeedPerLevel", AttackSpeedPerLevel); IsMelee = file.GetString("Data", "IsMelee", IsMelee ? "Yes" : "No").Equals("yes"); PathfindingCollisionRadius = file.GetFloat("Data", "PathfindingCollisionRadius", PathfindingCollisionRadius); GameplayCollisionRadius = file.GetFloat("Data", "GameplayCollisionRadius", GameplayCollisionRadius); for (int i = 0; i < 4; i++) { SpellNames[i] = file.GetString("Data", $"Spell{i + 1}", SpellNames[i]); } for (int i = 0; i < 4; i++) { SpellsUpLevels[i] = file.GetIntArray("Data", $"SpellsUpLevels{i+1}", SpellsUpLevels[i]); } MaxLevels = file.GetIntArray("Data", "MaxLevels", MaxLevels); for (int i = 0; i < 8; i++) { ExtraSpells[i] = file.GetString("Data", $"ExtraSpell{i + 1}", ExtraSpells[i]); } for (int i = 0; i < 6; i++) { Passives[i].PassiveNameStr = file.GetString("Data", $"Passive{i + 1}Name", Passives[i].PassiveNameStr); Passives[i].PassiveLuaName = file.GetString("Data", $"Passive{i + 1}LuaName", Passives[i].PassiveLuaName); Passives[i].PassiveLevels = file.GetMultiInt("Data", $"Passive{i + 1}Level", 6, -1); } }
public void Load(string name) { ContentFile file = new ContentFile(); try { var path = _game.Config.ContentManager.GetSpellDataPath(name); _logger.LogCoreInfo($"Loading spell {name} data from path: {Path.GetFullPath(path)}!"); var text = File.ReadAllText(Path.GetFullPath(path)); file = JsonConvert.DeserializeObject <ContentFile>(text); } catch (ContentNotFoundException notfound) { _logger.LogCoreWarning($"Spell data for {name} was not found."); return; } AffterEffectName = file.GetString("SpellData", "AffterEffectName", AffterEffectName); //AIEndOnly //AILifetime //AIRadius //AIRange //AISendEvent //AISpeed AlternateName = file.GetString("SpellData", "AlternateName", name); AlwaysSnapFacing = file.GetBool("SpellData", "AlwaysSnapFacing", AlwaysSnapFacing); //AmmoCountHiddenInUI AmmoRechargeTime = file.GetMultiFloat("SpellData", "AmmoRechargeTime", 6, AmmoRechargeTime[0]); AmmoUsed = file.GetMultiInt("SpellData", "AmmoUsed", 6, AmmoUsed[0]); //AnimationLeadOutName //AnimationLoopName //AnimationName //AnimationWinddownName //ApplyAttackDamage //ApplyAttackEffect //ApplyMaterialOnHitSound BelongsToAvatar = file.GetBool("SpellData", "BelongsToAvatar", BelongsToAvatar); BounceRadius = file.GetFloat("SpellData", "BounceRadius", BounceRadius); CanCastWhileDisabled = file.GetBool("SpellData", "CanCastWhileDisabled", CanCastWhileDisabled); CancelChargeOnRecastTime = file.GetFloat("SpellData", "CancelChargeOnRecastTime", CancelChargeOnRecastTime); CanMoveWhileChanneling = file.GetBool("SpellData", "CanMoveWhileChanneling", CanMoveWhileChanneling); CannotBeSuppressed = file.GetBool("SpellData", "CannotBeSuppressed", CannotBeSuppressed); CanOnlyCastWhileDead = file.GetBool("SpellData", "CanOnlyCastWhileDead", CanOnlyCastWhileDead); CanOnlyCastWhileDisabled = file.GetBool("SpellData", "CanOnlyCastWhileDisabled", CanOnlyCastWhileDisabled); CantCancelWhileChanneling = file.GetBool("SpellData", "CantCancelWhileChanneling", CantCancelWhileChanneling); CantCancelWhileWindingUp = file.GetBool("SpellData", "CantCancelWhileWindingUp", CantCancelWhileWindingUp); CantCastWhileRooted = file.GetBool("SpellData", "CantCastWhileRooted", CantCastWhileRooted); CastConeAngle = file.GetFloat("SpellData", "CastConeAngle", CastConeAngle); CastConeDistance = file.GetFloat("SpellData", "CastConeDistance", CastConeDistance); CastFrame = file.GetFloat("SpellData", "CastFrame", CastFrame); CastRadius = file.GetMultiFloat("SpellData", "CastRadius", 6, CastRadius[0]); CastRadiusSecondary = file.GetMultiFloat("SpellData", "CastRadiusSecondary", 6, CastRadiusSecondary[0]); //CastRadiusSecondaryTexture //CastRadiusTexture CastRange = file.GetMultiFloat("SpellData", "CastRange", 6, CastRange[0]); CastRangeDisplayOverride = file.GetMultiFloat("SpellData", "CastRangeDisplayOverride", 6, CastRangeDisplayOverride[0]); CastRangeGrowthDuration = file.GetMultiFloat("SpellData", "CastRangeGrowthDuration", 6, CastRangeGrowthDuration[0]); CastRangeGrowthMax = file.GetMultiFloat("SpellData", "CastRangeGrowthMax", 6, CastRangeGrowthMax[0]); //CastRangeTextureOverrideName CastRangeUseBoundingBoxes = file.GetBool("SpellData", "CastRangeUseBoundingBoxes", CastRangeUseBoundingBoxes); CastTargetAdditionalUnitsRadius = file.GetFloat("SpellData", "CastTargetAdditionalUnitsRadius", CastTargetAdditionalUnitsRadius); CastType = file.GetInt("SpellData", "CastType", CastType); ChannelDuration = file.GetMultiFloat("SpellData", "ChannelDuration", 6, ChannelDuration[0]); ChargeUpdateInterval = file.GetFloat("SpellData", "ChargeUpdateInterval", ChargeUpdateInterval); CircleMissileAngularVelocity = file.GetFloat("SpellData", "CircleMissileAngularVelocity", CircleMissileAngularVelocity); CircleMissileRadialVelocity = file.GetFloat("SpellData", "CircleMissileRadialVelocity", CircleMissileRadialVelocity); //ClientOnlyMissileTargetBoneName //Coefficient //Coefficient2 //ConsideredAsAutoAttack Cooldown = file.GetMultiFloat("SpellData", "Cooldown", 6, Cooldown[0]); //CursorChangesInGrass //CursorChangesInTerrain DeathRecapPriority = file.GetInt("SpellData", "DeathRecapPriority", DeathRecapPriority); DelayCastOffsetPercent = file.GetFloat("SpellData", "DelayCastOffsetPercent", DelayCastOffsetPercent); DelayTotalTimePercent = file.GetFloat("SpellData", "DelayTotalTimePercent", DelayTotalTimePercent); //Description //DisableCastBar //DisplayName DoesntBreakChannels = file.GetBool("SpellData", "DoesntBreakChannels", DoesntBreakChannels); DoNotNeedToFaceTarget = file.GetBool("SpellData", "DoNotNeedToFaceTarget", DoNotNeedToFaceTarget); //DrawSecondaryLineIndicator //DynamicExtended //string DynamicTooltip //EffectXLevelYAmmount Flags = file.GetInt("SpellData", "Flags", Flags); //FloatStaticsDecimalsX //FloatVarsDecimalsX HaveAfterEffect = file.GetBool("SpellData", "HaveAfterEffect", HaveAfterEffect); HaveHitBone = file.GetBool("SpellData", "HaveHitBone", HaveHitBone); HaveHitEffect = file.GetBool("SpellData", "HaveHitEffect", HaveHitEffect); HavePointEffect = file.GetBool("SpellData", "HavePointEffect", HavePointEffect); //HideRangeIndicatorWhenCasting HitBoneName = file.GetString("SpellData", "HitBoneName", HitBoneName); HitEffectName = file.GetString("SpellData", "HitEffectName", HitEffectName); HitEffectOrientType = file.GetInt("SpellData", "HitEffectOrientType", HitEffectOrientType); //HitEffectPlayerName IgnoreAnimContinueUntilCastFrame = file.GetBool("SpellData", "IgnoreAnimContinueUntilCastFrame", IgnoreAnimContinueUntilCastFrame); IgnoreRangeCheck = file.GetBool("SpellData", "IgnoreRangeCheck", IgnoreRangeCheck); //InventoryIconX IsDisabledWhileDead = file.GetBool("SpellData", "IsDisabledWhileDead", IsDisabledWhileDead); IsToggleSpell = file.GetBool("SpellData", "IsToggleSpell", IsToggleSpell); //KeywordWhenAcquired //LevelXDesc LineDragLength = file.GetFloat("SpellData", "LineDragLength", LineDragLength); LineMissileBounces = file.GetInt("SpellData", "LineMissileBounces", LineMissileBounces); LineMissileCollisionFromStartPoint = file.GetBool("SpellData", "LineMissileCollisionFromStartPoint", LineMissileCollisionFromStartPoint); LineMissileDelayDestroyAtEndSeconds = file.GetFloat("SpellData", "LineMissileDelayDestroyAtEndSeconds", LineMissileDelayDestroyAtEndSeconds); LineMissileEndsAtTargetPoint = file.GetBool("SpellData", "LineMissileEndsAtTargetPoint", LineMissileEndsAtTargetPoint); LineMissileFollowsTerrainHeight = file.GetBool("SpellData", "LineMissileFollowsTerrainHeight", LineMissileFollowsTerrainHeight); LineMissileTargetHeightAugment = file.GetFloat("SpellData", "LineMissileTargetHeightAugment", LineMissileTargetHeightAugment); LineMissileTimePulseBetweenCollisionSpellHits = file.GetFloat("SpellData", "LineMissileTimePulseBetweenCollisionSpellHits", LineMissileTimePulseBetweenCollisionSpellHits); LineMissileTrackUnits = file.GetBool("SpellData", "LineMissileTrackUnits", LineMissileTrackUnits); LineMissileUsesAccelerationForBounce = file.GetBool("SpellData", "LineMissileUsesAccelerationForBounce", LineMissileUsesAccelerationForBounce); //LineTargetingBaseTextureOverrideName //LineTargetingBaseTextureOverrideName LineWidth = file.GetFloat("SpellData", "LineWidth", LineWidth); LocationTargettingLength = file.GetMultiFloat("SpellData", "LocationTargettingLength", 6, LocationTargettingLength[0]); LocationTargettingWidth = file.GetMultiFloat("SpellData", "LocationTargettingWidth", 6, LocationTargettingWidth[0]); LockConeToPlayer = file.GetBool("SpellData", "LockConeToPlayer", LockConeToPlayer); //LookAtPolicy LuaOnMissileUpdateDistanceInterval = file.GetFloat("SpellData", "LuaOnMissileUpdateDistanceInterval", LuaOnMissileUpdateDistanceInterval); ManaCost = file.GetMultiFloat("SpellData", "ManaCost", 6, ManaCost[0]); //Map_X_EffectYLevelZAmmount MaxAmmo = file.GetMultiInt("SpellData", "MaxAmmo", 6, MaxAmmo[0]); //MaxGrowthRangeTextureName //MinimapIcon //MinimapIconDisplayFlag //MinimapIconRotation MissileSpeed = file.GetFloat("SpellData", "MissileSpeed", MissileSpeed); MissileAccel = file.GetFloat("SpellData", "MissileAccel", MissileAccel); MissileBoneName = file.GetString("SpellData", "MissileBoneName", MissileBoneName); MissileEffect = file.GetString("SpellData", "MissileEffect", MissileEffect); MissileEffectPlayer = file.GetString("SpellData", "MissileEffectPlayer", MissileEffectPlayer); MissileFixedTravelTime = file.GetFloat("SpellData", "MissileFixedTravelTime", MissileFixedTravelTime); MissileFollowsTerrainHeight = file.GetBool("SpellData", "MissileFollowsTerrainHeight", MissileFollowsTerrainHeight); MissileGravity = file.GetFloat("SpellData", "MissileGravity", MissileGravity); MissileLifetime = file.GetFloat("SpellData", "MissileLifetime", MissileLifetime); MissileMaxSpeed = file.GetFloat("SpellData", "MissileMaxSpeed", MissileSpeed); MissileMinSpeed = file.GetFloat("SpellData", "MissileMinSpeed", MissileSpeed); MissileMinTravelTime = file.GetFloat("SpellData", "MissileMinTravelTime", MissileMinTravelTime); MissilePerceptionBubbleRadius = file.GetFloat("SpellData", "MissilePerceptionBubbleRadius", MissilePerceptionBubbleRadius); MissilePerceptionBubbleRevealsStealth = file.GetBool("SpellData", "MissilePerceptionBubbleRevealsStealth", MissilePerceptionBubbleRevealsStealth); //MissileSpeed = file.GetFloat("SpellData", "MissileSpeed", MissileSpeed); MissileTargetHeightAugment = file.GetFloat("SpellData", "MissileTargetHeightAugment", MissileTargetHeightAugment); MissileUnblockable = file.GetBool("SpellData", "MissileUnblockable", MissileUnblockable); NoWinddownIfCancelled = file.GetBool("SpellData", "NoWinddownIfCancelled", NoWinddownIfCancelled); //NumSpellTargeters //OrientRadiusTextureFromPlayer //OrientRangeIndicatorToCursor //OrientRangeIndicatorToFacing OverrideCastTime = file.GetFloat("SpellData", "OverrideCastTime", OverrideCastTime); //public Vector3 ParticleStartOffset { get; set; } = new Vector3(0, 0, 0); var _ParticleStartOffset = file.GetFloatArray("SpellData", "ParticleStartOffset", new float[] { ParticleStartOffset.X, ParticleStartOffset.Y, ParticleStartOffset.Z }); ParticleStartOffset = new Vector3(_ParticleStartOffset[0], _ParticleStartOffset[1], _ParticleStartOffset[2]); //PlatformEnabled PointEffectName = file.GetString("SpellData", "PointEffectName", PointEffectName); //RangeIndicatorTextureName RequiredUnitTags = file.GetString("SpellData", "RequiredUnitTags", RequiredUnitTags); SelectionPreference = file.GetString("SpellData", "SelectionPreference", SelectionPreference); //Sound_CastName //Sound_HitName //Sound_VOEventCategory SpellCastTime = file.GetFloat("SpellData", "SpellCastTime", SpellCastTime); SpellRevealsChampion = file.GetFloat("SpellData", "SpellRevealsChampion", SpellRevealsChampion); SpellTotalTime = file.GetFloat("SpellData", "SpellTotalTime", SpellTotalTime); StartCooldown = file.GetFloat("SpellData", "StartCooldown", StartCooldown); SubjectToGlobalCooldown = file.GetBool("SpellData", "SubjectToGlobalCooldown", SubjectToGlobalCooldown); //TargeterConstrainedToRange TargettingType = file.GetInt("SpellData", "TargettingType", TargettingType); TextFlags = file.GetString("SpellData", "TextFlags", TextFlags); TriggersGlobalCooldown = file.GetBool("SpellData", "TriggersGlobalCooldown", TriggersGlobalCooldown); UpdateRotationWhenCasting = file.GetBool("SpellData", "UpdateRotationWhenCasting", UpdateRotationWhenCasting); UseAnimatorFramerate = file.GetBool("SpellData", "UseAnimatorFramerate", UseAnimatorFramerate); UseAutoattackCastTime = file.GetBool("SpellData", "UseAutoattackCastTime", UseAutoattackCastTime); UseChargeChanneling = file.GetBool("SpellData", "UseChargeChanneling", UseChargeChanneling); UseChargeTargeting = file.GetBool("SpellData", "UseChargeTargeting", UseChargeTargeting); UseGlobalLineIndicator = file.GetBool("SpellData", "UseGlobalLineIndicator", UseGlobalLineIndicator); UseMinimapTargeting = file.GetBool("SpellData", "UseMinimapTargeting", UseMinimapTargeting); }