Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool Combat::CombatManaFunc(Creature* caster, Creature* target, const CombatParams& params, void* data)
- {
- int64_t change = 0;
- if(Combat2Var* var = (Combat2Var*)data)
- {
- change = var->change;
- if(!change)
- change = random_range(var->minChange, var->maxChange, DISTRO_NORMAL);
- }
- Player* targetPlayer = target->getPlayer();
- Player* casterPlayer = caster->getPlayer();
- if(targetPlayer && casterPlayer) {
- std::string value;
- std::string value2;
- casterPlayer->getStorage(25092, value);
- int64_t cchance = atoi(value.c_str());
- casterPlayer->getStorage(25093, value2);
- int64_t cdmg = atoi(value2.c_str());
- int64_t chancee = g_config.getNumber(ConfigManager::CHANCE_CRIT_TALENT);
- int64_t crit = g_config.getNumber(ConfigManager::HIGHER_CRIT_TALENT);
- int64_t number = random_range(1, 1000, DISTRO_NORMAL);
- int64_t pallyOrRogue = 1.15;
- if (targetPlayer->getVocationId() == 3 || targetPlayer->getVocationId() == 7 || targetPlayer->getVocationId() == 9){
- pallyOrRogue = 1.10;
- }
- if(params.isSpell && casterPlayer && random_range(1, 1000, DISTRO_NORMAL) <= (SPELL_CRITICAL + (cchance * chancee * 10))) {
- change = (int64_t)(change * (pallyOrRogue + ((cdmg * crit) * 0.01)));
- g_game.addAnimatedText(caster->getPosition(), COLOR_BLUE, "CRITICAL!");
- }
- }
- if(change < 0 && caster && caster->getPlayer() && target->getPlayer())
- change = change / 2;
- if(!g_game.combatChangeMana(caster, target, change))
- return false;
- CombatConditionFunc(caster, target, params, NULL);
- CombatDispelFunc(caster, target, params, NULL);
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement