From 4bd7eeec09629d3c0f900d42c899fe23c69e07b6 Mon Sep 17 00:00:00 2001 From: Ben Longbons Date: Fri, 14 Dec 2012 22:25:07 -0800 Subject: Prepare to trim skills --- src/map/atcommand.cpp | 143 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 86 insertions(+), 57 deletions(-) (limited to 'src/map/atcommand.cpp') diff --git a/src/map/atcommand.cpp b/src/map/atcommand.cpp index de2030c..b01c801 100644 --- a/src/map/atcommand.cpp +++ b/src/map/atcommand.cpp @@ -3126,16 +3126,16 @@ int atcommand_gat(const int fd, struct map_session_data *sd, int atcommand_packet(const int fd, struct map_session_data *sd, const char *command, const char *message) { - int x = 0, y = 0; + int type = 0, flag = 0; - if (!message || !*message || sscanf(message, "%d %d", &x, &y) < 2) + if (!message || !*message || sscanf(message, "%d %d", &type, &flag) < 2) { clif_displaymessage(fd, "Please, enter a status type/flag (usage: @packet )."); return -1; } - clif_status_change(&sd->bl, x, y); + clif_status_change(&sd->bl, StatusChange(type), flag); return 0; } @@ -4483,16 +4483,18 @@ int atcommand_allskills(const int fd, struct map_session_data *sd, int atcommand_questskill(const int fd, struct map_session_data *sd, const char *command, const char *message) { - int skill_id; + int skill_id_; - if (!message || !*message || (skill_id = atoi(message)) < 0) + if (!message || !*message || (skill_id_ = atoi(message)) < 0) { clif_displaymessage(fd, "Please, enter a quest skill number (usage: @questskill <#:0+>)."); return -1; } - if (skill_id >= 0 && skill_id < MAX_SKILL_DB) + SkillID skill_id = SkillID(skill_id_); + + if (skill_id >= SkillID() && skill_id < MAX_SKILL_DB) { if (skill_get_inf2(skill_id) & 0x01) { @@ -4531,20 +4533,22 @@ int atcommand_charquestskill(const int fd, struct map_session_data *sd, { char character[100]; struct map_session_data *pl_sd; - int skill_id = 0; + int skill_id_ = 0; memset(character, '\0', sizeof(character)); if (!message || !*message - || sscanf(message, "%d %99[^\n]", &skill_id, character) < 2 - || skill_id < 0) + || sscanf(message, "%d %99[^\n]", &skill_id_, character) < 2 + || skill_id_ < 0) { clif_displaymessage(fd, "Please, enter a quest skill number and a player name (usage: @charquestskill <#:0+> )."); return -1; } - if (skill_id >= 0 && skill_id < MAX_SKILL_DB) + SkillID skill_id = SkillID(skill_id_); + + if (skill_id >= SkillID() && skill_id < MAX_SKILL_DB) { if (skill_get_inf2(skill_id) & 0x01) { @@ -4589,16 +4593,18 @@ int atcommand_charquestskill(const int fd, struct map_session_data *sd, int atcommand_lostskill(const int fd, struct map_session_data *sd, const char *command, const char *message) { - int skill_id; + int skill_id_; - if (!message || !*message || (skill_id = atoi(message)) < 0) + if (!message || !*message || (skill_id_ = atoi(message)) < 0) { clif_displaymessage(fd, "Please, enter a quest skill number (usage: @lostskill <#:0+>)."); return -1; } - if (skill_id >= 0 && skill_id < MAX_SKILL) + SkillID skill_id = SkillID(skill_id_); + + if (skill_id >= SkillID() && skill_id < MAX_SKILL) { if (skill_get_inf2(skill_id) & 0x01) { @@ -4639,20 +4645,22 @@ int atcommand_charlostskill(const int fd, struct map_session_data *sd, { char character[100]; struct map_session_data *pl_sd; - int skill_id = 0; + int skill_id_ = 0; memset(character, '\0', sizeof(character)); if (!message || !*message - || sscanf(message, "%d %99[^\n]", &skill_id, character) < 2 - || skill_id < 0) + || sscanf(message, "%d %99[^\n]", &skill_id_, character) < 2 + || skill_id_ < 0) { clif_displaymessage(fd, "Please, enter a quest skill number and a player name (usage: @charlostskill <#:0+> )."); return -1; } - if (skill_id >= 0 && skill_id < MAX_SKILL) + SkillID skill_id = SkillID(skill_id_); + + if (skill_id >= SkillID() && skill_id < MAX_SKILL) { if (skill_get_inf2(skill_id) & 0x01) { @@ -5860,9 +5868,6 @@ const char *txt_time(unsigned int duration) memset(temp, '\0', sizeof(temp)); memset(temp1, '\0', sizeof(temp1)); - if (duration < 0) - duration = 0; - days = duration / (60 * 60 * 24); duration = duration - (60 * 60 * 24 * days); hours = duration / (60 * 60); @@ -7511,14 +7516,14 @@ atcommand_skillid(const int fd, struct map_session_data *sd, if (!message || !*message) return -1; skillen = strlen(message); - while (skill_names[idx].id != 0) + while (skill_names[idx].id != SkillID::ZERO) { if ((strncasecmp(skill_names[idx].name, message, skillen) == 0) || (strncasecmp(skill_names[idx].desc, message, skillen) == 0)) { char output[255]; - sprintf(output, "skill %d: %s", skill_names[idx].id, - skill_names[idx].desc); + sprintf(output, "skill %d: %s", + uint16_t(skill_names[idx].id), skill_names[idx].desc); clif_displaymessage(fd, output); } idx++; @@ -7537,14 +7542,14 @@ atcommand_useskill(const int fd, struct map_session_data *sd, const char *command, const char *message) { struct map_session_data *pl_sd = NULL; - int skillnum; + int skillnum_; int skilllv; int inf; char target[255]; if (!message || !*message) return -1; - if (sscanf(message, "%d %d %s", &skillnum, &skilllv, target) != 3) + if (sscanf(message, "%d %d %s", &skillnum_, &skilllv, target) != 3) { clif_displaymessage(fd, "Usage: @useskill "); @@ -7555,6 +7560,7 @@ atcommand_useskill(const int fd, struct map_session_data *sd, return -1; } + SkillID skillnum = SkillID(skillnum_); inf = skill_get_inf(skillnum); if ((inf == 2) || (inf == 1)) @@ -7823,10 +7829,28 @@ int atcommand_unmute(const int fd, struct map_session_data *sd, /* Magic atcommands by Fate */ -static int magic_base = TMW_MAGIC; -#define magic_skills_nr 6 +static SkillID magic_skills[] = +{ + TMW_MAGIC, + TMW_MAGIC_LIFE, + TMW_MAGIC_WAR, + TMW_MAGIC_TRANSMUTE, + TMW_MAGIC_NATURE, + TMW_MAGIC_ETHER, +}; + +constexpr +size_t magic_skills_nr = sizeof(magic_skills) / sizeof(magic_skills[0]); + static const char *magic_skill_names[magic_skills_nr] = - { "magic", "life", "war", "transmute", "nature", "astral" }; +{ + "magic", + "life", + "war", + "transmute", + "nature", + "astral" +}; int atcommand_magic_info(const int fd, struct map_session_data *sd, @@ -7846,16 +7870,15 @@ atcommand_magic_info(const int fd, struct map_session_data *sd, if ((pl_sd = map_nick2sd(character)) != NULL) { - int i; - sprintf(buf, "`%s' has the following magic skills:", character); clif_displaymessage(fd, buf); - for (i = 0; i < magic_skills_nr; i++) + for (size_t i = 0; i < magic_skills_nr; i++) { - sprintf(buf, "%d in %s", pl_sd->status.skill[i + magic_base].lv, - magic_skill_names[i]); - if (pl_sd->status.skill[i + magic_base].id == i + magic_base) + SkillID sk = magic_skills[i]; + sprintf(buf, "%d in %s", + pl_sd->status.skill[sk].lv, magic_skill_names[i]); + if (pl_sd->status.skill[sk].id == sk) clif_displaymessage(fd, buf); } @@ -7867,9 +7890,9 @@ atcommand_magic_info(const int fd, struct map_session_data *sd, return -1; } -static void set_skill(struct map_session_data *sd, int i, int level) +static void set_skill(struct map_session_data *sd, SkillID i, int level) { - sd->status.skill[i].id = level ? i : 0; + sd->status.skill[i].id = level ? i : SkillID(); sd->status.skill[i].lv = level; } @@ -7879,7 +7902,6 @@ atcommand_set_magic(const int fd, struct map_session_data *sd, { char character[100]; char magic_type[20]; - int skill_index = -1; // 0: all int value; struct map_session_data *pl_sd; @@ -7894,22 +7916,22 @@ atcommand_set_magic(const int fd, struct map_session_data *sd, return -1; } + SkillID skill_index = SkillID::NEGATIVE; if (!strcasecmp("all", magic_type)) - skill_index = 0; + skill_index = SkillID::ZERO; else { - int i; - for (i = 0; i < magic_skills_nr; i++) + for (size_t i = 0; i < magic_skills_nr; i++) { if (!strcasecmp(magic_skill_names[i], magic_type)) { - skill_index = i + magic_base; + skill_index = magic_skills[i]; break; } } } - if (skill_index == -1) + if (skill_index == SkillID::NEGATIVE) { clif_displaymessage(fd, "Incorrect school of magic. Use `magic', `nature', `life', `war', `transmute', `ether', or `all'."); @@ -7918,10 +7940,9 @@ atcommand_set_magic(const int fd, struct map_session_data *sd, if ((pl_sd = map_nick2sd(character)) != NULL) { - int i; - if (skill_index == 0) - for (i = 0; i < magic_skills_nr; i++) - set_skill(pl_sd, i + magic_base, value); + if (skill_index == SkillID::ZERO) + for (SkillID sk : magic_skills) + set_skill(pl_sd, sk, value); else set_skill(pl_sd, skill_index, value); @@ -8070,7 +8091,7 @@ int atcommand_skillpool_info(const int fd, struct map_session_data *sd, if ((pl_sd = map_nick2sd(character)) != NULL) { char buf[200]; - int pool_skills[MAX_SKILL_POOL]; + SkillID pool_skills[MAX_SKILL_POOL]; int pool_skills_nr = skill_pool(pl_sd, pool_skills); int i; @@ -8079,8 +8100,10 @@ int atcommand_skillpool_info(const int fd, struct map_session_data *sd, clif_displaymessage(fd, buf); for (i = 0; i < pool_skills_nr; ++i) { - sprintf(buf, " - %s [%d]: power %d", skill_name(pool_skills[i]), - pool_skills[i], skill_power(pl_sd, pool_skills[i])); + sprintf(buf, " - %s [%d]: power %d", + skill_name(pool_skills[i]), + uint16_t(pool_skills[i]), + skill_power(pl_sd, pool_skills[i])); clif_displaymessage(fd, buf); } @@ -8095,8 +8118,8 @@ int atcommand_skillpool_info(const int fd, struct map_session_data *sd, if (lvl) { - sprintf(buf, " - %s [%d]: lvl %d", name, - skill_pool_skills[i], lvl); + sprintf(buf, " - %s [%d]: lvl %d", + name, uint16_t(skill_pool_skills[i]), lvl); clif_displaymessage(fd, buf); } } @@ -8112,16 +8135,18 @@ int atcommand_skillpool_focus(const int fd, struct map_session_data *sd, const char *command, const char *message) { char character[100]; - int skill; + int skill_; struct map_session_data *pl_sd; if (!message || !*message - || sscanf(message, "%d %99[^\n]", &skill, character) < 1) + || sscanf(message, "%d %99[^\n]", &skill_, character) < 1) { clif_displaymessage(fd, "Usage: @sp-focus "); return -1; } + SkillID skill = SkillID(skill_); + if ((pl_sd = map_nick2sd(character)) != NULL) { if (skill_pool_activate(pl_sd, skill)) @@ -8139,16 +8164,18 @@ int atcommand_skillpool_unfocus(const int fd, struct map_session_data *sd, const char *command, const char *message) { char character[100]; - int skill; + int skill_; struct map_session_data *pl_sd; if (!message || !*message - || sscanf(message, "%d %99[^\n]", &skill, character) < 1) + || sscanf(message, "%d %99[^\n]", &skill_, character) < 1) { clif_displaymessage(fd, "Usage: @sp-unfocus "); return -1; } + SkillID skill = SkillID(skill_); + if ((pl_sd = map_nick2sd(character)) != NULL) { if (skill_pool_deactivate(pl_sd, skill)) @@ -8166,17 +8193,19 @@ int atcommand_skill_learn(const int fd, struct map_session_data *sd, const char *command, const char *message) { char character[100]; - int skill, level; + int skill_, level; struct map_session_data *pl_sd; if (!message || !*message - || sscanf(message, "%d %d %99[^\n]", &skill, &level, character) < 1) + || sscanf(message, "%d %d %99[^\n]", &skill_, &level, character) < 1) { clif_displaymessage(fd, "Usage: @skill-learn "); return -1; } + SkillID skill = SkillID(skill_); + if ((pl_sd = map_nick2sd(character)) != NULL) { set_skill(pl_sd, skill, level); -- cgit v1.2.3-70-g09d2