summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-Trunk.txt5
-rw-r--r--db/Changelog.txt2
-rw-r--r--db/skill_db.txt2
-rw-r--r--npc/warps/cities/rachel.txt4
-rw-r--r--src/map/charcommand.c107
-rw-r--r--src/map/clif.c4
-rw-r--r--src/map/mob.c4
-rw-r--r--src/map/pc.c3
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;
}