Fixed ITEM_ENCHANTARMS and LG_SHIELDSPELL

Fixes #4604
Also fixes csv2yaml for highly customized skill databases.

Thanks to @mazvi
This commit is contained in:
Lemongrass3110
2020-02-05 23:40:59 +01:00
parent 57e50a1906
commit 83da86c301
3 changed files with 114 additions and 45 deletions

View File

@@ -13277,6 +13277,27 @@ Body:
IsNpc: true
Hit: Single
HitCount: 1
Element:
- Level: 1
Element: Neutral
- Level: 2
Element: Water
- Level: 3
Element: Earth
- Level: 4
Element: Fire
- Level: 5
Element: Wind
- Level: 6
Element: Poison
- Level: 7
Element: Holy
- Level: 8
Element: Dark
- Level: 9
Element: Ghost
- Level: 10
Element: Undead
Duration1: 180000
Requires:
SpCost: 1
@@ -22168,6 +22189,13 @@ Body:
Splash: true
Hit: Single
HitCount: 1
Element:
- Level: 1
Element: Neutral
- Level: 2
Element: Holy
- Level: 3
Element: Neutral
Knockback:
- Level: 1
Amount: 2

View File

@@ -13872,6 +13872,27 @@ Body:
IsNpc: true
Hit: Single
HitCount: 1
Element:
- Level: 1
Element: Neutral
- Level: 2
Element: Water
- Level: 3
Element: Earth
- Level: 4
Element: Fire
- Level: 5
Element: Wind
- Level: 6
Element: Poison
- Level: 7
Element: Holy
- Level: 8
Element: Dark
- Level: 9
Element: Ghost
- Level: 10
Element: Undead
Duration1: 180000
Requires:
SpCost: 1
@@ -23278,6 +23299,13 @@ Body:
Splash: true
Hit: Single
HitCount: 1
Element:
- Level: 1
Element: Neutral
- Level: 2
Element: Holy
- Level: 3
Element: Neutral
Knockback:
- Level: 1
Amount: 2

View File

@@ -1584,15 +1584,17 @@ static bool skill_parse_row_skilldb(char* split[], int columns, int current) {
body << YAML::EndMap;
}
if (atoi(split[1]) != 0) {
memset(arr, 0, sizeof(arr));
arr_size = skill_split_atoi(split[1], arr);
body << YAML::Key << "Range";
if (arr_size != 0) {
if (arr_size == 1) {
if (arr[0] != 0) {
body << YAML::Key << "Range";
body << YAML::Value << arr[0];
}
} else {
body << YAML::Key << "Range";
body << YAML::BeginSeq;
for (int i = 0; i < arr_size; i++) {
@@ -1612,15 +1614,17 @@ static bool skill_parse_row_skilldb(char* split[], int columns, int current) {
body << YAML::Key << "Hit" << YAML::Value << name2Upper(constant);
}
if (atoi(split[8]) != 0) {
memset(arr, 0, sizeof(arr));
arr_size = skill_split_atoi(split[8], arr);
body << YAML::Key << "HitCount";
if (arr_size != 0) {
if (arr_size == 1) {
if (arr[0] != 0) {
body << YAML::Key << "HitCount";
body << YAML::Value << arr[0];
}
} else {
body << YAML::Key << "HitCount";
body << YAML::BeginSeq;
for (int i = 0; i < arr_size; i++) {
@@ -1634,13 +1638,14 @@ static bool skill_parse_row_skilldb(char* split[], int columns, int current) {
}
}
if (atoi(split[4]) != 0) {
memset(arr, 0, sizeof(arr));
arr_size = skill_split_atoi(split[4], arr);
if (arr_size != 0) {
if (arr_size == 1) {
if (arr[0] != 0){
body << YAML::Key << "Element";
if (arr_size == 1) {
if (arr[0] == -1)
body << YAML::Value << "Weapon";
else if (arr[0] == -2)
@@ -1652,7 +1657,9 @@ static bool skill_parse_row_skilldb(char* split[], int columns, int current) {
constant.erase(0, 4);
body << YAML::Value << name2Upper(constant);
}
}
} else {
body << YAML::Key << "Element";
body << YAML::BeginSeq;
for (int i = 0; i < arr_size; i++) {
@@ -1676,15 +1683,17 @@ static bool skill_parse_row_skilldb(char* split[], int columns, int current) {
}
}
if (atoi(split[6]) != 0) {
memset(arr, 0, sizeof(arr));
arr_size = skill_split_atoi(split[6], arr);
body << YAML::Key << "SplashArea";
if (arr_size != 0) {
if (arr_size == 1) {
if (arr[0] != 0) {
body << YAML::Key << "SplashArea";
body << YAML::Value << arr[0];
}
} else {
body << YAML::Key << "SplashArea";
body << YAML::BeginSeq;
for (int i = 0; i < arr_size; i++) {
@@ -1698,15 +1707,17 @@ static bool skill_parse_row_skilldb(char* split[], int columns, int current) {
}
}
if (atoi(split[12]) != 0) {
memset(arr, 0, sizeof(arr));
arr_size = skill_split_atoi(split[12], arr);
body << YAML::Key << "ActiveInstance";
if (arr_size != 0) {
if (arr_size == 1) {
if (arr[0] != 0) {
body << YAML::Key << "ActiveInstance";
body << YAML::Value << arr[0];
}
} else {
body << YAML::Key << "ActiveInstance";
body << YAML::BeginSeq;
for (int i = 0; i < arr_size; i++) {
@@ -1720,15 +1731,17 @@ static bool skill_parse_row_skilldb(char* split[], int columns, int current) {
}
}
if (atoi(split[14]) != 0) {
memset(arr, 0, sizeof(arr));
arr_size = skill_split_atoi(split[14], arr);
body << YAML::Key << "Knockback";
if (arr_size != 0) {
if (arr_size == 1) {
if (arr[0] != 0) {
body << YAML::Key << "Knockback";
body << YAML::Value << arr[0];
}
} else {
body << YAML::Key << "Knockback";
body << YAML::BeginSeq;
for (int i = 0; i < arr_size; i++) {