diff options
-rw-r--r-- | src/map/map.h | 1 | ||||
-rw-r--r-- | src/map/mob.c | 27 |
2 files changed, 16 insertions, 12 deletions
diff --git a/src/map/map.h b/src/map/map.h index 3c7ebe243..e1a2096c6 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -446,6 +446,7 @@ struct mob_data { struct skill_unit_group_tickset skillunittick[MAX_SKILLUNITGROUPTICKSET]; char npc_event[50]; short size; + int owner; }; struct pet_data { struct block_list bl; diff --git a/src/map/mob.c b/src/map/mob.c index 27b2741c6..27cacb377 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -31,6 +31,9 @@ #define MOB_LAZYMOVEPERC 50 // Move probability in the negligent mode MOB (rate of 1000 minute) #define MOB_LAZYWARPPERC 20 // Warp probability in the negligent mode MOB (rate of 1000 minute) +#define MAX_MOB_DB 2000 /* Change this to increase the table size in your mob_db to accomodate + numbers more than 2000 for mobs if you want to (and know what you're doing). + Be sure to note that 4001 to 4047 are for advanced classes. */ struct mob_db mob_db[2001]; @@ -162,9 +165,9 @@ int mob_once_spawn(struct map_session_data *sd,char *mapname, md->size=2; class-=4000; } - else if(class>2000) { + else if(class>MAX_MOB_DB) { md->size=1; - class-=2000; + class-=MAX_MOB_DB; } if(mob_db[class].mode&0x02) @@ -263,7 +266,7 @@ int mob_spawn_guardian(struct map_session_data *sd,char *mapname, else m=map_mapname2mapid(mapname); - if(m<0 || amount<=0 || (class>=0 && class<=1000) || class>2000) // 値が異常なら召喚を止める + if(m<0 || amount<=0 || (class>=0 && class<=1000) || class>MAX_MOB_DB) // Invalid monster classes return 0; if(class<0) @@ -2645,15 +2648,15 @@ int mob_class_change(struct mob_data *md,int *value) nullpo_retr(0, md); nullpo_retr(0, value); - if(value[0]<=1000 || value[0]>2000) + if(value[0]<=1000 || value[0]>MAX_MOB_DB) return 0; if(md->bl.prev == NULL) return 0; - while(count < 5 && value[count] > 1000 && value[count] <= 2000) count++; + while(count < 5 && value[count] > 1000 && value[count] <= MAX_MOB_DB) count++; if(count < 1) return 0; class = value[rand()%count]; - if(class<=1000 || class>2000) return 0; + if(class<=1000 || class>MAX_MOB_DB) return 0; max_hp = battle_get_max_hp(&md->bl); hp_rate = md->hp*100/max_hp; @@ -2886,7 +2889,7 @@ int mob_summonslave(struct mob_data *md2,int *value,int amount,int flag) by=md2->bl.y; m=md2->bl.m; - if(value[0]<=1000 || value[0]>2000) // 値が異常なら召喚を止める + if(value[0]<=1000 || value[0]>MAX_MOB_DB) // 値が異常なら召喚を止める return 0; while(count < 5 && value[count] > 1000 && value[count] <= 2000) count++; if(count < 1) return 0; @@ -2894,7 +2897,7 @@ int mob_summonslave(struct mob_data *md2,int *value,int amount,int flag) for(k=0;k<count;k++) { amount = a; class = value[k]; - if(class<=1000 || class>2000) continue; + if(class<=1000 || class>MAX_MOB_DB) continue; for(;amount>0;amount--){ int x=0,y=0,c=0,i=0; md=(struct mob_data *)aCalloc(1,sizeof(struct mob_data)); @@ -3802,7 +3805,7 @@ static int mob_readdb(void) } class=atoi(str[0]); - if(class<=1000 || class>2000) + if(class<=1000 || class>MAX_MOB_DB) continue; mob_db[class].view_class=class; @@ -3949,7 +3952,7 @@ static int mob_readdb_mobavail(void) class=atoi(str[0]); - if(class<=1000 || class>2000) // 値が異常なら処理しない。 + if(class<=1000 || class>MAX_MOB_DB) // 値が異常なら処理しない。 continue; k=atoi(str[1]); if(k >= 0) @@ -4017,7 +4020,7 @@ static int mob_read_randommonster(void) class = atoi(str[0]); per=atoi(str[2]); - if((class>1000 && class<=2000) || class==0) + if((class>1000 && class<=MAX_MOB_DB) || class==0) mob_db[class].summonper[i]=per; } fclose(fp); @@ -4236,7 +4239,7 @@ static int mob_read_sqldb(void) } class=atoi(str[0]); - if(class<=1000 || class>2000) + if(class<=1000 || class>MAX_MOB_DB) continue; ln++; |