string GetUsedMana(Dict usedMana, string pc, string manaCode) { if (usedMana == null) { return("0"); } var k = pc + "|" + manaCode; if (!usedMana.ContainsKey(k)) { return("0"); } var v = usedMana[k]; string used; string max; GameHost.Worker.Parse2(v, out used, out max); string u; string m; GameHost.Worker.Parse2Ex(used, out u, out m, ":"); return(m); }
string GetUsedFatigue(Dict usedFatigue, string pc, string fatigueCode) { if (usedFatigue == null) { return("0"); } var k = pc + "|" + fatigueCode; if (!usedFatigue.ContainsKey(k)) { return("0"); } var v = usedFatigue[k]; string used; string max; GameHost.Worker.Parse2(v, out used, out max); string u; string m; GameHost.Worker.Parse2Ex(used, out u, out m, ":"); return(m); }
private string GetWounds(Dict woundsDict, string pc, string loc) { if (woundsDict == null) { return("0"); } var key = pc + "|" + loc; if (!woundsDict.ContainsKey(key)) { return("0"); } var v = woundsDict[key]; string dmg; string max; GameHost.Worker.Parse2(v, out dmg, out max); string d; string w; GameHost.Worker.Parse2Ex(dmg, out d, out w, ":"); return(w); }
int GetInt(Dict dict, string k) { var val = dict.ContainsKey(k) ? dict[k] : "-"; int v = 0; Int32.TryParse(val, out v); return(v); }
void WriteLocations(string pc, StringBuilder b) { var hitloc = pc + "/_hit_location"; var armor = pc + "/_armor"; if (!master.ContainsKey(hitloc)) { return; } Dict dict = master[hitloc]; var keyC = dict.Keys; var keys = new string[keyC.Count]; keyC.CopyTo(keys, 0); Array.Sort(keys); Dict armorDict = null; Dict woundsDict = null; if (master.ContainsKey(armor)) { armorDict = master[armor]; } if (master.ContainsKey("_wounds")) { woundsDict = master["_wounds"]; } b.Append("<TR>" + "<TD><B>Location</B></TD>" + "<TD><B>Full</B></TD>" + "<TD><B>Wounds</B></TD>" + "<TD><B>Armor</B></TD>" + "</TR>"); foreach (var k in keys) { b.Append("<TR><TD>"); b.Append(k); b.Append("</TD><TD>"); b.Append(dict[k]); b.Append("</TD><TD>"); b.Append(GetWounds(woundsDict, pc, k)); b.Append("</TD><TD>"); b.Append((armorDict != null && armorDict.ContainsKey(k)) ? armorDict[k] : "-"); b.Append("</TD></TR>"); } }
string AdjustRunemagicUsedFolder(string key) { // this is what we're going to use if anything goes wrong, and a lot can go wrong string result = data[key]; // first let's figure out who this is string who, effect; Worker.Parse2Ex(key, out who, out effect, "|"); // if we can't figure that out, then forget the whole thing if (effect == "") { goto Error; } // we have a hope of doing this so get our mods var mods = LazyInitMods(who); Dict dict = mods.runemagicDict; if (effect.StartsWith("one_use_")) { effect = effect.Substring(8); dict = mods.oneuseDict; } if (dict == null) { goto Error; } // anything else might be a school type, use that. if (!dict.ContainsKey(effect)) { goto Error; } int nMax; if (!int.TryParse(dict[effect], out nMax)) { goto Error; } return(String.Format("used:{0} max:{1}", result, nMax)); Error: return(String.Format("used:{0} max:?", result)); }
static void AppendStat(Dict dictMain, Dict dictMisc, string k, StringBuilder b) { string v = dictMain.ContainsKey(k) ? dictMain[k] : "-"; if (dictMisc != null && dictMisc.ContainsKey("MAX_" + k)) { v += "/" + dictMisc["MAX_" + k]; } else { v += "/-"; } AppendTwoCols(k, v, b); }
string AdjustSpiritManaUsedFolder(string key) { // this is what we're going to use if anything goes wrong, and a lot can go wrong string result = data[key]; // first let's figure out who this is string who, effect; Worker.Parse2Ex(key, out who, out effect, "|"); // if we can't figure that out, then forget the whole thing if (effect == "") { goto Error; } // we have a hope of doing this so get our mods var mods = LazyInitMods(who); Dict dict = mods.spiritDict; if (dict == null) { goto Error; } // anything else might be a school type, use that. if (!dict.ContainsKey(effect)) { goto Error; } var value = dict[effect]; string sc; string pow; string stored; GameHost.Dict.ExtractSpiritInfoParts(value, out sc, out pow, out stored); return(String.Format("used:{0} max:{1}", result, pow)); Error: return(String.Format("used:{0} max:?", result)); }
void WriteFatigue(string pc, StringBuilder b) { if (!master.ContainsKey(pc + "/_misc")) { return; } b.Append("<TR>" + "<TD><B>Fatigue Type</B></TD>" + "<TD><B>Full</B></TD>" + "<TD><B>Used</B></TD>" + "</TR>"); Dict miscDict = master[pc + "/_misc"]; Dict usedFatigue = null; if (master.ContainsKey("_fatigue")) { usedFatigue = master["_fatigue"]; } if (miscDict.ContainsKey("fatigue")) { var m = miscDict["fatigue"]; b.Append("<TR>" + "<TD>" + "normal" + "</TD><TD>" + m + "</TD><TD>" + GetUsedFatigue(usedFatigue, pc, "normal") + "</TR>"); b.Append("<TR>" + "<TD>" + "hard" + "</TD><TD>" + m + "</TD><TD>" + GetUsedFatigue(usedFatigue, pc, "hard") + "</TR>"); } }
private void AppendExplicit(string catname, Dict dict, string[] keys, StringBuilder b) { if (b.Length > tableInit.Length) { AppendBlank(b); } AppendHeader(catname, b); Array.Sort(keys); foreach (var k in keys) { if (dict.ContainsKey(k)) { AppendKeyValueRow(dict, k, b); } } }
string GetStr(Dict dict, string k) { return(dict.ContainsKey(k) ? dict[k] : "-"); }
static void AppendKeyValueRow(Dict dict, string k, StringBuilder b) { string v = (dict != null && dict.ContainsKey(k)) ? dict[k] : "-"; AppendTwoCols(k, v, b); }
static void AppendMajorItem(Dict dict, string desc, string k, StringBuilder b) { string v = (dict != null && dict.ContainsKey(k)) ? dict[k] : "-"; AppendTwoCols("<b>" + desc + "</b>", v, b); }
void AppendCategory(string catFormal, string cat, StringBuilder b, string pc) { if (!master.ContainsKey(pc + cat)) { return; } if (b.Length > tableInit.Length) { AppendBlank(b); } AppendHeader(catFormal, b); Dict dict = master[pc + cat]; var keyC = dict.Keys; var keys = new string[keyC.Count]; keyC.CopyTo(keys, 0); Array.Sort(keys); foreach (var k in keys) { if (k.StartsWith("spare_")) { continue; } bool isZero = dict.ContainsKey(k) && dict[k] == "0"; if (isZero && catFormal == "Magic:") { continue; } AppendKeyValueRow(dict, k, b); var sk = new SkillRecord(); sk.name = k .Replace("_0", "") .Replace("_1", "") .Replace("_2", "") .Replace("_3", "") .Replace("_4", "") .Replace("_5", "") .Replace("_6", "") .Replace("_7", "") .Replace("_8", "") .Replace("_9", "") .Replace("_10", "") .Replace("_", " "); sk.category = cat; if (!isZero) { skills.Add(sk); } } }
void WriteMana(string pc, StringBuilder b) { if (!master.ContainsKey(pc + "/mana")) { return; } b.Append("<TR>" + "<TD><B>Mana Type</B></TD>" + "<TD><B>Full</B></TD>" + "<TD><B>Used</B></TD>" + "</TR>"); Dict manaDict = master[pc + "/mana"]; Dict usedMana = null; if (master.ContainsKey("_mana")) { usedMana = master["_mana"]; } if (manaDict.ContainsKey("total_magic_points")) { var m = manaDict["total_magic_points"]; b.Append("<TR>" + "<TD>" + "normal" + "</TD><TD>" + m + "</TD><TD>" + GetUsedMana(usedMana, pc, "mana") + "</TR>"); } var keyC = manaDict.Keys; var keys = new string[keyC.Count]; keyC.CopyTo(keys, 0); Array.Sort(keys); foreach (var k in keys) { if (k == "mpts_per_day" || k == "total_magic_points" || k.StartsWith("spare_")) { continue; } var m = manaDict[k]; b.Append("<TR>" + "<TD>" + k + "</TD><TD>" + m + "</TD><TD>" + GetUsedMana(usedMana, pc, "mana|" + k) + "</TR>"); } }
void WriteSpirits(string pc, StringBuilder col) { var spirits = pc + "/_spirits"; if (!master.ContainsKey(spirits)) { return; } Dict dict = master[spirits]; var keyC = dict.Keys; var keys = new string[keyC.Count]; keyC.CopyTo(keys, 0); Array.Sort(keys); var b = NewTable(); b.Append("<TR><TD> </TD></TR>"); b.Append("<TR>" + "<TD><B>Spirit ID</B></TD>" + "<TD><B>POW</B></TD>" + "<TD><B>Used</B></TD>" + "<TD><B>SC%</B></TD>" + "<TD><B>Stored</B></TD>" + "</TR>"); Dict spiritManaDict = master["_spiritmana"]; foreach (var k in keys) { var value = dict[k]; string sc; string pow; string stored; GameHost.Dict.ExtractSpiritInfoParts(value, out sc, out pow, out stored); var skey = pc + "|" + k; string used = "0"; if (spiritManaDict.ContainsKey(skey)) { used = spiritManaDict.GetRaw(skey); } b.Append("<TR><TD>"); b.Append(k); b.Append("</TD><TD>"); b.Append(pow); b.Append("</TD><TD>"); b.Append(used); b.Append("</TD><TD>"); b.Append(sc); b.Append("</TD><TD>"); b.Append(stored); b.Append("</TD></TR>"); } EndTable(b); col.Append(b); }