read the mob_dead function in mob.c file
) { //Experience calculation. int bonus = 100; //Bonus on top of your share (common to all attackers). int pnum = 0; if (md->sc.data[SC_RICHMANKIM]) bonus += md->sc.data[SC_RICHMANKIM]->val2; if(sd) { temp = status->get_class(&md->bl); if(sd->sc.data[SC_MIRACLE]) i = 2; //All mobs are Star Targets else ARR_FIND(0, MAX_PC_FEELHATE, i, temp == sd->hate_mob && (battle_config.allow_skill_without_day || pc->sg_info.day_func())); if(i<MAX_PC_FEELHATE && (temp=pc->checkskill(sd,pc->sg_info.bless_id)) > 0) bonus += (i==2?20:10)*temp; } if(battle_config.mobs_level_up && md->level > md->db->lv) // [Valaris] bonus += (md->level-md->db->lv)*battle_config.mobs_level_up_exp_rate; for(i = 0; i < DAMAGELOG_SIZE && md->dmglog.id; i++) { int flag=1,zeny=0; unsigned int base_exp, job_exp; double per; //Your share of the mob's exp if (!tmpsd) continue; if (!battle_config.exp_calc_type && md->tdmg) //jAthena's exp formula based on total damage. per = (double)md->dmglog.dmg/(double)md->tdmg; else { //eAthena's exp formula based on max hp. per = (double)md->dmglog.dmg/(double)mstatus->max_hp; if (per > 2) per = 2; // prevents unlimited exp gain } if (count>1 && battle_config.exp_bonus_attacker) { //Exp bonus per additional attacker. if (count > battle_config.exp_bonus_max_attacker) count = battle_config.exp_bonus_max_attacker; per += per*((count-1)*battle_config.exp_bonus_attacker)/100.; } // change experience for different sized monsters [Valaris] if (battle_config.mob_size_influence) { switch( md->special_state.size ) { case SZ_MEDIUM: per /= 2.; break; case SZ_BIG: per *= 2.; break; } } if( md->dmglog.flag == MDLF_PET ) per *= battle_config.pet_attack_exp_rate/100.; if(battle_config.zeny_from_mobs && md->level) { // zeny calculation moblv + random moblv [Valaris] zeny=(int) ((md->level+rnd()%md->level)*per*bonus/100.); if(md->db->mexp > 0) zeny*=rnd()%0; } if (map->list[m].flag.nobaseexp || !md->db->base_exp) base_exp = 0; else base_exp = (unsigned int)cap_value(md->db->base_exp * per * bonus/100. * map->list[m].bexp/100., 1, UINT_MAX); if (map->list[m].flag.nojobexp || !md->db->job_exp || md->dmglog.flag == MDLF_HOMUN) //Homun earned job-exp is always lost. job_exp = 0; else job_exp = (unsigned int)cap_value(md->db->job_exp * per * bonus/100. * map->list[m].jexp/100., 1, UINT_MAX); if ( (temp = tmpsd->status.party_id) > 0 ) { int j; for( j = 0; j < pnum && pt[j].id != temp; j++ ); //Locate party. if( j == pnum ){ //Possibly add party. pt[pnum].p = party->search(temp); if(pt[pnum].p && pt[pnum].p->party.exp) { pt[pnum].id = temp; pt[pnum].base_exp = base_exp; pt[pnum].job_exp = job_exp; pt[pnum].zeny = zeny; // zeny share [Valaris] pnum++; flag=0; } } else { //Add to total if (pt[j].base_exp > UINT_MAX - base_exp) pt[j].base_exp = UINT_MAX; else pt[j].base_exp += base_exp; if (pt[j].job_exp > UINT_MAX - job_exp) pt[j].job_exp = UINT_MAX; else pt[j].job_exp += job_exp; pt[j].zeny+=zeny; // zeny share [Valaris] flag=0; } } if(base_exp && md->dmglog.flag == MDLF_HOMUN) //tmpsd is null if it has no homunc. homun->gainexp(tmpsd->hd, base_exp); if(flag) { if(base_exp || job_exp) { if( md->dmglog.flag != MDLF_PET || battle_config.pet_attack_exp_to_master ) {#ifdef RENEWAL_EXP int rate = pc->level_penalty_mod(md->level - (tmpsd)->status.base_level, md->status.race, md->status.mode, 1); base_exp = (unsigned int)cap_value(base_exp * rate / 100, 1, UINT_MAX); job_exp = (unsigned int)cap_value(job_exp * rate / 100, 1, UINT_MAX);#endif pc->gainexp(tmpsd, &md->bl, base_exp, job_exp, false); } } if(zeny) // zeny from mobs [Valaris] pc->getzeny(tmpsd, zeny, LOG_TYPE_PICKDROP_MONSTER, NULL); } } for( i = 0; i < pnum; i++ ) //Party share. party->exp_share(pt.p, &md->bl, pt.base_exp,pt.job_exp,pt.zeny); } //End EXP giving.possible no.1you have Mr.Kim a Rich man buff
possible no.2
you are a Star Gladiator, and killed a mob that is under Blessing of Star, Blessing of Moon, Blessing of Sun
possible no.3
your server has "mobs_level_up" enabled, and the monster leveled up, thus increased its exp gain
possible no.4
if you kill steal other player's mob, your exp gain rate is less than normal
possible no.5
your server has "mob_size_influence" enabled, and killing a big size monster gain double exp
possible no.6
that map has bexp or jexp mapflag enabled, thus exp gain increased by mapflags
possible no.7
you joined a party and has party share exp option ON, sure you exp gain is share with party members
possible no.8
you have a pet, and has "pet_attack_exp_rate" enabled , the mob killed by pets are share with you
nope, no more possible no.9 with default hercules source code
unless you have modified something
We use essential cookies to make this site work, and optional cookies to enhance your experience.