summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-Trunk.txt3
-rw-r--r--src/map/mob.c5
-rw-r--r--src/map/pc.c4
-rw-r--r--src/map/pet.c12
-rw-r--r--src/map/skill.c2
5 files changed, 12 insertions, 14 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt
index d9f56257c..eb21cb3ca 100644
--- a/Changelog-Trunk.txt
+++ b/Changelog-Trunk.txt
@@ -4,6 +4,9 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
2006/08/24
+ * Reverted the previous change, changed the pet capture code to try to
+ capture a mob based on their view class rather than actual class.
+ [Skotlex]
* Fixed the md->class_ variable not being updated when a mob's class is
changed. [Skotlex]
* Added setting clear_skills_on_warp to specify when a character's
diff --git a/src/map/mob.c b/src/map/mob.c
index d22d86f5f..55dc2a61f 100644
--- a/src/map/mob.c
+++ b/src/map/mob.c
@@ -1954,7 +1954,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
drop_rate += (int)(0.5+drop_rate*status_get_luk(src)*battle_config.drops_by_luk2/10000.);
}
if (sd && battle_config.pk_mode &&
- (int)(md->db->lv - sd->status.base_level) >= 20)
+ (int)(md->level - sd->status.base_level) >= 20)
drop_rate = (int)(drop_rate*1.25); // pk_mode increase drops if 20 level difference [Valaris]
// if (10000 < rand()%10000+drop_rate) //May be better if MAX_RAND is too low?
@@ -2014,7 +2014,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
}
if(sd->get_zeny_num && rand()%100 < sd->get_zeny_rate) //Gets get_zeny_num per level +/-10% [Skotlex]
- pc_getzeny(sd,md->db->lv*sd->get_zeny_num*(90+rand()%21)/100);
+ pc_getzeny(sd,md->level*sd->get_zeny_num*(90+rand()%21)/100);
}
if(md->lootitem) {
for(i=0;i<md->lootitem_count;i++)
@@ -2275,7 +2275,6 @@ int mob_class_change (struct mob_data *md, int class_)
hp_rate = md->status.hp*100/md->status.max_hp;
md->db = mob_db(class_);
- md->class_ = class_;
if (battle_config.override_mob_names==1)
memcpy(md->name,md->db->name,NAME_LENGTH-1);
else
diff --git a/src/map/pc.c b/src/map/pc.c
index 8a0739ece..7761364e0 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -3234,9 +3234,9 @@ int pc_steal_coin(struct map_session_data *sd,struct block_list *target)
return 0;
skill = pc_checkskill(sd,RG_STEALCOIN)*10;
- rate = skill + (sd->status.base_level - md->db->lv)*3 + sd->battle_status.dex*2 + sd->battle_status.luk*2;
+ rate = skill + (sd->status.base_level - md->level)*3 + sd->battle_status.dex*2 + sd->battle_status.luk*2;
if(rand()%1000 < rate) {
- pc_getzeny(sd,md->db->lv*10 + rand()%100);
+ pc_getzeny(sd,md->level*10 + rand()%100);
md->state.steal_coin_flag = 1;
return 1;
}
diff --git a/src/map/pet.c b/src/map/pet.c
index 48427c4fc..b54f5cf6f 100644
--- a/src/map/pet.c
+++ b/src/map/pet.c
@@ -577,23 +577,19 @@ int pet_catch_process2(struct map_session_data *sd,int target_id)
pc_delitem(sd,i,1,0);
}
- i = search_petDB_index(md->class_,PET_CLASS);
+ i = search_petDB_index(md->vd->class_,PET_CLASS);
//catch_target_class == 0 is used for universal lures. [Skotlex]
//for now universal lures do not include bosses.
if (sd->catch_target_class == 0 && !(md->status.mode&MD_BOSS))
- sd->catch_target_class = md->class_;
- if(i < 0 || sd->catch_target_class != md->class_) {
+ sd->catch_target_class = md->vd->class_;
+ if(i < 0 || sd->catch_target_class != md->vd->class_) {
clif_emotion(&md->bl, 7); //mob will do /ag if wrong lure is used on them.
clif_pet_rulet(sd,0);
sd->catch_target_class = -1;
return 1;
}
- //target_id‚É‚æ‚é“G¨—‘”»’è
-// if(battle_config.etc_log)
-// printf("mob_id = %d, mob_class = %d\n",md->bl.id,md->class_);
- //¬Œ÷‚Ìê‡
- pet_catch_rate = (pet_db[i].capture + (sd->status.base_level - md->db->lv)*30 + sd->battle_status.luk*20)*(200 - md->status.hp*100/md->status.max_hp)/100;
+ pet_catch_rate = (pet_db[i].capture + (sd->status.base_level - md->level)*30 + sd->battle_status.luk*20)*(200 - md->status.hp*100/md->status.max_hp)/100;
if(pet_catch_rate < 1) pet_catch_rate = 1;
if(battle_config.pet_catch_rate != 100)
pet_catch_rate = (pet_catch_rate*battle_config.pet_catch_rate)/100;
diff --git a/src/map/skill.c b/src/map/skill.c
index 905e2c1fb..9a52c99dd 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -3929,7 +3929,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
pc_delspiritball(dstsd,dstsd->spiritball,0);
} else if (dstmd && !(tstatus->mode&MD_BOSS) && rand() % 100 < 20)
{ // check if target is a monster and not a Boss, for the 20% chance to absorb 2 SP per monster's level [Reddozen]
- i = 2 * dstmd->db->lv;
+ i = 2 * dstmd->level;
mob_target(dstmd,src,0);
}
if (i) {