From 64adccba503765c99ba667dc46cfd3060e922972 Mon Sep 17 00:00:00 2001 From: Blitz54 Date: Mon, 7 Apr 2025 13:27:30 -0500 Subject: [PATCH 1/4] Skeletal Warriors for Sceptres --- src/Data/Gems.lua | 21 ++++++ src/Data/Minions.lua | 28 ++++++++ src/Data/Skills/act_int.lua | 128 +++++++++++++++++++++++++++++++++ src/Export/Minions/Minions.txt | 4 ++ src/Export/Skills/act_int.txt | 13 ++++ src/Modules/CalcDefence.lua | 9 ++- 6 files changed, 201 insertions(+), 2 deletions(-) diff --git a/src/Data/Gems.lua b/src/Data/Gems.lua index b21ede3d64..8b1c3322f6 100644 --- a/src/Data/Gems.lua +++ b/src/Data/Gems.lua @@ -5431,6 +5431,27 @@ return { Tier = 3, naturalMaxLevel = 1, }, + ["Metadata/Items/Gems/SkillGemSkeletalWarrior"] = { + name = "Skeletal Warrior", + baseTypeName = "Skeletal Warrior Minion", + gameId = "Metadata/Items/Gems/SkillGemSkeletalWarriorWeaponSkill", + variantId = "SkeletalWarrior", + grantedEffectId = "SummonSkeletalWarriorsPlayer", + tags = { + intelligence = true, + grants_active_skill = true, + minion = true, + persistent = true, + physical = true, + }, + gemType = "Minion", + tagString = "Persistent, Physical", + reqStr = 0, + reqDex = 0, + reqInt = 100, + Tier = 0, + naturalMaxLevel = 20, + }, ["Metadata/Items/Gems/SkillGemMinionInstabilitySupport"] = { name = "Minion Instability", gameId = "Metadata/Items/Gem/SupportGemMinionInstability", diff --git a/src/Data/Minions.lua b/src/Data/Minions.lua index 79f3f14a6e..e644560808 100644 --- a/src/Data/Minions.lua +++ b/src/Data/Minions.lua @@ -236,6 +236,34 @@ minions["RaisedSkeletonReaver"] = { }, } +minions["RaisedSkeletonWarriors"] = { + name = "Skeletal Warrior", + monsterTags = { "1HSword_onhit_audio", "bone_armour", "bones", "fast_movement", "has_one_hand_sword", "has_one_handed_melee", "medium_height", "melee", "not_dex", "not_int", "physical_affinity", "skeleton", "slashing_weapon", "undead", }, + life = 0.88, + baseDamageIgnoresAttackSpeed = true, + armour = 0.5, + fireResist = 0, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 0.7, + damageSpread = 0.3, + attackTime = 1, + attackRange = 12, + accuracy = 1, + weaponType1 = "One Handed Sword", + weaponType2 = "Shield", + limit = "ActiveSkeletonLimit", + skillList = { + "MinionMeleeStep", + }, + modList = { + -- MonsterNoDropsOrExperience [monster_no_drops_or_experience = 1] + mod("BlockChance", "BASE", 30, 0, 0), -- SkeletonWarriorPlayerMinionBlockChance [monster_base_block_% = 30] + -- SkeletonWarriorPlayerMinionBlockChance [additional_maximum_block_% = 0] + }, +} + minions["SummonedHellhound"] = { name = "Infernal Hound", monsterTags = { "beast", "demon", "medium_movement", "not_int", "red_blood", "Unarmed_onhit_audio", }, diff --git a/src/Data/Skills/act_int.lua b/src/Data/Skills/act_int.lua index f42ac40e6f..7c6a5f7cde 100644 --- a/src/Data/Skills/act_int.lua +++ b/src/Data/Skills/act_int.lua @@ -15122,6 +15122,134 @@ skills["SummonSkeletalStormMagesPlayer"] = { }, } } +skills["SummonSkeletalWarriorsPlayer"] = { + name = "Skeletal Warrior Minion", + baseTypeName = "Skeletal Warrior Minion", + fromItem = true, + minionList = { + "RaisedSkeletonWarriors", + }, + color = 3, + description = "Activate to summon Reviving Skeletal Warriors.", + skillTypes = { [SkillType.Minion] = true, [SkillType.MinionsCanExplode] = true, [SkillType.CreatesMinion] = true, [SkillType.CreatesUndeadMinion] = true, [SkillType.CreatesSkeletonMinion] = true, [SkillType.HasReservation] = true, [SkillType.Persistent] = true, [SkillType.MultipleReservation] = true, [SkillType.Physical] = true, }, + minionSkillTypes = { [SkillType.Attack] = true, [SkillType.Melee] = true, [SkillType.MeleeSingleTarget] = true, }, + castTime = 0, + qualityStats = { + { "active_skill_minion_life_+%_final", 1 }, + }, + levels = { + [1] = { spiritReservationFlat = 60, levelRequirement = 0, }, + [2] = { spiritReservationFlat = 44, levelRequirement = 3, }, + [3] = { spiritReservationFlat = 33, levelRequirement = 6, }, + [4] = { spiritReservationFlat = 27, levelRequirement = 10, }, + [5] = { spiritReservationFlat = 25, levelRequirement = 14, }, + [6] = { spiritReservationFlat = 25, levelRequirement = 18, }, + [7] = { spiritReservationFlat = 23, levelRequirement = 22, }, + [8] = { spiritReservationFlat = 23, levelRequirement = 26, }, + [9] = { spiritReservationFlat = 23, levelRequirement = 31, }, + [10] = { spiritReservationFlat = 22, levelRequirement = 36, }, + [11] = { spiritReservationFlat = 22, levelRequirement = 41, }, + [12] = { spiritReservationFlat = 22, levelRequirement = 46, }, + [13] = { spiritReservationFlat = 21, levelRequirement = 52, }, + [14] = { spiritReservationFlat = 21, levelRequirement = 58, }, + [15] = { spiritReservationFlat = 21, levelRequirement = 64, }, + [16] = { spiritReservationFlat = 21, levelRequirement = 66, }, + [17] = { spiritReservationFlat = 20, levelRequirement = 72, }, + [18] = { spiritReservationFlat = 20, levelRequirement = 78, }, + [19] = { spiritReservationFlat = 20, levelRequirement = 84, }, + [20] = { spiritReservationFlat = 20, levelRequirement = 90, }, + [21] = { spiritReservationFlat = 19, levelRequirement = 90, }, + [22] = { spiritReservationFlat = 19, levelRequirement = 90, }, + [23] = { spiritReservationFlat = 19, levelRequirement = 90, }, + [24] = { spiritReservationFlat = 19, levelRequirement = 90, }, + [25] = { spiritReservationFlat = 19, levelRequirement = 90, }, + [26] = { spiritReservationFlat = 18, levelRequirement = 90, }, + [27] = { spiritReservationFlat = 18, levelRequirement = 90, }, + [28] = { spiritReservationFlat = 18, levelRequirement = 90, }, + [29] = { spiritReservationFlat = 18, levelRequirement = 90, }, + [30] = { spiritReservationFlat = 18, levelRequirement = 90, }, + [31] = { spiritReservationFlat = 17, levelRequirement = 90, }, + [32] = { spiritReservationFlat = 17, levelRequirement = 90, }, + [33] = { spiritReservationFlat = 17, levelRequirement = 90, }, + [34] = { spiritReservationFlat = 17, levelRequirement = 90, }, + [35] = { spiritReservationFlat = 17, levelRequirement = 90, }, + [36] = { spiritReservationFlat = 16, levelRequirement = 90, }, + [37] = { spiritReservationFlat = 16, levelRequirement = 90, }, + [38] = { spiritReservationFlat = 16, levelRequirement = 90, }, + [39] = { spiritReservationFlat = 16, levelRequirement = 90, }, + [40] = { spiritReservationFlat = 16, levelRequirement = 90, }, + }, + statSets = { + [1] = { + label = "Minion Info", + baseEffectiveness = 0, + incrementalEffectiveness = 0.092720001935959, + statDescriptionScope = "skill_stat_descriptions", + statMap = { + ["first_X_minions_have_0_base_spirit_reservation"] = { + -- Display only, done in CalcDefence.lua + }, + }, + baseFlags = { + spell = true, + minion = true, + permanentMinion = true, + }, + constantStats = { + { "display_minion_monster_type", 2 }, + { "minion_base_resummon_time_ms", 12000 }, + { "first_X_minions_have_0_base_spirit_reservation", 2 }, + { "skill_desired_initial_amount", 2 }, + }, + stats = { + "is_resummoning_minion", + "display_statset_no_hit_damage", + }, + levels = { + [1] = { actorLevel = 1, }, + [2] = { actorLevel = 3.4519999027252, }, + [3] = { actorLevel = 6.7670001983643, }, + [4] = { actorLevel = 10.307999610901, }, + [5] = { actorLevel = 14.074999809265, }, + [6] = { actorLevel = 18.068000793457, }, + [7] = { actorLevel = 22.287000656128, }, + [8] = { actorLevel = 26.732000350952, }, + [9] = { actorLevel = 31.40299987793, }, + [10] = { actorLevel = 36.299999237061, }, + [11] = { actorLevel = 41.423000335693, }, + [12] = { actorLevel = 46.771999359131, }, + [13] = { actorLevel = 52.34700012207, }, + [14] = { actorLevel = 58.147998809814, }, + [15] = { actorLevel = 64.175003051758, }, + [16] = { actorLevel = 70.428001403809, }, + [17] = { actorLevel = 76.906997680664, }, + [18] = { actorLevel = 83.611999511719, }, + [19] = { actorLevel = 90.542999267578, }, + [20] = { actorLevel = 97.699996948242, }, + [21] = { actorLevel = 105.08300018311, }, + [22] = { actorLevel = 112.69200134277, }, + [23] = { actorLevel = 120.52700042725, }, + [24] = { actorLevel = 128.58799743652, }, + [25] = { actorLevel = 136.875, }, + [26] = { actorLevel = 145.38800048828, }, + [27] = { actorLevel = 154.12699890137, }, + [28] = { actorLevel = 163.09199523926, }, + [29] = { actorLevel = 172.28300476074, }, + [30] = { actorLevel = 181.69999694824, }, + [31] = { actorLevel = 191.34300231934, }, + [32] = { actorLevel = 201.21200561523, }, + [33] = { actorLevel = 211.30700683594, }, + [34] = { actorLevel = 221.62800598145, }, + [35] = { actorLevel = 232.17500305176, }, + [36] = { actorLevel = 242.94799804688, }, + [37] = { actorLevel = 253.94700622559, }, + [38] = { actorLevel = 265.17199707031, }, + [39] = { actorLevel = 276.62298583984, }, + [40] = { actorLevel = 288.29998779297, }, + }, + }, + } +} skills["SolarOrbPlayer"] = { name = "Solar Orb", baseTypeName = "Solar Orb", diff --git a/src/Export/Minions/Minions.txt b/src/Export/Minions/Minions.txt index 055cd51a0f..6f7a7108d3 100644 --- a/src/Export/Minions/Minions.txt +++ b/src/Export/Minions/Minions.txt @@ -41,6 +41,10 @@ local minions, mod = ... #limit ActiveSkeletonLimit #emit +#monster Metadata/Monsters/Skeletons/PlayerSummoned/SkeletonWarriorPlayerSummoned RaisedSkeletonWarriors +#limit ActiveSkeletonLimit +#emit + #monster Metadata/Monsters/Hellhound/HellhoundPlayerSummoned SummonedHellhound #emit diff --git a/src/Export/Skills/act_int.txt b/src/Export/Skills/act_int.txt index cd584ba16d..20c6084cd4 100644 --- a/src/Export/Skills/act_int.txt +++ b/src/Export/Skills/act_int.txt @@ -940,6 +940,19 @@ statMap = { #mods #skillEnd +#from item +#minionList RaisedSkeletonWarriors +#skill SummonSkeletalWarriorsPlayer +#set SummonSkeletalWarriorsPlayer +#flags spell minion permanentMinion +statMap = { + ["first_X_minions_have_0_base_spirit_reservation"] = { + -- Display only, done in CalcDefence.lua + }, +}, +#mods +#skillEnd + #skill SolarOrbPlayer #set SolarOrbPlayer #flags spell area duration diff --git a/src/Modules/CalcDefence.lua b/src/Modules/CalcDefence.lua index 02da22dfc7..1d287b0d6c 100644 --- a/src/Modules/CalcDefence.lua +++ b/src/Modules/CalcDefence.lua @@ -239,8 +239,13 @@ function calcs.doActorLifeManaSpiritReservation(actor) values.reservedPercent = values.reservedPercent * activeSkill.activeMineCount end if activeSkill.skillTypes[SkillType.MultipleReservation] then - local activeSkillCount, enabled = calcs.getActiveSkillCount(activeSkill) - values.reservedFlat = values.reservedFlat * activeSkillCount + if activeSkill.skillCfg.skillName == "Skeletal Warrior Minion" then + local activeSkillCount, enabled = calcs.getActiveSkillCount(activeSkill) + values.reservedFlat = values.reservedFlat * m_max(activeSkillCount - 2, 0) + else + local activeSkillCount, enabled = calcs.getActiveSkillCount(activeSkill) + values.reservedFlat = values.reservedFlat * activeSkillCount + end end if activeSkill.skillTypes[SkillType.IsBlasphemy] and activeSkill.activeEffect.srcInstance.supportEffect and activeSkill.activeEffect.srcInstance.supportEffect.isSupporting then From b2b4f97ed5cd9fb953dc787a71ef0edbe3bbf2da Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Tue, 8 Apr 2025 16:24:01 +1000 Subject: [PATCH 2/4] Use stat on gem instead of hard coding --- src/Data/SkillStatMap.lua | 3 +++ src/Data/Skills/act_int.lua | 5 ----- src/Export/Skills/act_int.txt | 5 ----- src/Modules/CalcDefence.lua | 10 +++------- 4 files changed, 6 insertions(+), 17 deletions(-) diff --git a/src/Data/SkillStatMap.lua b/src/Data/SkillStatMap.lua index b1357fbec3..3f973479aa 100644 --- a/src/Data/SkillStatMap.lua +++ b/src/Data/SkillStatMap.lua @@ -2221,6 +2221,9 @@ return { ["number_of_mage_skeletons_to_summon"] = { mod("MinionPerCastCount", "BASE", nil) }, +["first_X_minions_have_0_base_spirit_reservation"] = { + mod("MinionFreeSpiritCount", "BASE", nil) +}, ["minion_always_crit"] = { mod("MinionModifier", "LIST", { mod = mod("CritChance", "OVERRIDE", nil) }), value = 100, diff --git a/src/Data/Skills/act_int.lua b/src/Data/Skills/act_int.lua index 7c6a5f7cde..69dd92182c 100644 --- a/src/Data/Skills/act_int.lua +++ b/src/Data/Skills/act_int.lua @@ -15185,11 +15185,6 @@ skills["SummonSkeletalWarriorsPlayer"] = { baseEffectiveness = 0, incrementalEffectiveness = 0.092720001935959, statDescriptionScope = "skill_stat_descriptions", - statMap = { - ["first_X_minions_have_0_base_spirit_reservation"] = { - -- Display only, done in CalcDefence.lua - }, - }, baseFlags = { spell = true, minion = true, diff --git a/src/Export/Skills/act_int.txt b/src/Export/Skills/act_int.txt index 20c6084cd4..ee95673f73 100644 --- a/src/Export/Skills/act_int.txt +++ b/src/Export/Skills/act_int.txt @@ -945,11 +945,6 @@ statMap = { #skill SummonSkeletalWarriorsPlayer #set SummonSkeletalWarriorsPlayer #flags spell minion permanentMinion -statMap = { - ["first_X_minions_have_0_base_spirit_reservation"] = { - -- Display only, done in CalcDefence.lua - }, -}, #mods #skillEnd diff --git a/src/Modules/CalcDefence.lua b/src/Modules/CalcDefence.lua index 1d287b0d6c..d285868d76 100644 --- a/src/Modules/CalcDefence.lua +++ b/src/Modules/CalcDefence.lua @@ -239,13 +239,9 @@ function calcs.doActorLifeManaSpiritReservation(actor) values.reservedPercent = values.reservedPercent * activeSkill.activeMineCount end if activeSkill.skillTypes[SkillType.MultipleReservation] then - if activeSkill.skillCfg.skillName == "Skeletal Warrior Minion" then - local activeSkillCount, enabled = calcs.getActiveSkillCount(activeSkill) - values.reservedFlat = values.reservedFlat * m_max(activeSkillCount - 2, 0) - else - local activeSkillCount, enabled = calcs.getActiveSkillCount(activeSkill) - values.reservedFlat = values.reservedFlat * activeSkillCount - end + local activeSkillCount, enabled = calcs.getActiveSkillCount(activeSkill) + local minionFreeSpiritCount= skillModList:Sum("BASE", skillCfg, "MinionFreeSpiritCount") + values.reservedFlat = values.reservedFlat * m_max(activeSkillCount - minionFreeSpiritCount, 0) end if activeSkill.skillTypes[SkillType.IsBlasphemy] and activeSkill.activeEffect.srcInstance.supportEffect and activeSkill.activeEffect.srcInstance.supportEffect.isSupporting then From a2fbc3372035de17841f1459eb55db75caa4e532 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Tue, 8 Apr 2025 17:57:59 +1000 Subject: [PATCH 3/4] Prevent space time collapse --- src/Modules/CalcDefence.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Modules/CalcDefence.lua b/src/Modules/CalcDefence.lua index d285868d76..48512c984c 100644 --- a/src/Modules/CalcDefence.lua +++ b/src/Modules/CalcDefence.lua @@ -240,7 +240,7 @@ function calcs.doActorLifeManaSpiritReservation(actor) end if activeSkill.skillTypes[SkillType.MultipleReservation] then local activeSkillCount, enabled = calcs.getActiveSkillCount(activeSkill) - local minionFreeSpiritCount= skillModList:Sum("BASE", skillCfg, "MinionFreeSpiritCount") + local minionFreeSpiritCount = skillModList:Sum("BASE", skillCfg, "MinionFreeSpiritCount") values.reservedFlat = values.reservedFlat * m_max(activeSkillCount - minionFreeSpiritCount, 0) end From b0dc35dde7c1ee980e4b9f3154c2ab8df4f8438f Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Wed, 9 Apr 2025 00:31:41 +1000 Subject: [PATCH 4/4] Fix modParser not using baseItemType and fix base export --- src/Data/Bases/sceptre.lua | 20 ++++++++++---------- src/Data/ModCache.lua | 7 +++---- src/Export/Scripts/bases.lua | 5 +++-- src/Export/spec.lua | 2 +- src/Modules/ModParser.lua | 5 +++-- 5 files changed, 20 insertions(+), 19 deletions(-) diff --git a/src/Data/Bases/sceptre.lua b/src/Data/Bases/sceptre.lua index b19a2a324b..ed6946f47d 100644 --- a/src/Data/Bases/sceptre.lua +++ b/src/Data/Bases/sceptre.lua @@ -7,7 +7,7 @@ itemBases["Rattling Sceptre"] = { quality = 20, spirit = 100, tags = { default = true, onehand = true, sceptre = true, }, - implicit = "Grants Skill: Level (1-20) Skeletal Warrior", + implicit = "Grants Skill: Level (1-20) Skeletal Warrior Minion", implicitModTypes = { }, req = { }, } @@ -25,7 +25,7 @@ itemBases["Lupine Sceptre"] = { quality = 20, spirit = 100, tags = { default = true, onehand = true, sceptre = true, }, - implicit = "Grants Skill: Level (1-20) Skeletal Warrior", + implicit = "Grants Skill: Level (1-20) Skeletal Warrior Minion", implicitModTypes = { }, req = { }, } @@ -43,7 +43,7 @@ itemBases["Ochre Sceptre"] = { quality = 20, spirit = 100, tags = { default = true, onehand = true, sceptre = true, }, - implicit = "Grants Skill: Level (1-20) Skeletal Warrior", + implicit = "Grants Skill: Level (1-20) Skeletal Warrior Minion", implicitModTypes = { }, req = { }, } @@ -79,7 +79,7 @@ itemBases["Devouring Sceptre"] = { quality = 20, spirit = 100, tags = { default = true, onehand = true, sceptre = true, }, - implicit = "Grants Skill: Level (1-20) Skeletal Warrior", + implicit = "Grants Skill: Level (1-20) Skeletal Warrior Minion", implicitModTypes = { }, req = { }, } @@ -88,7 +88,7 @@ itemBases["Clasped Sceptre"] = { quality = 20, spirit = 100, tags = { default = true, onehand = true, sceptre = true, }, - implicit = "Grants Skill: Level (1-20) Skeletal Warrior", + implicit = "Grants Skill: Level (1-20) Skeletal Warrior Minion", implicitModTypes = { }, req = { }, } @@ -97,7 +97,7 @@ itemBases["Devotional Sceptre"] = { quality = 20, spirit = 100, tags = { default = true, onehand = true, sceptre = true, }, - implicit = "Grants Skill: Level (1-20) Skeletal Warrior", + implicit = "Grants Skill: Level (1-20) Skeletal Warrior Minion", implicitModTypes = { }, req = { }, } @@ -106,7 +106,7 @@ itemBases["Wrath Sceptre"] = { quality = 20, spirit = 100, tags = { default = true, onehand = true, sceptre = true, }, - implicit = "Grants Skill: Level (1-20) Skeletal Warrior", + implicit = "Grants Skill: Level (1-20) Skeletal Warrior Minion", implicitModTypes = { }, req = { }, } @@ -115,7 +115,7 @@ itemBases["Aromatic Sceptre"] = { quality = 20, spirit = 100, tags = { default = true, onehand = true, sceptre = true, }, - implicit = "Grants Skill: Level (1-20) Skeletal Warrior", + implicit = "Grants Skill: Level (1-20) Skeletal Warrior Minion", implicitModTypes = { }, req = { }, } @@ -124,7 +124,7 @@ itemBases["Pious Sceptre"] = { quality = 20, spirit = 100, tags = { default = true, onehand = true, sceptre = true, }, - implicit = "Grants Skill: Level (1-20) Skeletal Warrior", + implicit = "Grants Skill: Level (1-20) Skeletal Warrior Minion", implicitModTypes = { }, req = { }, } @@ -133,7 +133,7 @@ itemBases["Hallowed Sceptre"] = { quality = 20, spirit = 100, tags = { default = true, onehand = true, sceptre = true, }, - implicit = "Grants Skill: Level (1-20) Skeletal Warrior", + implicit = "Grants Skill: Level (1-20) Skeletal Warrior Minion", implicitModTypes = { }, req = { }, } diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index ec487beda5..109b50f62d 100755 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -525,6 +525,7 @@ c["+3 to Level of all Skeletal Frost Mage Skills"]={{[1]={flags=0,keywordFlags=0 c["+3 to Level of all Skeletal Reaver Skills"]={{[1]={flags=0,keywordFlags=0,name="GemProperty",type="LIST",value={key="level",keyOfScaledMod="value",keyword="skeletal reaver",value=3}}},nil} c["+3 to Level of all Skeletal Sniper Skills"]={{[1]={flags=0,keywordFlags=0,name="GemProperty",type="LIST",value={key="level",keyOfScaledMod="value",keyword="skeletal sniper",value=3}}},nil} c["+3 to Level of all Skeletal Storm Mage Skills"]={{[1]={flags=0,keywordFlags=0,name="GemProperty",type="LIST",value={key="level",keyOfScaledMod="value",keyword="skeletal storm mage",value=3}}},nil} +c["+3 to Level of all Skeletal Warrior Skills"]={{[1]={flags=0,keywordFlags=0,name="GemProperty",type="LIST",value={key="level",keyOfScaledMod="value",keyword="skeletal warrior",value=3}}},nil} c["+3 to Level of all Snipe Skills"]={{[1]={flags=0,keywordFlags=0,name="GemProperty",type="LIST",value={key="level",keyOfScaledMod="value",keyword="snipe",value=3}}},nil} c["+3 to Level of all Sniper's Mark Skills"]={{[1]={flags=0,keywordFlags=0,name="GemProperty",type="LIST",value={key="level",keyOfScaledMod="value",keyword="sniper's mark",value=3}}},nil} c["+3 to Level of all Solar Orb Skills"]={{[1]={flags=0,keywordFlags=0,name="GemProperty",type="LIST",value={key="level",keyOfScaledMod="value",keyword="solar orb",value=3}}},nil} @@ -3979,6 +3980,7 @@ c["Grants Skill: Level 11 Purity of Fire"]={{[1]={flags=0,keywordFlags=0,name="E c["Grants Skill: Level 11 Purity of Lightning"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=11,skillId="PurityOfLightningPlayer"}}},nil} c["Grants Skill: Level 11 Raise Shield"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=11,skillId="ShieldBlockPlayer"}}},nil} c["Grants Skill: Level 11 Sigil of Power"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=11,skillId="SigilOfPowerPlayer"}}},nil} +c["Grants Skill: Level 11 Skeletal Warrior Minion"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=11,skillId="SummonSkeletalWarriorsPlayer"}}},nil} c["Grants Skill: Level 11 Spark"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=11,skillId="SparkPlayer"}}},nil} c["Grants Skill: Level 11 Volatile Dead"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=11,skillId="VolatileDeadPlayer"}}},nil} c["Grants Skill: Level 20 Bone Blast"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=20,skillId="BoneBlastPlayer"}}},nil} @@ -4003,10 +4005,7 @@ c["Grants Skill: Level 20 Purity of Ice"]={{[1]={flags=0,keywordFlags=0,name="Ex c["Grants Skill: Level 20 Purity of Lightning"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=20,skillId="PurityOfLightningPlayer"}}},nil} c["Grants Skill: Level 20 Raise Shield"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=20,skillId="ShieldBlockPlayer"}}},nil} c["Grants Skill: Level 20 Sigil of Power"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=20,skillId="SigilOfPowerPlayer"}}},nil} -c["Grants Skill: Level 20 Skeletal Warrior"]={nil,nil} -c["Grants Skill: Level 20 Skeletal Warrior 48% increased Spirit"]={nil,nil} -c["Grants Skill: Level 20 Skeletal Warrior Minion"]={nil,nil} -c["Grants Skill: Level 20 Skeletal Warrior Minion +30 to maximum Mana"]={nil,nil} +c["Grants Skill: Level 20 Skeletal Warrior Minion"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=20,skillId="SummonSkeletalWarriorsPlayer"}}},nil} c["Grants Skill: Level 20 Spark"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=20,skillId="SparkPlayer"}}},nil} c["Grants Skill: Level 20 Volatile Dead"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=20,skillId="VolatileDeadPlayer"}}},nil} c["Grants Skill: Life Remnants"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="LifeRemnantsPlayer"}}},nil} diff --git a/src/Export/Scripts/bases.lua b/src/Export/Scripts/bases.lua index fad983563f..c1f055f360 100644 --- a/src/Export/Scripts/bases.lua +++ b/src/Export/Scripts/bases.lua @@ -141,11 +141,12 @@ directiveTable.base = function(state, args, out) end local inherentSkillType = dat("ItemInherentSkills"):GetRow("BaseItemType", baseItemType) if inherentSkillType then - local skillGem = dat("SkillGems"):GetRow("BaseItemType", inherentSkillType.Skill) + local skillGem = dat("SkillGems"):GetRow("BaseItemType", inherentSkillType.Skill[1].BaseItemType) + local gemEffect = dat("GemEffects"):GetRow("GrantedEffect", skillGem.GemEffects[1].GrantedEffect) if #inherentSkillType.Skill > 1 then print("Unhandled Instance - Inherent Skill number more than 1") end - out:write('\timplicit = "Grants Skill: Level (1-20) ', inherentSkillType.Skill[1].BaseItemType.Name, '",\n') + out:write('\timplicit = "Grants Skill: Level (1-20) ', gemEffect.GrantedEffect.ActiveSkill.DisplayName, '",\n') end out:write('\timplicitModTypes = { ') for i=1,#implicitModTypes do diff --git a/src/Export/spec.lua b/src/Export/spec.lua index 40a5f46a5f..4f77e9d9e6 100644 --- a/src/Export/spec.lua +++ b/src/Export/spec.lua @@ -7238,7 +7238,7 @@ return { list=true, name="Skill", refTo="SkillGems", - type="ShortKey", + type="Key", width=400 }, [3]={ diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 58643c9e3d..32632ac344 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -1930,7 +1930,8 @@ local gemIdLookup = { } for name, grantedEffect in pairs(data.skills) do if not grantedEffect.hidden or grantedEffect.fromItem or grantedEffect.fromTree then - gemIdLookup[grantedEffect.name:lower()] = grantedEffect.id + local gemName = grantedEffect.baseTypeName and grantedEffect.baseTypeName:lower() or grantedEffect.name:lower() + gemIdLookup[gemName] = grantedEffect.id end end local function grantedExtraSkill(name, level, noSupports) @@ -5570,7 +5571,7 @@ local preSkillNameList = { } for gemId, gemData in pairs(data.gems) do local grantedEffect = gemData.grantedEffect if not grantedEffect.hidden and not grantedEffect.support then - local skillName = grantedEffect.name + local skillName = grantedEffect.baseTypeName or grantedEffect.name skillNameList[" "..skillName:lower().." "] = { tag = { type = "SkillName", skillName = skillName, includeTransfigured = true } } preSkillNameList["^"..skillName:lower().." "] = { tag = { type = "SkillName", skillName = skillName, includeTransfigured = true } } preSkillNameList["^"..skillName:lower().." has ?a? "] = { tag = { type = "SkillName", skillName = skillName, includeTransfigured = true } }