diff options
-rw-r--r-- | Changelog-Trunk.txt | 5 | ||||
-rw-r--r-- | db/Changelog.txt | 2 | ||||
-rw-r--r-- | db/skill_db.txt | 2 | ||||
-rw-r--r-- | npc/warps/cities/rachel.txt | 4 | ||||
-rw-r--r-- | src/map/charcommand.c | 107 | ||||
-rw-r--r-- | src/map/clif.c | 4 | ||||
-rw-r--r-- | src/map/mob.c | 4 | ||||
-rw-r--r-- | src/map/pc.c | 3 |
8 files changed, 70 insertions, 61 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 23f1e009b..ea659a5ea 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -4,6 +4,11 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. 2007/02/05 + * Fixed the skill tree not always updating when using @allskill + * Probably fixed the target-change on melee attack setting not working. + * Moved the deletion of the invincible timer when using skills so that it + is not deleted for skills such as Ashura (when just selecting a target) + [Skotlex] * Continuing the checking of script buildin functions and stop the script execution when an attached player is required but not found. This task will be referenced as Ticket #41 from now on. [FlavioJS] diff --git a/db/Changelog.txt b/db/Changelog.txt index 94f574690..ba4625d48 100644 --- a/db/Changelog.txt +++ b/db/Changelog.txt @@ -20,6 +20,8 @@ ======================== +02/05 + * Fixed Venom Splasher not being Poison elemental 02/02 * Completed Amon Ra's spell list. Note that they probably need a delay added because of the way eA differs from Aegis on the skillused condition. diff --git a/db/skill_db.txt b/db/skill_db.txt index c548818c6..612c5ff6a 100644 --- a/db/skill_db.txt +++ b/db/skill_db.txt @@ -164,7 +164,7 @@ 138,1,6,16,5,1,0,10,1,no,0,1024,0,weapon,0 //AS_ENCHANTPOISON#Enchant Poison# 139,0,6,4,0,0,0,10,1,no,0,0,0,weapon,0 //AS_POISONREACT#Poison React# 140,2,6,2,5,1,0,10,1,no,0,0,0,weapon,0 //AS_VENOMDUST#Venom Dust# -141,1,6,1,-1,1,2,10,1,yes,0,0,0,weapon,0 //AS_SPLASHER#Venom Splasher# +141,1,6,1,5,1,2,10,1,yes,0,0,0,weapon,0 //AS_SPLASHER#Venom Splasher# 142,0,6,4,0,1,0,1,1,no,0,1,0,none,0 //NV_FIRSTAID#First Aid# 143,0,6,4,0,1,0,1,1,no,0,1,0,none,0 //NV_TRICKDEAD#Act Dead# 144,0,0,0,0,0,0,1,0,no,0,1,0,none,0 //SM_MOVINGRECOVERY#Moving HP-Recovery# diff --git a/npc/warps/cities/rachel.txt b/npc/warps/cities/rachel.txt index 00b625d7c..e03acd7a3 100644 --- a/npc/warps/cities/rachel.txt +++ b/npc/warps/cities/rachel.txt @@ -56,7 +56,7 @@ ra_temsky.gat,99,135,0 warp rasky002 1,1,ra_temsky.gat,99,112 ra_temsky.gat,112,143,0 warp rasky003 1,1,ra_temsky.gat,141,139 ra_temsky.gat,137,139,0 warp rasky004 1,1,ra_temsky.gat,108,143 ra_temsky.gat,87,143,0 warp rasky005 1,1,ra_temsky.gat,58,139 -ra_temsky.gat,62,139,0 warp rasky004 1,1,ra_temsky.gat,91,143 +ra_temsky.gat,62,139,0 warp rasky006 1,1,ra_temsky.gat,91,143 //Rachel Temple ra_temple.gat,119,21,0 warp rachel002 1,1,rachel.gat,149,244 @@ -124,4 +124,4 @@ ra_in01.gat,313,374,0 warp ra_in014 2,2,ra_in01.gat,358,373 ra_in01.gat,354,373,0 warp ra_in014a 2,2,ra_in01.gat,308,374 //Entrance to the Temple -rachel.gat,149,249,0 warp rachel001 1,1,ra_temple.gat,119,28
\ No newline at end of file +rachel.gat,149,249,0 warp rachel001 1,1,ra_temple.gat,119,28 diff --git a/src/map/charcommand.c b/src/map/charcommand.c index 27a80a986..1d0ad382b 100644 --- a/src/map/charcommand.c +++ b/src/map/charcommand.c @@ -1298,63 +1298,62 @@ int charcommand_baselevel( return -1; } - if ((pl_sd = map_nick2sd(player)) != NULL) { - if (pc_isGM(sd) >= pc_isGM(pl_sd)) { // you can change base level only lower or same gm level + if ((pl_sd = map_nick2sd(player)) == NULL) { + clif_displaymessage(fd, msg_table[3]); // Character not found. + return -1; + } + if (pc_isGM(sd) >= pc_isGM(pl_sd)) { // you can change base level only lower or same gm level + clif_displaymessage(fd, msg_table[81]); // Your GM level don't authorise you to do this action on this player. + return -1; + } - if (level > 0) { - if (pl_sd->status.base_level == pc_maxbaselv(sd)) { // check for max level by Valaris - clif_displaymessage(fd, msg_table[91]); // Character's base level can't go any higher. - return 0; - } // End Addition - if ((unsigned int)level > pc_maxbaselv(pl_sd) || - pl_sd->status.base_level > pc_maxbaselv(pl_sd) -level) - level = pc_maxbaselv(pl_sd) - pl_sd->status.base_level; - for (i = 1; i <= level; i++) - status_point += (pl_sd->status.base_level + i + 14) / 5; - if (pl_sd->status.status_point > USHRT_MAX - status_point) - pl_sd->status.status_point = USHRT_MAX; - else - pl_sd->status.status_point += status_point; - pl_sd->status.base_level += (unsigned int)level; - clif_updatestatus(pl_sd, SP_BASELEVEL); - clif_updatestatus(pl_sd, SP_NEXTBASEEXP); - clif_updatestatus(pl_sd, SP_STATUSPOINT); - status_calc_pc(pl_sd, 0); - status_percent_heal(&pl_sd->bl, 100, 100); - clif_misceffect(&pl_sd->bl, 0); - clif_displaymessage(fd, msg_table[65]); // Character's base level raised. - } else { - if (pl_sd->status.base_level == 1) { - clif_displaymessage(fd, msg_table[193]); // Character's base level can't go any lower. - return -1; - } - level *= -1; - if ((unsigned int)level >= pl_sd->status.base_level) - level = pl_sd->status.base_level -1; - if (pl_sd->status.status_point > 0) { - for (i = 0; i > -level; i--) - status_point += (pl_sd->status.base_level +i + 14) / 5; - if (pl_sd->status.status_point < status_point) - pc_resetstate(pl_sd); - if (pl_sd->status.status_point < status_point) - pl_sd->status.status_point = 0; - else - pl_sd->status.status_point -= status_point; - clif_updatestatus(pl_sd, SP_STATUSPOINT); - } // to add: remove status points from stats - pl_sd->status.base_level -= (unsigned int)level; - clif_updatestatus(pl_sd, SP_BASELEVEL); - clif_updatestatus(pl_sd, SP_NEXTBASEEXP); - status_calc_pc(pl_sd, 0); - clif_displaymessage(fd, msg_table[66]); // Character's base level lowered. - } - } else { - clif_displaymessage(fd, msg_table[81]); // Your GM level don't authorise you to do this action on this player. + if (level > 0) { + if (pl_sd->status.base_level == pc_maxbaselv(pl_sd)) { // check for max level by Valaris + clif_displaymessage(fd, msg_table[91]); // Character's base level can't go any higher. + return 0; + } // End Addition + if ((unsigned int)level > pc_maxbaselv(pl_sd) || + pl_sd->status.base_level > pc_maxbaselv(pl_sd) -level) + level = pc_maxbaselv(pl_sd) - pl_sd->status.base_level; + for (i = 1; i <= level; i++) + status_point += (pl_sd->status.base_level + i + 14) / 5; + + if (pl_sd->status.status_point > USHRT_MAX - status_point) + pl_sd->status.status_point = USHRT_MAX; + else + pl_sd->status.status_point += status_point; + pl_sd->status.base_level += (unsigned int)level; + clif_updatestatus(pl_sd, SP_BASELEVEL); + clif_updatestatus(pl_sd, SP_NEXTBASEEXP); + clif_updatestatus(pl_sd, SP_STATUSPOINT); + status_calc_pc(pl_sd, 0); + status_percent_heal(&pl_sd->bl, 100, 100); + clif_misceffect(&pl_sd->bl, 0); + clif_displaymessage(fd, msg_table[65]); // Character's base level raised. + } else { + if (pl_sd->status.base_level == 1) { + clif_displaymessage(fd, msg_table[193]); // Character's base level can't go any lower. return -1; } - } else { - clif_displaymessage(fd, msg_table[3]); // Character not found. - return -1; + level *= -1; + if ((unsigned int)level >= pl_sd->status.base_level) + level = pl_sd->status.base_level -1; + if (pl_sd->status.status_point > 0) { + for (i = 0; i > -level; i--) + status_point += (pl_sd->status.base_level +i + 14) / 5; + if (pl_sd->status.status_point < status_point) + pc_resetstate(pl_sd); + if (pl_sd->status.status_point < status_point) + pl_sd->status.status_point = 0; + else + pl_sd->status.status_point -= status_point; + clif_updatestatus(pl_sd, SP_STATUSPOINT); + } // to add: remove status points from stats + pl_sd->status.base_level -= (unsigned int)level; + clif_updatestatus(pl_sd, SP_BASELEVEL); + clif_updatestatus(pl_sd, SP_NEXTBASEEXP); + status_calc_pc(pl_sd, 0); + clif_displaymessage(fd, msg_table[66]); // Character's base level lowered. } return 0; //³íI—¹ diff --git a/src/map/clif.c b/src/map/clif.c index fb9b345d5..8f4e625f1 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -9702,8 +9702,6 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd) { if(sd->sc.option&(OPTION_WEDDING|OPTION_XMAS)) return; - pc_delinvincibletimer(sd); - if(target_id<0 && -target_id == sd->bl.id) // for disguises [Valaris] target_id = sd->bl.id; @@ -9755,6 +9753,8 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd) { skilllv = tmp; } + pc_delinvincibletimer(sd); + if (skilllv) unit_skilluse_id(&sd->bl, target_id, skillnum, skilllv); diff --git a/src/map/mob.c b/src/map/mob.c index 4abd1dd58..bba0505c6 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -725,13 +725,13 @@ static int mob_can_changetarget(struct mob_data* md, struct block_list* target, { if (md->state.provoke_flag == target->id) return 1; - else if (!battle_config.mob_ai&0x4) + else if (!(battle_config.mob_ai&0x4)) return 0; } switch (md->state.skillstate) { case MSS_BERSERK: - if (!mode&MD_CHANGETARGET_MELEE) + if (!(mode&MD_CHANGETARGET_MELEE)) return 0; return (battle_config.mob_ai&0x4 || check_distance_bl(&md->bl, target, 3)); case MSS_RUSH: diff --git a/src/map/pc.c b/src/map/pc.c index 3731dda29..b268ed629 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -4558,6 +4558,9 @@ int pc_allskillup(struct map_session_data *sd) } } status_calc_pc(sd,0); + //Required because if you could level up all skills previously, + //the update will not be sent as only the lv variable changes. + clif_skillinfoblock(sd); return 0; } |