diff options
author | shennetsind <ind@henn.et> | 2013-07-31 13:43:19 -0300 |
---|---|---|
committer | shennetsind <ind@henn.et> | 2013-07-31 13:43:19 -0300 |
commit | 2fbec282b9b3eb84f710d5537f70e6bc221187b3 (patch) | |
tree | 22c81ca938d2d9c0bf23822bd9d4fd7941ca1511 /src | |
parent | 0bec4034abe023e3f3759506ac95237aa2d82512 (diff) | |
download | hercules-2fbec282b9b3eb84f710d5537f70e6bc221187b3.tar.gz hercules-2fbec282b9b3eb84f710d5537f70e6bc221187b3.tar.bz2 hercules-2fbec282b9b3eb84f710d5537f70e6bc221187b3.tar.xz hercules-2fbec282b9b3eb84f710d5537f70e6bc221187b3.zip |
Fixed Bug #7602
@homlvup/@homlevel now functions for homun-s
http://hercules.ws/board/tracker/issue-7602-homlevel-homlvup/
Also adjusted @makehomun so that it resurrects the homun when call isn't possible (for when used with -1), prior to this it'd do nothing when homun was dead and not vaporised.
Signed-off-by: shennetsind <ind@henn.et>
Diffstat (limited to 'src')
-rw-r--r-- | src/map/atcommand.c | 40 |
1 files changed, 34 insertions, 6 deletions
diff --git a/src/map/atcommand.c b/src/map/atcommand.c index 8fd9e6043..367025f4f 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -6813,7 +6813,8 @@ ACMD(homlevel) { TBL_HOM * hd; int level = 0; - + enum homun_type htype; + nullpo_retr(-1, sd); if ( !message || !*message || ( level = atoi(message) ) < 1 ) { @@ -6827,11 +6828,35 @@ ACMD(homlevel) } hd = sd->hd; + + if((htype = homun->class2type(hd->homunculus.class_)) == -1) { + ShowError("atcommand_homlevel: invalid homun class %d (player %s)\n", hd->homunculus.class_,sd->status.name); + return false; + } + + switch( htype ) { + case HT_REG: + case HT_EVO: + if( hd->homunculus.level >= battle_config.hom_max_level ) { + snprintf(atcmd_output, sizeof(atcmd_output), msg_txt(1478), hd->homunculus.level); // Homun reached its maximum level of '%d' + clif->message(fd, atcmd_output); + return true; + } + break; + case HT_S: + if( hd->homunculus.level >= battle_config.hom_S_max_level ) { + snprintf(atcmd_output, sizeof(atcmd_output), msg_txt(1478), hd->homunculus.level); // Homun reached its maximum level of '%d' + clif->message(fd, atcmd_output); + return true; + } + break; + default: + ShowError("atcommand_homlevel: unknown htype '%d'\n",htype); + return false; + } - if ( battle_config.hom_max_level == hd->homunculus.level ) // Already reach maximum level - return true; - - do{ + + do { hd->homunculus.exp += hd->exp_next; } while( hd->homunculus.level < level && homun->levelup(hd) ); @@ -6903,7 +6928,10 @@ ACMD(makehomun) { homunid = atoi(message); if( homunid == -1 && sd->status.hom_id && !homun_alive(sd->hd) ) { - homun->call(sd); + if( !sd->hd->homunculus.vaporize ) + homun->ressurect(sd, 100, sd->bl.x, sd->bl.y); + else + homun->call(sd); return true; } |