|
@@ -7468,6 +7468,24 @@ BUILDIN_FUNC(areamonster)
|
|
|
/*==========================================
|
|
|
* ƒ‚ƒ“ƒXƒ^�[�í�œ
|
|
|
*------------------------------------------*/
|
|
|
+ static int buildin_killmonster_sub_strip(struct block_list *bl,va_list ap)
|
|
|
+{ //same fix but with killmonster instead - stripping events from mobs.
|
|
|
+ TBL_MOB* md = (TBL_MOB*)bl;
|
|
|
+ char *event=va_arg(ap,char *);
|
|
|
+ int allflag=va_arg(ap,int);
|
|
|
+
|
|
|
+ md->npc_killmonster = 1;
|
|
|
+
|
|
|
+ if(!allflag){
|
|
|
+ if(strcmp(event,md->npc_event)==0)
|
|
|
+ status_kill(bl);
|
|
|
+ }else{
|
|
|
+ if(!md->spawn)
|
|
|
+ status_kill(bl);
|
|
|
+ }
|
|
|
+ md->npc_killmonster = 0;
|
|
|
+ return 0;
|
|
|
+}
|
|
|
static int buildin_killmonster_sub(struct block_list *bl,va_list ap)
|
|
|
{
|
|
|
TBL_MOB* md = (TBL_MOB*)bl;
|
|
@@ -7496,7 +7514,15 @@ BUILDIN_FUNC(killmonster)
|
|
|
|
|
|
if( (m=map_mapname2mapid(mapname))<0 )
|
|
|
return 0;
|
|
|
- map_foreachinmap(buildin_killmonster_sub, m, BL_MOB, event ,allflag);
|
|
|
+
|
|
|
+ if( script_hasdata(st,4) ) {
|
|
|
+ if ( script_getnum(st,4) == 1 ) {
|
|
|
+ map_foreachinmap(buildin_killmonster_sub, m, BL_MOB, event ,allflag);
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ map_foreachinmap(buildin_killmonster_sub_strip, m, BL_MOB, event ,allflag);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -13456,7 +13482,7 @@ struct script_function buildin_func[] = {
|
|
|
BUILDIN_DEF(produce,"i"),
|
|
|
BUILDIN_DEF(monster,"siisii*"),
|
|
|
BUILDIN_DEF(areamonster,"siiiisii*"),
|
|
|
- BUILDIN_DEF(killmonster,"ss"),
|
|
|
+ BUILDIN_DEF(killmonster,"ss?"),
|
|
|
BUILDIN_DEF(killmonsterall,"s?"),
|
|
|
BUILDIN_DEF(clone,"siisi*"),
|
|
|
BUILDIN_DEF(doevent,"s"),
|