Added cond1 definitions in csv2yaml
This commit is contained in:
parent
7a99555013
commit
cd962a2fda
@ -5004,19 +5004,41 @@ static bool mob_parse_row_mobskilldb(char** str, int columns, int current) {
|
|||||||
|
|
||||||
// Cond1
|
// Cond1
|
||||||
std::string cond1 = str[10];
|
std::string cond1 = str[10];
|
||||||
std::transform(cond1.begin(), cond1.end(), cond1.begin(), ::toupper);
|
std::transform(cond1.begin(), cond1.end(), cond1.begin(), ::tolower);
|
||||||
entry.cond1_name = cond1;
|
|
||||||
|
// Find the enum from the string
|
||||||
|
e_mob_skill_condition *cond1_val = util::umap_find( um_mob_cond1, cond1 );
|
||||||
|
|
||||||
|
if (cond1_val == nullptr) {
|
||||||
|
ShowError( "Unknown Cond1 %s.\n", str[10] );
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get and save the constant name
|
||||||
|
char *constant = const_cast<char *>(constant_lookup(*cond1_val, "MSC_"));
|
||||||
|
|
||||||
|
if (constant == nullptr) {
|
||||||
|
ShowWarning("Constant for Cond1 %s is not found.\n", str[10]);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
constant += 4;
|
||||||
|
std::string cond1_name(constant);
|
||||||
|
entry.cond1_name = cond1_name;
|
||||||
|
|
||||||
// Cond2
|
// Cond2
|
||||||
|
if (*str[11]) {
|
||||||
std::string cond2(str[11]);
|
std::string cond2(str[11]);
|
||||||
if (cond1 == "MYSTATUSON" || cond1 == "MYSTATUSOFF" || cond1 == "FRIENDSTATUSON" || cond1 == "FRIENDSTATUSOFF") { // SC_ status
|
|
||||||
|
switch( *cond1_val ) {
|
||||||
|
case MSC_MYSTATUSON:
|
||||||
|
case MSC_MYSTATUSOFF:
|
||||||
|
case MSC_FRIENDSTATUSON:
|
||||||
|
case MSC_FRIENDSTATUSOFF: // SC_ status
|
||||||
std::transform(cond2.begin(), cond2.end(), cond2.begin(), ::toupper);
|
std::transform(cond2.begin(), cond2.end(), cond2.begin(), ::toupper);
|
||||||
entry.cond2_name = "SC_" + cond2;
|
entry.cond2_name = "SC_" + cond2;
|
||||||
}
|
break;
|
||||||
else if (atoi(str[11]) > 0) {
|
case MSC_SKILLUSED:
|
||||||
if (cond1 != "SKILLUSED" && cond1 != "AFTERSKILL") // Store the aegis skill name for SKILLUSED and AFTERSKILL
|
case MSC_AFTERSKILL: { // Aegis skill name
|
||||||
entry.cond2_name = cond2;
|
|
||||||
else { // Aegis skill name
|
|
||||||
uint16 tmp_skill_id = atoi(str[11]);
|
uint16 tmp_skill_id = atoi(str[11]);
|
||||||
std::string* tmp_skill_name = util::umap_find( aegis_skillnames, tmp_skill_id );
|
std::string* tmp_skill_name = util::umap_find( aegis_skillnames, tmp_skill_id );
|
||||||
|
|
||||||
@ -5025,6 +5047,12 @@ static bool mob_parse_row_mobskilldb(char** str, int columns, int current) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
entry.cond2_name = *tmp_skill_name;
|
entry.cond2_name = *tmp_skill_name;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
if (atoi(str[11]) > 0)
|
||||||
|
entry.cond2_name = cond2;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5039,13 +5067,13 @@ static bool mob_parse_row_mobskilldb(char** str, int columns, int current) {
|
|||||||
|
|
||||||
std::string val_name = std::to_string(val);
|
std::string val_name = std::to_string(val);
|
||||||
|
|
||||||
if (i == 0 && (cond1 == "MYHPINRATE" || cond1 == "FRIENDHPINRATE")) { // Upper bound now stored in cond3 instead of val 1
|
if (i == 0 && (*cond1_val == MSC_MYHPINRATE || *cond1_val == MSC_FRIENDHPINRATE)) { // Upper bound now stored in cond3 instead of val1 (lower from val0 in cond2)
|
||||||
entry.cond3 = val;
|
entry.cond3 = val;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch( skill_id ) {
|
switch( skill_id ) {
|
||||||
case NPC_METAMORPHOSIS:
|
case NPC_METAMORPHOSIS: // save the mobs name when summon skills
|
||||||
case NPC_SUMMONSLAVE:
|
case NPC_SUMMONSLAVE:
|
||||||
case NPC_SUMMONMONSTER:
|
case NPC_SUMMONMONSTER:
|
||||||
case NPC_DEATHSUMMON: {
|
case NPC_DEATHSUMMON: {
|
||||||
@ -5078,7 +5106,7 @@ static bool mob_parse_row_mobskilldb(char** str, int columns, int current) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// In any case the remain values should be the ai
|
// The remain values should be the ai
|
||||||
std::string *ai = util::umap_find( um_mob_mode2ai, val );
|
std::string *ai = util::umap_find( um_mob_mode2ai, val );
|
||||||
|
|
||||||
if (ai == nullptr || strncasecmp(str[index], "0x", 2) != 0) {
|
if (ai == nullptr || strncasecmp(str[index], "0x", 2) != 0) {
|
||||||
@ -5129,7 +5157,7 @@ static bool mob_parse_row_mobskilldb_yaml(void) {
|
|||||||
body << YAML::Key << "CastRate" << YAML::Value << mob_skill.permillage;
|
body << YAML::Key << "CastRate" << YAML::Value << mob_skill.permillage;
|
||||||
body << YAML::Key << "CastTime" << YAML::Value << mob_skill.casttime;
|
body << YAML::Key << "CastTime" << YAML::Value << mob_skill.casttime;
|
||||||
body << YAML::Key << "CastDelay" << YAML::Value << mob_skill.delay;
|
body << YAML::Key << "CastDelay" << YAML::Value << mob_skill.delay;
|
||||||
body << YAML::Key << "CastCancel" << YAML::Value << ( !mob_skill.cancel ? "false" : "true" );
|
body << YAML::Key << "CastCancel" << YAML::Value << ( mob_skill.cancel ? "true" : "false" );
|
||||||
body << YAML::Key << "Target" << YAML::Value << mob_skill.target_name;
|
body << YAML::Key << "Target" << YAML::Value << mob_skill.target_name;
|
||||||
body << YAML::Key << "Condition" << YAML::Value << mob_skill.cond1_name;
|
body << YAML::Key << "Condition" << YAML::Value << mob_skill.cond1_name;
|
||||||
|
|
||||||
|
|||||||
@ -245,6 +245,33 @@ static std::unordered_map<int, std::string> um_mob_mode2ai { // mode, AI
|
|||||||
{ 0x8084, "27" },
|
{ 0x8084, "27" },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Cond1 string to enum
|
||||||
|
static std::unordered_map<std::string, e_mob_skill_condition> um_mob_cond1 {
|
||||||
|
{ "always", MSC_ALWAYS },
|
||||||
|
{ "myhpltmaxrate", MSC_MYHPLTMAXRATE },
|
||||||
|
{ "myhpinrate", MSC_MYHPINRATE },
|
||||||
|
{ "friendhpltmaxrate", MSC_FRIENDHPLTMAXRATE },
|
||||||
|
{ "friendhpinrate", MSC_FRIENDHPINRATE },
|
||||||
|
{ "mystatuson", MSC_MYSTATUSON },
|
||||||
|
{ "mystatusoff", MSC_MYSTATUSOFF },
|
||||||
|
{ "friendstatuson", MSC_FRIENDSTATUSON },
|
||||||
|
{ "friendstatusoff", MSC_FRIENDSTATUSOFF },
|
||||||
|
{ "attackpcgt", MSC_ATTACKPCGT },
|
||||||
|
{ "attackpcge", MSC_ATTACKPCGE },
|
||||||
|
{ "slavelt", MSC_SLAVELT },
|
||||||
|
{ "slavele", MSC_SLAVELE },
|
||||||
|
{ "closedattacked", MSC_CLOSEDATTACKED },
|
||||||
|
{ "longrangeattacked", MSC_LONGRANGEATTACKED },
|
||||||
|
{ "skillused", MSC_SKILLUSED },
|
||||||
|
{ "afterskill", MSC_AFTERSKILL },
|
||||||
|
{ "casttargeted", MSC_CASTTARGETED },
|
||||||
|
{ "rudeattacked", MSC_RUDEATTACKED },
|
||||||
|
{ "masterhpltmaxrate", MSC_MASTERHPLTMAXRATE },
|
||||||
|
{ "masterattacked", MSC_MASTERATTACKED },
|
||||||
|
{ "alchemist", MSC_ALCHEMIST },
|
||||||
|
{ "onspawn", MSC_SPAWN },
|
||||||
|
};
|
||||||
|
|
||||||
// Initialize Random Option constants
|
// Initialize Random Option constants
|
||||||
void init_random_option_constants() {
|
void init_random_option_constants() {
|
||||||
#define export_constant2(a, b) script_set_constant_(a, b, a, false, false)
|
#define export_constant2(a, b) script_set_constant_(a, b, a, false, false)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user