diff options
author | (no author) <(no author)@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2005-02-11 21:07:30 +0000 |
---|---|---|
committer | (no author) <(no author)@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2005-02-11 21:07:30 +0000 |
commit | b46bf4721349c2f1bdb6d1217c51459839a85c1d (patch) | |
tree | 03edec39fd7b1fe3cf8a7c2264f4b1c4226cc6f8 /src/map/mob.c | |
parent | 3547371b9785107171e7c7ecb746931156955e5f (diff) | |
download | hercules-b46bf4721349c2f1bdb6d1217c51459839a85c1d.tar.gz hercules-b46bf4721349c2f1bdb6d1217c51459839a85c1d.tar.bz2 hercules-b46bf4721349c2f1bdb6d1217c51459839a85c1d.tar.xz hercules-b46bf4721349c2f1bdb6d1217c51459839a85c1d.zip |
1 fixed drops log
2 made possible to disable consumable items (potions, berries, etc) during GvG, PvP
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@1079 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/mob.c')
-rw-r--r-- | src/map/mob.c | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/src/map/mob.c b/src/map/mob.c index ceec6c25f..3c70998bf 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -2532,6 +2532,7 @@ int mob_damage(struct block_list *src,struct mob_data *md,int damage,int type) // item drop if(!(type&1)) { int log_item[8] = {0}; + int drop_ore = -1,drop_items=0; //slot N for DROP LOG, number of dropped items for(i=0;i<8;i++){ struct delay_item_drop *ditem; int drop_rate; @@ -2547,8 +2548,11 @@ int mob_damage(struct block_list *src,struct mob_data *md,int damage,int type) drop_rate = 1; if(battle_config.drops_by_luk>0 && sd && md) drop_rate+=(sd->status.luk*battle_config.drops_by_luk)/100; // drops affected by luk [Valaris] if(sd && md && battle_config.pk_mode==1 && (mob_db[md->class_].lv - sd->status.base_level >= 20)) drop_rate*=1.25; // pk_mode increase drops if 20 level difference [Valaris] - if(drop_rate <= rand()%10000) + if(drop_rate <= rand()%10000) { + drop_ore = i; //we rmember an empty slot to put there ORE DISCOVERY drop later. continue; + } + drop_items++; ditem=(struct delay_item_drop *)aCalloc(1,sizeof(struct delay_item_drop)); ditem->nameid = mob_db[md->class_].dropitem[i].nameid; @@ -2563,18 +2567,14 @@ int mob_damage(struct block_list *src,struct mob_data *md,int damage,int type) add_timer(tick+500+i,mob_delay_item_drop,(int)ditem,0); } - #ifndef TXT_ONLY - if(log_config.drop > 0) - log_drop(mvp_sd, md->class_, log_item); - #endif - // Ore Discovery [Celest] if (pc_checkskill(sd,BS_FINDINGORE)>0 && battle_config.finding_ore_rate/100 >= rand()%1000) { struct delay_item_drop *ditem; int itemid[17] = { 714, 756, 757, 969, 984, 985, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1002 }; ditem=(struct delay_item_drop *)aCalloc(1,sizeof(struct delay_item_drop)); - ditem->nameid = itemid[rand()%17]; - // log_item[i] = ditem->nameid; + ditem->nameid = itemid[rand()%17]; //should return from 0 to 16 + if (drop_ore<0) i=7; //we have only 8 slots in LOG, there's a check to not overflow + log_item[i] = ditem->nameid; //it's for logging only ditem->amount = 1; ditem->m = md->bl.m; ditem->x = md->bl.x; @@ -2585,10 +2585,9 @@ int mob_damage(struct block_list *src,struct mob_data *md,int damage,int type) add_timer(tick+500+i,mob_delay_item_drop,(int)ditem,0); } - #ifndef TXT_ONLY - if(log_config.drop > 0) - log_drop(mvp_sd, md->class_, log_item); - #endif + //this drop log contains ALL dropped items + ORE (if there was ORE Recovery) [Lupus] + if(log_config.drop > 0 && drop_items) //we check were there any drops.. and if not - don't write the log + log_drop(sd, md->class_, log_item); //mvp_sd if(sd && sd->state.attack_type == BF_WEAPON) { for(i=0;i<sd->monster_drop_item_count;i++) { @@ -2672,10 +2671,9 @@ int mob_damage(struct block_list *src,struct mob_data *md,int damage,int type) } break; } - #ifndef TXT_ONLY - if(log_config.mvpdrop > 0) - log_mvpdrop(mvp_sd, md->class_, log_mvp); - #endif + + if(log_config.mvpdrop > 0) + log_mvpdrop(mvp_sd, md->class_, log_mvp); } } // [MouseJstr] |