Page 2 of 3
					
				Re: Northlander Hewing
				Posted: Tue Apr 04, 2017 1:48 pm
				by arakes99
				Crits on this have never worked.  Not since I first tried the feat. 
Crit failed to confirm????????????????  I played a character with this for one hour during 100% RcR to figure that out.
If it's not fixable, just add it to the feat description.  Don't try to make people pointing out the flaw look like they don't know how to test their character.  Build does not matter, the feat bugs on crits.
			 
			
					
				Re: Northlander Hewing
				Posted: Tue Apr 04, 2017 2:04 pm
				by Valefort
				Crits don't fail to confirm, their damage is just not maximized.
			 
			
					
				Re: Northlander Hewing
				Posted: Tue Apr 04, 2017 2:24 pm
				by dedude
				Yes the crits confirm fine, just without maximizing they average out at about the same damage as a normal maximized non-crit.
			 
			
					
				Re: Northlander Hewing
				Posted: Tue Apr 04, 2017 2:26 pm
				by Valefort
				That's completely build dependant here.
			 
			
					
				Re: Northlander Hewing
				Posted: Tue Apr 04, 2017 2:30 pm
				by dedude
				Let me guess, building with unarmed strike is the worst possible combination?  

 
			
					
				Re: Northlander Hewing
				Posted: Tue Apr 04, 2017 2:38 pm
				by arakes99
				You also don't get the 2x str damage on crits.  Crit damage with an x2 weapon is almost no higher than a normal hit.  Unarmed you are actually doing less damage this way, ya because you don't get the x2 to str and the maximized.  Just 2x your base, non feat dps.
			 
			
					
				Re: Northlander Hewing
				Posted: Tue Apr 04, 2017 2:42 pm
				by Valefort
				Yes since you have a lot of varying damage, weapon using builds usually only have their weapon damage to maximize.
			 
			
					
				Re: Northlander Hewing
				Posted: Tue Apr 04, 2017 4:34 pm
				by Akroma666
				So.. is there talk to allow this feat to get the bonus damage on a critical? Or is it working as intended?
Also, would this be available to shapechange in the future? It would be nice to use this for bear warrior to overcome DR.
			 
			
					
				Re: Northlander Hewing
				Posted: Tue Apr 04, 2017 4:40 pm
				by Theodore01
				And do we want northlander hewing fist monks with a flat 30++ damage a punch ?
			 
			
					
				Re: Northlander Hewing
				Posted: Tue Apr 04, 2017 4:41 pm
				by Valefort
				Yes for the shapechange, as for computing critical hits correctly don't coun't on it for now, I have no idea how to fix this.
NH now correctly halves the attacks, even for greater flurry monks so I think that's fine.
			 
			
					
				Re: Northlander Hewing
				Posted: Tue Apr 04, 2017 4:46 pm
				by Akroma666
				Valefort wrote:Yes for the shapechange, as for computing critical hits correctly don't coun't on it for now, I have no idea how to fix this.
NH now correctly halves the attacks, even for greater flurry monks so I think that's fine.
Is the code available for public view?
 
			
					
				Re: Northlander Hewing
				Posted: Tue Apr 04, 2017 4:52 pm
				by Theodore01
				Valefort wrote:NH now correctly halves the attacks, even for greater flurry monks so I think that's fine.
Doesn't a monk get his first 3 (of4) flurrying hewing attacks a full bab. 
That and 1d30 maximised looks pretty overpowered or not ?
 
			
					
				Re: Northlander Hewing
				Posted: Tue Apr 04, 2017 5:13 pm
				by Valefort
				Northlander Hewing removes the last attacks on the attack schedule so a monk would lose the bugged flurry attack and then the attacks with the least AB.
Is the code available for public view?
Here is it if you want :
Code: Select all
/*
Rasael 
second pass by Valefort
*/
#include "nwnx_clock" 
void RecurNorthlander(object oPC)
{
	if(GetIsObjectValid(oPC) == FALSE)
		return;
	
	if(GetArea(oPC) == OBJECT_INVALID)
	{
		DelayCommand(6.0f, RecurNorthlander(oPC));
		return;
	}
	
	ExecuteScript("bg_feat_northlanderhewing", oPC);
} 
int CountTotalAttacks(object oPC)
{
	int iTotalAttacks = 1;
	
	// BAB
	
	int iBAB = GetTRUEBaseAttackBonus(oPC);	
	
	if(iBAB >= 25) 				{iTotalAttacks = 6;}
	else if(iBAB >= 21) 		{iTotalAttacks = 5;}
	else if(iBAB >= 16) 		{iTotalAttacks = 4;}
	else if(iBAB >= 11) 		{iTotalAttacks = 3;}
	else if(iBAB >= 6) 			{iTotalAttacks = 2;}
	
	// Haste, let's do this here before TWF
	
	if (GetHasSpellEffect( 647, oPC) == TRUE)
    {
		iTotalAttacks += 1;
	}
	
	// Flurry of blows, normal flurry is +1 attacks, greater flurry is +2. Let's ignore the bugged bonus attack here since it's not doubled by TWF we'll add it at the end
	
	if (GetActionMode(oPC, ACTION_MODE_FLURRY_OF_BLOWS) != FALSE)
	{
		iTotalAttacks += 1;
		
		// Greater Flurry
		if(GetLevelByClass(5, oPC) > 10) 
		{
			iTotalAttacks += 1;
		}	
	}	
	
	// TWF, let's first check if there is actually a weapon in the off-hand that is different from the main hand one
	
	object oWeaponA = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC);
	object oWeaponB = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC);
	
	if(GetIsObjectValid(oWeaponB) == TRUE && oWeaponB != oWeaponA) 
	{
		// PTWF, doubles the number of attacks		
		if (GetHasFeat(1972, oPC, TRUE) || GetHasFeat(1973, oPC, TRUE))
		{
			iTotalAttacks = 2*iTotalAttacks;
		}
		// GTWF		
		else if (GetHasFeat(1099, oPC, TRUE) || GetHasFeat(1736, oPC, TRUE))
		{
			iTotalAttacks += 3;
		}		
		// ITWF		
		else if (GetHasFeat(20, oPC, TRUE) || GetHasFeat(1735, oPC, TRUE))
		{
			iTotalAttacks += 2;
		}		
		// TWF		
		else if (GetHasFeat(41, oPC, TRUE) || GetHasFeat(1734, oPC, TRUE))
		{
			iTotalAttacks += 1;
		}
	}
	
	// bugged bonus attack from flurry of blows
	
	if (GetActionMode(oPC, ACTION_MODE_FLURRY_OF_BLOWS) != FALSE)
	{
		iTotalAttacks += 1;
	}
	
	return iTotalAttacks;
}
void main()
{
	object oPC = OBJECT_SELF;
	int iTime = GetUNIXTime();
	int iNorthlanderHewingActive = GetLocalInt(oPC, "bg_northlander_hewing");
	
	if(iNorthlanderHewingActive == 0) 
		{return;}
		
	int iNorthlanderHewingTimestamp = GetLocalInt(oPC, "bg_northlander_hewingA");
	
	if(iNorthlanderHewingTimestamp != 0 && iNorthlanderHewingTimestamp + 6 > iTime)
		{return;}
	
	SetLocalInt(oPC, "bg_northlander_hewingA", iTime);
	
	int iTotalAttacks = CountTotalAttacks(oPC)/2;
	// Total number of attacks divided by 2
	
	effect eAttacks = EffectModifyAttacks(-iTotalAttacks);
	
	int iPenalty = 2;
	int iStrengthMod = GetAbilityModifier(ABILITY_STRENGTH, oPC);
	effect eAC = EffectACDecrease(iPenalty);
	effect eAB = EffectAttackDecrease(iPenalty);
	effect eLink = EffectLinkEffects(eAttacks, eAC);
	eLink = EffectLinkEffects(eLink, eAB);
	effect eDamage = EffectMaxDamage();
	eLink = EffectLinkEffects(eLink, eDamage);
	
	// We want EB and effect damage increase to stack so we'll add the EB of the weapon to the iStrengthMod as the effectDamageIncrease function overrides the weapon's EB
	object oWeapon = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC);
	itemproperty ipWeapon = GetFirstItemProperty(oWeapon);
	while(GetIsItemPropertyValid(ipWeapon))
	{					
		if (GetItemPropertyType(ipWeapon) == ITEM_PROPERTY_ENHANCEMENT_BONUS)
		{
			iStrengthMod += GetItemPropertyCostTableValue(ipWeapon); //Enhance bonus	
		}						
		ipWeapon = GetNextItemProperty(oWeapon);
	}
	
	if(iStrengthMod > 0)
	{
		int nDamageBonus = DAMAGE_BONUS_1;
		if(iStrengthMod >= 24) {nDamageBonus = DAMAGE_BONUS_24;}		
		else if(iStrengthMod >= 23) {nDamageBonus = DAMAGE_BONUS_23;}
		else if(iStrengthMod >= 22) {nDamageBonus = DAMAGE_BONUS_22;}
		else if(iStrengthMod >= 21) {nDamageBonus = DAMAGE_BONUS_21;}
		else if(iStrengthMod >= 20) {nDamageBonus = DAMAGE_BONUS_20;}
		else if(iStrengthMod >= 19) {nDamageBonus = DAMAGE_BONUS_19;}
		else if(iStrengthMod >= 18) {nDamageBonus = DAMAGE_BONUS_18;}
		else if(iStrengthMod >= 17) {nDamageBonus = DAMAGE_BONUS_17;}
		else if(iStrengthMod >= 16) {nDamageBonus = DAMAGE_BONUS_16;}
		else if(iStrengthMod >= 15) {nDamageBonus = DAMAGE_BONUS_15;}
		else if(iStrengthMod >= 14) {nDamageBonus = DAMAGE_BONUS_14;}
		else if(iStrengthMod >= 13) {nDamageBonus = DAMAGE_BONUS_13;}
		else if(iStrengthMod >= 12) {nDamageBonus = DAMAGE_BONUS_12;}
		else if(iStrengthMod >= 11) {nDamageBonus = DAMAGE_BONUS_11;}
		else if(iStrengthMod >= 10) {nDamageBonus = DAMAGE_BONUS_10;}
		else if(iStrengthMod >= 9) {nDamageBonus = DAMAGE_BONUS_9;}
		else if(iStrengthMod >= 8) {nDamageBonus = DAMAGE_BONUS_8;}
		else if(iStrengthMod >= 7) {nDamageBonus = DAMAGE_BONUS_7;}
		else if(iStrengthMod >= 6) {nDamageBonus = DAMAGE_BONUS_6;}
		else if(iStrengthMod >= 5) {nDamageBonus = DAMAGE_BONUS_5;}
		else if(iStrengthMod >= 4) {nDamageBonus = DAMAGE_BONUS_4;}
		else if(iStrengthMod >= 3) {nDamageBonus = DAMAGE_BONUS_3;}
		else if(iStrengthMod >= 2) {nDamageBonus = DAMAGE_BONUS_2;}
		eLink = EffectLinkEffects(EffectDamageIncrease(nDamageBonus, DAMAGE_TYPE_BLUDGEONING, -1), eLink);
	}
	
	ApplyEffectToObject(DURATION_TYPE_TEMPORARY, SetEffectSpellId(SupernaturalEffect(eLink), 1475), oPC, 6.0f);	
	DelayCommand(6.0f, RecurNorthlander(oPC));
}	
 
			
					
				Re: Northlander Hewing
				Posted: Tue Apr 04, 2017 6:50 pm
				by Akroma666
				Ew.. that sucker is messy. Should have known.
			 
			
					
				Re: Northlander Hewing
				Posted: Tue Apr 04, 2017 7:44 pm
				by dedude
				That's a pretty big script to have running on a heartbeat. Isn't it at bab 26 you get 6 apr? I guess it's EffectMaxDamage() that doesn't calculate properly on crits. Not sure that is solveable short of redefining the feat effect.
EDIT
Code: Select all
while(GetIsItemPropertyValid(ipWeapon))
   {               
      if (GetItemPropertyType(ipWeapon) == ITEM_PROPERTY_ENHANCEMENT_BONUS)
      {
         iStrengthMod += GetItemPropertyCostTableValue(ipWeapon); //Enhance bonus   
      }                  
      ipWeapon = GetNextItemProperty(oWeapon);
   }
Can a weapon have multiple enhancement bonuses? Weapon +3 and GMW +5 maybe? If so they probably shouldn't stack.