From a8b4244aea48a5b7118acb2c136adcd50e8b650f Mon Sep 17 00:00:00 2001 From: Ben Longbons Date: Wed, 9 Jan 2013 14:46:35 -0800 Subject: Begin to trim skills. --- src/map/skill.cpp | 400 +----------------------------------------------------- 1 file changed, 1 insertion(+), 399 deletions(-) (limited to 'src/map/skill.cpp') diff --git a/src/map/skill.cpp b/src/map/skill.cpp index 98b6f7d..5488738 100644 --- a/src/map/skill.cpp +++ b/src/map/skill.cpp @@ -7401,7 +7401,6 @@ int skill_check_condition(struct map_session_data *sd, int type) sp_rate = (lv <= 0) ? 0 : skill_db[skill].sp_rate[lv - 1]; zeny = skill_get_zeny(skill, lv); weapon = skill_db[skill].weapon; - SkillState state = skill_db[skill].state; spiritball = (lv <= 0) ? 0 : skill_db[skill].spiritball[lv - 1]; mhp = skill_get_mhp(skill, lv); /* 消費HP */ for (int i = 0; i < 10; i++) @@ -7622,101 +7621,6 @@ int skill_check_condition(struct map_session_data *sd, int type) } } - switch (state) - { - case ST_HIDING: - if (!bool(sd->status.option & Option::HIDE2)) - { - clif_skill_fail(sd, skill, 0, 0); - return 0; - } - break; - case ST_CLOAKING: - if (!bool(sd->status.option & Option::CLOAK)) - { - clif_skill_fail(sd, skill, 0, 0); - return 0; - } - break; - case ST_HIDDEN: - if (!pc_ishiding(sd)) - { - clif_skill_fail(sd, skill, 0, 0); - return 0; - } - break; - case ST_RIDING: - if (!pc_isriding(sd)) - { - clif_skill_fail(sd, skill, 0, 0); - return 0; - } - break; - case ST_FALCON: - if (!pc_isfalcon(sd)) - { - clif_skill_fail(sd, skill, 0, 0); - return 0; - } - break; - case ST_CART: - if (!pc_iscarton(sd)) - { - clif_skill_fail(sd, skill, 0, 0); - return 0; - } - break; - case ST_SHIELD: - if (sd->status.shield <= 0) - { - clif_skill_fail(sd, skill, 0, 0); - return 0; - } - break; - case ST_SIGHT: - if (sd->sc_data[SC_SIGHT].timer == -1 && type & 1) - { - clif_skill_fail(sd, skill, 0, 0); - return 0; - } - break; - case ST_EXPLOSIONSPIRITS: - if (sd->sc_data[SC_EXPLOSIONSPIRITS].timer == -1) - { - clif_skill_fail(sd, skill, 0, 0); - return 0; - } - break; - case ST_RECOV_WEIGHT_RATE: - if (battle_config.natural_heal_weight_rate <= 100 - && sd->weight * 100 / sd->max_weight >= - battle_config.natural_heal_weight_rate) - { - clif_skill_fail(sd, skill, 0, 0); - return 0; - } - break; - case ST_MOVE_ENABLE: - { - struct walkpath_data wpd; - if (path_search(&wpd, sd->bl.m, sd->bl.x, sd->bl.y, sd->skillx, sd->skilly, - 1) == -1) - { - clif_skill_fail(sd, skill, 0, 0); - return 0; - } - } - break; - case ST_WATER: - if (map_getcell(sd->bl.m, sd->bl.x, sd->bl.y) != 3 - && (sd->sc_data[SC_DELUGE].timer == -1)) - { //水場判定 - clif_skill_fail(sd, skill, 0, 0); - return 0; - } - break; - } - for (int i = 0; i < 10; i++) { int x = lv % 11 - 1; @@ -11641,7 +11545,7 @@ SP scan_stat(char *statname) static int skill_readdb(void) { - int j, k, l; + int j, k; FILE *fp; char line[1024], *p; @@ -11766,308 +11670,6 @@ int skill_readdb(void) fclose_(fp); PRINTF("read db/skill_db.txt done\n"); - fp = fopen_("db/skill_require_db.txt", "r"); - if (fp == NULL) - { - PRINTF("can't read db/skill_require_db.txt\n"); - return 1; - } - while (fgets(line, 1020, fp)) - { - char *split[51], *split2[MAX_SKILL_LEVEL]; - if (line[0] == '/' && line[1] == '/') - continue; - for (j = 0, p = line; j < 30 && p; j++) - { - while (*p == '\t' || *p == ' ') - p++; - split[j] = p; - p = strchr(p, ','); - if (p) - *p++ = 0; - } - if (split[29] == NULL || j < 30) - continue; - - SkillID i = SkillID(atoi(split[0])); - if (/*i < SkillID() ||*/ i > MAX_SKILL_DB) - continue; - - memset(split2, 0, sizeof(split2)); - for (j = 0, p = split[1]; j < MAX_SKILL_LEVEL && p; j++) - { - split2[j] = p; - p = strchr(p, ':'); - if (p) - *p++ = 0; - } - for (k = 0; k < MAX_SKILL_LEVEL; k++) - skill_db[i].hp[k] = - (split2[k]) ? atoi(split2[k]) : atoi(split2[0]); - - memset(split2, 0, sizeof(split2)); - for (j = 0, p = split[2]; j < MAX_SKILL_LEVEL && p; j++) - { - split2[j] = p; - p = strchr(p, ':'); - if (p) - *p++ = 0; - } - for (k = 0; k < MAX_SKILL_LEVEL; k++) - skill_db[i].mhp[k] = - (split2[k]) ? atoi(split2[k]) : atoi(split2[0]); - - memset(split2, 0, sizeof(split2)); - for (j = 0, p = split[3]; j < MAX_SKILL_LEVEL && p; j++) - { - split2[j] = p; - p = strchr(p, ':'); - if (p) - *p++ = 0; - } - for (k = 0; k < MAX_SKILL_LEVEL; k++) - skill_db[i].sp[k] = - (split2[k]) ? atoi(split2[k]) : atoi(split2[0]); - - memset(split2, 0, sizeof(split2)); - for (j = 0, p = split[4]; j < MAX_SKILL_LEVEL && p; j++) - { - split2[j] = p; - p = strchr(p, ':'); - if (p) - *p++ = 0; - } - for (k = 0; k < MAX_SKILL_LEVEL; k++) - skill_db[i].hp_rate[k] = - (split2[k]) ? atoi(split2[k]) : atoi(split2[0]); - - memset(split2, 0, sizeof(split2)); - for (j = 0, p = split[5]; j < MAX_SKILL_LEVEL && p; j++) - { - split2[j] = p; - p = strchr(p, ':'); - if (p) - *p++ = 0; - } - for (k = 0; k < MAX_SKILL_LEVEL; k++) - skill_db[i].sp_rate[k] = - (split2[k]) ? atoi(split2[k]) : atoi(split2[0]); - - memset(split2, 0, sizeof(split2)); - for (j = 0, p = split[6]; j < MAX_SKILL_LEVEL && p; j++) - { - split2[j] = p; - p = strchr(p, ':'); - if (p) - *p++ = 0; - } - for (k = 0; k < MAX_SKILL_LEVEL; k++) - skill_db[i].zeny[k] = - (split2[k]) ? atoi(split2[k]) : atoi(split2[0]); - - memset(split2, 0, sizeof(split2)); - for (j = 0, p = split[7]; j < 32 && p; j++) - { - split2[j] = p; - p = strchr(p, ':'); - if (p) - *p++ = 0; - } - for (k = 0; k < 32 && split2[k]; k++) - { - l = atoi(split2[k]); - if (l == 99) - { - skill_db[i].weapon = 0xffffffff; - break; - } - else - skill_db[i].weapon |= 1 << l; - } - - if (strcasecmp(split[8], "hiding") == 0) - skill_db[i].state = ST_HIDING; - else if (strcasecmp(split[8], "cloaking") == 0) - skill_db[i].state = ST_CLOAKING; - else if (strcasecmp(split[8], "hidden") == 0) - skill_db[i].state = ST_HIDDEN; - else if (strcasecmp(split[8], "riding") == 0) - skill_db[i].state = ST_RIDING; - else if (strcasecmp(split[8], "falcon") == 0) - skill_db[i].state = ST_FALCON; - else if (strcasecmp(split[8], "cart") == 0) - skill_db[i].state = ST_CART; - else if (strcasecmp(split[8], "shield") == 0) - skill_db[i].state = ST_SHIELD; - else if (strcasecmp(split[8], "sight") == 0) - skill_db[i].state = ST_SIGHT; - else if (strcasecmp(split[8], "explosionspirits") == 0) - skill_db[i].state = ST_EXPLOSIONSPIRITS; - else if (strcasecmp(split[8], "recover_weight_rate") == 0) - skill_db[i].state = ST_RECOV_WEIGHT_RATE; - else if (strcasecmp(split[8], "move_enable") == 0) - skill_db[i].state = ST_MOVE_ENABLE; - else if (strcasecmp(split[8], "water") == 0) - skill_db[i].state = ST_WATER; - else - skill_db[i].state = ST_NONE; - - memset(split2, 0, sizeof(split2)); - for (j = 0, p = split[9]; j < MAX_SKILL_LEVEL && p; j++) - { - split2[j] = p; - p = strchr(p, ':'); - if (p) - *p++ = 0; - } - for (k = 0; k < MAX_SKILL_LEVEL; k++) - skill_db[i].spiritball[k] = - (split2[k]) ? atoi(split2[k]) : atoi(split2[0]); - skill_db[i].itemid[0] = atoi(split[10]); - skill_db[i].amount[0] = atoi(split[11]); - skill_db[i].itemid[1] = atoi(split[12]); - skill_db[i].amount[1] = atoi(split[13]); - skill_db[i].itemid[2] = atoi(split[14]); - skill_db[i].amount[2] = atoi(split[15]); - skill_db[i].itemid[3] = atoi(split[16]); - skill_db[i].amount[3] = atoi(split[17]); - skill_db[i].itemid[4] = atoi(split[18]); - skill_db[i].amount[4] = atoi(split[19]); - skill_db[i].itemid[5] = atoi(split[20]); - skill_db[i].amount[5] = atoi(split[21]); - skill_db[i].itemid[6] = atoi(split[22]); - skill_db[i].amount[6] = atoi(split[23]); - skill_db[i].itemid[7] = atoi(split[24]); - skill_db[i].amount[7] = atoi(split[25]); - skill_db[i].itemid[8] = atoi(split[26]); - skill_db[i].amount[8] = atoi(split[27]); - skill_db[i].itemid[9] = atoi(split[28]); - skill_db[i].amount[9] = atoi(split[29]); - } - fclose_(fp); - PRINTF("read db/skill_require_db.txt done\n"); - - /* ? */ - fp = fopen_("db/skill_cast_db.txt", "r"); - if (fp == NULL) - { - PRINTF("can't read db/skill_cast_db.txt\n"); - return 1; - } - while (fgets(line, 1020, fp)) - { - char *split[50], *split2[MAX_SKILL_LEVEL]; - memset(split, 0, sizeof(split)); // [Valaris] thanks to fov - if (line[0] == '/' && line[1] == '/') - continue; - for (j = 0, p = line; j < 5 && p; j++) - { - while (*p == '\t' || *p == ' ') - p++; - split[j] = p; - p = strchr(p, ','); - if (p) - *p++ = 0; - } - if (split[4] == NULL || j < 5) - continue; - - SkillID i = SkillID(atoi(split[0])); - if (/*i < SkillID() ||*/ i > MAX_SKILL_DB) - continue; - - memset(split2, 0, sizeof(split2)); - for (j = 0, p = split[1]; j < MAX_SKILL_LEVEL && p; j++) - { - split2[j] = p; - p = strchr(p, ':'); - if (p) - *p++ = 0; - } - for (k = 0; k < MAX_SKILL_LEVEL; k++) - skill_db[i].cast[k] = - (split2[k]) ? atoi(split2[k]) : atoi(split2[0]); - - memset(split2, 0, sizeof(split2)); - for (j = 0, p = split[2]; j < MAX_SKILL_LEVEL && p; j++) - { - split2[j] = p; - p = strchr(p, ':'); - if (p) - *p++ = 0; - } - for (k = 0; k < MAX_SKILL_LEVEL; k++) - skill_db[i].delay[k] = - (split2[k]) ? atoi(split2[k]) : atoi(split2[0]); - - memset(split2, 0, sizeof(split2)); - for (j = 0, p = split[3]; j < MAX_SKILL_LEVEL && p; j++) - { - split2[j] = p; - p = strchr(p, ':'); - if (p) - *p++ = 0; - } - for (k = 0; k < MAX_SKILL_LEVEL; k++) - skill_db[i].upkeep_time[k] = - (split2[k]) ? atoi(split2[k]) : atoi(split2[0]); - - memset(split2, 0, sizeof(split2)); - for (j = 0, p = split[4]; j < MAX_SKILL_LEVEL && p; j++) - { - split2[j] = p; - p = strchr(p, ':'); - if (p) - *p++ = 0; - } - for (k = 0; k < MAX_SKILL_LEVEL; k++) - skill_db[i].upkeep_time2[k] = - (split2[k]) ? atoi(split2[k]) : atoi(split2[0]); - } - fclose_(fp); - PRINTF("read db/skill_cast_db.txt done\n"); - - fp = fopen_("db/skill_castnodex_db.txt", "r"); - if (fp == NULL) - { - PRINTF("can't read db/skill_castnodex_db.txt\n"); - return 1; - } - while (fgets(line, 1020, fp)) - { - char *split[50], *split2[MAX_SKILL_LEVEL]; - memset(split, 0, sizeof(split)); - if (line[0] == '/' && line[1] == '/') - continue; - for (j = 0, p = line; j < 2 && p; j++) - { - while (*p == '\t' || *p == ' ') - p++; - split[j] = p; - p = strchr(p, ','); - if (p) - *p++ = 0; - } - - SkillID i = SkillID(atoi(split[0])); - if (/*i < SkillID() ||*/ i > MAX_SKILL_DB) - continue; - - memset(split2, 0, sizeof(split2)); - for (j = 0, p = split[1]; j < MAX_SKILL_LEVEL && p; j++) - { - split2[j] = p; - p = strchr(p, ':'); - if (p) - *p++ = 0; - } - for (k = 0; k < MAX_SKILL_LEVEL; k++) - skill_db[i].castnodex[k] = - (split2[k]) ? atoi(split2[k]) : atoi(split2[0]); - } - fclose_(fp); - PRINTF("read db/skill_castnodex_db.txt done\n"); - return 0; } -- cgit v1.2.3-60-g2f50