[Refactor] Simplify NPC Loading (#2087)

* Refactor / simplify NPC loading

* Update spacing [skip ci]

* Update base_npc_types_repository.h
This commit is contained in:
Chris Miles
2022-05-01 17:04:38 -05:00
committed by GitHub
parent 71ae03d5bc
commit 8f0b80097e
2 changed files with 616 additions and 730 deletions
@@ -26,15 +26,16 @@ public:
int race;
int class_;
int bodytype;
int hp;
int mana;
int64 hp;
int64 mana;
int gender;
int texture;
int helmtexture;
int herosforgemodel;
float size;
int hp_regen_rate;
int mana_regen_rate;
int64 hp_regen_rate;
int64 hp_regen_per_second;
int64 mana_regen_rate;
int loottable_id;
int merchant_id;
int alt_currency_id;
@@ -167,6 +168,7 @@ public:
"herosforgemodel",
"size",
"hp_regen_rate",
"hp_regen_per_second",
"mana_regen_rate",
"loottable_id",
"merchant_id",
@@ -296,6 +298,7 @@ public:
"herosforgemodel",
"size",
"hp_regen_rate",
"hp_regen_per_second",
"mana_regen_rate",
"loottable_id",
"merchant_id",
@@ -459,6 +462,7 @@ public:
entry.herosforgemodel = 0;
entry.size = 0;
entry.hp_regen_rate = 0;
entry.hp_regen_per_second = 0;
entry.mana_regen_rate = 0;
entry.loottable_id = 0;
entry.merchant_id = 0;
@@ -609,122 +613,123 @@ public:
entry.race = atoi(row[4]);
entry.class_ = atoi(row[5]);
entry.bodytype = atoi(row[6]);
entry.hp = atoi(row[7]);
entry.mana = atoi(row[8]);
entry.hp = strtoll(row[7], nullptr, 10);
entry.mana = strtoll(row[8], nullptr, 10);
entry.gender = atoi(row[9]);
entry.texture = atoi(row[10]);
entry.helmtexture = atoi(row[11]);
entry.herosforgemodel = atoi(row[12]);
entry.size = static_cast<float>(atof(row[13]));
entry.hp_regen_rate = atoi(row[14]);
entry.mana_regen_rate = atoi(row[15]);
entry.loottable_id = atoi(row[16]);
entry.merchant_id = atoi(row[17]);
entry.alt_currency_id = atoi(row[18]);
entry.npc_spells_id = atoi(row[19]);
entry.npc_spells_effects_id = atoi(row[20]);
entry.npc_faction_id = atoi(row[21]);
entry.adventure_template_id = atoi(row[22]);
entry.trap_template = atoi(row[23]);
entry.mindmg = atoi(row[24]);
entry.maxdmg = atoi(row[25]);
entry.attack_count = atoi(row[26]);
entry.npcspecialattks = row[27] ? row[27] : "";
entry.special_abilities = row[28] ? row[28] : "";
entry.aggroradius = atoi(row[29]);
entry.assistradius = atoi(row[30]);
entry.face = atoi(row[31]);
entry.luclin_hairstyle = atoi(row[32]);
entry.luclin_haircolor = atoi(row[33]);
entry.luclin_eyecolor = atoi(row[34]);
entry.luclin_eyecolor2 = atoi(row[35]);
entry.luclin_beardcolor = atoi(row[36]);
entry.luclin_beard = atoi(row[37]);
entry.drakkin_heritage = atoi(row[38]);
entry.drakkin_tattoo = atoi(row[39]);
entry.drakkin_details = atoi(row[40]);
entry.armortint_id = atoi(row[41]);
entry.armortint_red = atoi(row[42]);
entry.armortint_green = atoi(row[43]);
entry.armortint_blue = atoi(row[44]);
entry.d_melee_texture1 = atoi(row[45]);
entry.d_melee_texture2 = atoi(row[46]);
entry.ammo_idfile = row[47] ? row[47] : "";
entry.prim_melee_type = atoi(row[48]);
entry.sec_melee_type = atoi(row[49]);
entry.ranged_type = atoi(row[50]);
entry.runspeed = static_cast<float>(atof(row[51]));
entry.MR = atoi(row[52]);
entry.CR = atoi(row[53]);
entry.DR = atoi(row[54]);
entry.FR = atoi(row[55]);
entry.PR = atoi(row[56]);
entry.Corrup = atoi(row[57]);
entry.PhR = atoi(row[58]);
entry.see_invis = atoi(row[59]);
entry.see_invis_undead = atoi(row[60]);
entry.qglobal = atoi(row[61]);
entry.AC = atoi(row[62]);
entry.npc_aggro = atoi(row[63]);
entry.spawn_limit = atoi(row[64]);
entry.attack_speed = static_cast<float>(atof(row[65]));
entry.attack_delay = atoi(row[66]);
entry.findable = atoi(row[67]);
entry.STR = atoi(row[68]);
entry.STA = atoi(row[69]);
entry.DEX = atoi(row[70]);
entry.AGI = atoi(row[71]);
entry._INT = atoi(row[72]);
entry.WIS = atoi(row[73]);
entry.CHA = atoi(row[74]);
entry.see_hide = atoi(row[75]);
entry.see_improved_hide = atoi(row[76]);
entry.trackable = atoi(row[77]);
entry.isbot = atoi(row[78]);
entry.exclude = atoi(row[79]);
entry.ATK = atoi(row[80]);
entry.Accuracy = atoi(row[81]);
entry.Avoidance = atoi(row[82]);
entry.slow_mitigation = atoi(row[83]);
entry.version = atoi(row[84]);
entry.maxlevel = atoi(row[85]);
entry.scalerate = atoi(row[86]);
entry.private_corpse = atoi(row[87]);
entry.unique_spawn_by_name = atoi(row[88]);
entry.underwater = atoi(row[89]);
entry.isquest = atoi(row[90]);
entry.emoteid = atoi(row[91]);
entry.spellscale = static_cast<float>(atof(row[92]));
entry.healscale = static_cast<float>(atof(row[93]));
entry.no_target_hotkey = atoi(row[94]);
entry.raid_target = atoi(row[95]);
entry.armtexture = atoi(row[96]);
entry.bracertexture = atoi(row[97]);
entry.handtexture = atoi(row[98]);
entry.legtexture = atoi(row[99]);
entry.feettexture = atoi(row[100]);
entry.light = atoi(row[101]);
entry.walkspeed = atoi(row[102]);
entry.peqid = atoi(row[103]);
entry.unique_ = atoi(row[104]);
entry.fixed = atoi(row[105]);
entry.ignore_despawn = atoi(row[106]);
entry.show_name = atoi(row[107]);
entry.untargetable = atoi(row[108]);
entry.charm_ac = atoi(row[109]);
entry.charm_min_dmg = atoi(row[110]);
entry.charm_max_dmg = atoi(row[111]);
entry.charm_attack_delay = atoi(row[112]);
entry.charm_accuracy_rating = atoi(row[113]);
entry.charm_avoidance_rating = atoi(row[114]);
entry.charm_atk = atoi(row[115]);
entry.skip_global_loot = atoi(row[116]);
entry.rare_spawn = atoi(row[117]);
entry.stuck_behavior = atoi(row[118]);
entry.model = atoi(row[119]);
entry.flymode = atoi(row[120]);
entry.always_aggro = atoi(row[121]);
entry.exp_mod = atoi(row[122]);
entry.hp_regen_rate = strtoll(row[14], nullptr, 10);
entry.hp_regen_per_second = strtoll(row[15], nullptr, 10);
entry.mana_regen_rate = strtoll(row[16], nullptr, 10);
entry.loottable_id = atoi(row[17]);
entry.merchant_id = atoi(row[18]);
entry.alt_currency_id = atoi(row[19]);
entry.npc_spells_id = atoi(row[20]);
entry.npc_spells_effects_id = atoi(row[21]);
entry.npc_faction_id = atoi(row[22]);
entry.adventure_template_id = atoi(row[23]);
entry.trap_template = atoi(row[24]);
entry.mindmg = atoi(row[25]);
entry.maxdmg = atoi(row[26]);
entry.attack_count = atoi(row[27]);
entry.npcspecialattks = row[28] ? row[28] : "";
entry.special_abilities = row[29] ? row[29] : "";
entry.aggroradius = atoi(row[30]);
entry.assistradius = atoi(row[31]);
entry.face = atoi(row[32]);
entry.luclin_hairstyle = atoi(row[33]);
entry.luclin_haircolor = atoi(row[34]);
entry.luclin_eyecolor = atoi(row[35]);
entry.luclin_eyecolor2 = atoi(row[36]);
entry.luclin_beardcolor = atoi(row[37]);
entry.luclin_beard = atoi(row[38]);
entry.drakkin_heritage = atoi(row[39]);
entry.drakkin_tattoo = atoi(row[40]);
entry.drakkin_details = atoi(row[41]);
entry.armortint_id = atoi(row[42]);
entry.armortint_red = atoi(row[43]);
entry.armortint_green = atoi(row[44]);
entry.armortint_blue = atoi(row[45]);
entry.d_melee_texture1 = atoi(row[46]);
entry.d_melee_texture2 = atoi(row[47]);
entry.ammo_idfile = row[48] ? row[48] : "";
entry.prim_melee_type = atoi(row[49]);
entry.sec_melee_type = atoi(row[50]);
entry.ranged_type = atoi(row[51]);
entry.runspeed = static_cast<float>(atof(row[52]));
entry.MR = atoi(row[53]);
entry.CR = atoi(row[54]);
entry.DR = atoi(row[55]);
entry.FR = atoi(row[56]);
entry.PR = atoi(row[57]);
entry.Corrup = atoi(row[58]);
entry.PhR = atoi(row[59]);
entry.see_invis = atoi(row[60]);
entry.see_invis_undead = atoi(row[61]);
entry.qglobal = atoi(row[62]);
entry.AC = atoi(row[63]);
entry.npc_aggro = atoi(row[64]);
entry.spawn_limit = atoi(row[65]);
entry.attack_speed = static_cast<float>(atof(row[66]));
entry.attack_delay = atoi(row[67]);
entry.findable = atoi(row[68]);
entry.STR = atoi(row[69]);
entry.STA = atoi(row[70]);
entry.DEX = atoi(row[71]);
entry.AGI = atoi(row[72]);
entry._INT = atoi(row[73]);
entry.WIS = atoi(row[74]);
entry.CHA = atoi(row[75]);
entry.see_hide = atoi(row[76]);
entry.see_improved_hide = atoi(row[77]);
entry.trackable = atoi(row[78]);
entry.isbot = atoi(row[79]);
entry.exclude = atoi(row[80]);
entry.ATK = atoi(row[81]);
entry.Accuracy = atoi(row[82]);
entry.Avoidance = atoi(row[83]);
entry.slow_mitigation = atoi(row[84]);
entry.version = atoi(row[85]);
entry.maxlevel = atoi(row[86]);
entry.scalerate = atoi(row[87]);
entry.private_corpse = atoi(row[88]);
entry.unique_spawn_by_name = atoi(row[89]);
entry.underwater = atoi(row[90]);
entry.isquest = atoi(row[91]);
entry.emoteid = atoi(row[92]);
entry.spellscale = static_cast<float>(atof(row[93]));
entry.healscale = static_cast<float>(atof(row[94]));
entry.no_target_hotkey = atoi(row[95]);
entry.raid_target = atoi(row[96]);
entry.armtexture = atoi(row[97]);
entry.bracertexture = atoi(row[98]);
entry.handtexture = atoi(row[99]);
entry.legtexture = atoi(row[100]);
entry.feettexture = atoi(row[101]);
entry.light = atoi(row[102]);
entry.walkspeed = atoi(row[103]);
entry.peqid = atoi(row[104]);
entry.unique_ = atoi(row[105]);
entry.fixed = atoi(row[106]);
entry.ignore_despawn = atoi(row[107]);
entry.show_name = atoi(row[108]);
entry.untargetable = atoi(row[109]);
entry.charm_ac = atoi(row[110]);
entry.charm_min_dmg = atoi(row[111]);
entry.charm_max_dmg = atoi(row[112]);
entry.charm_attack_delay = atoi(row[113]);
entry.charm_accuracy_rating = atoi(row[114]);
entry.charm_avoidance_rating = atoi(row[115]);
entry.charm_atk = atoi(row[116]);
entry.skip_global_loot = atoi(row[117]);
entry.rare_spawn = atoi(row[118]);
entry.stuck_behavior = atoi(row[119]);
entry.model = atoi(row[120]);
entry.flymode = atoi(row[121]);
entry.always_aggro = atoi(row[122]);
entry.exp_mod = atoi(row[123]);
return entry;
}
@@ -772,114 +777,115 @@ public:
update_values.push_back(columns[12] + " = " + std::to_string(npc_types_entry.herosforgemodel));
update_values.push_back(columns[13] + " = " + std::to_string(npc_types_entry.size));
update_values.push_back(columns[14] + " = " + std::to_string(npc_types_entry.hp_regen_rate));
update_values.push_back(columns[15] + " = " + std::to_string(npc_types_entry.mana_regen_rate));
update_values.push_back(columns[16] + " = " + std::to_string(npc_types_entry.loottable_id));
update_values.push_back(columns[17] + " = " + std::to_string(npc_types_entry.merchant_id));
update_values.push_back(columns[18] + " = " + std::to_string(npc_types_entry.alt_currency_id));
update_values.push_back(columns[19] + " = " + std::to_string(npc_types_entry.npc_spells_id));
update_values.push_back(columns[20] + " = " + std::to_string(npc_types_entry.npc_spells_effects_id));
update_values.push_back(columns[21] + " = " + std::to_string(npc_types_entry.npc_faction_id));
update_values.push_back(columns[22] + " = " + std::to_string(npc_types_entry.adventure_template_id));
update_values.push_back(columns[23] + " = " + std::to_string(npc_types_entry.trap_template));
update_values.push_back(columns[24] + " = " + std::to_string(npc_types_entry.mindmg));
update_values.push_back(columns[25] + " = " + std::to_string(npc_types_entry.maxdmg));
update_values.push_back(columns[26] + " = " + std::to_string(npc_types_entry.attack_count));
update_values.push_back(columns[27] + " = '" + EscapeString(npc_types_entry.npcspecialattks) + "'");
update_values.push_back(columns[28] + " = '" + EscapeString(npc_types_entry.special_abilities) + "'");
update_values.push_back(columns[29] + " = " + std::to_string(npc_types_entry.aggroradius));
update_values.push_back(columns[30] + " = " + std::to_string(npc_types_entry.assistradius));
update_values.push_back(columns[31] + " = " + std::to_string(npc_types_entry.face));
update_values.push_back(columns[32] + " = " + std::to_string(npc_types_entry.luclin_hairstyle));
update_values.push_back(columns[33] + " = " + std::to_string(npc_types_entry.luclin_haircolor));
update_values.push_back(columns[34] + " = " + std::to_string(npc_types_entry.luclin_eyecolor));
update_values.push_back(columns[35] + " = " + std::to_string(npc_types_entry.luclin_eyecolor2));
update_values.push_back(columns[36] + " = " + std::to_string(npc_types_entry.luclin_beardcolor));
update_values.push_back(columns[37] + " = " + std::to_string(npc_types_entry.luclin_beard));
update_values.push_back(columns[38] + " = " + std::to_string(npc_types_entry.drakkin_heritage));
update_values.push_back(columns[39] + " = " + std::to_string(npc_types_entry.drakkin_tattoo));
update_values.push_back(columns[40] + " = " + std::to_string(npc_types_entry.drakkin_details));
update_values.push_back(columns[41] + " = " + std::to_string(npc_types_entry.armortint_id));
update_values.push_back(columns[42] + " = " + std::to_string(npc_types_entry.armortint_red));
update_values.push_back(columns[43] + " = " + std::to_string(npc_types_entry.armortint_green));
update_values.push_back(columns[44] + " = " + std::to_string(npc_types_entry.armortint_blue));
update_values.push_back(columns[45] + " = " + std::to_string(npc_types_entry.d_melee_texture1));
update_values.push_back(columns[46] + " = " + std::to_string(npc_types_entry.d_melee_texture2));
update_values.push_back(columns[47] + " = '" + EscapeString(npc_types_entry.ammo_idfile) + "'");
update_values.push_back(columns[48] + " = " + std::to_string(npc_types_entry.prim_melee_type));
update_values.push_back(columns[49] + " = " + std::to_string(npc_types_entry.sec_melee_type));
update_values.push_back(columns[50] + " = " + std::to_string(npc_types_entry.ranged_type));
update_values.push_back(columns[51] + " = " + std::to_string(npc_types_entry.runspeed));
update_values.push_back(columns[52] + " = " + std::to_string(npc_types_entry.MR));
update_values.push_back(columns[53] + " = " + std::to_string(npc_types_entry.CR));
update_values.push_back(columns[54] + " = " + std::to_string(npc_types_entry.DR));
update_values.push_back(columns[55] + " = " + std::to_string(npc_types_entry.FR));
update_values.push_back(columns[56] + " = " + std::to_string(npc_types_entry.PR));
update_values.push_back(columns[57] + " = " + std::to_string(npc_types_entry.Corrup));
update_values.push_back(columns[58] + " = " + std::to_string(npc_types_entry.PhR));
update_values.push_back(columns[59] + " = " + std::to_string(npc_types_entry.see_invis));
update_values.push_back(columns[60] + " = " + std::to_string(npc_types_entry.see_invis_undead));
update_values.push_back(columns[61] + " = " + std::to_string(npc_types_entry.qglobal));
update_values.push_back(columns[62] + " = " + std::to_string(npc_types_entry.AC));
update_values.push_back(columns[63] + " = " + std::to_string(npc_types_entry.npc_aggro));
update_values.push_back(columns[64] + " = " + std::to_string(npc_types_entry.spawn_limit));
update_values.push_back(columns[65] + " = " + std::to_string(npc_types_entry.attack_speed));
update_values.push_back(columns[66] + " = " + std::to_string(npc_types_entry.attack_delay));
update_values.push_back(columns[67] + " = " + std::to_string(npc_types_entry.findable));
update_values.push_back(columns[68] + " = " + std::to_string(npc_types_entry.STR));
update_values.push_back(columns[69] + " = " + std::to_string(npc_types_entry.STA));
update_values.push_back(columns[70] + " = " + std::to_string(npc_types_entry.DEX));
update_values.push_back(columns[71] + " = " + std::to_string(npc_types_entry.AGI));
update_values.push_back(columns[72] + " = " + std::to_string(npc_types_entry._INT));
update_values.push_back(columns[73] + " = " + std::to_string(npc_types_entry.WIS));
update_values.push_back(columns[74] + " = " + std::to_string(npc_types_entry.CHA));
update_values.push_back(columns[75] + " = " + std::to_string(npc_types_entry.see_hide));
update_values.push_back(columns[76] + " = " + std::to_string(npc_types_entry.see_improved_hide));
update_values.push_back(columns[77] + " = " + std::to_string(npc_types_entry.trackable));
update_values.push_back(columns[78] + " = " + std::to_string(npc_types_entry.isbot));
update_values.push_back(columns[79] + " = " + std::to_string(npc_types_entry.exclude));
update_values.push_back(columns[80] + " = " + std::to_string(npc_types_entry.ATK));
update_values.push_back(columns[81] + " = " + std::to_string(npc_types_entry.Accuracy));
update_values.push_back(columns[82] + " = " + std::to_string(npc_types_entry.Avoidance));
update_values.push_back(columns[83] + " = " + std::to_string(npc_types_entry.slow_mitigation));
update_values.push_back(columns[84] + " = " + std::to_string(npc_types_entry.version));
update_values.push_back(columns[85] + " = " + std::to_string(npc_types_entry.maxlevel));
update_values.push_back(columns[86] + " = " + std::to_string(npc_types_entry.scalerate));
update_values.push_back(columns[87] + " = " + std::to_string(npc_types_entry.private_corpse));
update_values.push_back(columns[88] + " = " + std::to_string(npc_types_entry.unique_spawn_by_name));
update_values.push_back(columns[89] + " = " + std::to_string(npc_types_entry.underwater));
update_values.push_back(columns[90] + " = " + std::to_string(npc_types_entry.isquest));
update_values.push_back(columns[91] + " = " + std::to_string(npc_types_entry.emoteid));
update_values.push_back(columns[92] + " = " + std::to_string(npc_types_entry.spellscale));
update_values.push_back(columns[93] + " = " + std::to_string(npc_types_entry.healscale));
update_values.push_back(columns[94] + " = " + std::to_string(npc_types_entry.no_target_hotkey));
update_values.push_back(columns[95] + " = " + std::to_string(npc_types_entry.raid_target));
update_values.push_back(columns[96] + " = " + std::to_string(npc_types_entry.armtexture));
update_values.push_back(columns[97] + " = " + std::to_string(npc_types_entry.bracertexture));
update_values.push_back(columns[98] + " = " + std::to_string(npc_types_entry.handtexture));
update_values.push_back(columns[99] + " = " + std::to_string(npc_types_entry.legtexture));
update_values.push_back(columns[100] + " = " + std::to_string(npc_types_entry.feettexture));
update_values.push_back(columns[101] + " = " + std::to_string(npc_types_entry.light));
update_values.push_back(columns[102] + " = " + std::to_string(npc_types_entry.walkspeed));
update_values.push_back(columns[103] + " = " + std::to_string(npc_types_entry.peqid));
update_values.push_back(columns[104] + " = " + std::to_string(npc_types_entry.unique_));
update_values.push_back(columns[105] + " = " + std::to_string(npc_types_entry.fixed));
update_values.push_back(columns[106] + " = " + std::to_string(npc_types_entry.ignore_despawn));
update_values.push_back(columns[107] + " = " + std::to_string(npc_types_entry.show_name));
update_values.push_back(columns[108] + " = " + std::to_string(npc_types_entry.untargetable));
update_values.push_back(columns[109] + " = " + std::to_string(npc_types_entry.charm_ac));
update_values.push_back(columns[110] + " = " + std::to_string(npc_types_entry.charm_min_dmg));
update_values.push_back(columns[111] + " = " + std::to_string(npc_types_entry.charm_max_dmg));
update_values.push_back(columns[112] + " = " + std::to_string(npc_types_entry.charm_attack_delay));
update_values.push_back(columns[113] + " = " + std::to_string(npc_types_entry.charm_accuracy_rating));
update_values.push_back(columns[114] + " = " + std::to_string(npc_types_entry.charm_avoidance_rating));
update_values.push_back(columns[115] + " = " + std::to_string(npc_types_entry.charm_atk));
update_values.push_back(columns[116] + " = " + std::to_string(npc_types_entry.skip_global_loot));
update_values.push_back(columns[117] + " = " + std::to_string(npc_types_entry.rare_spawn));
update_values.push_back(columns[118] + " = " + std::to_string(npc_types_entry.stuck_behavior));
update_values.push_back(columns[119] + " = " + std::to_string(npc_types_entry.model));
update_values.push_back(columns[120] + " = " + std::to_string(npc_types_entry.flymode));
update_values.push_back(columns[121] + " = " + std::to_string(npc_types_entry.always_aggro));
update_values.push_back(columns[122] + " = " + std::to_string(npc_types_entry.exp_mod));
update_values.push_back(columns[15] + " = " + std::to_string(npc_types_entry.hp_regen_per_second));
update_values.push_back(columns[16] + " = " + std::to_string(npc_types_entry.mana_regen_rate));
update_values.push_back(columns[17] + " = " + std::to_string(npc_types_entry.loottable_id));
update_values.push_back(columns[18] + " = " + std::to_string(npc_types_entry.merchant_id));
update_values.push_back(columns[19] + " = " + std::to_string(npc_types_entry.alt_currency_id));
update_values.push_back(columns[20] + " = " + std::to_string(npc_types_entry.npc_spells_id));
update_values.push_back(columns[21] + " = " + std::to_string(npc_types_entry.npc_spells_effects_id));
update_values.push_back(columns[22] + " = " + std::to_string(npc_types_entry.npc_faction_id));
update_values.push_back(columns[23] + " = " + std::to_string(npc_types_entry.adventure_template_id));
update_values.push_back(columns[24] + " = " + std::to_string(npc_types_entry.trap_template));
update_values.push_back(columns[25] + " = " + std::to_string(npc_types_entry.mindmg));
update_values.push_back(columns[26] + " = " + std::to_string(npc_types_entry.maxdmg));
update_values.push_back(columns[27] + " = " + std::to_string(npc_types_entry.attack_count));
update_values.push_back(columns[28] + " = '" + EscapeString(npc_types_entry.npcspecialattks) + "'");
update_values.push_back(columns[29] + " = '" + EscapeString(npc_types_entry.special_abilities) + "'");
update_values.push_back(columns[30] + " = " + std::to_string(npc_types_entry.aggroradius));
update_values.push_back(columns[31] + " = " + std::to_string(npc_types_entry.assistradius));
update_values.push_back(columns[32] + " = " + std::to_string(npc_types_entry.face));
update_values.push_back(columns[33] + " = " + std::to_string(npc_types_entry.luclin_hairstyle));
update_values.push_back(columns[34] + " = " + std::to_string(npc_types_entry.luclin_haircolor));
update_values.push_back(columns[35] + " = " + std::to_string(npc_types_entry.luclin_eyecolor));
update_values.push_back(columns[36] + " = " + std::to_string(npc_types_entry.luclin_eyecolor2));
update_values.push_back(columns[37] + " = " + std::to_string(npc_types_entry.luclin_beardcolor));
update_values.push_back(columns[38] + " = " + std::to_string(npc_types_entry.luclin_beard));
update_values.push_back(columns[39] + " = " + std::to_string(npc_types_entry.drakkin_heritage));
update_values.push_back(columns[40] + " = " + std::to_string(npc_types_entry.drakkin_tattoo));
update_values.push_back(columns[41] + " = " + std::to_string(npc_types_entry.drakkin_details));
update_values.push_back(columns[42] + " = " + std::to_string(npc_types_entry.armortint_id));
update_values.push_back(columns[43] + " = " + std::to_string(npc_types_entry.armortint_red));
update_values.push_back(columns[44] + " = " + std::to_string(npc_types_entry.armortint_green));
update_values.push_back(columns[45] + " = " + std::to_string(npc_types_entry.armortint_blue));
update_values.push_back(columns[46] + " = " + std::to_string(npc_types_entry.d_melee_texture1));
update_values.push_back(columns[47] + " = " + std::to_string(npc_types_entry.d_melee_texture2));
update_values.push_back(columns[48] + " = '" + EscapeString(npc_types_entry.ammo_idfile) + "'");
update_values.push_back(columns[49] + " = " + std::to_string(npc_types_entry.prim_melee_type));
update_values.push_back(columns[50] + " = " + std::to_string(npc_types_entry.sec_melee_type));
update_values.push_back(columns[51] + " = " + std::to_string(npc_types_entry.ranged_type));
update_values.push_back(columns[52] + " = " + std::to_string(npc_types_entry.runspeed));
update_values.push_back(columns[53] + " = " + std::to_string(npc_types_entry.MR));
update_values.push_back(columns[54] + " = " + std::to_string(npc_types_entry.CR));
update_values.push_back(columns[55] + " = " + std::to_string(npc_types_entry.DR));
update_values.push_back(columns[56] + " = " + std::to_string(npc_types_entry.FR));
update_values.push_back(columns[57] + " = " + std::to_string(npc_types_entry.PR));
update_values.push_back(columns[58] + " = " + std::to_string(npc_types_entry.Corrup));
update_values.push_back(columns[59] + " = " + std::to_string(npc_types_entry.PhR));
update_values.push_back(columns[60] + " = " + std::to_string(npc_types_entry.see_invis));
update_values.push_back(columns[61] + " = " + std::to_string(npc_types_entry.see_invis_undead));
update_values.push_back(columns[62] + " = " + std::to_string(npc_types_entry.qglobal));
update_values.push_back(columns[63] + " = " + std::to_string(npc_types_entry.AC));
update_values.push_back(columns[64] + " = " + std::to_string(npc_types_entry.npc_aggro));
update_values.push_back(columns[65] + " = " + std::to_string(npc_types_entry.spawn_limit));
update_values.push_back(columns[66] + " = " + std::to_string(npc_types_entry.attack_speed));
update_values.push_back(columns[67] + " = " + std::to_string(npc_types_entry.attack_delay));
update_values.push_back(columns[68] + " = " + std::to_string(npc_types_entry.findable));
update_values.push_back(columns[69] + " = " + std::to_string(npc_types_entry.STR));
update_values.push_back(columns[70] + " = " + std::to_string(npc_types_entry.STA));
update_values.push_back(columns[71] + " = " + std::to_string(npc_types_entry.DEX));
update_values.push_back(columns[72] + " = " + std::to_string(npc_types_entry.AGI));
update_values.push_back(columns[73] + " = " + std::to_string(npc_types_entry._INT));
update_values.push_back(columns[74] + " = " + std::to_string(npc_types_entry.WIS));
update_values.push_back(columns[75] + " = " + std::to_string(npc_types_entry.CHA));
update_values.push_back(columns[76] + " = " + std::to_string(npc_types_entry.see_hide));
update_values.push_back(columns[77] + " = " + std::to_string(npc_types_entry.see_improved_hide));
update_values.push_back(columns[78] + " = " + std::to_string(npc_types_entry.trackable));
update_values.push_back(columns[79] + " = " + std::to_string(npc_types_entry.isbot));
update_values.push_back(columns[80] + " = " + std::to_string(npc_types_entry.exclude));
update_values.push_back(columns[81] + " = " + std::to_string(npc_types_entry.ATK));
update_values.push_back(columns[82] + " = " + std::to_string(npc_types_entry.Accuracy));
update_values.push_back(columns[83] + " = " + std::to_string(npc_types_entry.Avoidance));
update_values.push_back(columns[84] + " = " + std::to_string(npc_types_entry.slow_mitigation));
update_values.push_back(columns[85] + " = " + std::to_string(npc_types_entry.version));
update_values.push_back(columns[86] + " = " + std::to_string(npc_types_entry.maxlevel));
update_values.push_back(columns[87] + " = " + std::to_string(npc_types_entry.scalerate));
update_values.push_back(columns[88] + " = " + std::to_string(npc_types_entry.private_corpse));
update_values.push_back(columns[89] + " = " + std::to_string(npc_types_entry.unique_spawn_by_name));
update_values.push_back(columns[90] + " = " + std::to_string(npc_types_entry.underwater));
update_values.push_back(columns[91] + " = " + std::to_string(npc_types_entry.isquest));
update_values.push_back(columns[92] + " = " + std::to_string(npc_types_entry.emoteid));
update_values.push_back(columns[93] + " = " + std::to_string(npc_types_entry.spellscale));
update_values.push_back(columns[94] + " = " + std::to_string(npc_types_entry.healscale));
update_values.push_back(columns[95] + " = " + std::to_string(npc_types_entry.no_target_hotkey));
update_values.push_back(columns[96] + " = " + std::to_string(npc_types_entry.raid_target));
update_values.push_back(columns[97] + " = " + std::to_string(npc_types_entry.armtexture));
update_values.push_back(columns[98] + " = " + std::to_string(npc_types_entry.bracertexture));
update_values.push_back(columns[99] + " = " + std::to_string(npc_types_entry.handtexture));
update_values.push_back(columns[100] + " = " + std::to_string(npc_types_entry.legtexture));
update_values.push_back(columns[101] + " = " + std::to_string(npc_types_entry.feettexture));
update_values.push_back(columns[102] + " = " + std::to_string(npc_types_entry.light));
update_values.push_back(columns[103] + " = " + std::to_string(npc_types_entry.walkspeed));
update_values.push_back(columns[104] + " = " + std::to_string(npc_types_entry.peqid));
update_values.push_back(columns[105] + " = " + std::to_string(npc_types_entry.unique_));
update_values.push_back(columns[106] + " = " + std::to_string(npc_types_entry.fixed));
update_values.push_back(columns[107] + " = " + std::to_string(npc_types_entry.ignore_despawn));
update_values.push_back(columns[108] + " = " + std::to_string(npc_types_entry.show_name));
update_values.push_back(columns[109] + " = " + std::to_string(npc_types_entry.untargetable));
update_values.push_back(columns[110] + " = " + std::to_string(npc_types_entry.charm_ac));
update_values.push_back(columns[111] + " = " + std::to_string(npc_types_entry.charm_min_dmg));
update_values.push_back(columns[112] + " = " + std::to_string(npc_types_entry.charm_max_dmg));
update_values.push_back(columns[113] + " = " + std::to_string(npc_types_entry.charm_attack_delay));
update_values.push_back(columns[114] + " = " + std::to_string(npc_types_entry.charm_accuracy_rating));
update_values.push_back(columns[115] + " = " + std::to_string(npc_types_entry.charm_avoidance_rating));
update_values.push_back(columns[116] + " = " + std::to_string(npc_types_entry.charm_atk));
update_values.push_back(columns[117] + " = " + std::to_string(npc_types_entry.skip_global_loot));
update_values.push_back(columns[118] + " = " + std::to_string(npc_types_entry.rare_spawn));
update_values.push_back(columns[119] + " = " + std::to_string(npc_types_entry.stuck_behavior));
update_values.push_back(columns[120] + " = " + std::to_string(npc_types_entry.model));
update_values.push_back(columns[121] + " = " + std::to_string(npc_types_entry.flymode));
update_values.push_back(columns[122] + " = " + std::to_string(npc_types_entry.always_aggro));
update_values.push_back(columns[123] + " = " + std::to_string(npc_types_entry.exp_mod));
auto results = db.QueryDatabase(
fmt::format(
@@ -916,6 +922,7 @@ public:
insert_values.push_back(std::to_string(npc_types_entry.herosforgemodel));
insert_values.push_back(std::to_string(npc_types_entry.size));
insert_values.push_back(std::to_string(npc_types_entry.hp_regen_rate));
insert_values.push_back(std::to_string(npc_types_entry.hp_regen_per_second));
insert_values.push_back(std::to_string(npc_types_entry.mana_regen_rate));
insert_values.push_back(std::to_string(npc_types_entry.loottable_id));
insert_values.push_back(std::to_string(npc_types_entry.merchant_id));
@@ -1068,6 +1075,7 @@ public:
insert_values.push_back(std::to_string(npc_types_entry.herosforgemodel));
insert_values.push_back(std::to_string(npc_types_entry.size));
insert_values.push_back(std::to_string(npc_types_entry.hp_regen_rate));
insert_values.push_back(std::to_string(npc_types_entry.hp_regen_per_second));
insert_values.push_back(std::to_string(npc_types_entry.mana_regen_rate));
insert_values.push_back(std::to_string(npc_types_entry.loottable_id));
insert_values.push_back(std::to_string(npc_types_entry.merchant_id));
@@ -1216,122 +1224,123 @@ public:
entry.race = atoi(row[4]);
entry.class_ = atoi(row[5]);
entry.bodytype = atoi(row[6]);
entry.hp = atoi(row[7]);
entry.mana = atoi(row[8]);
entry.hp = strtoll(row[7], nullptr, 10);
entry.mana = strtoll(row[8], nullptr, 10);
entry.gender = atoi(row[9]);
entry.texture = atoi(row[10]);
entry.helmtexture = atoi(row[11]);
entry.herosforgemodel = atoi(row[12]);
entry.size = static_cast<float>(atof(row[13]));
entry.hp_regen_rate = atoi(row[14]);
entry.mana_regen_rate = atoi(row[15]);
entry.loottable_id = atoi(row[16]);
entry.merchant_id = atoi(row[17]);
entry.alt_currency_id = atoi(row[18]);
entry.npc_spells_id = atoi(row[19]);
entry.npc_spells_effects_id = atoi(row[20]);
entry.npc_faction_id = atoi(row[21]);
entry.adventure_template_id = atoi(row[22]);
entry.trap_template = atoi(row[23]);
entry.mindmg = atoi(row[24]);
entry.maxdmg = atoi(row[25]);
entry.attack_count = atoi(row[26]);
entry.npcspecialattks = row[27] ? row[27] : "";
entry.special_abilities = row[28] ? row[28] : "";
entry.aggroradius = atoi(row[29]);
entry.assistradius = atoi(row[30]);
entry.face = atoi(row[31]);
entry.luclin_hairstyle = atoi(row[32]);
entry.luclin_haircolor = atoi(row[33]);
entry.luclin_eyecolor = atoi(row[34]);
entry.luclin_eyecolor2 = atoi(row[35]);
entry.luclin_beardcolor = atoi(row[36]);
entry.luclin_beard = atoi(row[37]);
entry.drakkin_heritage = atoi(row[38]);
entry.drakkin_tattoo = atoi(row[39]);
entry.drakkin_details = atoi(row[40]);
entry.armortint_id = atoi(row[41]);
entry.armortint_red = atoi(row[42]);
entry.armortint_green = atoi(row[43]);
entry.armortint_blue = atoi(row[44]);
entry.d_melee_texture1 = atoi(row[45]);
entry.d_melee_texture2 = atoi(row[46]);
entry.ammo_idfile = row[47] ? row[47] : "";
entry.prim_melee_type = atoi(row[48]);
entry.sec_melee_type = atoi(row[49]);
entry.ranged_type = atoi(row[50]);
entry.runspeed = static_cast<float>(atof(row[51]));
entry.MR = atoi(row[52]);
entry.CR = atoi(row[53]);
entry.DR = atoi(row[54]);
entry.FR = atoi(row[55]);
entry.PR = atoi(row[56]);
entry.Corrup = atoi(row[57]);
entry.PhR = atoi(row[58]);
entry.see_invis = atoi(row[59]);
entry.see_invis_undead = atoi(row[60]);
entry.qglobal = atoi(row[61]);
entry.AC = atoi(row[62]);
entry.npc_aggro = atoi(row[63]);
entry.spawn_limit = atoi(row[64]);
entry.attack_speed = static_cast<float>(atof(row[65]));
entry.attack_delay = atoi(row[66]);
entry.findable = atoi(row[67]);
entry.STR = atoi(row[68]);
entry.STA = atoi(row[69]);
entry.DEX = atoi(row[70]);
entry.AGI = atoi(row[71]);
entry._INT = atoi(row[72]);
entry.WIS = atoi(row[73]);
entry.CHA = atoi(row[74]);
entry.see_hide = atoi(row[75]);
entry.see_improved_hide = atoi(row[76]);
entry.trackable = atoi(row[77]);
entry.isbot = atoi(row[78]);
entry.exclude = atoi(row[79]);
entry.ATK = atoi(row[80]);
entry.Accuracy = atoi(row[81]);
entry.Avoidance = atoi(row[82]);
entry.slow_mitigation = atoi(row[83]);
entry.version = atoi(row[84]);
entry.maxlevel = atoi(row[85]);
entry.scalerate = atoi(row[86]);
entry.private_corpse = atoi(row[87]);
entry.unique_spawn_by_name = atoi(row[88]);
entry.underwater = atoi(row[89]);
entry.isquest = atoi(row[90]);
entry.emoteid = atoi(row[91]);
entry.spellscale = static_cast<float>(atof(row[92]));
entry.healscale = static_cast<float>(atof(row[93]));
entry.no_target_hotkey = atoi(row[94]);
entry.raid_target = atoi(row[95]);
entry.armtexture = atoi(row[96]);
entry.bracertexture = atoi(row[97]);
entry.handtexture = atoi(row[98]);
entry.legtexture = atoi(row[99]);
entry.feettexture = atoi(row[100]);
entry.light = atoi(row[101]);
entry.walkspeed = atoi(row[102]);
entry.peqid = atoi(row[103]);
entry.unique_ = atoi(row[104]);
entry.fixed = atoi(row[105]);
entry.ignore_despawn = atoi(row[106]);
entry.show_name = atoi(row[107]);
entry.untargetable = atoi(row[108]);
entry.charm_ac = atoi(row[109]);
entry.charm_min_dmg = atoi(row[110]);
entry.charm_max_dmg = atoi(row[111]);
entry.charm_attack_delay = atoi(row[112]);
entry.charm_accuracy_rating = atoi(row[113]);
entry.charm_avoidance_rating = atoi(row[114]);
entry.charm_atk = atoi(row[115]);
entry.skip_global_loot = atoi(row[116]);
entry.rare_spawn = atoi(row[117]);
entry.stuck_behavior = atoi(row[118]);
entry.model = atoi(row[119]);
entry.flymode = atoi(row[120]);
entry.always_aggro = atoi(row[121]);
entry.exp_mod = atoi(row[122]);
entry.hp_regen_rate = strtoll(row[14], nullptr, 10);
entry.hp_regen_per_second = strtoll(row[15], nullptr, 10);
entry.mana_regen_rate = strtoll(row[16], nullptr, 10);
entry.loottable_id = atoi(row[17]);
entry.merchant_id = atoi(row[18]);
entry.alt_currency_id = atoi(row[19]);
entry.npc_spells_id = atoi(row[20]);
entry.npc_spells_effects_id = atoi(row[21]);
entry.npc_faction_id = atoi(row[22]);
entry.adventure_template_id = atoi(row[23]);
entry.trap_template = atoi(row[24]);
entry.mindmg = atoi(row[25]);
entry.maxdmg = atoi(row[26]);
entry.attack_count = atoi(row[27]);
entry.npcspecialattks = row[28] ? row[28] : "";
entry.special_abilities = row[29] ? row[29] : "";
entry.aggroradius = atoi(row[30]);
entry.assistradius = atoi(row[31]);
entry.face = atoi(row[32]);
entry.luclin_hairstyle = atoi(row[33]);
entry.luclin_haircolor = atoi(row[34]);
entry.luclin_eyecolor = atoi(row[35]);
entry.luclin_eyecolor2 = atoi(row[36]);
entry.luclin_beardcolor = atoi(row[37]);
entry.luclin_beard = atoi(row[38]);
entry.drakkin_heritage = atoi(row[39]);
entry.drakkin_tattoo = atoi(row[40]);
entry.drakkin_details = atoi(row[41]);
entry.armortint_id = atoi(row[42]);
entry.armortint_red = atoi(row[43]);
entry.armortint_green = atoi(row[44]);
entry.armortint_blue = atoi(row[45]);
entry.d_melee_texture1 = atoi(row[46]);
entry.d_melee_texture2 = atoi(row[47]);
entry.ammo_idfile = row[48] ? row[48] : "";
entry.prim_melee_type = atoi(row[49]);
entry.sec_melee_type = atoi(row[50]);
entry.ranged_type = atoi(row[51]);
entry.runspeed = static_cast<float>(atof(row[52]));
entry.MR = atoi(row[53]);
entry.CR = atoi(row[54]);
entry.DR = atoi(row[55]);
entry.FR = atoi(row[56]);
entry.PR = atoi(row[57]);
entry.Corrup = atoi(row[58]);
entry.PhR = atoi(row[59]);
entry.see_invis = atoi(row[60]);
entry.see_invis_undead = atoi(row[61]);
entry.qglobal = atoi(row[62]);
entry.AC = atoi(row[63]);
entry.npc_aggro = atoi(row[64]);
entry.spawn_limit = atoi(row[65]);
entry.attack_speed = static_cast<float>(atof(row[66]));
entry.attack_delay = atoi(row[67]);
entry.findable = atoi(row[68]);
entry.STR = atoi(row[69]);
entry.STA = atoi(row[70]);
entry.DEX = atoi(row[71]);
entry.AGI = atoi(row[72]);
entry._INT = atoi(row[73]);
entry.WIS = atoi(row[74]);
entry.CHA = atoi(row[75]);
entry.see_hide = atoi(row[76]);
entry.see_improved_hide = atoi(row[77]);
entry.trackable = atoi(row[78]);
entry.isbot = atoi(row[79]);
entry.exclude = atoi(row[80]);
entry.ATK = atoi(row[81]);
entry.Accuracy = atoi(row[82]);
entry.Avoidance = atoi(row[83]);
entry.slow_mitigation = atoi(row[84]);
entry.version = atoi(row[85]);
entry.maxlevel = atoi(row[86]);
entry.scalerate = atoi(row[87]);
entry.private_corpse = atoi(row[88]);
entry.unique_spawn_by_name = atoi(row[89]);
entry.underwater = atoi(row[90]);
entry.isquest = atoi(row[91]);
entry.emoteid = atoi(row[92]);
entry.spellscale = static_cast<float>(atof(row[93]));
entry.healscale = static_cast<float>(atof(row[94]));
entry.no_target_hotkey = atoi(row[95]);
entry.raid_target = atoi(row[96]);
entry.armtexture = atoi(row[97]);
entry.bracertexture = atoi(row[98]);
entry.handtexture = atoi(row[99]);
entry.legtexture = atoi(row[100]);
entry.feettexture = atoi(row[101]);
entry.light = atoi(row[102]);
entry.walkspeed = atoi(row[103]);
entry.peqid = atoi(row[104]);
entry.unique_ = atoi(row[105]);
entry.fixed = atoi(row[106]);
entry.ignore_despawn = atoi(row[107]);
entry.show_name = atoi(row[108]);
entry.untargetable = atoi(row[109]);
entry.charm_ac = atoi(row[110]);
entry.charm_min_dmg = atoi(row[111]);
entry.charm_max_dmg = atoi(row[112]);
entry.charm_attack_delay = atoi(row[113]);
entry.charm_accuracy_rating = atoi(row[114]);
entry.charm_avoidance_rating = atoi(row[115]);
entry.charm_atk = atoi(row[116]);
entry.skip_global_loot = atoi(row[117]);
entry.rare_spawn = atoi(row[118]);
entry.stuck_behavior = atoi(row[119]);
entry.model = atoi(row[120]);
entry.flymode = atoi(row[121]);
entry.always_aggro = atoi(row[122]);
entry.exp_mod = atoi(row[123]);
all_entries.push_back(entry);
}
@@ -1363,122 +1372,123 @@ public:
entry.race = atoi(row[4]);
entry.class_ = atoi(row[5]);
entry.bodytype = atoi(row[6]);
entry.hp = atoi(row[7]);
entry.mana = atoi(row[8]);
entry.hp = strtoll(row[7], nullptr, 10);
entry.mana = strtoll(row[8], nullptr, 10);
entry.gender = atoi(row[9]);
entry.texture = atoi(row[10]);
entry.helmtexture = atoi(row[11]);
entry.herosforgemodel = atoi(row[12]);
entry.size = static_cast<float>(atof(row[13]));
entry.hp_regen_rate = atoi(row[14]);
entry.mana_regen_rate = atoi(row[15]);
entry.loottable_id = atoi(row[16]);
entry.merchant_id = atoi(row[17]);
entry.alt_currency_id = atoi(row[18]);
entry.npc_spells_id = atoi(row[19]);
entry.npc_spells_effects_id = atoi(row[20]);
entry.npc_faction_id = atoi(row[21]);
entry.adventure_template_id = atoi(row[22]);
entry.trap_template = atoi(row[23]);
entry.mindmg = atoi(row[24]);
entry.maxdmg = atoi(row[25]);
entry.attack_count = atoi(row[26]);
entry.npcspecialattks = row[27] ? row[27] : "";
entry.special_abilities = row[28] ? row[28] : "";
entry.aggroradius = atoi(row[29]);
entry.assistradius = atoi(row[30]);
entry.face = atoi(row[31]);
entry.luclin_hairstyle = atoi(row[32]);
entry.luclin_haircolor = atoi(row[33]);
entry.luclin_eyecolor = atoi(row[34]);
entry.luclin_eyecolor2 = atoi(row[35]);
entry.luclin_beardcolor = atoi(row[36]);
entry.luclin_beard = atoi(row[37]);
entry.drakkin_heritage = atoi(row[38]);
entry.drakkin_tattoo = atoi(row[39]);
entry.drakkin_details = atoi(row[40]);
entry.armortint_id = atoi(row[41]);
entry.armortint_red = atoi(row[42]);
entry.armortint_green = atoi(row[43]);
entry.armortint_blue = atoi(row[44]);
entry.d_melee_texture1 = atoi(row[45]);
entry.d_melee_texture2 = atoi(row[46]);
entry.ammo_idfile = row[47] ? row[47] : "";
entry.prim_melee_type = atoi(row[48]);
entry.sec_melee_type = atoi(row[49]);
entry.ranged_type = atoi(row[50]);
entry.runspeed = static_cast<float>(atof(row[51]));
entry.MR = atoi(row[52]);
entry.CR = atoi(row[53]);
entry.DR = atoi(row[54]);
entry.FR = atoi(row[55]);
entry.PR = atoi(row[56]);
entry.Corrup = atoi(row[57]);
entry.PhR = atoi(row[58]);
entry.see_invis = atoi(row[59]);
entry.see_invis_undead = atoi(row[60]);
entry.qglobal = atoi(row[61]);
entry.AC = atoi(row[62]);
entry.npc_aggro = atoi(row[63]);
entry.spawn_limit = atoi(row[64]);
entry.attack_speed = static_cast<float>(atof(row[65]));
entry.attack_delay = atoi(row[66]);
entry.findable = atoi(row[67]);
entry.STR = atoi(row[68]);
entry.STA = atoi(row[69]);
entry.DEX = atoi(row[70]);
entry.AGI = atoi(row[71]);
entry._INT = atoi(row[72]);
entry.WIS = atoi(row[73]);
entry.CHA = atoi(row[74]);
entry.see_hide = atoi(row[75]);
entry.see_improved_hide = atoi(row[76]);
entry.trackable = atoi(row[77]);
entry.isbot = atoi(row[78]);
entry.exclude = atoi(row[79]);
entry.ATK = atoi(row[80]);
entry.Accuracy = atoi(row[81]);
entry.Avoidance = atoi(row[82]);
entry.slow_mitigation = atoi(row[83]);
entry.version = atoi(row[84]);
entry.maxlevel = atoi(row[85]);
entry.scalerate = atoi(row[86]);
entry.private_corpse = atoi(row[87]);
entry.unique_spawn_by_name = atoi(row[88]);
entry.underwater = atoi(row[89]);
entry.isquest = atoi(row[90]);
entry.emoteid = atoi(row[91]);
entry.spellscale = static_cast<float>(atof(row[92]));
entry.healscale = static_cast<float>(atof(row[93]));
entry.no_target_hotkey = atoi(row[94]);
entry.raid_target = atoi(row[95]);
entry.armtexture = atoi(row[96]);
entry.bracertexture = atoi(row[97]);
entry.handtexture = atoi(row[98]);
entry.legtexture = atoi(row[99]);
entry.feettexture = atoi(row[100]);
entry.light = atoi(row[101]);
entry.walkspeed = atoi(row[102]);
entry.peqid = atoi(row[103]);
entry.unique_ = atoi(row[104]);
entry.fixed = atoi(row[105]);
entry.ignore_despawn = atoi(row[106]);
entry.show_name = atoi(row[107]);
entry.untargetable = atoi(row[108]);
entry.charm_ac = atoi(row[109]);
entry.charm_min_dmg = atoi(row[110]);
entry.charm_max_dmg = atoi(row[111]);
entry.charm_attack_delay = atoi(row[112]);
entry.charm_accuracy_rating = atoi(row[113]);
entry.charm_avoidance_rating = atoi(row[114]);
entry.charm_atk = atoi(row[115]);
entry.skip_global_loot = atoi(row[116]);
entry.rare_spawn = atoi(row[117]);
entry.stuck_behavior = atoi(row[118]);
entry.model = atoi(row[119]);
entry.flymode = atoi(row[120]);
entry.always_aggro = atoi(row[121]);
entry.exp_mod = atoi(row[122]);
entry.hp_regen_rate = strtoll(row[14], nullptr, 10);
entry.hp_regen_per_second = strtoll(row[15], nullptr, 10);
entry.mana_regen_rate = strtoll(row[16], nullptr, 10);
entry.loottable_id = atoi(row[17]);
entry.merchant_id = atoi(row[18]);
entry.alt_currency_id = atoi(row[19]);
entry.npc_spells_id = atoi(row[20]);
entry.npc_spells_effects_id = atoi(row[21]);
entry.npc_faction_id = atoi(row[22]);
entry.adventure_template_id = atoi(row[23]);
entry.trap_template = atoi(row[24]);
entry.mindmg = atoi(row[25]);
entry.maxdmg = atoi(row[26]);
entry.attack_count = atoi(row[27]);
entry.npcspecialattks = row[28] ? row[28] : "";
entry.special_abilities = row[29] ? row[29] : "";
entry.aggroradius = atoi(row[30]);
entry.assistradius = atoi(row[31]);
entry.face = atoi(row[32]);
entry.luclin_hairstyle = atoi(row[33]);
entry.luclin_haircolor = atoi(row[34]);
entry.luclin_eyecolor = atoi(row[35]);
entry.luclin_eyecolor2 = atoi(row[36]);
entry.luclin_beardcolor = atoi(row[37]);
entry.luclin_beard = atoi(row[38]);
entry.drakkin_heritage = atoi(row[39]);
entry.drakkin_tattoo = atoi(row[40]);
entry.drakkin_details = atoi(row[41]);
entry.armortint_id = atoi(row[42]);
entry.armortint_red = atoi(row[43]);
entry.armortint_green = atoi(row[44]);
entry.armortint_blue = atoi(row[45]);
entry.d_melee_texture1 = atoi(row[46]);
entry.d_melee_texture2 = atoi(row[47]);
entry.ammo_idfile = row[48] ? row[48] : "";
entry.prim_melee_type = atoi(row[49]);
entry.sec_melee_type = atoi(row[50]);
entry.ranged_type = atoi(row[51]);
entry.runspeed = static_cast<float>(atof(row[52]));
entry.MR = atoi(row[53]);
entry.CR = atoi(row[54]);
entry.DR = atoi(row[55]);
entry.FR = atoi(row[56]);
entry.PR = atoi(row[57]);
entry.Corrup = atoi(row[58]);
entry.PhR = atoi(row[59]);
entry.see_invis = atoi(row[60]);
entry.see_invis_undead = atoi(row[61]);
entry.qglobal = atoi(row[62]);
entry.AC = atoi(row[63]);
entry.npc_aggro = atoi(row[64]);
entry.spawn_limit = atoi(row[65]);
entry.attack_speed = static_cast<float>(atof(row[66]));
entry.attack_delay = atoi(row[67]);
entry.findable = atoi(row[68]);
entry.STR = atoi(row[69]);
entry.STA = atoi(row[70]);
entry.DEX = atoi(row[71]);
entry.AGI = atoi(row[72]);
entry._INT = atoi(row[73]);
entry.WIS = atoi(row[74]);
entry.CHA = atoi(row[75]);
entry.see_hide = atoi(row[76]);
entry.see_improved_hide = atoi(row[77]);
entry.trackable = atoi(row[78]);
entry.isbot = atoi(row[79]);
entry.exclude = atoi(row[80]);
entry.ATK = atoi(row[81]);
entry.Accuracy = atoi(row[82]);
entry.Avoidance = atoi(row[83]);
entry.slow_mitigation = atoi(row[84]);
entry.version = atoi(row[85]);
entry.maxlevel = atoi(row[86]);
entry.scalerate = atoi(row[87]);
entry.private_corpse = atoi(row[88]);
entry.unique_spawn_by_name = atoi(row[89]);
entry.underwater = atoi(row[90]);
entry.isquest = atoi(row[91]);
entry.emoteid = atoi(row[92]);
entry.spellscale = static_cast<float>(atof(row[93]));
entry.healscale = static_cast<float>(atof(row[94]));
entry.no_target_hotkey = atoi(row[95]);
entry.raid_target = atoi(row[96]);
entry.armtexture = atoi(row[97]);
entry.bracertexture = atoi(row[98]);
entry.handtexture = atoi(row[99]);
entry.legtexture = atoi(row[100]);
entry.feettexture = atoi(row[101]);
entry.light = atoi(row[102]);
entry.walkspeed = atoi(row[103]);
entry.peqid = atoi(row[104]);
entry.unique_ = atoi(row[105]);
entry.fixed = atoi(row[106]);
entry.ignore_despawn = atoi(row[107]);
entry.show_name = atoi(row[108]);
entry.untargetable = atoi(row[109]);
entry.charm_ac = atoi(row[110]);
entry.charm_min_dmg = atoi(row[111]);
entry.charm_max_dmg = atoi(row[112]);
entry.charm_attack_delay = atoi(row[113]);
entry.charm_accuracy_rating = atoi(row[114]);
entry.charm_avoidance_rating = atoi(row[115]);
entry.charm_atk = atoi(row[116]);
entry.skip_global_loot = atoi(row[117]);
entry.rare_spawn = atoi(row[118]);
entry.stuck_behavior = atoi(row[119]);
entry.model = atoi(row[120]);
entry.flymode = atoi(row[121]);
entry.always_aggro = atoi(row[122]);
entry.exp_mod = atoi(row[123]);
all_entries.push_back(entry);
}