internal void HarvestBuffs(Dict buffDict) { buffs.INT = 0; buffs.POW = 0; buffs.CON = 0; buffs.SIZ = 0; buffs.STR = 0; buffs.DEX = 0; buffs.APP = 0; buffs.LIFE = 0; buffs.SRM = 0; buffs.LUCK = 0; buffs.PROT = 0; buffs.ENC = 0; buffs.MPMAX = 0; buffs.EMP = 0; buffs.Communication = 0; buffs.Agility = 0; buffs.Manipulation = 0; buffs.Stealth = 0; buffs.Knowledge = 0; buffs.Alchemy = 0; buffs.Perception = 0; buffs.Magic = 0; buffs.Attack = 0; buffs.Parry = 0; miscMods.Clear(); var keys = buffDict.Keys; var prefix = toon + "|"; foreach (var k in keys) { if (!k.StartsWith(prefix)) { continue; } string buff = buffDict.GetRaw(k); if (buff.Length < 5) { continue; } int index = buff.IndexOfAny(Dict.plusminus); if (index < 1) { continue; } int val; if (!int.TryParse(buff.Substring(index), out val)) { continue; } string item = buff.Substring(0, index); switch (item) { case "EMP": buffs.EMP += val; break; case "INT": buffs.INT += val; break; case "POW": buffs.POW += val; break; case "CON": buffs.CON += val; break; case "SIZ": buffs.SIZ += val; break; case "STR": buffs.STR += val; break; case "DEX": buffs.DEX += val; break; case "APP": buffs.APP += val; break; case "SRM": buffs.SRM += val; break; case "ENC": buffs.ENC += val; break; case "LIFE": buffs.LIFE += val; break; case "LUCK": buffs.LUCK += val; break; case "PROT": buffs.PROT += val; break; case "MPMAX": buffs.MPMAX += val; break; case "Communication": buffs.Communication += val; break; case "Agility": buffs.Agility += val; break; case "Manipulation": buffs.Manipulation += val; break; case "Stealth": buffs.Stealth += val; break; case "Knowledge": buffs.Knowledge += val; break; case "Alchemy": buffs.Alchemy += val; break; case "Perception": buffs.Perception += val; break; case "Magic": buffs.Magic += val; break; case "Attack": buffs.Attack += val; break; case "Parry": buffs.Parry += val; break; default: // misc buffs, not a special category, a particular skill string key = toon + "/" + item; key = key.Replace("|", "/"); key = key.Replace("//", "/"); while (key.EndsWith("/")) { key = key.Substring(0, key.Length - 1); } RecordBuff(key, val.ToString()); break; } } ComputeAdjustments(); }
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); }