- Fixed a duplicate warp name in Rachel

- Fixed Venom Splasher not being Poison elemental
- Cleaned up #blv
- 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)


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9791 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
skotlex 2007-02-05 18:16:33 +00:00
parent f652311f37
commit d2574dfd69
8 changed files with 71 additions and 62 deletions

View File

@ -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. IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
2007/02/05 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 * Continuing the checking of script buildin functions and stop the script
execution when an attached player is required but not found. execution when an attached player is required but not found.
This task will be referenced as Ticket #41 from now on. [FlavioJS] This task will be referenced as Ticket #41 from now on. [FlavioJS]

View File

@ -20,6 +20,8 @@
======================== ========================
02/05
* Fixed Venom Splasher not being Poison elemental
02/02 02/02
* Completed Amon Ra's spell list. Note that they probably need a delay * 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. added because of the way eA differs from Aegis on the skillused condition.

View File

@ -164,7 +164,7 @@
138,1,6,16,5,1,0,10,1,no,0,1024,0,weapon,0 //AS_ENCHANTPOISON#Enchant Poison# 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# 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# 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# 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# 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# 144,0,0,0,0,0,0,1,0,no,0,1,0,none,0 //SM_MOVINGRECOVERY#Moving HP-Recovery#

View File

@ -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,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,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,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 //Rachel Temple
ra_temple.gat,119,21,0 warp rachel002 1,1,rachel.gat,149,244 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 ra_in01.gat,354,373,0 warp ra_in014a 2,2,ra_in01.gat,308,374
//Entrance to the Temple //Entrance to the Temple
rachel.gat,149,249,0 warp rachel001 1,1,ra_temple.gat,119,28 rachel.gat,149,249,0 warp rachel001 1,1,ra_temple.gat,119,28

View File

@ -1298,64 +1298,63 @@ int charcommand_baselevel(
return -1; return -1;
} }
if ((pl_sd = map_nick2sd(player)) != NULL) { 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 (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.
return -1;
}
} else {
clif_displaymessage(fd, msg_table[3]); // Character not found. clif_displaymessage(fd, msg_table[3]); // Character not found.
return -1; 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(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;
}
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; //<2F>³<EFBFBD>í<EFBFBD>I—¹ return 0; //<2F>³<EFBFBD>í<EFBFBD>I—¹
} }

View File

@ -9702,8 +9702,6 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd) {
if(sd->sc.option&(OPTION_WEDDING|OPTION_XMAS)) if(sd->sc.option&(OPTION_WEDDING|OPTION_XMAS))
return; return;
pc_delinvincibletimer(sd);
if(target_id<0 && -target_id == sd->bl.id) // for disguises [Valaris] if(target_id<0 && -target_id == sd->bl.id) // for disguises [Valaris]
target_id = sd->bl.id; target_id = sd->bl.id;
@ -9755,6 +9753,8 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd) {
skilllv = tmp; skilllv = tmp;
} }
pc_delinvincibletimer(sd);
if (skilllv) if (skilllv)
unit_skilluse_id(&sd->bl, target_id, skillnum, skilllv); unit_skilluse_id(&sd->bl, target_id, skillnum, skilllv);

View File

@ -725,13 +725,13 @@ static int mob_can_changetarget(struct mob_data* md, struct block_list* target,
{ {
if (md->state.provoke_flag == target->id) if (md->state.provoke_flag == target->id)
return 1; return 1;
else if (!battle_config.mob_ai&0x4) else if (!(battle_config.mob_ai&0x4))
return 0; return 0;
} }
switch (md->state.skillstate) { switch (md->state.skillstate) {
case MSS_BERSERK: case MSS_BERSERK:
if (!mode&MD_CHANGETARGET_MELEE) if (!(mode&MD_CHANGETARGET_MELEE))
return 0; return 0;
return (battle_config.mob_ai&0x4 || check_distance_bl(&md->bl, target, 3)); return (battle_config.mob_ai&0x4 || check_distance_bl(&md->bl, target, 3));
case MSS_RUSH: case MSS_RUSH:

View File

@ -4558,6 +4558,9 @@ int pc_allskillup(struct map_session_data *sd)
} }
} }
status_calc_pc(sd,0); 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; return 0;
} }