summaryrefslogtreecommitdiff
path: root/src/map/skill.cpp
diff options
context:
space:
mode:
authorBen Longbons <b.r.longbons@gmail.com>2013-01-09 14:46:35 -0800
committerBen Longbons <b.r.longbons@gmail.com>2013-01-17 17:35:36 -0800
commita8b4244aea48a5b7118acb2c136adcd50e8b650f (patch)
treea95bf533b4957bad68cdbaf6696246c76db009d4 /src/map/skill.cpp
parent9ce6320afe61969aa0843655b9a1d69eea6b1de1 (diff)
downloadtmwa-a8b4244aea48a5b7118acb2c136adcd50e8b650f.tar.gz
tmwa-a8b4244aea48a5b7118acb2c136adcd50e8b650f.tar.bz2
tmwa-a8b4244aea48a5b7118acb2c136adcd50e8b650f.tar.xz
tmwa-a8b4244aea48a5b7118acb2c136adcd50e8b650f.zip
Begin to trim skills.
Diffstat (limited to 'src/map/skill.cpp')
-rw-r--r--src/map/skill.cpp400
1 files changed, 1 insertions, 399 deletions
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;
}