diff options
-rw-r--r-- | Changelog.txt | 3 | ||||
-rw-r--r-- | Makefile | 1 | ||||
-rw-r--r-- | conf-tmpl/battle_athena.conf | 3 | ||||
-rw-r--r-- | src/map/atcommand.c | 42 | ||||
-rw-r--r-- | src/map/atcommand.h | 1 | ||||
-rw-r--r-- | src/map/pc.c | 2 |
6 files changed, 49 insertions, 3 deletions
diff --git a/Changelog.txt b/Changelog.txt index 0c8782821..893d11747 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,5 +1,8 @@ Date Added 12/17 + * Fixed skill #301 causing crashes [MouseJstr] + * Fixed documentation error on gm_skills_unconditionl [MouseJstr] + * added @grind test command.. only for testing [MouseJstr] * Added clearweather to the atcommand configuration file. [nsstrunks] 12/16 * Added a fix for AFM loading, thanks to Pete [celest] @@ -1,5 +1,6 @@ # $Id: Makefile 158 2004-10-01 03:45:15Z PoW $ +# CC = /usr/local/bin/gcc -fbounds-checking -pipe CC = gcc -pipe PACKETDEF = -DPACKETVER=6 -DNEW_006b -DSO_REUSEPORT #PACKETDEF = -DPACKETVER=5 -DNEW_006b diff --git a/conf-tmpl/battle_athena.conf b/conf-tmpl/battle_athena.conf index f0ae5e9b1..74672d35d 100644 --- a/conf-tmpl/battle_athena.conf +++ b/conf-tmpl/battle_athena.conf @@ -208,7 +208,8 @@ gm_all_skill_add_abra: no // [GM] Can equip anything? (No or minimum GM level, can cause client errors.) gm_all_equipment: no -// [GM] Raise skills unconditionally, that is, put points in to a skill not in thier jobs skill tree? (no or minimum gm level) +// [GM] Can use skills without meeting the required conditions (no +// blue gems? no problem gm_skill_unconditional: no // Can a normal player by-pass the skill tree? (Note 1) diff --git a/src/map/atcommand.c b/src/map/atcommand.c index aea1f145b..d1f645d9c 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -233,6 +233,8 @@ ACMD_FUNC(marry); // by MouseJstr ACMD_FUNC(divorce); // by MouseJstr ACMD_FUNC(rings); // by MouseJstr +ACMD_FUNC(grind); // by MouseJstr + /*========================================== *AtCommandInfo atcommand_info[]構造体の定義 *------------------------------------------ @@ -483,6 +485,7 @@ static AtCommandInfo atcommand_info[] = { { AtCommand_Marry, "@marry", 40, atcommand_marry }, // [MouseJstr] { AtCommand_Divorce, "@divorce", 40, atcommand_divorce }, // [MouseJstr] { AtCommand_Rings, "@rings", 40, atcommand_rings }, // [MouseJstr] + { AtCommand_Grind, "@grind", 40, atcommand_grind }, // [MouseJstr] // add new commands before this line { AtCommand_Unknown, NULL, 1, NULL } @@ -2160,7 +2163,6 @@ int atcommand_alive( return 0; } return -1; - } /*========================================== @@ -7495,6 +7497,44 @@ atcommand_rings(const int fd, struct map_session_data* sd, } /*========================================== + * @grind by [MouseJstr] + *------------------------------------------ + */ +int +atcommand_grind(const int fd, struct map_session_data* sd, + const char* command, const char* message) +{ + struct map_session_data *pl_sd = NULL; + int skillnum; + int inf; + char target[255]; + nullpo_retr(-1, sd); + + if (!message || !*message) + return -1; + if(sscanf(message, "%s", target) != 1) { + clif_displaymessage(fd, "Usage: @grind <target>"); + return -1; + } + if((pl_sd=map_nick2sd(target)) == NULL) + return -1; + + for (skillnum = 1; skillnum < 500; skillnum++) { + sd->status.sp = sd->status.max_sp; + atcommand_alive(fd, sd, command, message); + + inf = skill_get_inf(skillnum); + + if ((inf == 2) || (inf == 1)) + skill_use_pos(sd, pl_sd->bl.x+5, pl_sd->bl.y+5, skillnum, 1); + else + skill_use_id(sd, pl_sd->bl.id, skillnum, 1); + } + + return 0; +} + +/*========================================== * It is made to rain. *------------------------------------------ */ diff --git a/src/map/atcommand.h b/src/map/atcommand.h index d3fa22a07..96838b7ae 100644 --- a/src/map/atcommand.h +++ b/src/map/atcommand.h @@ -216,6 +216,7 @@ enum AtCommandType { AtCommand_Marry, // by MouseJstr AtCommand_Divorce, // by MouseJstr AtCommand_Rings, // by MouseJstr + AtCommand_Grind, // by MouseJstr // end AtCommand_Unknown, diff --git a/src/map/pc.c b/src/map/pc.c index d975deaf5..3c37f7ce1 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -5408,7 +5408,7 @@ int pc_damage(struct block_list *src,struct map_session_data *sd,int damage) if (sd->sc_data) { if (sd->sc_data[SC_ENDURE].timer == -1 && sd->sc_data[SC_BERSERK].timer == -1 && !sd->special_state.infinite_endure) pc_stop_walking(sd,3); - else if(sd->sc_data[SC_ENDURE].timer != -1 && src->type==BL_MOB && (--sd->sc_data[SC_ENDURE].val2) <= 0) + else if(sd->sc_data[SC_ENDURE].timer != -1 && (src != NULL && src->type==BL_MOB) && (--sd->sc_data[SC_ENDURE].val2) <= 0) skill_status_change_end(&sd->bl, SC_ENDURE, -1); } else pc_stop_walking(sd,3); |