Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Server Code Submissions

Reply
 
Thread Tools Display Modes
  #1  
Old 09-28-2008, 09:09 PM
Congdar
Developer
 
Join Date: Jul 2007
Location: my own little world
Posts: 751
Default

To help with cut/paste:

find client.h line 645
Code:
	bool	CheckDoubleAttack(bool AAadd = false, bool Triple = false);
change to
Code:
	bool	CheckDoubleAttack(bool tripleAttack = false);
find client_process.cpp lines 288-291
Code:
					//triple attack: rangers, monks, warriors, berserkers over level 60
					if((((GetClass() == MONK || GetClass() == WARRIOR || GetClass() == RANGER || GetClass() == BERSERKER)
						&& GetLevel() >= 60) || SpecAttacks[SPECATK_TRIPLE])
					   && CheckDoubleAttack(false,true))
change to
Code:
					//triple attack: rangers, monks, warriors, berserkers over level 60
					if((((GetClass() == MONK || GetClass() == WARRIOR || GetClass() == RANGER || GetClass() == BERSERKER)
						&& GetLevel() >= 60) || SpecAttacks[SPECATK_TRIPLE])
					   && CheckDoubleAttack(true))
find client_process.cpp lines 297-298
Code:
					//quad attack, does this belong here??
					if(SpecAttacks[SPECATK_QUAD] && CheckDoubleAttack(false,true))
change to
Code:
					//quad attack, does this belong here??
					if(SpecAttacks[SPECATK_QUAD] && CheckDoubleAttack(true))
find attack.cpp line 2716 Delete the entire method Client::CheckDoubleAttack() and replace with this, it is completely rewritten.
Code:
bool Client::CheckDoubleAttack(bool tripleAttack) {

	// If you don't have the double attack skill, return
	if(!HasSkill(DOUBLE_ATTACK))
		return false;
	
	// You start with no chance of double attacking
	int chance = 0;
	
	// Used for maxSkill and triple attack calcs
	int classtype = GetClass();
	
	// The current skill level
	int skill = GetSkill(DOUBLE_ATTACK);
	
	// Discipline bonuses give you 100% chance to double attack
	int buffs = (spellbonuses.DoubleAttackChance + itembonuses.DoubleAttackChance) * 3;
	
	// The maximum value for the Class based on the database entry for level
	int maxSkill = MaxSkill(DOUBLE_ATTACK, classtype, GetLevel());
	
	// AA bonuses for the melee classes
	int aaBonus =
		(GetAA(aaBestialFrenzy)*10) +
		(GetAA(aaHarmoniousAttack)*10) +
		(GetAA(aaKnightsAdvantage)*10) +
		(GetAA(aaFerocity)*10) +
		(GetAA(aaDanceofBlades)*10);
	
	// Half of Double Attack Skill used to check chance for Triple Attack
	if(tripleAttack) {
		// Only some Double Attack classes get Triple Attack
		if((classtype == MONK) || (classtype == WARRIOR) || (classtype == RANGER) || (classtype == BERSERKER)) {
			// We only get half the skill, but should get all the bonuses
			chance = (skill/2) + buffs + aaBonus;
		}
		else {
			return false;
		}
	}
	else {
		// This is the actual Double Attack chance
		chance = skill + buffs + aaBonus;

		// You can gain skill even if you don't successfully double attack,
		// but put it here so you don't skill up on triple attacks
		CheckIncreaseSkill(DOUBLE_ATTACK);
	}
	
	// If your chance is greater than the RNG you are successful! Always have a 5% chance to fail.
	if(chance > MakeRandomInt(0, ((maxSkill + itembonuses.DoubleAttackChance + aaBonus)*1.05))) {
		return true;
	}

	return false;
}
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 04:19 PM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3