public override void OnCommand(BotShell bot, CommandArgs e) { if (e.Items.Length < 1) { bot.SendReply(e, "Correct Usage: bio [bio material]"); return; } foreach (AoItem match in e.Items) { if (this._clumps.ContainsKey(match.HighID)) { string name = "QL " + match.QL + " " + this._clumps[match.HighID].Clump; if (this._clumps[match.HighID].Weapons.Count > 0) { double hql = Math.Floor((match.QL * 1.1)); if (hql > 300) { hql = 300; } RichTextWindow window = new RichTextWindow(bot); window.AppendTitle("Kyr'Ozch Weapons"); window.AppendHighlight("The following weapons can be created using your " + name + ":"); window.AppendLineBreak(); foreach (VhBioWeapon weapon in this._clumps[match.HighID].Weapons) { if (weapon.HighQL >= hql && weapon.LowQL <= hql) { window.AppendNormal("- "); window.AppendItem("Kyr'Ozch " + weapon.Name + " - Type " + this._clumps[match.HighID].Type, weapon.LowID, weapon.HighID, Convert.ToInt32(hql)); window.AppendLineBreak(); } } bot.SendReply(e, name + " (" + this._clumps[match.HighID].Description + ")" + " »» ", window); } else { bot.SendReply(e, name + " (" + this._clumps[match.HighID].Description + ")"); } } else if (match.Name == "Solid Clump of Kyr'Ozch Bio-Material") { bot.SendReply(e, "Unable to identify your " + HTML.CreateColorString(bot.ColorHeaderHex, match.Name)); } else { bot.SendReply(e, HTML.CreateColorString(bot.ColorHeaderHex, match.Name) + " doesn't look like a " + HTML.CreateColorString(bot.ColorHeaderHex, "Solid Clump of Kyr'Ozch Bio-Material")); } } }
public override void OnCommand(BotShell bot, CommandArgs e) { switch (e.Command) { case "umob": if (e.Args.Length < 1) { bot.SendReply(e, "Correct Usage: umob [search string]"); return; } string search = string.Empty; search = e.Words[0]; search = search.ToLower(); string url = string.Format(this.UrlTemplate, this.Server, HttpUtility.UrlEncode(search)); string xml = HTML.GetHtml(url, 20000); if (xml == null || xml == string.Empty) { bot.SendReply(e, "Unable to query the unique mobs database"); return; } // if (xml.ToLower().StartsWith("<error>")) // { // if (xml.Length > 13) // { // bot.SendReply(e, "Error: " + xml.Substring(7, xml.Length - 13)); // return; // } // else // { // bot.SendReply(e, "An unknown error has occured!"); // return; // } // } string result = string.Empty; MemoryStream stream = null; try { stream = new MemoryStream(Encoding.UTF8.GetBytes(xml)); XmlSerializer serializer = new XmlSerializer(typeof(UniquesResults)); UniquesResults search_results = (UniquesResults)serializer.Deserialize(stream); stream.Close(); if (search_results.Mobs == null || search_results.Mobs.Length == 0) { result = "No mobs were found"; } else { RichTextWindow window = new RichTextWindow(bot); if (search_results.Mobs.Length > this.NonPageSize) { window.AppendTitle("Unique Mobs Database"); window.AppendHighlight("Server: "); window.AppendNormal(this.Server); window.AppendLineBreak(); window.AppendHighlight("Version: "); window.AppendNormal(search_results.Version); window.AppendLineBreak(); window.AppendHighlight("Search String: "); window.AppendNormal(search); window.AppendLineBreak(); window.AppendHighlight("Results: "); window.AppendNormal(search_results.Mobs.Length.ToString() + " / " + search_results.Max); window.AppendLineBreak(2); window.AppendHeader("Search Results"); } else { window.AppendLineBreak(); } foreach (UniqueMob mob in search_results.Mobs) { if (search_results.Mobs.Length <= this.NonPageSize) { window.AppendString(" "); } window.AppendHighlight(mob.name + " "); window.AppendNormalStart(); window.AppendLineBreak(); window.AppendString(" Level: " + mob.level); window.AppendLineBreak(); window.AppendString(" Location: " + mob.location + " (" + mob.coords + ")"); window.AppendLineBreak(); window.AppendString(" Drops: "); window.AppendLineBreak(); foreach (UItemsResults_Item item in mob.Items) { window.AppendHighlight(item.Name + " "); window.AppendNormalStart(); window.AppendString("["); window.AppendItem("QL " + item._ql, item.LowID, item.HighID, item.QL); window.AppendString("] (" + item._droprate + "%)"); window.AppendColorEnd(); window.AppendLineBreak(); } window.AppendLineBreak(2); //window.AppendLineBreak(); } if (search_results.Mobs.Length > this.NonPageSize) { bot.SendReply(e, HTML.CreateColorString(bot.ColorHeaderHex, search_results.Mobs.Length.ToString()) + " Results »» ", window); } else { bot.SendReply(e, HTML.CreateColorString(bot.ColorHeaderHex, search_results.Mobs.Length.ToString()) + " Results »»" + window.Text.TrimEnd('\n')); } return; } } catch { result = "Unable to query the unique mobs database"; } finally { if (stream != null) { stream.Close(); } } bot.SendReply(e, result); break; } }
public override void OnCommand(BotShell bot, CommandArgs e) { switch (e.Command) { case "items": if (e.Args.Length < 1) { bot.SendReply(e, "Correct Usage: items [search string]"); return; } int ql = 0; try { ql = Convert.ToInt32(e.Args[0]); if (ql <= 0 || ql >= 1000) { bot.SendReply(e, "Quality level has to be between 0 and 999"); return; } } catch { } if (ql != 0 && e.Words.Length == 1) { bot.SendReply(e, "Correct Usage: items [quality level] [search string]"); return; } string search = string.Empty; if (ql != 0) { search = e.Words[1]; } else { search = e.Words[0]; } search = search.ToLower(); string url = string.Format(this.UrlTemplate, this.Server, HttpUtility.UrlEncode(search), ql, Max); string xml = HTML.GetHtml(url, 60000); if (xml == null || xml == string.Empty) { bot.SendReply(e, "Unable to query the central items database"); return; } if (xml.ToLower().StartsWith("<error>")) { if (xml.Length > 13) { bot.SendReply(e, "Error: " + xml.Substring(7, xml.Length - 13)); return; } else { bot.SendReply(e, "An unknown error has occured!"); return; } } string result = string.Empty; MemoryStream stream = null; try { stream = new MemoryStream(Encoding.UTF8.GetBytes(xml)); XmlSerializer serializer = new XmlSerializer(typeof(ItemsResults)); ItemsResults items = (ItemsResults)serializer.Deserialize(stream); stream.Close(); if (items.Items == null || items.Items.Length == 0) { result = "No items were found"; } else { RichTextWindow window = new RichTextWindow(bot); if (items.Items.Length > this.NonPageSize) { window.AppendTitle("Central Items Database"); window.AppendHighlight("Server: "); window.AppendNormal(this.Server); window.AppendLineBreak(); window.AppendHighlight("Version: "); window.AppendNormal(items.Version); window.AppendLineBreak(); window.AppendHighlight("Search String: "); window.AppendNormal(search); window.AppendLineBreak(); window.AppendHighlight("Results: "); window.AppendNormal(items.Items.Length.ToString() + " / " + items.Max); window.AppendLineBreak(2); window.AppendHeader("Search Results"); } else { window.AppendLineBreak(); } foreach (ItemsResults_Item item in items.Items) { if (items.Items.Length <= this.NonPageSize) { window.AppendString(" "); } window.AppendHighlight(item.Name + " "); window.AppendNormalStart(); window.AppendString("["); window.AppendItem("QL " + item.LowQL, item.LowID, item.HighID, item.LowQL); window.AppendString("] "); if (ql != 0 && ql > item.LowQL && ql < item.HighQL) { window.AppendString("["); window.AppendItem("QL " + ql, item.LowID, item.HighID, ql); window.AppendString("] "); } if (item.HighQL != item.LowQL) { window.AppendString("["); window.AppendItem("QL " + item.HighQL, item.LowID, item.HighID, item.HighQL); window.AppendString("] "); } window.AppendColorEnd(); window.AppendLineBreak(); if (item.IconID > 0 && items.Items.Length > this.NonPageSize) { window.AppendIcon(item.IconID); window.AppendLineBreak(); } } if (items.Items.Length > this.NonPageSize) { bot.SendReply(e, HTML.CreateColorString(bot.ColorHeaderHex, items.Items.Length.ToString()) + " Results »» ", window); } else { bot.SendReply(e, HTML.CreateColorString(bot.ColorHeaderHex, items.Items.Length.ToString()) + " Results »»" + window.Text.TrimEnd('\n')); } return; } } catch { result = "Unable to query the central items database"; } finally { if (stream != null) { stream.Close(); } } bot.SendReply(e, result); break; } }
public override void OnCommand(BotShell bot, CommandArgs e) { if (e.Args.Length < 1) { bot.SendReply(e, "Correct Usage: aigen [ankari/ilari/rimah/jaax/xoch/cha]"); return; } string msg = String.Empty; string botName = String.Empty; string bioName1 = String.Empty; string bioName2 = String.Empty; string genName = String.Empty; string botInfo = String.Empty; int bioId1 = 0; int bioId2 = 0; int botImageId = 100337; int bioImageId = 255705; int botId = 0; switch (e.Args[0]) { case "ankari": genName = "General - Ankari'Khaz"; botId = 247145; botName = "Arithmetic Lead Viralbots"; bioId1 = 247684; bioName1 = "Kyr'Ozch Bio-Material - Type 1"; bioId2 = 247685; bioName2 = "Kyr'Ozch Bio-Material - Type 2"; msg = "Low Evade/Dodge,low AR, casting Viral/Virral nukes."; botInfo = "(Nanoskill / Tradeskill)"; break; case "ilari": genName = "General - Ilari'Khaz"; botId = 247146; botName = "Spiritual Lead Viralbots"; bioId1 = 247681; bioName1 = "Kyr'Ozch Bio-Material - Type 992"; bioId2 = 247679; bioName2 = "Kyr'Ozch Bio-Material - Type 880"; msg = "Low Evade/Dodge."; botInfo = "(Nanocost / Nanopool / Max Nano)"; break; case "rimah": genName = "General - Rimah'Khaz"; botId = 247143; botName = "Observant Lead Viralbots"; bioId1 = 247675; bioName1 = "Kyr'Ozch Bio-Material - Type 112"; bioId2 = 247678; bioName2 = "Kyr'Ozch Bio-Material - Type 240"; msg = "Low Evade/Dodge."; botInfo = "(Init / Evades)"; break; case "jaax": genName = "General - Jaax'Khaz"; botId = 247139; botName = "Strong Lead Viralbots"; bioId1 = 247694; bioName1 = "Kyr'Ozch Bio-Material - Type 3"; bioId2 = 247688; bioName2 = "Kyr'Ozch Bio-Material - Type 4"; msg = "High Evade, Low Dodge."; botInfo = "(Melee / Spec Melee / Add All Def / Add Damage)"; break; case "xoch": genName = "General - Xoch'Khaz"; botId = 247137; botName = "Enduring Lead Viralbots"; bioId1 = 247690; bioName1 = "Kyr'Ozch Bio-Material - Type 5"; bioId2 = 247692; bioName2 = "Kyr'Ozch Bio-Material - Type 12"; msg = "High Evade/Dodge, casting Ilari Biorejuvenation heals."; botInfo = "(Max Health / Body Dev)"; break; case "cha": genName = "General - Cha'Khaz"; botId = 247141; botName = "Supple Lead Viralbots"; bioId1 = 247696; bioName1 = "Kyr'Ozch Bio-Material - Type 13"; bioId2 = 247674; bioName2 = "Kyr'Ozch Bio-Material - Type 76"; msg = "High Evade/NR, Low Dodge."; botInfo = "(Ranged / Spec Ranged / Add All Off)"; break; default: bot.SendReply(e, "Unknown Alien General. Available options are: " + HTML.CreateColorString(bot.ColorHeaderHex, "ankari, ilari, rimah, jaax, xoch, cha")); return; } RichTextWindow window = new RichTextWindow(bot); window.AppendTitle(genName); window.AppendHighlight("Type: "); window.AppendNormal(msg); window.AppendLineBreak(2); window.AppendHeader("Drops"); window.AppendHighlight(botName + " "); window.AppendNormalStart(); window.AppendString(botInfo + " ["); window.AppendItem("QL " + 300, botId, botId, 300); window.AppendString("] "); window.AppendColorEnd(); window.AppendLineBreak(); window.AppendIcon(botImageId); window.AppendLineBreak(2); window.AppendHighlight(bioName1 + " "); window.AppendNormalStart(); window.AppendString("["); window.AppendItem("QL " + 300, bioId1, bioId1, 300); window.AppendString("] "); window.AppendColorEnd(); window.AppendLineBreak(); window.AppendIcon(bioImageId); window.AppendLineBreak(); window.AppendLineBreak(); window.AppendHighlight(bioName2 + " "); window.AppendNormalStart(); window.AppendString("["); window.AppendItem("QL " + 300, bioId2, bioId2, 300); window.AppendString("] "); window.AppendColorEnd(); window.AppendLineBreak(); window.AppendIcon(bioImageId); window.AppendLineBreak(); bot.SendReply(e, genName + " »» ", window); }
private void OnLootCommand(BotShell bot, CommandArgs e) { if (e.Args.Length > 0) { string monster = e.Words[0].ToLower(); monster = HTML.UnescapeString(monster); int results = 0; RichTextWindow window = new RichTextWindow(bot); window.AppendTitle("Loot results for '" + monster + "'"); lock (this._database.Connection) { using (IDbCommand command = this._database.Connection.CreateCommand()) { command.CommandText = "SELECT id, name, lowid, highid, ql, icon FROM loot WHERE monster LIKE '%" + Config.EscapeString(monster).Replace(" ", "%") + "%' AND visible = 'true' ORDER BY name ASC"; //SELECT count(points), min(points), max(points), avg(points) FROM loot_history WHERE item = 244718 AND points > 0 IDataReader reader = command.ExecuteReader(); while (reader.Read()) { results++; int icon = reader.GetInt32(5); if (icon > 0) { window.AppendIcon(icon); window.AppendLineBreak(); } window.AppendItem(reader.GetString(1), reader.GetInt32(2), reader.GetInt32(3), reader.GetInt32(4)); window.AppendNormal(" ["); window.AppendBotCommand("Start Auction", "auction start item:" + reader.GetInt32(2) + ":" + reader.GetInt32(3) + ":" + reader.GetInt32(4) + " " + reader.GetString(1)); window.AppendNormal("]"); window.AppendLineBreak(2); } reader.Close(); } } if (results == 0) { bot.SendReply(e, "No loot results for '" + monster + "'"); } else { bot.SendReply(e, "Loot results for '" + monster + "' »» ", window); } return; } RichTextWindow monsters = new RichTextWindow(bot); monsters.AppendTitle("Loot Information"); lock (this._database.Connection) { using (IDbCommand command = this._database.Connection.CreateCommand()) { command.CommandText = "SELECT monster, count(*) FROM loot WHERE visible = 'true' GROUP BY monster ORDER BY monster ASC"; IDataReader reader = command.ExecuteReader(); while (reader.Read()) { monsters.AppendHighlight(reader.GetString(0)); monsters.AppendNormal(" (" + reader.GetInt32(1) + " items) ["); monsters.AppendBotCommand("View", "loot " + reader.GetString(0)); monsters.AppendNormal("]"); monsters.AppendLineBreak(); } reader.Close(); } } bot.SendReply(e, "Loot Information »» ", monsters); }
public void OnSymbCommand(BotShell bot, CommandArgs e) { if (e.Args.Length < 2) { bot.SendReply(e, "Correct Usage: symb [unit] [slot]"); return; } else { string unit = e.Args[0].ToLower(); string slot = e.Args[1].ToLower(); if (e.Args.Length == 3) { slot = e.Args[1].ToLower() + " " + e.Args[2].ToLower(); } switch (slot) { case "right arm": slot = "rarm"; break; case "right-arm": slot = "rarm"; break; case "right wrist": slot = "rwrist"; break; case "right-wrist": slot = "rwrist"; break; case "right hand": slot = "rhand"; break; case "right-hand": slot = "rhand"; break; case "left arm": slot = "larm"; break; case "left-arm": slot = "larm"; break; case "left wrist": slot = "lwrist"; break; case "left-wrist": slot = "lwrist"; break; case "left hand": slot = "lhand"; break; case "left-hand": slot = "lhand"; break; case "brain": slot = "head"; break; case "ocular": slot = "eye"; break; } int matches = 0; RichTextWindow window = new RichTextWindow(bot); window.AppendTitle("Symbiant Results"); foreach (VhPocketBoss_Symbs_Entry Entry in this.GetSymbs().Entries) { if ((Entry.Unit.IndexOf(unit, 0) >= 0) && (Entry.Slot.IndexOf(slot, 0) >= 0)) { matches++; window.AppendItem(Entry.SymbName, Entry.SymbID, Entry.SymbID, Entry.QL); window.AppendLineBreak(); window.AppendNormal("Dropped by: "); window.AppendBotCommand(Entry.PB, "pb " + Entry.PB); window.AppendLineBreak(2); } } if (matches > 0) { bot.SendReply(e, "Found " + HTML.CreateColorString(bot.ColorHeaderHex, matches.ToString()) + " Symbiants »» ", window); return; } else { bot.SendReply(e, "Could not find any Pocketbosses for " + HTML.CreateColorString(bot.ColorHeaderHex, unit) + " " + HTML.CreateColorString(bot.ColorHeaderHex, slot) + "."); } } }
public void OnPBCommand(BotShell bot, CommandArgs e) { if (e.Args.Length < 1) { bot.SendReply(e, "Correct Usage: pb [pb]"); return; } else { string pb = e.Args[0]; if (e.Args.Length == 2) { pb = e.Args[0] + " " + e.Args[1]; } if (e.Args.Length == 3) { pb = e.Args[0] + " " + e.Args[1] + " " + e.Args[2]; } if (e.Args.Length == 4) { pb = e.Args[0] + " " + e.Args[1] + " " + e.Args[2] + " " + e.Args[3]; } pb = System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(pb); pb = pb.Replace("Of", "of"); pb = pb.Replace("Xark The", "Xark the"); foreach (VhPocketBoss_Symbs_Entry Entry in this.GetSymbs().Entries) { if (Entry.PB.IndexOf(pb, 0) >= 0) { RichTextWindow window = new RichTextWindow(bot); window.AppendTitle("Remains of " + Entry.PB); window.AppendHighlight("Location: "); window.AppendNormal(Entry.Loc); window.AppendLineBreak(); window.AppendHighlight("Found On: "); window.AppendNormal(Entry.Mob); window.AppendLineBreak(); window.AppendHighlight("Mob Level: "); window.AppendNormal(Entry.MobLevel); window.AppendLineBreak(); window.AppendHighlight("General Location: "); window.AppendNormal(Entry.GenLoc); window.AppendLineBreak(2); window.AppendHeader("Results"); foreach (VhPocketBoss_Symbs_Entry subEntry in this.GetSymbs().Entries) { if (Entry.PB == subEntry.PB) { window.AppendItem(subEntry.SymbName, subEntry.SymbID, subEntry.SymbID, subEntry.QL); window.AppendLineBreak(); } } bot.SendReply(e, "Remains of " + HTML.CreateColorString(bot.ColorHeaderHex, Entry.PB) + " »» ", window); return; } } bot.SendReply(e, "Could not find the Pocketboss \"" + HTML.CreateColorString(bot.ColorHeaderHex, pb) + "\""); return; } }
public override void OnCommand(BotShell bot, CommandArgs e) { int ql_chk = -1; if (e.Args.Length < 1 || e.Args.Length > 2) { bot.SendReply(e, "Correct Usage: aiarmor [[ql]] [armor type]"); return; } else if (e.Args.Length == 1) { ql = 300; armortype = e.Args[0].ToLower(); } else if (!int.TryParse(e.Args[0], out ql_chk) || ql_chk < 1 || ql_chk > 300) { bot.SendReply(e, "Correct Usage: aiarmor [[ql]] [armor type]"); return; } else { double num; bool isNum = double.TryParse(e.Args[0], out num); if (isNum) { ql = Convert.ToInt32(e.Args[0]); } else { bot.SendReply(e, "Correct Usage: aiarmor [[ql]] [armor type]"); return; } armortype = e.Args[1].ToLower(); } bool realAibot = false; foreach (string test in allowedArgs) { if (armortype.Equals(test)) { realAibot = true; } } if (!realAibot) { bot.SendReply(e, "Correct Usage: aiarmor [[ql]] [armor type]"); return; } src_ql = (int)Math.Ceiling(ql * 0.8); // Ai Armor AoItem arithmetic = new AoItem("Arithmetic", 246559, 246560, 300, "256314"); AoItem enduring = new AoItem("Enduring", 246579, 246580, 300, "256344"); AoItem observant = new AoItem("Observant", 246591, 246592, 300, "256338"); AoItem spiritual = new AoItem("Spiritual", 246599, 246600, 300, "256332"); AoItem strong = new AoItem("Strong", 246615, 246616, 300, "256362"); AoItem supple = new AoItem("Supple", 246621, 246622, 300, "256296"); if (armortype.Length == 2) { // Combined Ai Armor AoItem cc = new AoItem("Combined Commando's", 246659, 246659, ql, "256308"); AoItem cm = new AoItem("Combined Mercenary's", 246637, 246638, ql, "256356"); AoItem co = new AoItem("Combined Officer's", 246671, 246672, ql, "256320"); AoItem cp = new AoItem("Combined Paramedic's", 246647, 246648, ql, "256350"); AoItem cs = new AoItem("Combined Scout's", 246683, 246684, ql, "256326"); AoItem ss = new AoItem("Combined Sharpshooter's", 246695, 246696, ql, "256302"); switch (armortype) { case "cc": result = cc; source = strong; target = supple; break; case "cm": result = cm; source = strong; target = enduring; break; case "co": result = co; source = spiritual; target = arithmetic; break; case "cp": result = cp; source = spiritual; target = enduring; break; case "cs": result = cs; source = observant; target = arithmetic; break; case "ss": result = ss; source = observant; target = supple; break; default: return; } RichTextWindow window = new RichTextWindow(bot); window.AppendTitle("Building process for quality " + ql + " " + result.Name); window.AppendLineBreak(); window.AppendHighlight("Result:\n"); window.AppendItemStart(result.LowID, result.HighID, ql); window.AppendIcon(Convert.ToInt32(result.Raw)); window.AppendLineBreak(); window.AppendString(result.Name); window.AppendItemEnd(); window.AppendLineBreak(2); window.AppendHighlight("Source:\n"); window.AppendItemStart(source.LowID, source.HighID, src_ql); window.AppendIcon(Convert.ToInt32(source.Raw)); window.AppendLineBreak(); window.AppendString(source.Name); window.AppendItemEnd(); window.AppendLineBreak(); window.AppendCommand("Tradeskill process for this item", "/tell " + bot.Character + " aiarmor " + src_ql + " " + source.Name); window.AppendLineBreak(2); window.AppendHighlight("Target:\n"); window.AppendItemStart(target.LowID, target.HighID, ql); window.AppendIcon(Convert.ToInt32(target.Raw)); window.AppendLineBreak(); window.AppendString(target.Name); window.AppendItemEnd(); window.AppendLineBreak(); window.AppendCommand("Tradeskill process for this item", "/tell " + bot.Character + " aiarmor " + ql + " " + target.Name); bot.SendReply(e, result.Name + " »» ", window); } else { RichTextWindow window = new RichTextWindow(bot); window.AppendTitle("Building process for ql" + ql + " " + armortype); window.AppendNormal("You need the following items to build " + armortype + " Armor:\n"); window.AppendNormal("- Kyr'Ozch Viralbots\n"); window.AppendNormal("- Kyr'Ozch Atomic Re-Structulazing Tool\n"); window.AppendNormal("- Solid Clump of Kyr'Ozch Biomaterial\n"); window.AppendNormal("- Arithmetic / Strong / Enduring / Spiritual / Observant / Supple Viralbots\n\n"); // Step 1 window.AppendHighlight("Step 1:\n"); window.AppendItemStart(247113, 247114, src_ql); window.AppendIcon(100330); window.AppendLineBreak(); window.AppendNormal("Kyr'Ozch Viralbots"); window.AppendItemEnd(); window.AppendNormal(" (Drops off Alien City Generals)\n\t\t\t+\n"); window.AppendItemStart(247099, 247099, 100); window.AppendIcon(247098); window.AppendLineBreak(); window.AppendNormal("Kyr'Ozch Atomic Re-Structuralizing Tool"); window.AppendItemEnd(); window.AppendNormal(" (Drops off every Alien)\n\t\t\t=\n"); window.AppendItemStart(247118, 247119, src_ql); window.AppendIcon(100331); window.AppendLineBreak(); window.AppendNormal("Memory-Wiped Kyr'Ozch Viralbots"); window.AppendItemEnd(); window.AppendLineBreak(); window.AppendHighlight("Required Skills:\n"); window.AppendNormal("- " + (ql * 4.5) + " Computer Literacy\n"); window.AppendNormal("- " + (ql * 4.5) + " Nano Programming\n\n"); // Step 2 window.AppendHighlight("Step 2:\n"); window.AppendItemStart(161699, 161699, 1); window.AppendIcon(99279); window.AppendLineBreak(); window.AppendNormal("Nano Programming Interface"); window.AppendItemEnd(); window.AppendNormal("\n\t\t\t+\n"); window.AppendItemStart(247118, 247119, src_ql); window.AppendIcon(100331); window.AppendLineBreak(); window.AppendNormal("Memory-Wiped Kyr'Ozch Viralbots"); window.AppendItemEnd(); window.AppendNormal("\n\t\t\t=\n"); window.AppendItemStart(247120, 247121, src_ql); window.AppendIcon(100334); window.AppendLineBreak(); window.AppendNormal("Formatted Kyr'Ozch Viralbots"); window.AppendItemEnd(); window.AppendLineBreak(); window.AppendHighlight("Required Skills:\n"); window.AppendNormal("- " + (ql * 6) + " Nano Programming\n\n"); // Step 3 window.AppendHighlight("Step 3:\n"); window.AppendItemStart(247100, 247100, 100); window.AppendIcon(247097); window.AppendLineBreak(); window.AppendNormal("Kyr'Ozch Structural Analyzer"); window.AppendItemEnd(); window.AppendNormal("\n\t\t\t+\n"); window.AppendItemStart(247102, 247103, ql); window.AppendIcon(247101); window.AppendLineBreak(); window.AppendNormal("ql" + ql + " Solid Clump of Kyr'Ozch Biomaterial"); window.AppendItemEnd(); window.AppendNormal(" (Drops off every Alien)\n\t\t\t=\n"); window.AppendItemStart(247108, 247109, ql); window.AppendIcon(255705); window.AppendLineBreak(); window.AppendNormal("ql" + ql + " Mutated Kyr'Ozch Biomaterial"); window.AppendItemEnd(); window.AppendNormal(" or\n"); window.AppendItemStart(247106, 247107, ql); window.AppendIcon(255705); window.AppendLineBreak(); window.AppendNormal("ql" + ql + " Pristine Kyr'Ozch Biomaterial"); window.AppendItemEnd(); window.AppendLineBreak(); window.AppendHighlight("Required Skills:\n"); window.AppendNormal("- " + (ql * 4.5) + " Chemistry (for Pristine)\n"); window.AppendNormal("- " + (ql * 7) + " Chemistry (for Mutated)\n\n"); //Step 4 window.AppendHighlight("Step 4:\n"); window.AppendItemStart(247108, 247109, ql); window.AppendIcon(255705); window.AppendLineBreak(); window.AppendNormal("ql" + ql + " Mutated Kyr'Ozch Biomaterial"); window.AppendItemEnd(); window.AppendNormal(" or\n"); window.AppendItemStart(247106, 247107, ql); window.AppendIcon(255705); window.AppendLineBreak(); window.AppendNormal("ql" + ql + " Pristine Kyr'Ozch Biomaterial"); window.AppendItemEnd(); window.AppendNormal("\n\t\t\t+\n"); window.AppendItemStart(247110, 247110, 100); window.AppendIcon(255705); window.AppendLineBreak(); window.AppendNormal("Uncle Bazzit's Generic Nano Solvent"); window.AppendItemEnd(); window.AppendLineBreak(); window.AppendNormal(" (Can be bought in Bazzit Shop in MMD)\n\t\t\t=\n"); window.AppendItemStart(247111, 247112, ql); window.AppendIcon(247115); window.AppendLineBreak(); window.AppendNormal("Generic Kyr'Ozch DNA Soup"); window.AppendItemEnd(); window.AppendLineBreak(); window.AppendHighlight("Required Skills:\n"); window.AppendNormal("- " + (ql * 4.5) + " Chemistry (for Pristine)\n"); window.AppendNormal("- " + (ql * 7) + " Chemistry (for Mutated)\n\n"); //Step 5 window.AppendHighlight("Step 5:\n"); window.AppendItemStart(247111, 247112, ql); window.AppendIcon(247115); window.AppendLineBreak(); window.AppendNormal("Generic Kyr'Ozch DNA Soup"); window.AppendItemEnd(); window.AppendNormal("\n\t\t\t+\n"); window.AppendItemStart(247123, 247123, 100); window.AppendIcon(247122); window.AppendLineBreak(); window.AppendNormal("Essential Human DNA"); window.AppendItemEnd(); window.AppendLineBreak(); window.AppendNormal(" (Can be bought in Bazzit Shop in MMD)\n\t\t\t=\n"); window.AppendItemStart(247124, 247125, ql); window.AppendIcon(247116); window.AppendLineBreak(); window.AppendNormal("DNA Cocktail"); window.AppendItemEnd(); window.AppendLineBreak(); window.AppendHighlight("Required Skills:\n"); window.AppendNormal("- " + (ql * 6) + " Pharma Tech\n\n"); //Step 6 window.AppendHighlight("Step 6:\n"); window.AppendItemStart(247120, 247121, ql); window.AppendIcon(100334); window.AppendLineBreak(); window.AppendNormal("Formatted Kyr'Ozch Viralbots"); window.AppendItemEnd(); window.AppendNormal("\n\t\t\t+\n"); window.AppendItemStart(247124, 247125, ql); window.AppendIcon(247116); window.AppendLineBreak(); window.AppendNormal("DNA Cocktail"); window.AppendItemEnd(); window.AppendNormal("\n\t\t\t=\n"); window.AppendItemStart(247126, 247127, ql); window.AppendIcon(247117); window.AppendLineBreak(); window.AppendNormal("Kyr'Ozch Formatted Viralbot Solution"); window.AppendItemEnd(); window.AppendLineBreak(); window.AppendHighlight("Required Skills:\n"); window.AppendNormal("- " + (ql * 6) + " Pharma Tech\n\n"); //Step 7 window.AppendHighlight("Step 7:\n"); window.AppendItemStart(247126, 247127, ql); window.AppendIcon(247117); window.AppendLineBreak(); window.AppendNormal("Kyr'Ozch Formatted Viralbot Solution"); window.AppendItemEnd(); window.AppendNormal("\n\t\t\t+\n"); window.AppendItemStart(247163, 247163, 1); window.AppendIcon(245924); window.AppendLineBreak(); window.AppendNormal("Basic Vest"); window.AppendItemEnd(); window.AppendNormal("\n\t\t\t=\n"); window.AppendItemStart(247172, 247173, ql); window.AppendIcon(245924); window.AppendLineBreak(); window.AppendNormal("Formatted Viralbot Vest"); window.AppendItemEnd(); window.AppendLineBreak(2); //Step 8 window.AppendHighlight("Step 8:\n"); window.AppendIcon(100337); window.AppendLineBreak(); switch (armortype) { case "arithmetic": window.AppendItem("QL " + src_ql + " Arithmetic Lead Viralbots", 247144, 247145, src_ql); break; case "supple": window.AppendItem("QL " + src_ql + " Supple Lead Viralbots", 247140, 247141, src_ql); break; case "enduring": window.AppendItem("QL " + src_ql + " Enduring Lead Viralbots", 247136, 247137, src_ql); break; case "observant": window.AppendItem("QL " + src_ql + " Observant Lead Viralbots", 247142, 247143, src_ql); break; case "strong": window.AppendItem("QL " + src_ql + " Strong Lead Viralbots", 247138, 247139, src_ql); break; case "spiritual": window.AppendItem("QL " + src_ql + " Spiritual Lead Viralbots", 247146, 247147, src_ql); break; } window.AppendNormal(" (Rare drop off Alien City Generals)"); window.AppendNormal("\n\t\t\t+\n"); window.AppendItemStart(247172, 247173, ql); window.AppendIcon(245924); window.AppendLineBreak(); window.AppendNormal("Formatted Viralbot Vest"); window.AppendItemEnd(); window.AppendNormal("\n\t\t\t=\n"); switch (armortype) { case "arithmetic": window.AppendItemStart(arithmetic.LowID, arithmetic.HighID, ql); window.AppendIcon(Convert.ToInt32(arithmetic.Raw)); window.AppendLineBreak(); window.AppendString(arithmetic.Name + " Body Armor"); window.AppendItemEnd(); window.AppendLineBreak(); break; case "supple": window.AppendItemStart(supple.LowID, supple.HighID, ql); window.AppendIcon(Convert.ToInt32(supple.Raw)); window.AppendLineBreak(); window.AppendString(supple.Name + " Body Armor"); window.AppendItemEnd(); window.AppendLineBreak(); break; case "enduring": window.AppendItemStart(enduring.LowID, enduring.HighID, ql); window.AppendIcon(Convert.ToInt32(enduring.Raw)); window.AppendLineBreak(); window.AppendString(enduring.Name + " Body Armor"); window.AppendItemEnd(); window.AppendLineBreak(); break; case "observant": window.AppendItemStart(observant.LowID, observant.HighID, ql); window.AppendIcon(Convert.ToInt32(observant.Raw)); window.AppendLineBreak(); window.AppendString(observant.Name + " Body Armor"); window.AppendItemEnd(); window.AppendLineBreak(); break; case "strong": window.AppendItemStart(strong.LowID, strong.HighID, ql); window.AppendIcon(Convert.ToInt32(strong.Raw)); window.AppendLineBreak(); window.AppendString(strong.Name + " Body Armor"); window.AppendItemEnd(); window.AppendLineBreak(); break; case "spiritual": window.AppendItemStart(spiritual.LowID, spiritual.HighID, ql); window.AppendIcon(Convert.ToInt32(spiritual.Raw)); window.AppendLineBreak(); window.AppendString(spiritual.Name + " Body Armor"); window.AppendItemEnd(); window.AppendLineBreak(); break; } window.AppendHighlight("Required Skills:\n"); window.AppendNormal("- " + (ql * 6) + " Psychology\n\n"); bot.SendReply(e, "Building process for " + armortype + " »» ", window); } }