Skip to content
Permalink
Browse files
Fixed ITEM_ENCHANTARMS and LG_SHIELDSPELL
Fixes #4604
Also fixes csv2yaml for highly customized skill databases.

Thanks to @mazvi
  • Loading branch information
Lemongrass3110 committed Feb 5, 2020
1 parent 57e50a1 commit 83da86c3016eebf8ef1b7111cffb0b6011f84dc6
Showing with 114 additions and 45 deletions.
  1. +28 −0 db/pre-re/skill_db.yml
  2. +28 −0 db/re/skill_db.yml
  3. +58 −45 src/tool/csv2yaml.cpp
@@ -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
@@ -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
@@ -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";
memset(arr, 0, sizeof(arr));
arr_size = skill_split_atoi(split[1], arr);

if (arr_size != 0) {
if (arr_size == 1) {
body << YAML::Value << arr[0];
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";
memset(arr, 0, sizeof(arr));
arr_size = skill_split_atoi(split[8], arr);

if (arr_size != 0) {
if (arr_size == 1) {
body << YAML::Value << arr[0];
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,25 +1638,28 @@ 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);

body << YAML::Key << "Element";
memset(arr, 0, sizeof(arr));
arr_size = skill_split_atoi(split[4], arr);

if (arr_size != 0) {
if (arr_size == 1) {
if (arr[0] == -1)
body << YAML::Value << "Weapon";
else if (arr[0] == -2)
body << YAML::Value << "Endowed";
else if (arr[0] == -3)
body << YAML::Value << "Random";
else {
constant = constant_lookup(arr[0], "ELE_");
constant.erase(0, 4);
body << YAML::Value << name2Upper(constant);
if (arr[0] != 0){
body << YAML::Key << "Element";

if (arr[0] == -1)
body << YAML::Value << "Weapon";
else if (arr[0] == -2)
body << YAML::Value << "Endowed";
else if (arr[0] == -3)
body << YAML::Value << "Random";
else {
constant = constant_lookup(arr[0], "ELE_");
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";
memset(arr, 0, sizeof(arr));
arr_size = skill_split_atoi(split[6], arr);

if (arr_size != 0) {
if (arr_size == 1) {
body << YAML::Value << arr[0];
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";
memset(arr, 0, sizeof(arr));
arr_size = skill_split_atoi(split[12], arr);

if (arr_size != 0) {
if (arr_size == 1) {
body << YAML::Value << arr[0];
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";
memset(arr, 0, sizeof(arr));
arr_size = skill_split_atoi(split[14], arr);

if (arr_size != 0) {
if (arr_size == 1) {
body << YAML::Value << arr[0];
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++) {

0 comments on commit 83da86c

Please sign in to comment.