Advertisement
Guest User

Untitled

a guest
Nov 17th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.58 KB | None | 0 0
  1. bool Combat::CombatManaFunc(Creature* caster, Creature* target, const CombatParams& params, void* data)
  2. {
  3. int64_t change = 0;
  4. if(Combat2Var* var = (Combat2Var*)data)
  5. {
  6. change = var->change;
  7. if(!change)
  8. change = random_range(var->minChange, var->maxChange, DISTRO_NORMAL);
  9. }
  10.  
  11. Player* targetPlayer = target->getPlayer();
  12. Player* casterPlayer = caster->getPlayer();
  13. if(targetPlayer && casterPlayer) {
  14. std::string value;
  15. std::string value2;
  16. casterPlayer->getStorage(25092, value);
  17. int64_t cchance = atoi(value.c_str());
  18. casterPlayer->getStorage(25093, value2);
  19. int64_t cdmg = atoi(value2.c_str());
  20. int64_t chancee = g_config.getNumber(ConfigManager::CHANCE_CRIT_TALENT);
  21. int64_t crit = g_config.getNumber(ConfigManager::HIGHER_CRIT_TALENT);
  22. int64_t number = random_range(1, 1000, DISTRO_NORMAL);
  23. int64_t pallyOrRogue = 1.15;
  24.  
  25. if (targetPlayer->getVocationId() == 3 || targetPlayer->getVocationId() == 7 || targetPlayer->getVocationId() == 9){
  26. pallyOrRogue = 1.10;
  27. }
  28.  
  29.  
  30. if(params.isSpell && casterPlayer && random_range(1, 1000, DISTRO_NORMAL) <= (SPELL_CRITICAL + (cchance * chancee * 10))) {
  31. change = (int64_t)(change * (pallyOrRogue + ((cdmg * crit) * 0.01)));
  32. g_game.addAnimatedText(caster->getPosition(), COLOR_BLUE, "CRITICAL!");
  33. }
  34. }
  35.  
  36. if(change < 0 && caster && caster->getPlayer() && target->getPlayer())
  37. change = change / 2;
  38.  
  39. if(!g_game.combatChangeMana(caster, target, change))
  40. return false;
  41.  
  42. CombatConditionFunc(caster, target, params, NULL);
  43. CombatDispelFunc(caster, target, params, NULL);
  44. return true;
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement