コード例 #1
0
ファイル: LevelScaling.cs プロジェクト: khadoran/reanimator
        public override string ExportTableInsertScript()
        {
            SQLTableScript table = new SQLTableScript("id", string.Empty,
                "id INT NOT NULL",
                "level_diff INT NOT NULL",
                "pvm_damage INT NOT NULL",
                "pvm_experience INT NOT NULL",
                "mvp_damage INT NOT NULL",
                "treasure_bonus INT NOT NULL"
                );

            var levelscales = Manager.GetDataTable("LEVEL_SCALING");

            string id, diff, pvmDmg, pvmXp, mvpDmg, treasure;
            foreach (DataRow row in levelscales.Rows)
            {
                id = row["Index"].ToString();
                diff = row["levelDiff"].ToString();
                pvmDmg = row["PlayerAttackMonsterDmg"].ToString();
                pvmXp = row["PlayerAttackMonsterExp"].ToString();
                mvpDmg = row["MonsterAttackPlayerDmg"].ToString();
                treasure = row["PlayerAttackMonsterTreasureBonusPct"].ToString();

                table.AddRow(id, diff, pvmDmg, pvmXp, mvpDmg, treasure);
            }

            return table.GetFullScript();
        }
コード例 #2
0
ファイル: ItemUpgrades.cs プロジェクト: khadoran/reanimator
        public override string ExportTableInsertScript()
        {
            SQLTableScript table = new SQLTableScript("id", string.Empty,
                "id INT NOT NULL",
                "damage_mult INT NOT NULL",
                "shields INT NOT NULL",
                "armor INT NOT NULL",
                "feed INT NOT NULL",
                "required_nanoshards INT NOT NULL",
                "success_rate INT NOT NULL"
                );

            DataTable itemUpgrade = Manager.GetDataTable("ITEMUPGRADE");
            foreach (DataRow row in itemUpgrade.Rows)
            {
                table.AddRow(
                    row["Index"].ToString(),
                    row["damageMult"].ToString(),
                    row["shields"].ToString(),
                    row["armor"].ToString(),
                    row["feed"].ToString(),
                    row["requiredNanoshardsa"].ToString(),
                    row["successRate"].ToString()
                    );
            }

            return table.GetFullScript();
        }
コード例 #3
0
ファイル: LevelScaling.cs プロジェクト: dragnilar/reanimator
        public override string ExportTableInsertScript()
        {
            SQLTableScript table = new SQLTableScript("id", string.Empty,
                                                      "id INT NOT NULL",
                                                      "level_diff INT NOT NULL",
                                                      "pvm_damage INT NOT NULL",
                                                      "pvm_experience INT NOT NULL",
                                                      "mvp_damage INT NOT NULL",
                                                      "treasure_bonus INT NOT NULL"
                                                      );

            var levelscales = Manager.GetDataTable("LEVEL_SCALING");

            string id, diff, pvmDmg, pvmXp, mvpDmg, treasure;

            foreach (DataRow row in levelscales.Rows)
            {
                id       = row["Index"].ToString();
                diff     = row["levelDiff"].ToString();
                pvmDmg   = row["PlayerAttackMonsterDmg"].ToString();
                pvmXp    = row["PlayerAttackMonsterExp"].ToString();
                mvpDmg   = row["MonsterAttackPlayerDmg"].ToString();
                treasure = row["PlayerAttackMonsterTreasureBonusPct"].ToString();

                table.AddRow(id, diff, pvmDmg, pvmXp, mvpDmg, treasure);
            }

            return(table.GetFullScript());
        }
コード例 #4
0
        public override string ExportTableInsertScript()
        {
            var script = new SQLTableScript("id", string.Empty,
                                            "id INT NOT NULL",
                                            "wave INT NOT NULL",
                                            "monsters TEXT",
                                            "spawntime TEXT NOT NULL");

            var    spawnTable = Manager.GetDataTable("SPAWN_CLASS");
            var    monsterTable = Manager.GetDataTable("MONSTERS");
            string id, wave, monsters, spawntime;

            foreach (DataRow row in Manager.GetDataTable("DEFENSEGAME_WAVE").Rows)
            {
                if ((int)row["Index"] < 1)
                {
                    continue;
                }

                id        = wave = row["Index"].ToString();
                monsters  = GetMonsters((int)row["monsterClass"], (int)row["spawnClass"], monsterTable, spawnTable);
                spawntime = GetTimeInSeconds((int)row["spawnTime"]);

                script.AddRow(id, wave, GetSqlString(monsters), GetSqlString(spawntime + " seconds"));
            }

            return(script.GetFullScript());
        }
コード例 #5
0
ファイル: ItemUpgrades.cs プロジェクト: dragnilar/reanimator
        public override string ExportTableInsertScript()
        {
            SQLTableScript table = new SQLTableScript("id", string.Empty,
                                                      "id INT NOT NULL",
                                                      "damage_mult INT NOT NULL",
                                                      "shields INT NOT NULL",
                                                      "armor INT NOT NULL",
                                                      "feed INT NOT NULL",
                                                      "required_nanoshards INT NOT NULL",
                                                      "success_rate INT NOT NULL"
                                                      );

            DataTable itemUpgrade = Manager.GetDataTable("ITEMUPGRADE");

            foreach (DataRow row in itemUpgrade.Rows)
            {
                table.AddRow(
                    row["Index"].ToString(),
                    row["damageMult"].ToString(),
                    row["shields"].ToString(),
                    row["armor"].ToString(),
                    row["feed"].ToString(),
                    row["requiredNanoshardsa"].ToString(),
                    row["successRate"].ToString()
                    );
            }

            return(table.GetFullScript());
        }
コード例 #6
0
ファイル: Recipes.cs プロジェクト: khadoran/reanimator
        public override string ExportTableInsertScript()
        {
            SQLTableScript table = new SQLTableScript("id", "code",
                "id INT NOT NULL",
                "code VARCHAR(6) NOT NULL",
                "ingredients TEXT NOT NULL",
                "result TEXT NOT NULL"
            );

            var recipes = Manager.GetDataTable("RECIPES");
            var treasure = Manager.GetDataTable("TREASURE");
            var items = Manager.GetDataTable("ITEMS");

            string id, code, ingredients, result;
            string ingredient;
            int itemIndex, quantity, treasureIndex;
            string[] skipCodes={"6742","6842","6942","4443","4943","5844"};

            foreach (DataRow row in recipes.Rows)
            {
                //skip non-cube recipes
                if ((int)row["cubeRecipe"] != 1) continue;

                code = ((int)row["code"]).ToString("X");
                //skip egg/mythic/key recipes for now
                if (skipCodes.Contains(code))
                    continue;

                ingredient = string.Empty;
                ingredients = string.Empty;
                result = string.Empty;

                id = row["Index"].ToString();
                code = GetSqlString(code);

                for (int i = 1; i < 7; i++)
                {
                    itemIndex = (int)row[string.Format("ingredient{0}ItemClass", i)];
                    if (itemIndex < 0) continue;  //skip blank ingredients
                    ingredient = items.Rows[itemIndex]["String_string"].ToString();

                    quantity = (int)row[string.Format("ingredient{0}MinQuantity", i)]; //pretty sure we just need one, since there doesn't seem to be any ranges
                    if (quantity > 1)
                        ingredient += " (" + quantity + ")";
                    ingredients += ingredient + "<br />";
                }

                treasureIndex = (int)row["treasureResult1"];
                itemIndex = int.Parse(treasure.Rows[treasureIndex]["item1"].ToString().Split(',')[1]);  //should be just one result
                result = items.Rows[itemIndex]["String_string"].ToString();

                table.AddRow(id, code, GetSqlString(ingredients), GetSqlString(result));
            }

            return table.GetFullScript();
        }
コード例 #7
0
        public override string ExportTableInsertScript()
        {
            SQLTableScript table = new SQLTableScript("id", string.Empty,
                                                      "id INT NOT NULL",
                                                      "name TEXT NOT NULL",
                                                      "description TEXT NOT NULL",
                                                      "skill_file TEXT",
                                                      "skill_text TEXT",
                                                      "title TEXT"
                                                      );

            var achievements = Manager.GetDataTable("ACHIEVEMENTS");
            var skills       = Manager.GetDataTable("SKILLS");

            object id;
            string name, desc, skillFile, skillText, title;

            foreach (DataRow row in achievements.Rows)
            {
                id   = row["code"];
                name = "\"" + row["nameString_string"] + "\"";

                desc = row["descripFormatString_string"].ToString();
                desc = desc.Replace("[completenum]", String.Format("{0:#,0}", row["completeNumber"]));
                desc = desc.Replace("[param1]", String.Format("{0:#,0}", (int)row["param1"]));// / 20));
                desc = "\"" + desc + "\"";

                if ((int)row["rewardSkill"] != -1)
                {
                    var s     = (int)row["rewardSkill"];
                    var skill = skills.Rows[s]["effectString_string"].ToString();
                    var var   = skills.Rows[s]["skillVar1"].ToString();
                    var   = var.Replace(";", "");
                    skill = skill.Replace("[string2]", var);

                    var icon = skills.Rows[s]["largeIcon"].ToString();

                    skillFile = GetSqlString(GetImage(icon + ".png", 40));
                    skillText = "\"" + skill + "\"";
                }
                else
                {
                    skillFile = skillText = string.Empty;
                }

                title = row["rewardTitle_string"].ToString();
                title = title.Replace("[PLAYERNAME]", "").Trim();
                title = "\"" + title + "\"";

                table.AddRow(id.ToString(), name, desc, skillFile, skillText, title);
            }

            return(table.GetFullScript());
        }
コード例 #8
0
ファイル: Achievements.cs プロジェクト: khadoran/reanimator
        public override string ExportTableInsertScript()
        {
            SQLTableScript table = new SQLTableScript("id", string.Empty,
                "id INT NOT NULL",
                "name TEXT NOT NULL",
                "description TEXT NOT NULL",
                "skill_file TEXT",
                "skill_text TEXT",
                "title TEXT"
                );

            var achievements = Manager.GetDataTable("ACHIEVEMENTS");
            var skills = Manager.GetDataTable("SKILLS");

            object id;
            string name, desc, skillFile, skillText, title;
            foreach (DataRow row in achievements.Rows)
            {
                id = row["code"];
                name = "\"" + row["nameString_string"] + "\"";

                desc = row["descripFormatString_string"].ToString();
                desc = desc.Replace("[completenum]", String.Format("{0:#,0}", row["completeNumber"]));
                desc = desc.Replace("[param1]", String.Format("{0:#,0}", (int)row["param1"]));// / 20));
                desc = "\"" + desc + "\"";

                if ((int)row["rewardSkill"] != -1)
                {
                    var s = (int)row["rewardSkill"];
                    var skill = skills.Rows[s]["effectString_string"].ToString();
                    var var = skills.Rows[s]["skillVar1"].ToString();
                    var = var.Replace(";", "");
                    skill = skill.Replace("[string2]", var);

                    var icon = skills.Rows[s]["largeIcon"].ToString();

                    skillFile = GetSqlString(GetImage(icon + ".png", 40));
                    skillText = "\"" + skill + "\"";
                }
                else
                {
                    skillFile = skillText = string.Empty;
                }

                title = row["rewardTitle_string"].ToString();
                title = title.Replace("[PLAYERNAME]", "").Trim();
                title = "\"" + title + "\"";

                table.AddRow(id.ToString(), name, desc, skillFile, skillText, title);
            }

            return table.GetFullScript();
        }
コード例 #9
0
ファイル: NewNewTreasure.cs プロジェクト: khadoran/reanimator
        public override string ExportTableInsertScript()
        {
            var script = new SQLTableScript("id", string.Empty,
                                            "id INT NOT NULL",
                                            "loot TEXT");

            string id, loot;
            foreach (DataRow row in Manager.GetDataTable("TREASURE").Rows)
            {
                id = row["Index"].ToString();

                loot = string.Empty;

                script.AddRow(id, loot);
            }

            return script.GetInsertScript();
        }
コード例 #10
0
ファイル: Treasure.cs プロジェクト: dragnilar/reanimator
        public override string ExportTableInsertScript()
        {
            SQLTableScript table = new SQLTableScript("id", string.Empty,
                                                      "id INT NOT NULL",
                                                      "loot TEXT"
                                                      );

            var treasure = Manager.GetDataTable("TREASURE");

            foreach (DataRow row in treasure.Rows)
            {
                table.AddRow(
                    row["Index"].ToString(),
                    GetSqlString(GetTreasureTable((int)row["Index"]))
                    );
            }

            return(table.GetFullScript());
        }
コード例 #11
0
ファイル: Treasure.cs プロジェクト: khadoran/reanimator
        public override string ExportTableInsertScript()
        {
            SQLTableScript table = new SQLTableScript("id", string.Empty,
                "id INT NOT NULL",
                "loot TEXT"
                );

            var treasure = Manager.GetDataTable("TREASURE");

            foreach (DataRow row in treasure.Rows)
            {
                table.AddRow(
                    row["Index"].ToString(),
                    GetSqlString(GetTreasureTable((int)row["Index"]))
                    );
            }

            return table.GetFullScript();
        }
コード例 #12
0
        public override string ExportTableInsertScript()
        {
            var script = new SQLTableScript("id", string.Empty,
                                            "id INT NOT NULL",
                                            "loot TEXT");

            string id, loot;

            foreach (DataRow row in Manager.GetDataTable("TREASURE").Rows)
            {
                id = row["Index"].ToString();

                loot = string.Empty;

                script.AddRow(id, loot);
            }

            return(script.GetInsertScript());
        }
コード例 #13
0
        public override string ExportTableInsertScript()
        {
            SQLTableScript table = new SQLTableScript("id", "code",
                                                      "id INT NOT NULL",
                                                      "code VARCHAR(4) NOT NULL",
                                                      "name TEXT",
                                                      "name_charsheet TEXT",
                                                      "experience_needed INT NOT NULL",
                                                      //"minusxp_enabled BOOL NOT NULL", //not sure what this is
                                                      //"max_rank_player INT",  //eh?
                                                      //"max_percentile INT NOT NULL", //not sure if we want this
                                                      "rank_icon TEXT"
                                                      );

            var ranks = Manager.GetDataTable("PVP_RANKS");

            string id, code, name, charName, xp, maxPct, maxRank, minusXp, icon;

            foreach (DataRow row in ranks.Rows)
            {
                int xpMin = (int)row["pvpExpMin"];
                if (xpMin <= 0)
                {
                    continue;
                }

                id       = row["Index"].ToString();
                code     = GetSqlString(((int)row["code"]).ToString("X"));
                name     = GetSqlString(row["rankName"].ToString());
                xp       = xpMin.ToString();
                maxPct   = row["maxPercentile"].ToString();
                maxRank  = row["maxRankPlayer"].ToString();
                minusXp  = row["minusExpEnable"].ToString();
                charName = GetSqlString(row["characterSheetString_string"].ToString());
                icon     = GetSqlString(GetImage(row["characterSheetIcon"].ToString() + ".png"));

                table.AddRow(id, code, name, charName, xp, icon);
            }

            return(table.GetFullScript());
        }
コード例 #14
0
ファイル: ItemLevels.cs プロジェクト: khadoran/reanimator
        public override string ExportTableInsertScript()
        {
            SQLTableScript table = new SQLTableScript("id", string.Empty,
                "id INT NOT NULL",
                "level INT NOT NULL",
                "sfx_attack INT NOT NULL",
                "sfx_defense INT NOT NULL",
                "feed INT NOT NULL",
                "clvl INT NOT NULL",
                "ilvl_range TEXT NOT NULL",
                "aug_common TEXT NOT NULL",
                "aug_rare TEXT NOT NULL",
                "aug_legendary TEXT NOT NULL",
                "scrap_quantity INT NOT NULL",
                "specialScrap_quantity INT NOT NULL"
            );

            var ilvls = Manager.GetDataTable("ITEM_LEVELS");

            string id, level, sfxAtk, sfxDef, feed, clvl, ilvlRange, augC, augR, augL, scraps, specScraps;

            foreach (DataRow row in ilvls.Rows)
            {
                id = row["Index"].ToString();
                level = row["level"].ToString();
                sfxAtk = row["sfxAttackAbility"].ToString();
                sfxDef = row["sfxDefenceAbility"].ToString();
                feed = row["feed"].ToString();
                clvl = row["levelRequirement"].ToString();
                ilvlRange = GetSqlString(row["itemLevelMin"].ToString() + "-" + row["itemLevelMax"].ToString());
                augC = GetSqlString(((int)row["augmentCostCommon"]).ToString("0,0"));
                augR = GetSqlString(((int)row["augmentCostRare"]).ToString("0,0"));
                augL = GetSqlString(((int)row["augmentCostLegendary"]).ToString("0,0"));
                scraps = row["scrapUpgradeQuantity"].ToString();
                specScraps = row["specialScrapUpgradeQuantity"].ToString();

                table.AddRow(id, level, sfxAtk, sfxDef, feed, clvl, ilvlRange, augC, augR, augL, scraps, specScraps);
            }

            return table.GetFullScript();
        }
コード例 #15
0
        public override string ExportTableInsertScript()
        {
            SQLTableScript table = new SQLTableScript("id", string.Empty,
                                                      "id INT NOT NULL",
                                                      "level INT NOT NULL",
                                                      "sfx_attack INT NOT NULL",
                                                      "sfx_defense INT NOT NULL",
                                                      "feed INT NOT NULL",
                                                      "clvl INT NOT NULL",
                                                      "ilvl_range TEXT NOT NULL",
                                                      "aug_common TEXT NOT NULL",
                                                      "aug_rare TEXT NOT NULL",
                                                      "aug_legendary TEXT NOT NULL",
                                                      "scrap_quantity INT NOT NULL",
                                                      "specialScrap_quantity INT NOT NULL"
                                                      );

            var ilvls = Manager.GetDataTable("ITEM_LEVELS");

            string id, level, sfxAtk, sfxDef, feed, clvl, ilvlRange, augC, augR, augL, scraps, specScraps;

            foreach (DataRow row in ilvls.Rows)
            {
                id         = row["Index"].ToString();
                level      = row["level"].ToString();
                sfxAtk     = row["sfxAttackAbility"].ToString();
                sfxDef     = row["sfxDefenceAbility"].ToString();
                feed       = row["feed"].ToString();
                clvl       = row["levelRequirement"].ToString();
                ilvlRange  = GetSqlString(row["itemLevelMin"].ToString() + "-" + row["itemLevelMax"].ToString());
                augC       = GetSqlString(((int)row["augmentCostCommon"]).ToString("0,0"));
                augR       = GetSqlString(((int)row["augmentCostRare"]).ToString("0,0"));
                augL       = GetSqlString(((int)row["augmentCostLegendary"]).ToString("0,0"));
                scraps     = row["scrapUpgradeQuantity"].ToString();
                specScraps = row["specialScrapUpgradeQuantity"].ToString();

                table.AddRow(id, level, sfxAtk, sfxDef, feed, clvl, ilvlRange, augC, augR, augL, scraps, specScraps);
            }

            return(table.GetFullScript());
        }
コード例 #16
0
ファイル: Sets.cs プロジェクト: khadoran/reanimator
        public override string ExportTableInsertScript()
        {
            var script = new SQLTableScript("id", "", "id INT", "set3 TEXT", "set5 TEXT", "set7 TEXT", "parts TEXT");
            var table = Manager.GetDataTable("ITEM_SETITEM_GROUPS");
            string id, set3, set5, set7, parts;
            foreach (DataRow row in table.Rows)
            {
                id = row["Index"].ToString();
                set3 = GetAffixes((int) row["setAffix1"]);
                set3 = GetSqlString(set3);
                set5 = GetAffixes((int)row["setAffix2"]);
                set5 = GetSqlString(set5);
                set7 = GetAffixes((int)row["setAffix3"]);
                set7 = GetSqlString(set7);
                parts = GetSetParts((int) row["Index"]);
                parts = GetSqlString(parts);

                script.AddRow(id, set3, set5, set7, parts);
            }
            return script.GetFullScript();
        }
コード例 #17
0
ファイル: NewTreasure.cs プロジェクト: dragnilar/reanimator
        public override string ExportTableInsertScript()
        {
            var script = new SQLTableScript("id", string.Empty,
                                            "id INT NOT NULL",
                                            "loot TEXT");

            string id, loot;

            foreach (DataRow row in Manager.GetDataTable("TREASURE").Rows)
            {
                var treasure = new TreasureClass(row);
                treasure.Simplify();

                id   = row["Index"].ToString();
                loot = GetHtmlTable(treasure);

                script.AddRow(id, loot);
            }

            return(script.GetInsertScript());
        }
コード例 #18
0
        public override string ExportTableInsertScript()
        {
            var    script = new SQLTableScript("id", "", "id INT", "set3 TEXT", "set5 TEXT", "set7 TEXT", "parts TEXT");
            var    table = Manager.GetDataTable("ITEM_SETITEM_GROUPS");
            string id, set3, set5, set7, parts;

            foreach (DataRow row in table.Rows)
            {
                id    = row["Index"].ToString();
                set3  = GetAffixes((int)row["setAffix1"]);
                set3  = GetSqlString(set3);
                set5  = GetAffixes((int)row["setAffix2"]);
                set5  = GetSqlString(set5);
                set7  = GetAffixes((int)row["setAffix3"]);
                set7  = GetSqlString(set7);
                parts = GetSetParts((int)row["Index"]);
                parts = GetSqlString(parts);

                script.AddRow(id, set3, set5, set7, parts);
            }
            return(script.GetFullScript());
        }
コード例 #19
0
ファイル: PVPRanks.cs プロジェクト: khadoran/reanimator
        public override string ExportTableInsertScript()
        {
            SQLTableScript table = new SQLTableScript("id", "code",
                "id INT NOT NULL",
                "code VARCHAR(4) NOT NULL",
                "name TEXT",
                "name_charsheet TEXT",
                "experience_needed INT NOT NULL",
                //"minusxp_enabled BOOL NOT NULL", //not sure what this is
                //"max_rank_player INT",  //eh?
                //"max_percentile INT NOT NULL", //not sure if we want this
                "rank_icon TEXT"
                );

            var ranks = Manager.GetDataTable("PVP_RANKS");

            string id, code, name, charName, xp, maxPct, maxRank, minusXp, icon;
            foreach (DataRow row in ranks.Rows)
            {
                int xpMin = (int)row["pvpExpMin"];
                if (xpMin <= 0) continue;

                id = row["Index"].ToString();
                code = GetSqlString(((int)row["code"]).ToString("X"));
                name = GetSqlString(row["rankName"].ToString());
                xp = xpMin.ToString();
                maxPct = row["maxPercentile"].ToString();
                maxRank = row["maxRankPlayer"].ToString();
                minusXp = row["minusExpEnable"].ToString();
                charName = GetSqlString(row["characterSheetString_string"].ToString());
                icon = GetSqlString(GetImage(row["characterSheetIcon"].ToString() + ".png"));

                table.AddRow(id, code, name, charName, xp, icon);
            }

            return table.GetFullScript();
        }
コード例 #20
0
        public override string ExportTableInsertScript()
        {
            var script = new SQLTableScript("id", string.Empty,
                                           "id INT NOT NULL",
                                           "wave INT NOT NULL",
                                           "monsters TEXT",
                                           "spawntime TEXT NOT NULL");

            var spawnTable = Manager.GetDataTable("SPAWN_CLASS");
            var monsterTable = Manager.GetDataTable("MONSTERS");
            string id, wave, monsters, spawntime;
            foreach (DataRow row in Manager.GetDataTable("DEFENSEGAME_WAVE").Rows)
            {
                if ((int)row["Index"] < 1) continue;

                id = wave = row["Index"].ToString();
                monsters = GetMonsters((int)row["monsterClass"], (int)row["spawnClass"], monsterTable, spawnTable);
                spawntime = GetTimeInSeconds((int)row["spawnTime"]);

                script.AddRow(id, wave, GetSqlString(monsters), GetSqlString(spawntime + " seconds"));
            }

            return script.GetFullScript();
        }
コード例 #21
0
ファイル: MonsterAffixes.cs プロジェクト: khadoran/reanimator
        public override string ExportTableInsertScript()
        {
            SQLTableScript table = new SQLTableScript("id", "code",
                "id INT NOT NULL",
                "code VARCHAR(6) NOT NULL",
                //"isBossAffix BOOL NOT NULL",
                "name TEXT NOT NULL",
                "formatted_name TEXT NOT NULL",
                "display_string TEXT NOT NULL"
            );

            var affixes = Manager.GetDataTable("AFFIXES");

            string id, code, magicName, formattedName, displayString;
            string quality, property1;
            object shields;
            bool isBoss = false;

            Evaluator evaluator = new Evaluator();
            ItemDisplay.Manager = Manager;
            evaluator.Manager = Manager;

            foreach (DataRow row in affixes.Rows)
            {
                //don't show affixes that aren't used/implemented
                //if ((int)row["spawn"] == 0) continue;
                isBoss = false;

                magicName = row["magicNameString_string"].ToString();
                if (String.IsNullOrWhiteSpace(magicName)) continue;
                if (row["allowTypes1_string"].ToString() != "monster") continue;

                Unit unit = new Monster();
                Game3 game3 = new Game3();
                evaluator.Unit = unit;
                evaluator.Game3 = game3;
                for (int i = 1; i < 7; i++)
                {
                    property1 = row["property" + i].ToString();
                    evaluator.Evaluate(property1);
                }

                String[] displayStrings = ItemDisplay.GetDisplayStrings(unit);

                id = row["Index"].ToString();
                code = GetSqlString(((int)row["code"]).ToString("X"));

                magicName = magicName.Replace("[item]", string.Empty).Trim();
                isBoss = magicName.Contains("Sydonai");
                if (isBoss) continue;   //don't think we need boss titles
                formattedName = String.Format("'''{0}'''", magicName);

                quality = row["affixType1_string"].ToString();
                switch (quality)
                {
                    case "common":
                        //just leave it bold
                        break;
                    case "rare":
                        formattedName = Colorize(formattedName, WikiColors.Rare);
                        break;
                    case "legendary":
                        formattedName = Colorize(formattedName, WikiColors.Legendary);
                        break;
                    case "mythic":
                        formattedName = Colorize(formattedName, WikiColors.Mythic);
                        break;
                    default:
                        throw new NotImplementedException(String.Format("Apparently we need '{0}'?", quality));
                }
                magicName = GetSqlString(magicName);
                formattedName = GetSqlString(formattedName);
                displayString = displayStrings.Aggregate(string.Empty, (current, affix) => current + affix + "<br />");
                displayString = displayString.Replace(" you get", "");   //display "when hit" instead of "when you get hit"
                //manually add shields if needed (never a number)
                shields = unit.GetStat("shield_buffer_max");
                if (!(shields is int))
                    displayString = displayString.Replace("ilevel", shields.ToString());    //hacky, but whatever
                //add procs and skills
                displayString += AddOtherProperties(unit);
                displayString = GetSqlString(displayString);
                //Debug.WriteLine(id + ", " + row["affix"] + ", " + displayString);

                table.AddRow(id, code, /*Convert.ToInt32(isBoss).ToString(),*/ magicName, formattedName, displayString);

            }

            return table.GetFullScript();
        }
コード例 #22
0
ファイル: Items.cs プロジェクト: khadoran/reanimator
        public override string ExportTableInsertScript()
        {
            SQLTableScript table = new SQLTableScript("id", "code",
                "id INT NOT NULL",
                "code VARCHAR(4) NOT NULL",
                "image TEXT",
                "name TEXT",
                "type TEXT",
                "flavor TEXT",
                "dmg_icon TEXT",
                "damage TEXT",
                "defence TEXT",
                "stats TEXT",
                "mods TEXT",
                "feeds TEXT",
                "level TEXT",
                "inherent TEXT",
                "affixes TEXT",
                "quality_id INT",
                "name_raw TEXT",
                "type_raw TEXT",
                "level_raw INT"
                );

            ItemDisplay.Manager = Manager;
            var items = Manager.GetDataTable("ITEMS");
            var qualityTable = Manager.GetDataTable("ITEM_QUALITY");
            var ilvls = Manager.GetDataTable("ITEM_LEVELS");

            string id, code, name, type, flavor, quality, image, damage, stats, affixes, modslots, feeds, level, inherent, defence,
                qualityId, typeRaw, nameRaw, levelRaw, dmgIcon;
            string clvl, invName;
            string[] ringParts;
            int levelNum, itemType;
            Dictionary<string, string> typeImages = new Dictionary<string, string>();

            foreach (DataRow item in items.Rows)
            {
                if (item["code"].ToString() == "0") continue; // ignore blank rows
                Debug.WriteLine("Parsing: " + item["Index"] + " (" + item["name"] + ")");

                //if (((int)item["Index"]) != 1914) continue;

                // Dependencies
                quality = ((int) item["itemQuality"]) != -1
                                    ? qualityTable.Rows[(int) item["itemQuality"]]["displayName_string"].ToString()
                                    : string.Empty;

                Unit unit = new Item(); // for sharing stats
                levelNum = 0;

                // Guts
                id = GetSqlString(item["index"].ToString());
                code = GetSqlString(((int)item["code"]).ToString("X"));

                qualityId = item["itemQuality"].ToString();

                nameRaw = GetDisplayString(item["String"].ToString());
                name = "<div class=\"item_name " + quality.ToLower() + "\">" + nameRaw + "</div>";
                name = GetSqlString(name);

                //we can toss the base type if needed, or make another column for displaying below the in-game type description
                int baseRow = (int)item["baseRow"];
                if (baseRow >= 0)
                    typeRaw = GetDisplayString(items.Rows[baseRow]["String"].ToString());
                else
                    typeRaw = item["typeDescription_string"].ToString();    //probably fine as it is

                type = (typeRaw != string.Empty) ? "<div class=\"item_type " + quality.ToLower() + "\">" + quality + " " + typeRaw + "</div>" : string.Empty;
                type = GetSqlString(type);

                //get the base name
                invName = item["folderInventory"].ToString();
                if (invName.Contains("mods"))
                    image = GetModImageName(item["name"].ToString());   //some mods have unique images
                else if (invName.Contains("ring"))
                {
                    //only take the first two parts of the ring name, since they otherwise use the same image
                    ringParts = item["name"].ToString().Split('_');
                    image = ringParts[0] + "_" + ringParts[1];
                }
                else
                    image = (baseRow > 0) ? typeRaw.Replace("\"", "'") : nameRaw.Replace("\"", "'");
                //only record one image path for each type
                if (!typeImages.ContainsKey(image))
                    typeImages.Add(image, item["name"].ToString());
                //if it's an armor item, add both the male and female versions
                image = GetSqlString(GetImage(image + ".png", 224)
                    + (invName.Contains("armor") ? "<br />" + GetImage(image + "-f.png", 224) : string.Empty));
                typeRaw = GetSqlString(typeRaw);
                nameRaw = GetSqlString(nameRaw);

                flavor = item["flavorText_string"].ToString();
                flavor = flavor.Replace("\n", "<br/>");
                flavor = (flavor != string.Empty) ? "<div class=\"item_flavor\">" + flavor + "</div>" : string.Empty;
                flavor = GetSqlString(flavor);

                dmgIcon = item["tooltipDamageIcon"].ToString();
                if (!string.IsNullOrEmpty(dmgIcon))
                {
                    dmgIcon = GetImage(dmgIcon + ".png", 50);
                    dmgIcon = "<td class=\"dmg_icon\">" + dmgIcon + "</td>";
                }

                //ilvl
                levelRaw = item["fixedLevel"].ToString().Replace(";", "");
                if (levelRaw.Equals("")) levelRaw = item["level"].ToString();
                if (qualityId == "12") levelRaw = "63";
                level = levelRaw != "0" ? levelRaw : "Scales";
                //if the level has a number, set the ilvl
                if (int.TryParse(level, out levelNum))
                    unit.SetStat("level", levelNum);

                stats = GetStats(item, levelNum);
                //stats = AddElementThumbs(stats); //<div class=\"item_heading\">Stats</div>
                if (!string.IsNullOrEmpty(stats)) stats = "<div class=\"simple_line\"></div><div class=\"item_stats\">" + stats + "</div>";
                stats = GetSqlString(stats);

                modslots = GetModSlots(item["props2"].ToString());
                modslots = GetSqlString(modslots);

                feeds = GetFeeds((int)item["index"], unit);
                feeds = GetSqlString(feeds);

                if (level != "Scales")
                {
                    itemType = (int)item["typeDescription"];
                    //ignore clvl for necklaces and bracelets
                    //(not sure if this will always be the case)
                    clvl = (itemType == 3430 || itemType == 3431) ? "0" : ilvls.Rows[int.Parse(level)]["levelRequirement"].ToString();
                    level = (!string.IsNullOrEmpty(level))
                                ? GetItemLevels(level, clvl, (int) item["itemQuality"])
                                : string.Empty;
                }
                level = GetSqlString(level);

                //since the increment stuff is only set when retrieving the damage, the function needs to be called twice
                //once to set the increments (ignore return value), and once to format the damage display after affixes have been set (to include bonuses)

                //first damage
                damage = GetDamage(item, unit);

                //assign affixes
                inherent = ConcatStrings(GetInherentAffixes(item, unit));
                if (!string.IsNullOrEmpty(inherent)) inherent = "<div class=\"item_heading\">Inherent + Hidden Affixes</div><div class=\"item_affixes\">" + inherent + "</div>";
                inherent = GetSqlString(inherent);

                affixes = ConcatStrings(GetAffixes(item, unit));
                if (!string.IsNullOrEmpty(affixes)) affixes = "<div class=\"item_heading\">Special Affixes</div><div class=\"item_affixes\">" + affixes + "</div>";
                affixes = GetSqlString(affixes);

                //second damage
                //I think this is right, since two damage things ended up here
                damage = GetDamage(item, unit);//<div class=\"item_heading\">Damage</div>
                if (!string.IsNullOrEmpty(damage))
                {
                    damage = "<td><div class=\"item_damage\">" + damage + "</div></td>";
                    damage = "<div class=\"simple_line\"></div><table><tr>" + dmgIcon + damage + "</tr></table>";
                }
                damage = GetSqlString(damage);
                dmgIcon = GetSqlString(dmgIcon);

                //damage = GetDamage(item, unit);
                //if (!string.IsNullOrEmpty(damage)) damage = "<div class=\"item_heading\">Damage</div><div class=\"item_damage\">" + damage + "</div>";
                //damage = GetSqlString(damage);

                defence = GetDefence(item, unit);//<div class=\"item_heading\">Defence</div>
                if (!string.IsNullOrEmpty(defence)) defence = "<div class=\"item_defence\">" + defence + "</div>";
                defence = GetSqlString(defence);

                table.AddRow(id, code, image, name, type, flavor, dmgIcon, damage, defence, stats, modslots, feeds, level, inherent, affixes, qualityId, nameRaw, typeRaw, levelRaw);
            }

            //dump image names to a file so they're easier to find when uploading
            string images = string.Empty;
            foreach (var pair in typeImages)
            {
                images += pair.Key + "\n----" + pair.Value + "\n\n\n";
            }

            File.WriteAllText("images.txt", images);

            return table.GetFullScript();
        }
コード例 #23
0
ファイル: ArmorAffixes.cs プロジェクト: dragnilar/reanimator
        public override string ExportTableInsertScript()
        {
            SQLTableScript table = new SQLTableScript("id", "code",
                                                      "id INT NOT NULL",
                                                      "code VARCHAR(6) NOT NULL",
                                                      "name TEXT NOT NULL",
                                                      "formatted_name TEXT NOT NULL",
                                                      "display_string TEXT NOT NULL",
                                                      "ilvl INT NOT NULL",
                                                      "faction TEXT"
                                                      );

            var affixes = Manager.GetDataTable("AFFIXES");

            string id, code, magicName, formattedName, displayString, ilvl, typeList, faction;
            string property1, type;

            Evaluator evaluator = new Evaluator();

            ItemDisplay.Manager = Manager;
            evaluator.Manager   = Manager;

            foreach (DataRow row in affixes.Rows)
            {
                //don't show affixes that aren't used/implemented
                if ((int)row["spawn"] == 0)
                {
                    continue;
                }

                //skip non-armorsets
                magicName = row["setNameString_string"].ToString();
                if (String.IsNullOrWhiteSpace(magicName))
                {
                    continue;
                }
                type = row["affixType1_string"].ToString();
                if (type.CompareTo("armorset") != 0)
                {
                    continue;
                }

                faction = row["onlyOnItemsRequiringUnitType_string"].ToString();
                if (!String.IsNullOrWhiteSpace(faction))
                {
                    faction = GetSqlString(faction);
                }

                Unit  unit  = new Item();
                Game3 game3 = new Game3();
                evaluator.Unit  = unit;
                evaluator.Game3 = game3;
                property1       = string.Empty;
                for (int i = 1; i < 7; i++)
                {
                    property1 += row["property" + i].ToString();
                }
                //not sure how armor affixes normally work on regular items (random?),
                //so skip the blank ones and only display the ilvl that produces the effects on uniques of non-standard ilvls
                if (string.IsNullOrWhiteSpace(property1))
                {
                    continue;
                }

                evaluator.Evaluate(property1);
                String[] displayStrings = ItemDisplay.GetDisplayStrings(unit);

                id            = row["Index"].ToString();
                code          = GetSqlString(((int)row["code"]).ToString("X"));
                magicName     = magicName.Replace("[item]", string.Empty).Trim();
                formattedName = String.Format("'''{0}'''", magicName);
                ilvl          = row["itemLevel"].ToString();

                magicName     = GetSqlString(magicName);
                formattedName = GetSqlString(formattedName);
                displayString = GetSqlString(displayStrings.Aggregate(string.Empty, (current, affix) => current + affix + "<br />"));

                //Debug.WriteLine(id + ", " + row["affix"] + ", " + displayString);

                table.AddRow(id, code, magicName, formattedName, displayString, ilvl, faction);
            }

            return(table.GetFullScript());
        }
コード例 #24
0
ファイル: Affixes.cs プロジェクト: khadoran/reanimator
        public override string ExportTableInsertScript()
        {
            SQLTableScript table = new SQLTableScript("id", "code",
                "id INT NOT NULL",
                "code VARCHAR(6) NOT NULL",
                "name TEXT NOT NULL",
                "formatted_name TEXT NOT NULL",
                "display_string TEXT NOT NULL",
                "ilvl_range TEXT NOT NULL",
                "allowed_types TEXT NOT NULL",
                "faction TEXT"
                , "feed_costs TEXT NOT NULL"
            );

            var affixes = Manager.GetDataTable("AFFIXES");

            string id, code, magicName, formattedName, displayString, levelRange, typeList, faction;
            string[] feeds;
            string quality, property1, allowType;
            bool isMonster = false;

            Evaluator evaluator = new Evaluator();
            ItemDisplay.Manager = Manager;
            evaluator.Manager = Manager;

            foreach (DataRow row in affixes.Rows)
            {
                //don't show affixes that aren't used/implemented
                if ((int)row["spawn"] == 0) continue;
                isMonster = false;

                magicName = row["magicNameString_string"].ToString();
                if (String.IsNullOrWhiteSpace(magicName)) continue;

                typeList = string.Empty;
                faction = row["onlyOnItemsRequiringUnitType_string"].ToString();
                if (!String.IsNullOrWhiteSpace(faction))
                    faction = GetSqlString(faction);

                for (int i = 1; i < 7; i++)
                {
                    allowType = row[String.Format("allowTypes{0}_string", i)].ToString();
                    if (String.IsNullOrWhiteSpace(allowType))
                        break;
                    else if (allowType.CompareTo("monster") == 0)
                    {
                        isMonster = true;
                        break;
                    }

                    if (!String.IsNullOrWhiteSpace(typeList))
                        typeList += ", ";

                    typeList += GetItemType(allowType);
                }

                if (isMonster) continue;

                typeList = GetSqlString(typeList);
                levelRange = GetSqlString(row["minLevel"].ToString() + "-" + row["maxLevel"].ToString());

                Unit unit = new Item();
                Game3 game3 = new Game3();
                evaluator.Unit = unit;
                evaluator.Game3 = game3;
                for (int i = 1; i < 7; i++)
                {
                    property1 = row["property" + i].ToString();
                    evaluator.Evaluate(property1);
                }

                String[] displayStrings = ItemDisplay.GetDisplayStrings(unit);
                feeds = ItemDisplay.GetFeedCosts(unit);

                id = row["Index"].ToString();
                code = GetSqlString(((int)row["code"]).ToString("X"));

                magicName = magicName.Replace("[item]", string.Empty).Trim();
                formattedName = String.Format("'''{0}'''", magicName);

                quality = row["affixType1_string"].ToString();
                switch (quality)
                {
                    case "common":
                        //just leave it bold
                        break;
                    case "rare":
                        formattedName = Colorize(formattedName, WikiColors.Rare);
                        break;
                    case "legendary":
                        formattedName = Colorize(formattedName, WikiColors.Legendary);
                        break;
                    case "mythic":
                        formattedName = Colorize(formattedName, WikiColors.Mythic);
                        break;
                    default:
                        throw new NotImplementedException(String.Format("Apparently we need '{0}'?", quality));
                }
                magicName = GetSqlString(magicName);
                formattedName = GetSqlString(formattedName);
                displayString = GetSqlString(FormatAffixList(displayStrings));

                Debug.WriteLine(id + ", " + row["affix"] + ", " + displayString);

                table.AddRow(id, code, magicName, formattedName, displayString, levelRange, typeList, faction, GetSqlString(FormatAffixList(feeds)));
            }

            return table.GetFullScript();
        }
コード例 #25
0
ファイル: Monsters.cs プロジェクト: khadoran/reanimator
        public override string ExportTableInsertScript()
        {
            SQLTableScript table = new SQLTableScript("id", "code",
                "id INT NOT NULL",
                "code VARCHAR(4) NOT NULL",
                "image TEXT",
                "info TEXT",
                "name TEXT",
                "base TEXT",
                "unit TEXT",
                "quality TEXT",
                "hp_min INT",
                "hp_max INT",
                "experience INT",
                "armor INT",
                "shields INT",
                "damage TEXT",
                "damage_min INT",
                "damage_max INT",
                "critical_pct INT",
                "critical_mult INT",
                "anger_range INT",
                "interrupt_atk DOUBLE",
                "interrupt_def DOUBLE",
                "ai_def DOUBLE",
                "stealth_def DOUBLE",
                "phys_atk INT",
                "phys_def INT",
                "fire_atk INT",
                "fire_def INT",
                "elec_atk INT",
                "elec_def INT",
                "spec_atk INT",
                "spec_def INT",
                "pois_atk INT",
                "pois_def INT",
                "treasure INT",
                "treasure_champion INT",
                "treasure_first INT"
                );

            // todo
            // anger range
            // interrupt defence
            // ai change defence
            // stealth defence

            var monsters = Manager.GetDataTable("MONSTERS");
            string id, code, image, name, baseType, quality, hpMin, hpMax, xp, armor, shields,
                physAtk, physDef, fireAtk, fireDef, elecAtk, elecDef, specAtk, specDef, poisAtk, poisDef,
                treasure, treasureChamp, treasureFirst, unitType, damage, damageMin, damageMax,
                angerRange, interruptAttack, interruptDefence, aiChangeDefence, stealthDefence,
                criticalPercent, criticalMultiplier, info;

            foreach (DataRow row in monsters.Rows)
            {
                id = row["Index"].ToString();
                code = GetSqlString(((int)row["code"]).ToString("X"));
                image = GetImage(row["name"] + ".png", 224);
                image = "<div style=\"vertical-align: middle;\">" + image + "</div>";
                image = GetSqlString(image);
                name = GetSqlString(row["String_string"] as string ?? string.Empty);
                info = row["name"].ToString();
                info = GetSqlString(info);

                baseType = ((int)row["baseRow"] != -1 ? monsters.Rows[(int)row["baseRow"]]["String_string"] as string : "") ?? string.Empty;
                baseType = GetWikiArticleLink(baseType);
                baseType = GetSqlString(baseType);

                unitType = GetUnitType((int) row["unitType"]);
                unitType = GetSqlString(unitType);

                quality = GetQualityType((int) row["monsterQuality"]);
                quality = GetSqlString(quality);

                hpMin = row["hpMin"].ToString();
                hpMax = row["hpMax"].ToString();
                xp = row["experience"].ToString();
                armor = row["armor"].ToString();
                shields = row["shields"].ToString();

                damage = GetDamageType((int) row["dmgType"]);
                damage = GetSqlString(damage);
                damageMin = row["minBaseDmg"].ToString().Replace(";", "");
                damageMax = row["maxBaseDmg"].ToString().Replace(";", "");
                criticalPercent = row["criticalPct"].ToString();
                criticalMultiplier = row["criticalMult"].ToString();

                angerRange = row["angerRange"].ToString();
                interruptAttack = ((int) row["interruptAttackPct"] == 0) ? "0" : row["interruptAttackPct"].ToString();
                interruptDefence = ((int)row["interruptDefensePct"] == 0) ? "0" : row["interruptDefensePct"].ToString();
                stealthDefence = ((int)row["stealthDefensePct"] == 0) ? "0" : row["stealthDefensePct"].ToString();
                aiChangeDefence = ((int)row["aiChangeDefense"] == 0) ? "0" : row["aiChangeDefense"].ToString();

                physAtk = row["sfxPhysicalAbilityPct"].ToString();
                physDef = row["sfxPhysicalDefensePct"].ToString();
                fireAtk = row["sfxFireAbilityPct"].ToString();
                fireDef = row["sfxFireDefensePct"].ToString();
                elecAtk = row["sfxElectricAbilityPct"].ToString();
                elecDef = row["sfxElectricDefensePct"].ToString();
                specAtk = row["sfxSpectralAbilityPct"].ToString();
                specDef = row["sfxSpectralDefensePct"].ToString();
                poisAtk = row["sfxToxicAbilityPct"].ToString();
                poisDef = row["sfxToxicDefensePct"].ToString();

                treasure = row["treasure"].ToString();
                treasureChamp = row["championTreasure"].ToString();
                treasureFirst = row["firstTimeTreasure"].ToString();

                table.AddRow(id, code, image, info, name, baseType, unitType, quality, hpMin, hpMax, xp, armor, shields,
                    damage, damageMin, damageMax, criticalPercent, criticalMultiplier,
                    angerRange, interruptAttack, interruptDefence, stealthDefence, aiChangeDefence,
                    physAtk, physDef, fireAtk, fireDef, elecAtk, elecDef, specAtk, specDef, poisAtk, poisDef,
                    treasure, treasureChamp, treasureFirst);
            }

            return table.GetFullScript();
        }
コード例 #26
0
ファイル: Levels.cs プロジェクト: khadoran/reanimator
        public override string ExportTableInsertScript()
        {
            var script = new SQLTableScript("id", "code",
                                            "id INT NOT NULL",
                                            "code VARCHAR(4) NOT NULL",
                                            "name TEXT NOT NULL",
                                            "previous TEXT",
                                            "next TEXT",
                                            "istown BOOL NOT NULL",
                                            "act TEXT NOT NULL",
                                            "hellrift_chance INT NOT NULL",
                                            "adv_chance INT NOT NULL",
                                            "unique_chance INT NOT NULL",
                                            "level_range TEXT",
                                            "has_cannons BOOL NOT NULL",
                                            "spawns TEXT",
                                            "named_spawn TEXT",
                                            "messenger_killcount INT",
                                            "messenger_type TEXT");

            //two types of "mutant"

            //need to figure out number of spawn points to calculate champion chance

            tblMonsters = Manager.GetDataTable("MONSTERS");
            tblSpawnClass = Manager.GetDataTable("SPAWN_CLASS");
            DataTable TblSublevel = Manager.GetDataTable("SUBLEVEL");
            IEnumerable<DataRow> drlgRows = Manager.GetDataTable("LEVEL_DRLG_CHOICE").AsEnumerable();
            DataRow sublevel, drlg;

            string id, code, name, previous, next, act, isTown, riftChance, monsterLevels, championChance, uniqueChance, uniqueName, messengerType,
                additionalInfo,
                hellriftSpawns,
                spawns;
            int index, monsterLevel, monsterMin, monsterMax, hellriftLevel, messengerKillCount, messengerQuality,
                uniqueIndex;
            foreach (DataRow row in Manager.GetDataTable("LEVEL").Rows)
            {
                if (row["code"].ToString() == "0") continue; // ignore blank rows

                //common info
                index = (int)row["Index"];
                id = index.ToString();
                code = GetSqlString(((int)row["code"]).ToString("X"));
                name = GetSqlString(row["levelDisplayName_string"].ToString());
                previous = GetSqlString(GetWikiArticleLink(row["previousLevel_string"].ToString()));
                next = GetSqlString(GetWikiArticleLink(row["nextLevel_string"].ToString()));
                isTown = row["town"].ToString();

                riftChance = row["hellriftChancePercent"].ToString();
                monsterLevel = (int)row["monsterLevel"];
                monsterMin = (int)row["monsterMinLevelLimit"];
                monsterMax = (int)row["monsterMaxLevelLimit"];

                //check if the levels scale
                if ((int)row["monsterLevelFromActivator"] == 3)
                {
                    //if there's a max, display the range
                    if (monsterMax > 1)
                    {
                        //check for
                        if (monsterMax == 55 && monsterMin == 1)
                            monsterLevels = "Scales";
                        else if (monsterMin < 1)
                            monsterLevels = string.Format("Scales (max {0})", monsterMax);
                        else
                            monsterLevels = string.Format("{0} - {1} (scales)", monsterMin, monsterMax);
                    }
                    else
                        monsterLevels = "Scales";
                }
                else
                    monsterLevels = monsterLevel.ToString();

                uniqueChance = row["uniqueMonsterChancePercent"].ToString();

                act = GetSqlString(GetAct((int)row["act"]));    //make this into an article link

                //get hellrift sublevel spawns
                hellriftLevel = (int)row["hellriftSubLevel1"];
                if (hellriftLevel > 3)
                {
                    sublevel = TblSublevel.Rows[hellriftLevel];
                    hellriftSpawns = GetSpawns((int)sublevel["spawnClass"]);
                }

                //get spawns and messenger stuff
                drlg = drlgRows.FirstOrDefault(r => (int)r["levelName"] == index);
                if (drlg != null)
                {
                    //unique monster
                    uniqueIndex = (int)drlg["namedMonsterClass"];
                    if (uniqueIndex > 0)
                        uniqueName = tblMonsters.Rows[uniqueIndex]["String_string"].ToString();

                    //spawns
                    spawns = GetSpawns((int)drlg["spawnClass"]);

                    //messenger
                    messengerKillCount = (int)drlg["eventSpawnMaxKillCount"];
                    if (messengerKillCount > 0)
                    {
                        messengerType = tblMonsters.Rows[(int)drlg["eventSpawnMonsterClass"]]["String_string"].ToString();
                        messengerQuality = (int)drlg["eventSpawnMonsterQuality"];
                    }
                }

                script.AddRow(id, code);
            }

            return script.GetInsertScript();
        }
コード例 #27
0
        public override string ExportTableInsertScript()
        {
            var script = new SQLTableScript("id", "code",
                                            "id INT NOT NULL",
                                            "code VARCHAR(4) NOT NULL",
                                            "name TEXT NOT NULL",
                                            "previous TEXT",
                                            "next TEXT",
                                            "istown BOOL NOT NULL",
                                            "act TEXT NOT NULL",
                                            "hellrift_chance INT NOT NULL",
                                            "adv_chance INT NOT NULL",
                                            "unique_chance INT NOT NULL",
                                            "level_range TEXT",
                                            "has_cannons BOOL NOT NULL",
                                            "spawns TEXT",
                                            "named_spawn TEXT",
                                            "messenger_killcount INT",
                                            "messenger_type TEXT");

            //two types of "mutant"

            //need to figure out number of spawn points to calculate champion chance

            tblMonsters   = Manager.GetDataTable("MONSTERS");
            tblSpawnClass = Manager.GetDataTable("SPAWN_CLASS");
            DataTable             TblSublevel = Manager.GetDataTable("SUBLEVEL");
            IEnumerable <DataRow> drlgRows = Manager.GetDataTable("LEVEL_DRLG_CHOICE").AsEnumerable();
            DataRow sublevel, drlg;

            string id, code, name, previous, next, act, isTown, riftChance, monsterLevels, championChance, uniqueChance, uniqueName, messengerType,
                   additionalInfo,
                   hellriftSpawns,
                   spawns;
            int index, monsterLevel, monsterMin, monsterMax, hellriftLevel, messengerKillCount, messengerQuality,
                uniqueIndex;

            foreach (DataRow row in Manager.GetDataTable("LEVEL").Rows)
            {
                if (row["code"].ToString() == "0")
                {
                    continue;                                // ignore blank rows
                }
                //common info
                index    = (int)row["Index"];
                id       = index.ToString();
                code     = GetSqlString(((int)row["code"]).ToString("X"));
                name     = GetSqlString(row["levelDisplayName_string"].ToString());
                previous = GetSqlString(GetWikiArticleLink(row["previousLevel_string"].ToString()));
                next     = GetSqlString(GetWikiArticleLink(row["nextLevel_string"].ToString()));
                isTown   = row["town"].ToString();


                riftChance   = row["hellriftChancePercent"].ToString();
                monsterLevel = (int)row["monsterLevel"];
                monsterMin   = (int)row["monsterMinLevelLimit"];
                monsterMax   = (int)row["monsterMaxLevelLimit"];

                //check if the levels scale
                if ((int)row["monsterLevelFromActivator"] == 3)
                {
                    //if there's a max, display the range
                    if (monsterMax > 1)
                    {
                        //check for
                        if (monsterMax == 55 && monsterMin == 1)
                        {
                            monsterLevels = "Scales";
                        }
                        else if (monsterMin < 1)
                        {
                            monsterLevels = string.Format("Scales (max {0})", monsterMax);
                        }
                        else
                        {
                            monsterLevels = string.Format("{0} - {1} (scales)", monsterMin, monsterMax);
                        }
                    }
                    else
                    {
                        monsterLevels = "Scales";
                    }
                }
                else
                {
                    monsterLevels = monsterLevel.ToString();
                }

                uniqueChance = row["uniqueMonsterChancePercent"].ToString();

                act = GetSqlString(GetAct((int)row["act"]));    //make this into an article link

                //get hellrift sublevel spawns
                hellriftLevel = (int)row["hellriftSubLevel1"];
                if (hellriftLevel > 3)
                {
                    sublevel       = TblSublevel.Rows[hellriftLevel];
                    hellriftSpawns = GetSpawns((int)sublevel["spawnClass"]);
                }

                //get spawns and messenger stuff
                drlg = drlgRows.FirstOrDefault(r => (int)r["levelName"] == index);
                if (drlg != null)
                {
                    //unique monster
                    uniqueIndex = (int)drlg["namedMonsterClass"];
                    if (uniqueIndex > 0)
                    {
                        uniqueName = tblMonsters.Rows[uniqueIndex]["String_string"].ToString();
                    }

                    //spawns
                    spawns = GetSpawns((int)drlg["spawnClass"]);

                    //messenger
                    messengerKillCount = (int)drlg["eventSpawnMaxKillCount"];
                    if (messengerKillCount > 0)
                    {
                        messengerType    = tblMonsters.Rows[(int)drlg["eventSpawnMonsterClass"]]["String_string"].ToString();
                        messengerQuality = (int)drlg["eventSpawnMonsterQuality"];
                    }
                }

                script.AddRow(id, code);
            }

            return(script.GetInsertScript());
        }
コード例 #28
0
ファイル: MonsterQuality.cs プロジェクト: khadoran/reanimator
        public override string ExportTableInsertScript()
        {
            var script = new SQLTableScript("id", "",
                                            "id INT",
                                            "name TEXT",
                                            "rarity INT",
                                            "money_chance DOUBLE",
                                            "money_amount DOUBLE",
                                            "treasure_level_boost INT",
                                            "health_multi INT",
                                            "props TEXT",
                                            "affix_count INT",
                                            "affix_type1 TEXT",
                                            "affix_type2 TEXT",
                                            "affix_type3 TEXT",
                                            "affix_prob1 INT",
                                            "affix_prob2 INT",
                                            "affix_prob3 INT",
                                            "experience_multi INT");

            var data = Manager.GetDataTable("MONSTER_QUALITY");

            // ReSharper disable TooWideLocalVariableScope
            string id, name, rarity, moneyChance, moneyAmount, treasureBoost, healthMulti, props,
                affixCount, affixType1, affixType2, affixType3, affixProb1, affixProb2, affixProb3, experience;
            // ReSharper restore TooWideLocalVariableScope

            foreach (DataRow row in data.Rows)
            {
                if ((int) row["Index"] == 6) break; // skip irrelevent

                id = row["Index"].ToString();

                name = GetFormattedString(row["quality"].ToString());
                //name = "{{" + name + "|" + name + "}}"; // didn't work in the parser - dunno why
                name = GetSqlString(name);

                rarity = row["rarity"].ToString();
                moneyChance = row["MoneyChanceMultiplier"].ToString();
                moneyAmount = row["MoneyAmountMultiplier"].ToString();
                treasureBoost = row["TreasureLevelBoost"].ToString();
                healthMulti = row["HealthMultiplier"].ToString();

                props = row["prop1"].ToString();
                props = props.Replace("\n", "<br/>").Replace("SetStat673('", "").Replace(", ", " ").Replace(");", "").Replace("'", "");
                props = GetSqlString(props);

                affixCount = row["AffixCount"].ToString();
                affixType1 = GetSqlString(row["AffixType1_string"].ToString());
                affixType2 = GetSqlString(row["AffixType2_string"].ToString());
                affixType3 = GetSqlString(row["AffixType3_string"].ToString());
                affixProb1 = row["AffixProbability1"].ToString().Replace(";", "");
                affixProb2 = row["AffixProbability2"].ToString().Replace(";", "");
                affixProb3 = row["AffixProbability3"].ToString().Replace(";", "");
                experience = row["experienceMultiplier"].ToString();

                if (string.IsNullOrEmpty(affixProb1)) affixProb1 = "0";
                if (string.IsNullOrEmpty(affixProb2)) affixProb2 = "0";
                if (string.IsNullOrEmpty(affixProb3)) affixProb3 = "0";

                script.AddRow(id, name, rarity, moneyChance, moneyAmount, treasureBoost, healthMulti, props,
                    affixCount, affixType1, affixType2, affixType3, affixProb1, affixProb2, affixProb3, experience);
            }

            return script.GetFullScript();
        }
コード例 #29
0
ファイル: Affixes.cs プロジェクト: dragnilar/reanimator
        public override string ExportTableInsertScript()
        {
            SQLTableScript table = new SQLTableScript("id", "code",
                                                      "id INT NOT NULL",
                                                      "code VARCHAR(6) NOT NULL",
                                                      "name TEXT NOT NULL",
                                                      "formatted_name TEXT NOT NULL",
                                                      "display_string TEXT NOT NULL",
                                                      "ilvl_range TEXT NOT NULL",
                                                      "allowed_types TEXT NOT NULL",
                                                      "faction TEXT"
                                                      , "feed_costs TEXT NOT NULL"
                                                      );

            var affixes = Manager.GetDataTable("AFFIXES");

            string id, code, magicName, formattedName, displayString, levelRange, typeList, faction;

            string[] feeds;
            string   quality, property1, allowType;
            bool     isMonster = false;

            Evaluator evaluator = new Evaluator();

            ItemDisplay.Manager = Manager;
            evaluator.Manager   = Manager;

            foreach (DataRow row in affixes.Rows)
            {
                //don't show affixes that aren't used/implemented
                if ((int)row["spawn"] == 0)
                {
                    continue;
                }
                isMonster = false;

                magicName = row["magicNameString_string"].ToString();
                if (String.IsNullOrWhiteSpace(magicName))
                {
                    continue;
                }

                typeList = string.Empty;
                faction  = row["onlyOnItemsRequiringUnitType_string"].ToString();
                if (!String.IsNullOrWhiteSpace(faction))
                {
                    faction = GetSqlString(faction);
                }

                for (int i = 1; i < 7; i++)
                {
                    allowType = row[String.Format("allowTypes{0}_string", i)].ToString();
                    if (String.IsNullOrWhiteSpace(allowType))
                    {
                        break;
                    }
                    else if (allowType.CompareTo("monster") == 0)
                    {
                        isMonster = true;
                        break;
                    }

                    if (!String.IsNullOrWhiteSpace(typeList))
                    {
                        typeList += ", ";
                    }

                    typeList += GetItemType(allowType);
                }

                if (isMonster)
                {
                    continue;
                }

                typeList   = GetSqlString(typeList);
                levelRange = GetSqlString(row["minLevel"].ToString() + "-" + row["maxLevel"].ToString());

                Unit  unit  = new Item();
                Game3 game3 = new Game3();
                evaluator.Unit  = unit;
                evaluator.Game3 = game3;
                for (int i = 1; i < 7; i++)
                {
                    property1 = row["property" + i].ToString();
                    evaluator.Evaluate(property1);
                }

                String[] displayStrings = ItemDisplay.GetDisplayStrings(unit);
                feeds = ItemDisplay.GetFeedCosts(unit);

                id   = row["Index"].ToString();
                code = GetSqlString(((int)row["code"]).ToString("X"));

                magicName     = magicName.Replace("[item]", string.Empty).Trim();
                formattedName = String.Format("'''{0}'''", magicName);

                quality = row["affixType1_string"].ToString();
                switch (quality)
                {
                case "common":
                    //just leave it bold
                    break;

                case "rare":
                    formattedName = Colorize(formattedName, WikiColors.Rare);
                    break;

                case "legendary":
                    formattedName = Colorize(formattedName, WikiColors.Legendary);
                    break;

                case "mythic":
                    formattedName = Colorize(formattedName, WikiColors.Mythic);
                    break;

                default:
                    throw new NotImplementedException(String.Format("Apparently we need '{0}'?", quality));
                }
                magicName     = GetSqlString(magicName);
                formattedName = GetSqlString(formattedName);
                displayString = GetSqlString(FormatAffixList(displayStrings));

                Debug.WriteLine(id + ", " + row["affix"] + ", " + displayString);

                table.AddRow(id, code, magicName, formattedName, displayString, levelRange, typeList, faction, GetSqlString(FormatAffixList(feeds)));
            }

            return(table.GetFullScript());
        }
コード例 #30
0
ファイル: ItemQuality.cs プロジェクト: dragnilar/reanimator
        public override string ExportTableInsertScript()
        {
            var script = new SQLTableScript("id", "code",
                                            "id INT",
                                            "code VARCHAR(4)",
                                            "name TEXT",
                                            "rarity INT",
                                            "nightmare_rarity INT",
                                            "hell_rarity INT",
                                            "vendor_rarity INT",
                                            "luck_rarity INT",
                                            "gambling_rarity INT",
                                            "success_rate INT",
                                            "nanoshard_chance INT",
                                            "quality_level INT",
                                            "proc_chance INT");

            string id,
                   code,
                   name,
                   rarity,
                   nightmareRarity,
                   hellRarity,
                   vendorRarity,
                   luckRarity,
                   gamblingRarity,
                   successRate,
                   nanoshardChance,
                   qualityLevel,
                   procChange;

            var data = Manager.GetDataTable("ITEM_QUALITY");

            foreach (DataRow row in data.Rows)
            {
                id = row["Index"].ToString();
                if (id == "13")
                {
                    continue;            //core
                }
                if (id == "11")
                {
                    continue;            //powerup
                }
                if (id == "4")
                {
                    continue;           //mutant
                }
                if (id == "9")
                {
                    continue;           //mutant-mod
                }
                if (id == "10")
                {
                    continue;            //unique-mod
                }
                code = row["code"].ToString();
                code = GetSqlString(code);

                name = row["quality"].ToString();
                name = GetFormattedString(name);
                name = name.Replace("-M", " Mod");
                name = GetSqlString(name);

                //nameString = row["displayName_string"].ToString();
                //nameString = GetSqlString(nameString);

                rarity          = row["rarity"].ToString();
                nightmareRarity = row["nightmareRarity"].ToString();
                hellRarity      = row["hellRarity"].ToString();
                vendorRarity    = row["vendorRarity"].ToString();
                luckRarity      = row["luckRarity"].ToString();
                gamblingRarity  = row["gamblingRarity"].ToString();
                successRate     = row["successRate"].ToString();
                nanoshardChance = row["extraScrapChance"].ToString();
                qualityLevel    = row["qualityLevel"].ToString();
                procChange      = row["procChance"].ToString();

                script.AddRow(id, code, name, rarity, nightmareRarity, hellRarity, vendorRarity, luckRarity, gamblingRarity, successRate, nanoshardChance, qualityLevel, procChange);
            }

            return(script.GetFullScript());
        }
コード例 #31
0
ファイル: Recipes.cs プロジェクト: dragnilar/reanimator
        public override string ExportTableInsertScript()
        {
            SQLTableScript table = new SQLTableScript("id", "code",
                                                      "id INT NOT NULL",
                                                      "code VARCHAR(6) NOT NULL",
                                                      "ingredients TEXT NOT NULL",
                                                      "result TEXT NOT NULL"
                                                      );

            var recipes  = Manager.GetDataTable("RECIPES");
            var treasure = Manager.GetDataTable("TREASURE");
            var items    = Manager.GetDataTable("ITEMS");

            string id, code, ingredients, result;
            string ingredient;
            int    itemIndex, quantity, treasureIndex;

            string[] skipCodes = { "6742", "6842", "6942", "4443", "4943", "5844" };

            foreach (DataRow row in recipes.Rows)
            {
                //skip non-cube recipes
                if ((int)row["cubeRecipe"] != 1)
                {
                    continue;
                }

                code = ((int)row["code"]).ToString("X");
                //skip egg/mythic/key recipes for now
                if (skipCodes.Contains(code))
                {
                    continue;
                }

                ingredient  = string.Empty;
                ingredients = string.Empty;
                result      = string.Empty;

                id   = row["Index"].ToString();
                code = GetSqlString(code);

                for (int i = 1; i < 7; i++)
                {
                    itemIndex = (int)row[string.Format("ingredient{0}ItemClass", i)];
                    if (itemIndex < 0)
                    {
                        continue;                 //skip blank ingredients
                    }
                    ingredient = items.Rows[itemIndex]["String_string"].ToString();

                    quantity = (int)row[string.Format("ingredient{0}MinQuantity", i)]; //pretty sure we just need one, since there doesn't seem to be any ranges
                    if (quantity > 1)
                    {
                        ingredient += " (" + quantity + ")";
                    }
                    ingredients += ingredient + "<br />";
                }

                treasureIndex = (int)row["treasureResult1"];
                itemIndex     = int.Parse(treasure.Rows[treasureIndex]["item1"].ToString().Split(',')[1]); //should be just one result
                result        = items.Rows[itemIndex]["String_string"].ToString();

                table.AddRow(id, code, GetSqlString(ingredients), GetSqlString(result));
            }

            return(table.GetFullScript());
        }
コード例 #32
0
ファイル: Monsters.cs プロジェクト: dragnilar/reanimator
        public override string ExportTableInsertScript()
        {
            SQLTableScript table = new SQLTableScript("id", "code",
                                                      "id INT NOT NULL",
                                                      "code VARCHAR(4) NOT NULL",
                                                      "image TEXT",
                                                      "info TEXT",
                                                      "name TEXT",
                                                      "base TEXT",
                                                      "unit TEXT",
                                                      "quality TEXT",
                                                      "hp_min INT",
                                                      "hp_max INT",
                                                      "experience INT",
                                                      "armor INT",
                                                      "shields INT",
                                                      "damage TEXT",
                                                      "damage_min INT",
                                                      "damage_max INT",
                                                      "critical_pct INT",
                                                      "critical_mult INT",
                                                      "anger_range INT",
                                                      "interrupt_atk DOUBLE",
                                                      "interrupt_def DOUBLE",
                                                      "ai_def DOUBLE",
                                                      "stealth_def DOUBLE",
                                                      "phys_atk INT",
                                                      "phys_def INT",
                                                      "fire_atk INT",
                                                      "fire_def INT",
                                                      "elec_atk INT",
                                                      "elec_def INT",
                                                      "spec_atk INT",
                                                      "spec_def INT",
                                                      "pois_atk INT",
                                                      "pois_def INT",
                                                      "treasure INT",
                                                      "treasure_champion INT",
                                                      "treasure_first INT"
                                                      );

            // todo
            // anger range
            // interrupt defence
            // ai change defence
            // stealth defence

            var    monsters = Manager.GetDataTable("MONSTERS");
            string id, code, image, name, baseType, quality, hpMin, hpMax, xp, armor, shields,
                   physAtk, physDef, fireAtk, fireDef, elecAtk, elecDef, specAtk, specDef, poisAtk, poisDef,
                   treasure, treasureChamp, treasureFirst, unitType, damage, damageMin, damageMax,
                   angerRange, interruptAttack, interruptDefence, aiChangeDefence, stealthDefence,
                   criticalPercent, criticalMultiplier, info;

            foreach (DataRow row in monsters.Rows)
            {
                id    = row["Index"].ToString();
                code  = GetSqlString(((int)row["code"]).ToString("X"));
                image = GetImage(row["name"] + ".png", 224);
                image = "<div style=\"vertical-align: middle;\">" + image + "</div>";
                image = GetSqlString(image);
                name  = GetSqlString(row["String_string"] as string ?? string.Empty);
                info  = row["name"].ToString();
                info  = GetSqlString(info);

                baseType = ((int)row["baseRow"] != -1 ? monsters.Rows[(int)row["baseRow"]]["String_string"] as string : "") ?? string.Empty;
                baseType = GetWikiArticleLink(baseType);
                baseType = GetSqlString(baseType);

                unitType = GetUnitType((int)row["unitType"]);
                unitType = GetSqlString(unitType);

                quality = GetQualityType((int)row["monsterQuality"]);
                quality = GetSqlString(quality);

                hpMin   = row["hpMin"].ToString();
                hpMax   = row["hpMax"].ToString();
                xp      = row["experience"].ToString();
                armor   = row["armor"].ToString();
                shields = row["shields"].ToString();

                damage             = GetDamageType((int)row["dmgType"]);
                damage             = GetSqlString(damage);
                damageMin          = row["minBaseDmg"].ToString().Replace(";", "");
                damageMax          = row["maxBaseDmg"].ToString().Replace(";", "");
                criticalPercent    = row["criticalPct"].ToString();
                criticalMultiplier = row["criticalMult"].ToString();

                angerRange       = row["angerRange"].ToString();
                interruptAttack  = ((int)row["interruptAttackPct"] == 0) ? "0" : row["interruptAttackPct"].ToString();
                interruptDefence = ((int)row["interruptDefensePct"] == 0) ? "0" : row["interruptDefensePct"].ToString();
                stealthDefence   = ((int)row["stealthDefensePct"] == 0) ? "0" : row["stealthDefensePct"].ToString();
                aiChangeDefence  = ((int)row["aiChangeDefense"] == 0) ? "0" : row["aiChangeDefense"].ToString();

                physAtk = row["sfxPhysicalAbilityPct"].ToString();
                physDef = row["sfxPhysicalDefensePct"].ToString();
                fireAtk = row["sfxFireAbilityPct"].ToString();
                fireDef = row["sfxFireDefensePct"].ToString();
                elecAtk = row["sfxElectricAbilityPct"].ToString();
                elecDef = row["sfxElectricDefensePct"].ToString();
                specAtk = row["sfxSpectralAbilityPct"].ToString();
                specDef = row["sfxSpectralDefensePct"].ToString();
                poisAtk = row["sfxToxicAbilityPct"].ToString();
                poisDef = row["sfxToxicDefensePct"].ToString();

                treasure      = row["treasure"].ToString();
                treasureChamp = row["championTreasure"].ToString();
                treasureFirst = row["firstTimeTreasure"].ToString();

                table.AddRow(id, code, image, info, name, baseType, unitType, quality, hpMin, hpMax, xp, armor, shields,
                             damage, damageMin, damageMax, criticalPercent, criticalMultiplier,
                             angerRange, interruptAttack, interruptDefence, stealthDefence, aiChangeDefence,
                             physAtk, physDef, fireAtk, fireDef, elecAtk, elecDef, specAtk, specDef, poisAtk, poisDef,
                             treasure, treasureChamp, treasureFirst);
            }

            return(table.GetFullScript());
        }
コード例 #33
0
        public override string ExportTableInsertScript()
        {
            SQLTableScript table = new SQLTableScript("id", "code",
                                                      "id INT NOT NULL",
                                                      "code VARCHAR(6) NOT NULL",
                                                      //"isBossAffix BOOL NOT NULL",
                                                      "name TEXT NOT NULL",
                                                      "formatted_name TEXT NOT NULL",
                                                      "display_string TEXT NOT NULL"
                                                      );

            var affixes = Manager.GetDataTable("AFFIXES");

            string id, code, magicName, formattedName, displayString;
            string quality, property1;
            object shields;
            bool   isBoss = false;

            Evaluator evaluator = new Evaluator();

            ItemDisplay.Manager = Manager;
            evaluator.Manager   = Manager;

            foreach (DataRow row in affixes.Rows)
            {
                //don't show affixes that aren't used/implemented
                //if ((int)row["spawn"] == 0) continue;
                isBoss = false;

                magicName = row["magicNameString_string"].ToString();
                if (String.IsNullOrWhiteSpace(magicName))
                {
                    continue;
                }
                if (row["allowTypes1_string"].ToString() != "monster")
                {
                    continue;
                }


                Unit  unit  = new Monster();
                Game3 game3 = new Game3();
                evaluator.Unit  = unit;
                evaluator.Game3 = game3;
                for (int i = 1; i < 7; i++)
                {
                    property1 = row["property" + i].ToString();
                    evaluator.Evaluate(property1);
                }

                String[] displayStrings = ItemDisplay.GetDisplayStrings(unit);

                id   = row["Index"].ToString();
                code = GetSqlString(((int)row["code"]).ToString("X"));

                magicName = magicName.Replace("[item]", string.Empty).Trim();
                isBoss    = magicName.Contains("Sydonai");
                if (isBoss)
                {
                    continue;           //don't think we need boss titles
                }
                formattedName = String.Format("'''{0}'''", magicName);

                quality = row["affixType1_string"].ToString();
                switch (quality)
                {
                case "common":
                    //just leave it bold
                    break;

                case "rare":
                    formattedName = Colorize(formattedName, WikiColors.Rare);
                    break;

                case "legendary":
                    formattedName = Colorize(formattedName, WikiColors.Legendary);
                    break;

                case "mythic":
                    formattedName = Colorize(formattedName, WikiColors.Mythic);
                    break;

                default:
                    throw new NotImplementedException(String.Format("Apparently we need '{0}'?", quality));
                }
                magicName     = GetSqlString(magicName);
                formattedName = GetSqlString(formattedName);
                displayString = displayStrings.Aggregate(string.Empty, (current, affix) => current + affix + "<br />");
                displayString = displayString.Replace(" you get", "");   //display "when hit" instead of "when you get hit"
                //manually add shields if needed (never a number)
                shields = unit.GetStat("shield_buffer_max");
                if (!(shields is int))
                {
                    displayString = displayString.Replace("ilevel", shields.ToString());    //hacky, but whatever
                }
                //add procs and skills
                displayString += AddOtherProperties(unit);
                displayString  = GetSqlString(displayString);
                //Debug.WriteLine(id + ", " + row["affix"] + ", " + displayString);

                table.AddRow(id, code, /*Convert.ToInt32(isBoss).ToString(),*/ magicName, formattedName, displayString);
            }

            return(table.GetFullScript());
        }
コード例 #34
0
        public override string ExportTableInsertScript()
        {
            var script = new SQLTableScript("id", "",
                                            "id INT",
                                            "name TEXT",
                                            "rarity INT",
                                            "money_chance DOUBLE",
                                            "money_amount DOUBLE",
                                            "treasure_level_boost INT",
                                            "health_multi INT",
                                            "props TEXT",
                                            "affix_count INT",
                                            "affix_type1 TEXT",
                                            "affix_type2 TEXT",
                                            "affix_type3 TEXT",
                                            "affix_prob1 INT",
                                            "affix_prob2 INT",
                                            "affix_prob3 INT",
                                            "experience_multi INT");

            var data = Manager.GetDataTable("MONSTER_QUALITY");

            // ReSharper disable TooWideLocalVariableScope
            string id, name, rarity, moneyChance, moneyAmount, treasureBoost, healthMulti, props,
                   affixCount, affixType1, affixType2, affixType3, affixProb1, affixProb2, affixProb3, experience;

            // ReSharper restore TooWideLocalVariableScope

            foreach (DataRow row in data.Rows)
            {
                if ((int)row["Index"] == 6)
                {
                    break;                          // skip irrelevent
                }
                id = row["Index"].ToString();

                name = GetFormattedString(row["quality"].ToString());
                //name = "{{" + name + "|" + name + "}}"; // didn't work in the parser - dunno why
                name = GetSqlString(name);

                rarity        = row["rarity"].ToString();
                moneyChance   = row["MoneyChanceMultiplier"].ToString();
                moneyAmount   = row["MoneyAmountMultiplier"].ToString();
                treasureBoost = row["TreasureLevelBoost"].ToString();
                healthMulti   = row["HealthMultiplier"].ToString();

                props = row["prop1"].ToString();
                props = props.Replace("\n", "<br/>").Replace("SetStat673('", "").Replace(", ", " ").Replace(");", "").Replace("'", "");
                props = GetSqlString(props);

                affixCount = row["AffixCount"].ToString();
                affixType1 = GetSqlString(row["AffixType1_string"].ToString());
                affixType2 = GetSqlString(row["AffixType2_string"].ToString());
                affixType3 = GetSqlString(row["AffixType3_string"].ToString());
                affixProb1 = row["AffixProbability1"].ToString().Replace(";", "");
                affixProb2 = row["AffixProbability2"].ToString().Replace(";", "");
                affixProb3 = row["AffixProbability3"].ToString().Replace(";", "");
                experience = row["experienceMultiplier"].ToString();

                if (string.IsNullOrEmpty(affixProb1))
                {
                    affixProb1 = "0";
                }
                if (string.IsNullOrEmpty(affixProb2))
                {
                    affixProb2 = "0";
                }
                if (string.IsNullOrEmpty(affixProb3))
                {
                    affixProb3 = "0";
                }

                script.AddRow(id, name, rarity, moneyChance, moneyAmount, treasureBoost, healthMulti, props,
                              affixCount, affixType1, affixType2, affixType3, affixProb1, affixProb2, affixProb3, experience);
            }

            return(script.GetFullScript());
        }