From 3a105344576ad49f85b90d0024e3283fb4207549 Mon Sep 17 00:00:00 2001 From: skotlex Date: Tue, 31 Jan 2006 15:51:23 +0000 Subject: - Cleaned up Summon Slave mob skill to only summon number of missing mobs to complete the skill level (that is, SS level 5 will always bring the total count of slaves to 5, never above) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5138 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/mob.c | 23 ++++++++++------------- src/map/skill.c | 2 ++ 2 files changed, 12 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/map/mob.c b/src/map/mob.c index 17292fc85..fb7b30bef 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -3067,17 +3067,13 @@ int mob_warp(struct mob_data *md,int m,int x,int y,int type) */ int mob_countslave_sub(struct block_list *bl,va_list ap) { - int id,*c; + int id; struct mob_data *md; id=va_arg(ap,int); - - c=va_arg(ap,int *); + md = (struct mob_data *)bl; - - if( md->master_id==id ) { - (*c)++; + if( md->master_id==id ) return 1; - } return 0; } @@ -3087,9 +3083,7 @@ int mob_countslave_sub(struct block_list *bl,va_list ap) */ int mob_countslave(struct block_list *bl) { - int c=0; - map_foreachinmap(mob_countslave_sub, bl->m, BL_MOB,bl->id,&c); - return c; + return map_foreachinmap(mob_countslave_sub, bl->m, BL_MOB,bl->id); } /*========================================== * Summons amount slaves contained in the value[5] array using round-robin. [adapted by Skotlex] @@ -3098,7 +3092,7 @@ int mob_countslave(struct block_list *bl) int mob_summonslave(struct mob_data *md2,int *value,int amount,int skill_id) { struct mob_data *md; - int bx,by,m,count = 0,class_,k; + int bx,by,m,count = 0,class_,k=0; nullpo_retr(0, md2); nullpo_retr(0, value); @@ -3112,8 +3106,11 @@ int mob_summonslave(struct mob_data *md2,int *value,int amount,int skill_id) while(count < 5 && mobdb_checkid(value[count])) count++; if(count < 1) return 0; - - for(k=0;k 0 && amount < count) { //Do not start on 0, pick some random sub subset [Skotlex] + k = rand()%count; + amount+=k; //Increase final value by same amount to preserve total number to summon. + } + for(;kbl); case NPC_SUMMONMONSTER: /* MOB?¢Š« */ if(md) mob_summonslave(md,md->db->skill[md->skillidx].val,skilllv,skillid); -- cgit v1.2.3-70-g09d2