Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- exp_t Creature::getGainedExperience(Creature* attacker)
- {
- int32_t totaldamage = getTotalInflictedDamage();
- int32_t attackerdamage = getInflicatedDamage(attacker);
- exp_t lostexperience = getLostExperience();
- exp_t gainexperience = 0;
- Player* player = dynamic_cast<Player*>(attacker);
- if(attackerdamage > 0 && totaldamage > 0)
- {
- //gainexperience = (int32_t)std::floor(((double)attackerdamage / totaldamage) * lostexperience);
- gainexperience = (exp_t)(attackerdamage * lostexperience / totaldamage);
- }
- #ifdef HUCZU_STAGE_EXP
- if(g_config.STAGE_EXP)
- {
- int32_t multipiler = 0;
- if(player)
- {
- if(player->getVocation() == VOCATION_NONE)
- return gainexperience * g_config.EXP_ROOK;
- #ifdef _BBK_ITEM_ATTRIBUTES
- std::vector<Attribute>::iterator it;
- for(it = player->attributes.begin(); it != player->attributes.end(); ++it)
- {
- if((*it).getKey() == "increaseExperience")
- multipiler += multipiler*(0.01*(double)(*it).getValue());
- if((*it).getKey() == "decreaseExperience")
- multipiler -= multipiler*(0.01*(double)(*it).getValue());
- }
- #endif //_BBK_ITEM_ATTRIBUTES
- std::cout << g_game.getStageExp(player->getLevel(), false) << std::endl;
- if(!dynamic_cast<Player*>(this))
- multipiler = g_game.getStageExp(player->getLevel(), false); //brak enfo
- else
- multipiler = g_game.getStageExp(player->getLevel(), true); //enfo
- if(multipiler > 0)
- return gainexperience * multipiler;
- }
- }
- else
- {
- if (dynamic_cast<Player*>(this))
- return gainexperience * g_config.EXP_MUL_PVP;
- else
- return gainexperience * g_config.EXP_MUL;
- }
- #endif
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement