diff options
Diffstat (limited to 'src/map/mob.c')
-rw-r--r-- | src/map/mob.c | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/src/map/mob.c b/src/map/mob.c index 0547095d7..fba065463 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -3797,11 +3797,27 @@ static int mob_readskilldb(void) if (j < tmp) ms->cond2=cond2[j].id; - ms->val[0]=atoi(sp[12]); - ms->val[1]=atoi(sp[13]); - ms->val[2]=atoi(sp[14]); - ms->val[3]=atoi(sp[15]); - ms->val[4]=atoi(sp[16]); + ms->val[0]=(int)strtol(sp[12],NULL,0); + ms->val[1]=(int)strtol(sp[13],NULL,0); + ms->val[2]=(int)strtol(sp[14],NULL,0); + ms->val[3]=(int)strtol(sp[15],NULL,0); + ms->val[4]=(int)strtol(sp[16],NULL,0); + + if(ms->skill_id == NPC_EMOTION && mob_id>0 && + ms->val[1] == mob_db(mob_id)->status.mode) + { + ms->val[1] = 0; + ms->val[4] = 1; //request to return mode to normal. + } + if(ms->skill_id == NPC_EMOTION_ON && mob_id>0 && ms->val[1]) + { //Adds a mode to the mob. + //Remove aggressive mode when the new mob type is passive. + if (!(ms->val[1]&MD_AGGRESSIVE)) + ms->val[3]|=MD_AGGRESSIVE; + ms->val[2]|= ms->val[1]; //Add the new mode. + ms->val[1] = 0; //Do not "set" it. + } + if(sp[17] != NULL && strlen(sp[17])>2) ms->emotion=atoi(sp[17]); else |