summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-Trunk.txt7
-rw-r--r--conf-tmpl/Changelog.txt3
-rw-r--r--conf-tmpl/battle/skill.conf2
-rw-r--r--db/Changelog.txt3
-rw-r--r--db/skill_db.txt4
-rw-r--r--doc/script_commands.txt4
-rw-r--r--src/map/atcommand.c6
-rw-r--r--src/map/clif.c3
-rw-r--r--src/map/map.c2
-rw-r--r--src/map/pc.c2
-rw-r--r--src/map/skill.c37
-rw-r--r--src/map/status.c5
12 files changed, 48 insertions, 30 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt
index 854d5ad44..770595f71 100644
--- a/Changelog-Trunk.txt
+++ b/Changelog-Trunk.txt
@@ -3,6 +3,13 @@ Date Added
AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
+2007/02/12
+ * Corrected Spider Web casting around caster instead of target's position.
+ * Corrected a possible crash during login due to checking for the incorrect
+ variable (lets pc_calc_status be invoked when it shouldn't)
+ * Added bounds checking to map_foreachincell.
+ * Opt2 values (poison, blind, and so on) are now resent on warp/map-change.
+ * Corrected description of isloggedin script command. [Skotlex]
2007/02/11
* Fixed the inverted behavior of display_skill_fail, caused by r9823
* Fixed @loadnpc not updating the script_event[] array
diff --git a/conf-tmpl/Changelog.txt b/conf-tmpl/Changelog.txt
index b5b49e50c..a73a69e99 100644
--- a/conf-tmpl/Changelog.txt
+++ b/conf-tmpl/Changelog.txt
@@ -1,5 +1,8 @@
Date Added
+2007/02/12
+ * Corrected the meaning of "skill_display_fail&2", made 2 the default
+ setting. [Skotlex]
2007/02/08
* Since the mysql ping interval is now autoconfigured, removed
the connection_ping_interval config setting in inter_athena.conf
diff --git a/conf-tmpl/battle/skill.conf b/conf-tmpl/battle/skill.conf
index 8c7d00e17..ebd8b2ea3 100644
--- a/conf-tmpl/battle/skill.conf
+++ b/conf-tmpl/battle/skill.conf
@@ -161,7 +161,7 @@ land_skill_limit: 1
// 2 - Disable skill-failed messages due to can-act delays.
// 4 - Disable failed message from Snatcher
// 8 - Disable failed message from Envenom
-display_skill_fail: 0
+display_skill_fail: 2
// Can a player in chat room (in-game), be warped by a warp portal? (Note 1)
chat_warpportal: no
diff --git a/db/Changelog.txt b/db/Changelog.txt
index 3e0b2ab65..e6213af2c 100644
--- a/db/Changelog.txt
+++ b/db/Changelog.txt
@@ -19,6 +19,9 @@
-----
========================
+02/12
+ * Corrected range of self destruction / bio explosion to be equal to their
+ splash range. [Skotlex]
02/10
* Fixed Armeyer Dinze Card [Playtester]
* Reverted Fly Wing and Butterfly Wing to the old version [Playtester]
diff --git a/db/skill_db.txt b/db/skill_db.txt
index 293dd3910..e07c1b524 100644
--- a/db/skill_db.txt
+++ b/db/skill_db.txt
@@ -400,7 +400,7 @@
366,0,6,4,0,1,0,10,1,no,0,0,0,magic,0 //HW_MAGICPOWER#Mystical Amplification#
367,9,8,1,0,0,0,5,1,no,0,0,0,misc,0 //PA_PRESSURE#Gloria Domini#
368,0,6,4,0,1,0,5,1,yes,0,0,0,weapon,0 //PA_SACRIFICE# Martyr's Reckoning#
-369,5,6,4,0,1,0,10,1,yes,0,0,0,misc,0 //PA_GOSPEL#Battle Chant#
+369,0,6,4,0,1,0,10,1,yes,0,0,0,misc,0 //PA_GOSPEL#Battle Chant#
370,-2,6,1,-1,0,0,5,1,yes,0,0,0,weapon,3 //CH_PALMSTRIKE#Raging Palm Strike#
371,-2,8,4,-1,0,0,5,1,no,0,0x200,0,weapon,0 //CH_TIGERFIST#Glacier Fist#
372,-2,8,4,-1,0,0,10,-1:-1:-2:-2:-3:-3:-4:-4:-5:-5,no,0,0x200,0,weapon,0 //CH_CHAINCRUSH#Chain Crush Combo#
@@ -612,7 +612,7 @@
8013,9,6,1,0,0,0,5,1:2:3:4:5,no,0,0,0,magic,0 //HVAN_CAPRICE
8014,0,6,4,0,1,0,5,0,no,0,0,0,none,0 //HVAN_CHAOTIC
8015,0,0,0,0,1,0,5,0,no,0,0,0,none,0 //HVAN_INSTRUCT
-8016,5,6,4,-1,2,4,3,1,no,0,0,0,misc,0 //HVAN_EXPLOSION
+8016,4,6,4,-1,2,4,3,1,no,0,0,0,misc,0 //HVAN_EXPLOSION
10000,0,0,0,0,0,0,1,0,no,0,0x10,0,none,0 //GD_APPROVAL#Approval#
10001,0,0,0,0,0,0,1,0,no,0,0x10,0,none,0 //GD_KAFRACONTRACT#Kafra Contract#
diff --git a/doc/script_commands.txt b/doc/script_commands.txt
index 549fbb729..a6293172f 100644
--- a/doc/script_commands.txt
+++ b/doc/script_commands.txt
@@ -2838,9 +2838,9 @@ account ID.
-------------------------
-*isloggedin(<character id>)
+*isloggedin(<account id>)
-This function returns 1 if the specified character is logged in and 0 if they
+This function returns 1 if the specified account is logged in and 0 if they
aren't.
---------------------------------------
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index d0fbdf291..9a427547c 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -4167,14 +4167,14 @@ int atcommand_stat_all(const int fd, struct map_session_data* sd, const char* co
*status[index] = new_value;
clif_updatestatus(sd, SP_STR + index);
clif_updatestatus(sd, SP_USTR + index);
- status_calc_pc(sd, 0);
count++;
}
}
- if (count > 0) // if at least 1 stat modified
+ if (count > 0) { // if at least 1 stat modified
+ status_calc_pc(sd, 0);
clif_displaymessage(fd, msg_txt(84)); // All stats changed!
- else {
+ } else {
if (value < 0)
clif_displaymessage(fd, msg_txt(177)); // Impossible to decrease a stat.
else
diff --git a/src/map/clif.c b/src/map/clif.c
index 4b642f84c..2645b55bb 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -8298,6 +8298,9 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
if (pc_checkskill(sd, SG_DEVIL) && !pc_nextjobexp(sd))
clif_status_load(&sd->bl, SI_DEVIL, 1); //blindness [Komurka]
+ if (sd->sc.opt2) //Client loses these on warp.
+ clif_changeoption(&sd->bl);
+
clif_weather_check(sd);
map_foreachinarea(clif_getareachar,sd->bl.m,
diff --git a/src/map/map.c b/src/map/map.c
index af3f48ad0..02d3bbdeb 100644
--- a/src/map/map.c
+++ b/src/map/map.c
@@ -996,6 +996,8 @@ int map_foreachincell(int (*func)(struct block_list*,va_list),int m,int x,int y,
va_list ap;
int blockcount=bl_list_count,i,c;
+ if (x < 0 || y < 0 || x >= map[m].xs || y >= map[m].ys) return 0;
+
va_start(ap,type);
by=y/BLOCK_SIZE;
diff --git a/src/map/pc.c b/src/map/pc.c
index 4e9c93dc9..3fba85898 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -613,7 +613,7 @@ int pc_authok(struct map_session_data *sd, int login_id2, time_t connect_until_t
if (battle_config.disp_zeny)
sd->state.showzeny = 1;
- if (battle_config.display_skill_fail&2)
+ if (!(battle_config.display_skill_fail&2))
sd->state.showdelay = 1;
// Request all registries.
diff --git a/src/map/skill.c b/src/map/skill.c
index f5283b9d8..8f003aa6b 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -5550,24 +5550,6 @@ int skill_castend_id (int tid, unsigned int tick, int id, int data)
return 0;
}
- switch (ud->skillid) {
- //These should become skill_castend_pos
- case WE_CALLPARTNER:
- case WE_CALLPARENT:
- case WE_CALLBABY:
- case AM_RESURRECTHOMUN:
- case PF_SPIDERWEB:
- //Find a random spot to place the skill. [Skotlex]
- inf2 = skill_get_splash(ud->skillid, ud->skilllv);
- ud->skillx = src->x + inf2;
- ud->skilly = src->y + inf2;
- if (inf2 && !map_random_dir(src, &ud->skillx, &ud->skilly)) {
- ud->skillx = src->x;
- ud->skilly = src->y;
- }
- return skill_castend_pos(tid,tick,id,data);
- }
-
if(ud->skillid != SA_CASTCANCEL ) {
if( ud->skilltimer != tid ) {
ShowError("skill_castend_id: Timer mismatch %d!=%d!\n", ud->skilltimer, tid);
@@ -5584,12 +5566,31 @@ int skill_castend_id (int tid, unsigned int tick, int id, int data)
else
target = map_id2bl(ud->skilltarget);
+
// Use a do so that you can break out of it when the skill fails.
do {
if(!target || target->prev==NULL) break;
if(src->m != target->m || status_isdead(src)) break;
+ switch (ud->skillid) {
+ //These should become skill_castend_pos
+ case WE_CALLPARTNER:
+ case WE_CALLPARENT:
+ case WE_CALLBABY:
+ case AM_RESURRECTHOMUN:
+ case PF_SPIDERWEB:
+ //Find a random spot to place the skill. [Skotlex]
+ inf2 = skill_get_splash(ud->skillid, ud->skilllv);
+ ud->skillx = target->x + inf2;
+ ud->skilly = target->y + inf2;
+ if (inf2 && !map_random_dir(target, &ud->skillx, &ud->skilly)) {
+ ud->skillx = target->x;
+ ud->skilly = target->y;
+ }
+ return skill_castend_pos(tid,tick,id,data);
+ }
+
if(ud->skillid == RG_BACKSTAP) {
int dir = map_calc_dir(src,target->x,target->y),t_dir = unit_getdir(target);
if(check_distance_bl(src, target, 0) || map_check_dir(dir,t_dir)) {
diff --git a/src/map/status.c b/src/map/status.c
index 3a5afa2ee..e3ad739cf 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -1530,7 +1530,7 @@ int status_calc_pc(struct map_session_data* sd,int first)
int i,index;
int skill,refinedef=0;
- if(sd->state.connect_new && !(first&1)) //Shouldn't invoke yet until player is done loading.
+ if(!sd->state.auth && !(first&1)) //Shouldn't invoke yet until player is done loading.
return -1;
if (++calculating > 10) //Too many recursive calls!
@@ -2413,12 +2413,11 @@ int status_calc_homunculus(struct homun_data *hd, int first)
status->aspd_rate = 1000;
- /* //this calc is useless since status_calc_bl(SCB_ALL) does it already
skill = (1000 -4*status->agi -status->dex)
*hd->homunculusDB->baseASPD/1000;
status->amotion = cap_value(skill,battle_config.max_aspd,2000);
- status->adelay = status->amotion; //It seems adelay = amotion for Homunculus.*/
+ status->adelay = status->amotion; //It seems adelay = amotion for Homunculus.
status_calc_misc(&hd->bl, status, hom->level);
status_calc_bl(&hd->bl, SCB_ALL); //Status related changes.