mirror of
https://github.com/OpenDiablo2/OpenDiablo2
synced 2024-11-04 17:27:16 -05:00
7661b81576
- Clicking the active left/right skill now opens a skill select panel. Only the available skills for the hero, which are valid for the panel type are shown. Clicking on a skill from the skill select panel makes it the new active skill for the hero. - Hovering a skill in the skill select panel shows the skill name + skill description. - New command which learns all skills for a specific class(not persisted to a save file yet) - e.g. `learnskills ama` will learn skills for the Amazon class. - Initialize HeroSkill.shallowHeroSkill struct in the hero state factory, so we can use it when we serialize the HeroSkill to packets/game save files. - The parsed Skill.ListRow is now a number instead of string. Co-authored-by: Presiyan Ivanov <presiyan-ivanov@users.noreply.github.com>
148 lines
4.3 KiB
Go
148 lines
4.3 KiB
Go
package d2records
|
|
|
|
import (
|
|
"log"
|
|
|
|
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2calculation/d2parser"
|
|
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2fileformats/d2txt"
|
|
)
|
|
|
|
// Loadrecords loads skill description records from skilldesc.txt
|
|
//nolint:funlen // doesn't make sense to split
|
|
func skillDescriptionLoader(r *RecordManager, d *d2txt.DataDictionary) error {
|
|
records := make(map[string]*SkillDescriptionRecord)
|
|
|
|
parser := d2parser.New()
|
|
parser.SetCurrentReference("skill", "TODO: connect skill with description!") //nolint:godox // TODO: Connect skill with description.
|
|
|
|
for d.Next() {
|
|
record := &SkillDescriptionRecord{
|
|
d.String("skilldesc"),
|
|
d.Number("SkillPage"),
|
|
d.Number("SkillRow"),
|
|
d.Number("SkillColumn"),
|
|
d.Number("ListRow"),
|
|
d.String("ListPool"),
|
|
d.Number("IconCel"),
|
|
d.String("str name"),
|
|
d.String("str short"),
|
|
d.String("str long"),
|
|
d.String("str alt"),
|
|
d.String("str mana"),
|
|
d.String("descdam"),
|
|
parser.Parse(d.String("ddam calc1")),
|
|
parser.Parse(d.String("ddam calc2")),
|
|
d.String("p1dmelem"),
|
|
parser.Parse(d.String("p1dmmin")),
|
|
parser.Parse(d.String("p1dmmax")),
|
|
d.String("p2dmelem"),
|
|
parser.Parse(d.String("p2dmmin")),
|
|
parser.Parse(d.String("p2dmmax")),
|
|
d.String("p3dmelem"),
|
|
parser.Parse(d.String("p3dmmin")),
|
|
parser.Parse(d.String("p3dmmax")),
|
|
d.String("descatt"),
|
|
d.String("descmissile1"),
|
|
d.String("descmissile2"),
|
|
d.String("descmissile3"),
|
|
d.String("descline1"),
|
|
d.String("desctexta1"),
|
|
d.String("desctextb1"),
|
|
parser.Parse(d.String("desccalca1")),
|
|
parser.Parse(d.String("desccalcb1")),
|
|
d.String("descline2"),
|
|
d.String("desctexta2"),
|
|
d.String("desctextb2"),
|
|
parser.Parse(d.String("desccalca2")),
|
|
parser.Parse(d.String("desccalcb2")),
|
|
d.String("descline3"),
|
|
d.String("desctexta3"),
|
|
d.String("desctextb3"),
|
|
parser.Parse(d.String("desccalca3")),
|
|
parser.Parse(d.String("desccalcb3")),
|
|
d.String("descline4"),
|
|
d.String("desctexta4"),
|
|
d.String("desctextb4"),
|
|
parser.Parse(d.String("desccalca4")),
|
|
parser.Parse(d.String("desccalcb4")),
|
|
d.String("descline5"),
|
|
d.String("desctexta5"),
|
|
d.String("desctextb5"),
|
|
parser.Parse(d.String("desccalca5")),
|
|
parser.Parse(d.String("desccalcb5")),
|
|
d.String("descline6"),
|
|
d.String("desctexta6"),
|
|
d.String("desctextb6"),
|
|
parser.Parse(d.String("desccalca6")),
|
|
parser.Parse(d.String("desccalcb6")),
|
|
d.String("dsc2line1"),
|
|
d.String("dsc2texta1"),
|
|
d.String("dsc2textb1"),
|
|
parser.Parse(d.String("dsc2calca1")),
|
|
parser.Parse(d.String("dsc2calcb1")),
|
|
d.String("dsc2line2"),
|
|
d.String("dsc2texta2"),
|
|
d.String("dsc2textb2"),
|
|
parser.Parse(d.String("dsc2calca2")),
|
|
parser.Parse(d.String("dsc2calcb2")),
|
|
d.String("dsc2line3"),
|
|
d.String("dsc2texta3"),
|
|
d.String("dsc2textb3"),
|
|
parser.Parse(d.String("dsc2calca3")),
|
|
parser.Parse(d.String("dsc2calcb3")),
|
|
d.String("dsc2line4"),
|
|
d.String("dsc2texta4"),
|
|
d.String("dsc2textb4"),
|
|
parser.Parse(d.String("dsc2calca4")),
|
|
parser.Parse(d.String("dsc2calcb4")),
|
|
d.String("dsc3line1"),
|
|
d.String("dsc3texta1"),
|
|
d.String("dsc3textb1"),
|
|
parser.Parse(d.String("dsc3calca1")),
|
|
parser.Parse(d.String("dsc3calcb1")),
|
|
d.String("dsc3line2"),
|
|
d.String("dsc3texta2"),
|
|
d.String("dsc3textb2"),
|
|
parser.Parse(d.String("dsc3calca2")),
|
|
parser.Parse(d.String("dsc3calcb2")),
|
|
d.String("dsc3line3"),
|
|
d.String("dsc3texta3"),
|
|
d.String("dsc3textb3"),
|
|
parser.Parse(d.String("dsc3calca3")),
|
|
parser.Parse(d.String("dsc3calcb3")),
|
|
d.String("dsc3line4"),
|
|
d.String("dsc3texta4"),
|
|
d.String("dsc3textb4"),
|
|
parser.Parse(d.String("dsc3calca4")),
|
|
parser.Parse(d.String("dsc3calcb4")),
|
|
d.String("dsc3line5"),
|
|
d.String("dsc3texta5"),
|
|
d.String("dsc3textb5"),
|
|
parser.Parse(d.String("dsc3calca5")),
|
|
parser.Parse(d.String("dsc3calcb5")),
|
|
d.String("dsc3line6"),
|
|
d.String("dsc3texta6"),
|
|
d.String("dsc3textb6"),
|
|
parser.Parse(d.String("dsc3calca6")),
|
|
parser.Parse(d.String("dsc3calcb6")),
|
|
d.String("dsc3line7"),
|
|
d.String("dsc3texta7"),
|
|
d.String("dsc3textb7"),
|
|
parser.Parse(d.String("dsc3calca7")),
|
|
parser.Parse(d.String("dsc3calcb7")),
|
|
}
|
|
|
|
records[record.Name] = record
|
|
}
|
|
|
|
if d.Err != nil {
|
|
return d.Err
|
|
}
|
|
|
|
r.Skill.Descriptions = records
|
|
|
|
log.Printf("Loaded %d Skill Description records", len(records))
|
|
|
|
return nil
|
|
}
|