示例#1
0
 void ClassInfo() {
   SnoFile<GameBalance> gmb("Characters");
   json::Value value;
   for (auto& hero : gmb->x088_Heros) {
     DumpActorLook(value, hero.x108_ActorSno);
     DumpActorLook(value, hero.x10C_ActorSno);
   }
   json::write(File("webgl_look.js", "w"), value, json::mJS);
 }
示例#2
0
 void AnimSets() {
   Archive ans;
   SnoFile<GameBalance> gmb("Characters");
   Logger::begin(gmb->x088_Heros.size(), "Dumping characters");
   for (auto& hero : gmb->x088_Heros) {
     Logger::item(hero.x000_Text);
     DumpActorSets(ans, hero.x108_ActorSno);
     DumpActorSets(ans, hero.x10C_ActorSno);
   }
   Logger::end();
   ans.write(File("animsets.wgz", "wb"), true);
 }
示例#3
0
void GenerateSkills(json::Value& value, json::Value& data) {
  TranslateJson(value, data);

  SnoFile<GameBalance> gmb("Characters");
  auto names = Strings::list("Powers");
  auto attrs = Strings::list("AttributeDescriptions");
  for (auto& chr : gmb->x088_Heros) {
    SkillTips tips;
    tips.generate(canonize(chr.x000_Text), chr.x120_SkillKitSno, false, &data["skillFix"]);
    data["passivetips"][tips.charClass] = tips.passives;
    data["skilltips"][tips.charClass] = tips.skills;
    for (auto& kv : tips.skillMap.getMap()) {
      auto& dst = value["skills"][tips.charClass][kv.first];
      dst["name"] = names[kv.second.getString() + "_name"];
      data["skillMap"][kv.first] = kv.second;
      for (char rune = 'a'; rune <= 'e'; ++rune) {
        //NameRune_A#Witchdoctor_Firebomb
        dst["runes"][std::string{rune}] = attrs.getfmt("NameRune_%c#%s", rune - 'a' + 'A', kv.second.getString().c_str());
      }
    }
    for (auto& kv : tips.passiveMap.getMap()) {
      value["passives"][tips.charClass][kv.first]["name"] = names[kv.second.getString() + "_name"];
      data["skillMap"][kv.first] = kv.second;
    }
    value["skillcat"][tips.charClass] = tips.categoryMap;
  }
  for (auto& cls : value["extraskills"]) {
    for (auto& skill : cls) {
      std::string power = skill["power"].getString();
      skill.remove("power");
      if (!names.has(power + "_name")) {
        Logger::log("Power not found: %s", power.c_str());
        continue;
      }
      skill["name"] = names[power + "_name"];
      skill["tip"] = SkillTips::format(power);
    }
  }
  //data["skillMap"]
}