Divine Power and attacks per round

Moderator: Event DM

User avatar
Khaelindra
Master Sage
Posts: 7001
Joined: Tue May 13, 2003 3:02 pm
Timezone: GMT+1
Location: Almere, the Netherlands(GMT+1, GMT+2 in summer)

Post by Khaelindra » Fri Jan 07, 2005 10:04 am

Serineth Swiftpaw wrote:
Khaelindra wrote:
ave wrote:
kombinat wrote:This issue is why we've banned the spell from the Scaled Gauntlets until it's fixed.
These potions have saved my life and the life of others many times. Go ahead and "fix" them now , as if the non-casters had an easy life :(
Use invisibility and withdraw...only 160 gold for the potion and it works wonderful.
No they dont :(
I was trapped the other day trying to escape and every time I drank one my character would make an AoO in a second or two later breaking off my insivibility, I drank about 5 potions before giving up and accepting defeat :( Luckily I was still bugged from a scroll I read though and techincally invincible so it kind of evened out :P
Good news: patch 1.65 stops you from making AoO's when invisible! :D
Lady Divinia Cecil, Combat Medic; Frederique Moriana, Dragon Avalanche; Amber, redhead Bandit Mascotte; Khaelindra, Mystic Archer

AbominationFascination: "Powergaming without RP is masturbatory and RP without combat and growth is fluffy poseurism."

Gary Gygax wrote:
A Master role player is one who is willing and able to bend their character concept to make the game more enjoyable for all involved.


Everybody Loves Paula (tm)
User avatar
Dirk Cutlass
Elder Sage
Posts: 4691
Joined: Mon Jan 27, 2003 9:42 am
Location: GMT

Post by Dirk Cutlass » Fri Jan 07, 2005 10:13 am

Here's the spell's script...

Code: Select all

//::///////////////////////////////////////////////
//:: Divine Power
//:: NW_S0_DivPower.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
    Improves the Clerics attack to be the
    equivalent of a Fighter's BAB of the same level,
    +1 HP per level and raises their strength to
    18 if is not already there.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Oct 21, 2001
//:://////////////////////////////////////////////

/*
bugfix by Kovi 2002.07.22
- temporary hp was stacked
- loosing temporary hp resulted in loosing the other bonuses
- number of attacks was not increased (should have been a BAB increase)
still problem:
~ attacks are better still approximation (the additional attack is at full BAB)
~ attack/ability bonuses count against the limits
*/

#include "nw_i0_spells"


#include "x2_inc_spellhook"

void main()
{

/*
  Spellcast Hook Code
  Added 2003-06-23 by GeorgZ
  If you want to make changes to all spells,
  check x2_inc_spellhook.nss to find out more

*/

    if (!X2PreSpellCastCode())
    {
        // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
        return;
    }

// End of Spell Cast Hook

    //Declare major variables
    object oTarget = GetSpellTargetObject();

    RemoveEffectsFromSpell(oTarget, GetSpellId());
    RemoveTempHitPoints();

    int nCasterLevel = GetCasterLevel(OBJECT_SELF);
    int nTotalCharacterLevel = GetHitDice(OBJECT_SELF);
    int nBAB = GetBaseAttackBonus(OBJECT_SELF);
    int nEpicPortionOfBAB = ( nTotalCharacterLevel - 19 ) / 2;

    if ( nEpicPortionOfBAB < 0 )
    {
        nEpicPortionOfBAB = 0;
    }

    int nExtraAttacks = 0;
    int nAttackIncrease = 0;

    if ( nTotalCharacterLevel > 20 )
    {
        nAttackIncrease = 20 + nEpicPortionOfBAB;
        if( nBAB - nEpicPortionOfBAB < 11 )
        {
            nExtraAttacks = 2;
        }
        else if( nBAB - nEpicPortionOfBAB > 10 && nBAB - nEpicPortionOfBAB < 16)
        {
            nExtraAttacks = 1;
        }
    }
    else
    {
        nAttackIncrease = nTotalCharacterLevel;
        nExtraAttacks = ( ( nTotalCharacterLevel - 1 ) / 5 ) - ( ( nBAB - 1 ) / 5 );
    }
    nAttackIncrease -= nBAB;

    if ( nAttackIncrease < 0 )
    {
        nAttackIncrease = 0;
    }

    int nStr = GetAbilityScore(oTarget, ABILITY_STRENGTH);
    int nStrengthIncrease = (nStr - 18) * -1;
    if( nStrengthIncrease < 0 )
    {
        nStrengthIncrease = 0;
    }

    effect eVis = EffectVisualEffect(VFX_IMP_SUPER_HEROISM);
    effect eStrength = EffectAbilityIncrease(ABILITY_STRENGTH, nStrengthIncrease);
    effect eHP = EffectTemporaryHitpoints(nCasterLevel);
    effect eAttack = EffectAttackIncrease(nAttackIncrease);
    effect eAttackMod = EffectModifyAttacks(nExtraAttacks);
    effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
    effect eLink = EffectLinkEffects(eAttack, eAttackMod);
    eLink = EffectLinkEffects(eLink, eDur);

    //Make sure that the strength modifier is a bonus
    if( nStrengthIncrease > 0 )
    {
        eLink = EffectLinkEffects(eLink, eStrength);
    }

    //Meta-Magic
    int nMetaMagic = GetMetaMagicFeat();
    if( nMetaMagic == METAMAGIC_EXTEND )
    {
        nCasterLevel *= 2;
    }

    //Fire cast spell at event for the specified target
    SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_DIVINE_POWER, FALSE));

    //Apply Link and VFX effects to the target
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCasterLevel));
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eHP, oTarget, RoundsToSeconds(nCasterLevel));
    ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
}
The code is pretty confusing, and I haven't quite worked out everything yet.
User avatar
Dirk Cutlass
Elder Sage
Posts: 4691
Joined: Mon Jan 27, 2003 9:42 am
Location: GMT

Post by Dirk Cutlass » Fri Jan 07, 2005 10:41 am

Looking at above script, I can't work out why it would give +4 to a fighter (me) who is already on the fighter BAB table :?

It should be nAttackIncrease = nTotalCharacterLevel - nBab = 0. Very odd, maybe the scroll or potion is using a different script that the spell?
User avatar
NWDuneAuron
Sage
Posts: 1836
Joined: Fri May 02, 2003 10:13 am
Location: Britain, GMT

Post by NWDuneAuron » Fri Jan 07, 2005 12:08 pm

Form my experience, Divine Power raises BAB to equal your level, giving extra attacks if your BAB hits a benchmark (11, 16, etc). It appears to not cap at 4 attacks, either. Jadrienne (13/5/3, Cleric/Wizard/Palemaster) receives 6 attacks/round with Divine Power, duel-wielding katanas, without improved two weapon-fighting. (5 from BAB 21, 1 offhand). With haste and a few other tricks, Jad can quickly become seriously sick... as anyone who's had a friendly duel with her can attest.

Sometimes, it seems to allow me to make two offhand attacks in a round, too.

Basicly, Divine Power is *hideously* broken.
Moredo
Team Member; Retired with Honors
Posts: 8337
Joined: Mon May 26, 2003 3:47 pm
Timezone: +2
Location: Norway (GMT +2)

Post by Moredo » Fri Jan 07, 2005 12:16 pm

The hand04 wrote:
KenLie wrote:Does this means that my dwarf would get 8 attacks/round when he casts haste and drinks divine potions? (as default he has 6(twoweaponfighter), hasted 7, haven't tried divine presence...hilarous) :lol:
Only gives Taran the normal 4 attacks per round/ 5 hasted.. The only AB bonus i'm getting is +4, which is handy for 1000 gp a bottle.
Same goes with Moredo, 5 natural, 6 hasted, 7 with haste and flurry. I don't get extra attacks when I drink the potions but I get +4 AB, which is nice at 1k bottle.
Always consider alignment as a tool, not a straitjacket that restricts the character.
— AD&D, 2nd Edition Player's Handbook
User avatar
Dirk Cutlass
Elder Sage
Posts: 4691
Joined: Mon Jan 27, 2003 9:42 am
Location: GMT

Post by Dirk Cutlass » Fri Jan 07, 2005 12:37 pm

Moredo wrote:
The hand04 wrote:
KenLie wrote:Does this means that my dwarf would get 8 attacks/round when he casts haste and drinks divine potions? (as default he has 6(twoweaponfighter), hasted 7, haven't tried divine presence...hilarous) :lol:
Only gives Taran the normal 4 attacks per round/ 5 hasted.. The only AB bonus i'm getting is +4, which is handy for 1000 gp a bottle.
Same goes with Moredo, 5 natural, 6 hasted, 7 with haste and flurry. I don't get extra attacks when I drink the potions but I get +4 AB, which is nice at 1k bottle.
Is Moredo epic or non-epic? From the above script, it does a lot more calculation for epic-characters than non-epic. Maybe there is a bug in that part?

On topic of number attacks per round. Going epic doesn't give you any more attacks does it? I mean once you've reached your max at 20, gaining extra BAB points just does that or do you start getting extra attacks to? For example, a 30 lvl fighter still only gets 4 attacks per round basic (i.e. not hasted, not dual-wielding, etc.). I think that's maybe where it is going wrong, because a 30 lvl cleric casting this spell would get the BAB of a 30 lvl fighter, but also gets increased number of attacks based on the script :? ... um maybe. Still confused by it.
The hand04
Prince of Bloated Discourse
Posts: 254
Joined: Tue Jul 06, 2004 3:29 am

Post by The hand04 » Fri Jan 07, 2005 12:50 pm

Dirk Cutlass wrote:
Moredo wrote:
The hand04 wrote:
KenLie wrote:Does this means that my dwarf would get 8 attacks/round when he casts haste and drinks divine potions? (as default he has 6(twoweaponfighter), hasted 7, haven't tried divine presence...hilarous) :lol:
Only gives Taran the normal 4 attacks per round/ 5 hasted.. The only AB bonus i'm getting is +4, which is handy for 1000 gp a bottle.
Same goes with Moredo, 5 natural, 6 hasted, 7 with haste and flurry. I don't get extra attacks when I drink the potions but I get +4 AB, which is nice at 1k bottle.
Is Moredo epic or non-epic? From the above script, it does a lot more calculation for epic-characters than non-epic. Maybe there is a bug in that part?

On topic of number attacks per round. Going epic doesn't give you any more attacks does it? I mean once you've reached your max at 20, gaining extra BAB points just does that or do you start getting extra attacks to? For example, a 30 lvl fighter still only gets 4 attacks per round basic (i.e. not hasted, not dual-wielding, etc.). I think that's maybe where it is going wrong, because a 30 lvl cleric casting this spell would get the BAB of a 30 lvl fighter, but also gets increased number of attacks based on the script :? ... um maybe. Still confused by it.
Yeah fighters should never get more than 4 attacks/5 hasted(etc), only thing that is increasing by lvls is the attack bonus.

Also, when I tested the divine presence potions of Le'or, my epic character didn't get extra attacks. only +4 to AB.. Has any other epic fighters tested the potions?
"Therefore the skillful leader subdues the enemy's troops without any fighting; he captures their cities without laying siege to them; he overthrows their kingdom without lengthy operations in the field." Sun Tzu, Art of War.
Moredo
Team Member; Retired with Honors
Posts: 8337
Joined: Mon May 26, 2003 3:47 pm
Timezone: +2
Location: Norway (GMT +2)

Post by Moredo » Fri Jan 07, 2005 1:29 pm

Dirk wrote:Is Moredo epic or non-epic? From the above script, it does a lot more calculation for epic-characters than non-epic. Maybe there is a bug in that part?
Level 28 Monk, I think my BAB is 19.

BAB: (28/3)*2 = 18,67

Meh, this means no BAB increase next level, what a pain :cry:
Always consider alignment as a tool, not a straitjacket that restricts the character.
— AD&D, 2nd Edition Player's Handbook
Starslayer_D
Master Sage
Posts: 5178
Joined: Thu Oct 24, 2002 7:35 pm
Location: Germany (+1 GMT)
Contact:

Post by Starslayer_D » Fri Jan 07, 2005 1:31 pm

Amonien, total lvl's 34 (30 cleric, 4 rogue):

Attacks rise from 4 (hasted) to 5 (hasted). + 34 HP, + 7 AB. Lasts 60 rounds extended. The last part is the one wich usually gets me through a few encounters. The + AB is what allows me to hit a few of the sick AC's out there. The 18 str is nice, but my natural is 16, and add in spells....
ashzz: at the very core of the problem is that good characters and organizations can do much more EVIL in the name of good than evil can do evil.
Daerthe: There is only room for so much realism before things start to get silly
User avatar
WrathOG777
Master Sage
Posts: 5325
Joined: Fri Mar 07, 2003 4:17 pm
Location: Abyss (GMT 2200-0500)

Post by WrathOG777 » Fri Jan 07, 2005 3:30 pm

Are you sure you folks are not talking about divine favor?!

If all you folks are talking about the wrong spell I am going to scream.

Divine favor = 1/3lvls +hit +damage(magical), 10 rounds.
Divine power changes bab.

That is my opinion, not nessasarily anyone else's opinon, might just be, but that would be a coincodence, and damnit, sometimes the crap I write is not even my opinion either.
User avatar
Dirk Cutlass
Elder Sage
Posts: 4691
Joined: Mon Jan 27, 2003 9:42 am
Location: GMT

Post by Dirk Cutlass » Fri Jan 07, 2005 3:33 pm

WrathOG777 wrote:Are you sure you folks are not talking about divine favor?!

If all you folks are talking about the wrong spell I am going to scream.

Divine favor = 1/3lvls +hit +damage(magical), 10 rounds.
Divine power changes bab.
Hold that scream Wrath!

Potions of "Divine Presence" as available in Le'Or are using the Divine Power clerical spell.
User avatar
WrathOG777
Master Sage
Posts: 5325
Joined: Fri Mar 07, 2003 4:17 pm
Location: Abyss (GMT 2200-0500)

Post by WrathOG777 » Fri Jan 07, 2005 6:54 pm

Well, after thuroughly reviewing that script I can definately conclude it is far too complicated.

epic this, epic that. blah blah Change the bab already.

My solution would be very very simple. Table look up by Caster lvl. Are tables slow?

Code: Select all

tempHp = +lvl
Str = 18

Caster lvl
<5     +0BAB +0atk
5      +2BAB +0atk
6-7    +2BAB +1atk
8      +2BAB +0atk
9-10   +3BAB +0atk
11-12  +3BAB +1atk
13-14  +4BAB +1atk
15     +4BAB +0atk
16     +4BAB +1atk
>16    +5BAB +1atk
That would of course assume cleric caster, only work depending on cleric lvl, and give other classes the same bonus if used as a potion, but at the lvl of the potion, not lvl of character.

That is my opinion, not nessasarily anyone else's opinon, might just be, but that would be a coincodence, and damnit, sometimes the crap I write is not even my opinion either.
User avatar
WrathOG777
Master Sage
Posts: 5325
Joined: Fri Mar 07, 2003 4:17 pm
Location: Abyss (GMT 2200-0500)

Post by WrathOG777 » Fri Jan 07, 2005 7:11 pm

ok, that idea would just not work out...

take 2

Code: Select all

int nBAB = GetBaseAttackBonus(OBJECT_SELF);
Does this give Bab or Bab+Eab for epics?

That is my opinion, not nessasarily anyone else's opinon, might just be, but that would be a coincodence, and damnit, sometimes the crap I write is not even my opinion either.
User avatar
Nob
Lore Council Member
Lore Council Member
Posts: 7930
Joined: Mon Jun 30, 2003 1:19 am
DM Avatar: Dead but still a Dreamer

Post by Nob » Fri Jan 07, 2005 7:19 pm

It only counts base attack bonus.

Actually judging from that code it works like this:

Game checks your character sheet, takes your BAB + EAB then subtracts your EAB and if your BAB is less than 16 you get an additional attack, but at full AB.

This compared to Tenser's which IIRC simply just blanketly adds to your BAB without capping it at 20 hence you can get more attacks/round.

The latter is a greater problem in the grand scheme of things(least I think so)
"Andrinor grant me the patience not to kill those who screw things up through stupidity, the power to incinerate those who screw things up on purpose, and the wisdom to distinguish between one and the other." -The War Mage's Serenity Prayer
User avatar
WrathOG777
Master Sage
Posts: 5325
Joined: Fri Mar 07, 2003 4:17 pm
Location: Abyss (GMT 2200-0500)

Post by WrathOG777 » Fri Jan 07, 2005 8:08 pm

How does one specify to round up or down fractions in NWN script?

Code: Select all

nExtraAttacks = ( ( nTotalCharacterLevel - 1 ) / 5 ) - ( ( nBAB - 1 ) / 5 );
This, seems to assume rounding.

That is my opinion, not nessasarily anyone else's opinon, might just be, but that would be a coincodence, and damnit, sometimes the crap I write is not even my opinion either.
User avatar
Dirk Cutlass
Elder Sage
Posts: 4691
Joined: Mon Jan 27, 2003 9:42 am
Location: GMT

Post by Dirk Cutlass » Fri Jan 07, 2005 10:12 pm

WrathOG777 wrote:How does one specify to round up or down fractions in NWN script?

Code: Select all

nExtraAttacks = ( ( nTotalCharacterLevel - 1 ) / 5 ) - ( ( nBAB - 1 ) / 5 );
This, seems to assume rounding.
They're integers, i.e. whole numbers, so any fractions get lost. Effectively it is round down.
User avatar
WrathOG777
Master Sage
Posts: 5325
Joined: Fri Mar 07, 2003 4:17 pm
Location: Abyss (GMT 2200-0500)

Post by WrathOG777 » Fri Jan 07, 2005 10:48 pm

Assumeing a round down is not something that gets you correct code. Are you absolutely sure they always round down? It makes sence and all.

But..

Usualy intergers rounds to nearest, not down.

That is my opinion, not nessasarily anyone else's opinon, might just be, but that would be a coincodence, and damnit, sometimes the crap I write is not even my opinion either.
User avatar
Rhissaerk Jalesh
Team Member; Retired with Honors
Posts: 1820
Joined: Fri Aug 06, 2004 4:00 am

Post by Rhissaerk Jalesh » Fri Jan 07, 2005 10:56 pm

Strangely, I went and used divine power in single power and did NOT get extra attacks.

It seems I only get them on Avlis...
User avatar
Dirk Cutlass
Elder Sage
Posts: 4691
Joined: Mon Jan 27, 2003 9:42 am
Location: GMT

Post by Dirk Cutlass » Sat Jan 08, 2005 1:09 pm

WrathOG777 wrote:Assumeing a round down is not something that gets you correct code. Are you absolutely sure they always round down? It makes sence and all.

But..

Usualy intergers rounds to nearest, not down.
Yes, in programming languages when you do integer arithamtic, the fractional part just gets thrown away.
Post Reply