* Final fix on Juperos NPC.

* Fix on initnpctimer not attaching rid.
* Fix on OnTouch ignoring -1 NPCs.
* Fix on @reloadscript crashing due to passing non BL_SKILL bl to a function that accepts only BL_SKILL bl.
* Added area NPC detection in clif_parseLoadEndAck.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5638 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
Lance 2006-03-17 06:39:58 +00:00
parent 36e6159d22
commit ceea8fde6c
6 changed files with 24 additions and 12 deletions

View File

@ -5,6 +5,12 @@ IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. EV
GOES INTO TRUNK AND WILL BE MERGED INTO STABLE BY VALARIS AND WIZPUTER. -- VALARIS GOES INTO TRUNK AND WILL BE MERGED INTO STABLE BY VALARIS AND WIZPUTER. -- VALARIS
2006/03/17 2006/03/17
* Final fix on Juperos NPC. [Lance]
* Fix on initnpctimer not attaching rid. [Lance]
* Fix on OnTouch ignoring -1 NPCs. [Lance]
* Fix on @reloadscript crashing due to passing non BL_SKILL bl to a function that accepts only BL_SKILL bl.
[Lance]
* Added area NPC detection in clif_parseLoadEndAck. [Lance]
* Fixed compiler warning in script.c get_mob_data. [Lance] * Fixed compiler warning in script.c get_mob_data. [Lance]
* Temperory resolved issues on Juperos until I get the exact description on the behaviour * Temperory resolved issues on Juperos until I get the exact description on the behaviour
in retail servers. [Lance] in retail servers. [Lance]

View File

@ -55,21 +55,19 @@ juperos_02.gat,129,150,0 script Juperos 111,{
mes "Are you sure you want to enter?"; mes "Are you sure you want to enter?";
next; next;
if(select("Yes","No") == 1){ if(select("Yes","No") == 1){
close2; set jupe_destination$, "jupe_ele_r.gat";
set jupe_destination$, "jupe_ele.gat";
set jupe_destination_x, 50; set jupe_destination_x, 50;
set jupe_destination_y, 94; set jupe_destination_y, 94;
close2;
warp "jupe_ele.gat",41,45; warp "jupe_ele.gat",41,45;
end; end;
} }
close; close;
} }
jupe_ele.gat,41,45,0 script detectionUnit -1,10,10{ jupe_ele.gat,41,45,0 script detectionUnit -1,20,20{
if(jupe_ele_timer == 0){ OnTouch:
set jupe_ele_timer, 1;
initnpctimer; initnpctimer;
}
end; end;
OnTimer1000: OnTimer1000:
@ -80,11 +78,10 @@ OnTimer1000:
OnTimer15000: OnTimer15000:
stopnpctimer; stopnpctimer;
setnpctimer 0; setnpctimer 0;
set jupe_ele_timer, 0; warp jupe_destination$,jupe_destination_x,jupe_destination_y;
set jupe_destination$, ""; set jupe_destination$, "";
set jupe_destination_x, 0; set jupe_destination_x, 0;
set jupe_destination_y, 0; set jupe_destination_y, 0;
warp jupe_destination$,jupe_destination_x,jupe_destination_y;
end; end;
} }
@ -92,10 +89,10 @@ jupe_ele_r.gat,50,98,0 script Juperos Elevator 111,{
mes "Are you sure you want to go up?"; mes "Are you sure you want to go up?";
next; next;
if(select("Yes","No") == 1){ if(select("Yes","No") == 1){
close2;
set jupe_destination$, "juperos_02.gat"; set jupe_destination$, "juperos_02.gat";
set jupe_destination_x, 129; set jupe_destination_x, 129;
set jupe_destination_y, 147; set jupe_destination_y, 147;
close2;
warp "jupe_ele.gat",41,45; warp "jupe_ele.gat",41,45;
} }
close; close;

View File

@ -8846,6 +8846,12 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
clif_status_load(&sd->bl, SI_DEVIL, 1); //blindness [Komurka] clif_status_load(&sd->bl, SI_DEVIL, 1); //blindness [Komurka]
map_foreachinarea(clif_getareachar,sd->bl.m,sd->bl.x-AREA_SIZE,sd->bl.y-AREA_SIZE,sd->bl.x+AREA_SIZE,sd->bl.y+AREA_SIZE,BL_ALL,sd); map_foreachinarea(clif_getareachar,sd->bl.m,sd->bl.x-AREA_SIZE,sd->bl.y-AREA_SIZE,sd->bl.x+AREA_SIZE,sd->bl.y+AREA_SIZE,BL_ALL,sd);
// For automatic triggering of NPCs after map loading (so you don't need to walk 1 step first)
if (map_getcell(sd->bl.m,sd->bl.x,sd->bl.y,CELL_CHKNPC))
npc_touch_areanpc(sd,sd->bl.m,sd->bl.x,sd->bl.y);
else
sd->areanpc_id = 0;
} }
/*========================================== /*==========================================

View File

@ -1279,7 +1279,7 @@ void map_foreachobject(int (*func)(struct block_list*,va_list),int type,...) {
for(i=2;i<=last_object_id;i++){ for(i=2;i<=last_object_id;i++){
if(objects[i]){ if(objects[i]){
if(!(objects[i]->type&type)) if(!(objects[i]->type==type)) // Fixed [Lance]
continue; continue;
if(bl_list_count>=BL_LIST_MAX) { if(bl_list_count>=BL_LIST_MAX) {
if(battle_config.error_log) if(battle_config.error_log)

View File

@ -777,6 +777,7 @@ int npc_settimerevent_tick(struct npc_data *nd,int newtimer)
flag= sd->npc_timer_id != -1 ; flag= sd->npc_timer_id != -1 ;
} else } else
flag= nd->u.scr.timerid != -1 ; flag= nd->u.scr.timerid != -1 ;
if(flag) if(flag)
npc_timerevent_stop(nd); npc_timerevent_stop(nd);
nd->u.scr.timer=newtimer; nd->u.scr.timer=newtimer;
@ -1556,6 +1557,7 @@ int npc_unload (struct npc_data *nd)
} }
} }
} }
aFree(nd); aFree(nd);
return 0; return 0;
@ -2033,7 +2035,7 @@ static int npc_parse_script (char *w1,char *w2,char *w3,char *w4,char *first_lin
if (xs >= 0) xs = xs * 2 + 1; if (xs >= 0) xs = xs * 2 + 1;
if (ys >= 0) ys = ys * 2 + 1; if (ys >= 0) ys = ys * 2 + 1;
if (class_ >= 0) { if (class_ >= -1) { // -1 NPCs use OnTouch [Lance]
for (i = 0; i < ys; i++) { for (i = 0; i < ys; i++) {
for (j = 0; j < xs; j++) { for (j = 0; j < xs; j++) {
if (map_getcell(m, x - xs/2 + j, y - ys/2 + i, CELL_CHKNOPASS)) if (map_getcell(m, x - xs/2 + j, y - ys/2 + i, CELL_CHKNOPASS))

View File

@ -5659,6 +5659,7 @@ int buildin_initnpctimer(struct script_state *st)
else else
nd=(struct npc_data *)map_id2bl(st->oid); nd=(struct npc_data *)map_id2bl(st->oid);
nd->u.scr.rid = st->rid;
npc_settimerevent_tick(nd,0); npc_settimerevent_tick(nd,0);
npc_timerevent_start(nd, st->rid); npc_timerevent_start(nd, st->rid);
return 0; return 0;