找回密码
 注册
查看: 5936|回复: 42

[讨论] 感觉至少在目前,DP可以得到完全的修正啊

[复制链接]
发表于 2008-2-15 12:13:54 | 显示全部楼层 |阅读模式
新函数EffectBABMinimum(),为设定角色BAB,现在的DP和诗人军团曲用的都是这个。然而现在既然没有什么固定成长的EAB,可黑石头居然还在敷衍了事,一个EffectBABMinimum(nTotalCharacterLevel)就完了……

就我所知,规则中至少在象CLR/WIZ这种兼职中放DP应该是只把牧师损失的BAB补回来的,法师的BAB只能通过谭森。想问下如果带有神术进阶职业施展DP,那通常有什么判定倾向么?比如10CLR/10SL,20的CL,但BAB总共损失了6;又假设加入了秘术师这种低BAB的提升神术职业又该如何定?
发表于 2008-2-15 13:16:54 | 显示全部楼层
不懂……
反正现在开了DP后,BAB=人物等级,就是这样……
 楼主| 发表于 2008-2-15 13:28:38 | 显示全部楼层
记得一般DM是不允许这么算的,不过桌上用得也不多。况且规则说明只用于20级内,象1代40级时如果按字面理解岂不是得使BAB变成40,还再加上10EAB?
发表于 2008-2-15 15:20:33 | 显示全部楼层
1代怎么算的?忘了……因为1代里,20级前和后的BAB算法不一样,所以就算仅在20级内修正也是合理的
2代算法简单了,DP直接将BAB设成和人物等级一样也挺合理的啊 (那个谭森不合理啊,明明是修正BAB的,现在修正AB了)
发表于 2008-2-15 16:01:20 | 显示全部楼层
事实证明 黑石头对规则的理解

和写脚本一样脑残……(或者说因为觉得自己写脚本脑残,才把规则理解的脑残)

所以问题的关键不是合理不合理,而是黑石头就认为那是DP

脚本里到处可以见到照顾屁股,忘记脑袋的写法。写脚本的人可不会想那么多……

你瞧,不是有人还在说合理么?还有更简化的算法 @@

ps:另一个问题是出在,原本的规则 EPIC后BAB的增长是固定的,所以DP不会受影响(20+以上不存在损失bab的问题)

黑石头的半调子规则,使得这个问题很难自圆其说。
发表于 2008-2-15 16:14:40 | 显示全部楼层
由于DP这么算牧师现在才会这么BT的,现在多少卡的战力都是建立在DP上的随便一找一大堆。天佑一出来好呀更BT,出EDM连带有牧师系辅战能力。职业BAB减值完全无视,属性更集中。
发表于 2008-2-15 16:17:12 | 显示全部楼层
其实说白了就是 原本的bab规则被搞崩溃了

DP使得bab变得没实际意义
发表于 2008-2-15 16:38:52 | 显示全部楼层

回复 #7 Azrael 的帖子

我的E文实在渣,大鹰头能告诉一下规则里面DP应该是+BAB到多少?总觉的+到人物等级有点变态。
发表于 2008-2-15 16:59:53 | 显示全部楼层
DP如果不计其他效果,主要的本意是暂时弥补牧师相对于同级战士的bab差距(可以这么理解吧?因为本来基础职业也就牧师会)

不过后来引入了有CL等级的神术进阶,又引入了EPIC规则事情就复杂化了。

加上黑石头这次自创的30LV EPIC增长规则(这个是问题产生,和最终效果差距的关键吧?),谁也说不清“应该”加多少这个问题了吧?至少规则不适用

但显然EffectBABMinimum(nTotalCharacterLevel)这个脚本(其实就是bab=角色等级)就是敷衍了事

PS:TRPG规则本就不是死的,DM对其理解也可以指导最终效果。理论上如果能做到MJ所说的“规则中至少在象CLR/WIZ这种兼职中放DP应该是只把牧师损失的BAB补回来的”自然是更接近其本意的存在

我个人倾向于DP把相同与“牧师CL”bab损失补回来,不过真要说,遇到秘术师这种怪胎……

我想还是最终的牧师CL决定一切。注意,为什么说牧师CL而不是神术CL。因为我们说的是,牧师施法等级+在这个基础上进阶的施法等级(秘术师这怪胎貌似也合理化了?)

如果有两个独立的神术CL,则不叠加

至于一些和bab损失无关的专长附加CL(包括职业专长或其他零零碎碎的应该不能算在内,感觉着点很重要)

假设有某职业其职业等级能和牧师CL叠加,并且某级有个能力使得CL判定+2,这个+2就不能算入DP内,而其职业等级就能算……

(汗,够拗口吧。要理清思路貌似很难~~)


=======整理分割线========
我个人的理解回答mj的质疑讨论……

其实秘术师的bab多少无关紧要的样子,只要做到弥补的BAB等级<=牧师+进阶职业的等级(牧师) 替换成同级战士应该会合适吧?

而前者可以用所谓的“牧师CL等级”(不包括所有专长的)替换?可能有疏漏的地方没想到,继续讨论 汗
 楼主| 发表于 2008-2-15 17:36:09 | 显示全部楼层
是的,20级内只要不出秘术师这种进阶,与纯牧相差不会太大,在不太牺牲牧师能力的前提下兼职,能获得的额外好处有限。20级后的解释权貌似全交给DM了,否则就那句“你的BAB等于人物等级”,要严格照办的话就得囧倒一片……我不止一次地听到和看到DM说:算牧师的。所以才会有这个问题:在有进阶职业的情况下到底怎么算?


其实脚本昨天就写好备用了,就是想讨论一下……

============================================

#include "nw_i0_spells"
#include "x2_inc_spellhook"

void main()
{
  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 nStrengthIncrease = 6; // JLR - OEI 07/19/05
  int nBab = GetBaseAttackBonus(OBJECT_SELF);
  int nBabToIncrease = 0;
  int nCasterLevelFeatModify = 0;
  int nCasterLevelOfWp = 0;
  int nCasterLevelOfSf = 0;
  
  if(GetLastSpellCastClass() == CLASS_TYPE_CLERIC) //牧师法术
  {
    if(GetHasFeat(1247, OBJECT_SELF)) //熟练施法者专长不得影响DP效果
    {
      if( nTotalCharacterLevel - GetLevelByClass(CLASS_TYPE_CLERIC, OBJECT_SELF) < 4 )
      {
        nCasterLevelFeatModify = nTotalCharacterLevel - GetLevelByClass(CLASS_TYPE_CLERIC, OBJECT_SELF);
      }
      else
      {
        nCasterLevelFeatModify = 4;
      }
    }

    if(GetHasFeat(1808, OBJECT_SELF)) //WP本身就是全BAB
    {
      int nCasterLevelOfWp = GetLevelByClass(CLASS_TYPE_WARPRIEST, OBJECT_SELF) / 2;
    }
    
    if(GetHasFeat(1549, OBJECT_SELF)) //圣拳一样去死去死
    {
      if(GetLevelByClass(CLASS_TYPE_SACREDFIST, OBJECT_SELF) < 4)
      {
        nCasterLevelOfSf = GetLevelByClass(CLASS_TYPE_SACREDFIST, OBJECT_SELF);
      }
      else if(GetLevelByClass(CLASS_TYPE_SACREDFIST, OBJECT_SELF) >= 4 && GetLevelByClass(CLASS_TYPE_SACREDFIST, OBJECT_SELF) < 8)
      {
        nCasterLevelOfSf = GetLevelByClass(CLASS_TYPE_SACREDFIST, OBJECT_SELF) - 1;
      }
      else
      {
        nCasterLevelOfSf = GetLevelByClass(CLASS_TYPE_SACREDFIST, OBJECT_SELF) - 2;
      }
    }
  
    nBabToIncrease = (nCasterLevel - nCasterLevelFeatModify - nCasterLevelOfWp - nCasterLevelOfSf) / 4;
    if((nCasterLevel - nCasterLevelFeatModify - nCasterLevelOfWp - nCasterLevelOfSf) > (nBabToIncrease * 4))
    {
      nBabToIncrease = nBabToIncrease + 1;
    }
  }





  else if(GetLastSpellCastClass() == CLASS_TYPE_FAVORED_SOUL) //天佑法术
  {
    if(GetHasFeat(2068, OBJECT_SELF)) //熟练施法者专长不得影响DP效果
    {
      if( nTotalCharacterLevel - GetLevelByClass(CLASS_TYPE_FAVORED_SOUL, OBJECT_SELF) < 4 )
      {
        nCasterLevelFeatModify = nTotalCharacterLevel - GetLevelByClass(CLASS_TYPE_FAVORED_SOUL, OBJECT_SELF);
      }
      else
      {
        nCasterLevelFeatModify = 4;
      }
    }

    if(GetHasFeat(2079, OBJECT_SELF)) //WP本身就是全BAB
    {
      int nCasterLevelOfWp = GetLevelByClass(CLASS_TYPE_WARPRIEST, OBJECT_SELF) / 2;
    }
    
    if(GetHasFeat(2102, OBJECT_SELF)) //圣拳一样去死去死
    {
      if(GetLevelByClass(CLASS_TYPE_SACREDFIST, OBJECT_SELF) < 4)
      {
        nCasterLevelOfSf = GetLevelByClass(CLASS_TYPE_SACREDFIST, OBJECT_SELF);
      }
      else if(GetLevelByClass(CLASS_TYPE_SACREDFIST, OBJECT_SELF) >= 4 && GetLevelByClass(CLASS_TYPE_SACREDFIST, OBJECT_SELF) < 8)
      {
        nCasterLevelOfSf = GetLevelByClass(CLASS_TYPE_SACREDFIST, OBJECT_SELF) - 1;
      }
      else
      {
        nCasterLevelOfSf = GetLevelByClass(CLASS_TYPE_SACREDFIST, OBJECT_SELF) - 2;
      }
    }
  
    nBabToIncrease = (nCasterLevel - nCasterLevelFeatModify - nCasterLevelOfWp - nCasterLevelOfSf) / 4;
    if((nCasterLevel - nCasterLevelFeatModify - nCasterLevelOfWp - nCasterLevelOfSf) > (nBabToIncrease * 4))
    {
      nBabToIncrease = nBabToIncrease + 1;
    }
  }

  else
  {
    nBabToIncrease = 2; //UMD的当成是7级牧师施展的效果
  }



  effect eVis = EffectVisualEffect( VFX_DUR_SPELL_DIVINE_POWER ); // uses NWN2 VFX
  effect eStrength = EffectAbilityIncrease(ABILITY_STRENGTH, nStrengthIncrease);
  effect eHP = EffectTemporaryHitpoints(nCasterLevel);
  effect eBAB;
    if(nBab + nBabToIncrease > nTotalCharacterLevel)
      {
      eBAB = EffectBABMinimum(nTotalCharacterLevel);
      }
      else
      {
        eBAB = EffectBABMinimum(nBab + nBabToIncrease);
      }  
  
  effect eLink = EffectLinkEffects(eBAB, eVis);

  //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;
  }

  effect eOnDispell = EffectOnDispel(0.0f, RemoveEffectsFromSpell(OBJECT_SELF, SPELL_DIVINE_POWER));
  eLink = EffectLinkEffects(eLink, eOnDispell);
  eHP = EffectLinkEffects(eHP, eOnDispell);

  //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); // now linked to eLink
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|奥德赛公会

GMT+8, 2026-6-16 20:01 , Processed in 0.013749 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表