-mj- 2008-2-15 12:13
感觉至少在目前,DP可以得到完全的修正啊
新函数EffectBABMinimum(),为设定角色BAB,现在的DP和诗人军团曲用的都是这个。然而现在既然没有什么固定成长的EAB,可黑石头居然还在敷衍了事,一个EffectBABMinimum(nTotalCharacterLevel)就完了……
就我所知,规则中至少在象CLR/WIZ这种兼职中放DP应该是只把牧师损失的BAB补回来的,法师的BAB只能通过谭森。想问下如果带有神术进阶职业施展DP,那通常有什么判定倾向么?比如10CLR/10SL,20的CL,但BAB总共损失了6;又假设加入了秘术师这种低BAB的提升神术职业又该如何定?
Horus 2008-2-15 13:16
不懂……
反正现在开了DP后,BAB=人物等级,就是这样……
-mj- 2008-2-15 13:28
记得一般DM是不允许这么算的,不过桌上用得也不多。况且规则说明只用于20级内,象1代40级时如果按字面理解岂不是得使BAB变成40,还再加上10EAB?
Horus 2008-2-15 15:20
1代怎么算的?忘了……因为1代里,20级前和后的BAB算法不一样,所以就算仅在20级内修正也是合理的
2代算法简单了,DP直接将BAB设成和人物等级一样也挺合理的啊 (那个谭森不合理啊,明明是修正BAB的,现在修正AB了)
Azrael 2008-2-15 16:01
事实证明 黑石头对规则的理解
和写脚本一样脑残……(或者说因为觉得自己写脚本脑残,才把规则理解的脑残)
所以问题的关键不是合理不合理,而是黑石头就认为那是DP
脚本里到处可以见到照顾屁股,忘记脑袋的写法。写脚本的人可不会想那么多……
你瞧,不是有人还在说合理么?还有更简化的算法 @@
ps:另一个问题是出在,原本的规则 EPIC后BAB的增长是固定的,所以DP不会受影响(20+以上不存在损失bab的问题)
黑石头的半调子规则,使得这个问题很难自圆其说。
回音 2008-2-15 16:14
由于DP这么算牧师现在才会这么BT的,现在多少卡的战力都是建立在DP上的随便一找一大堆。天佑一出来好呀更BT,出EDM连带有牧师系辅战能力。职业BAB减值完全无视,属性更集中。
Azrael 2008-2-15 16:17
其实说白了就是 原本的bab规则被搞崩溃了
DP使得bab变得没实际意义
txyxsds 2008-2-15 16:38
回复 #7 Azrael 的帖子
我的E文实在渣,大鹰头能告诉一下规则里面DP应该是+BAB到多少?总觉的+到人物等级有点变态。
Azrael 2008-2-15 16:59
DP如果不计其他效果,主要的本意是暂时弥补牧师相对于同级战士的bab差距(可以这么理解吧?因为本来基础职业也就牧师会)
不过后来引入了有CL等级的神术进阶,又引入了EPIC规则事情就复杂化了。
加上黑石头这次自创的30LV EPIC增长规则(这个是问题产生,和最终效果差距的关键吧?),谁也说不清“应该”加多少这个问题了吧?至少规则不适用
但显然EffectBABMinimum(nTotalCharacterLevel)这个脚本(其实就是bab=角色等级)就是敷衍了事
PS:TRPG规则本就不是死的,DM对其理解也可以指导最终效果。理论上如果能做到MJ所说的“规则中至少在象CLR/WIZ这种兼职中放[b]DP应该是只把牧师损失的BAB补回来的[/b]”自然是更接近其本意的存在
我个人倾向于DP把相同与“牧师CL”bab损失补回来,不过真要说,遇到秘术师这种怪胎……
我想还是最终的牧师CL决定一切。注意,为什么说牧师CL而不是神术CL。因为我们说的是,牧师施法等级+在这个基础上进阶的施法等级(秘术师这怪胎貌似也合理化了?)
如果有两个独立的神术CL,则不叠加
至于一些和bab损失无关的专长附加CL(包括职业专长或其他零零碎碎的应该不能算在内,感觉着点很重要)
假设有某职业其职业等级能和牧师CL叠加,并且某级有个能力使得CL判定+2,这个+2就不能算入DP内,而其职业等级就能算……
(汗,够拗口吧。要理清思路貌似很难~~)
=======整理分割线========
我个人的理解回答mj的质疑讨论……
其实秘术师的bab多少无关紧要的样子,只要做到弥补的BAB等级<=牧师+进阶职业的等级(牧师) 替换成同级战士应该会合适吧?
而前者可以用所谓的“牧师CL等级”(不包括所有专长的)替换?可能有疏漏的地方没想到,继续讨论 汗
-mj- 2008-2-15 17:36
是的,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
[color=Sienna]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);
} [/color]
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
}
Azrael 2008-2-15 17:40
厄~~~
我是如上面所说
牧师CL等级+进阶职业(牧师)有效CL的等级 替换 成同级战士的BAB
关键不算任何种类的专长包括进阶专长对CL的影响。不知道有没有问题 汗
===========迷之音============
哈,就知道你肯定不甘寂寞的改脚本去了……
所以才会说这个。
最近,逻辑能力退化的很厉害,慢慢看ing
-mj- 2008-2-15 17:50
唉,自己改着备用嘛。想自己搞个MOD玩,不过水平有限得紧,算是多方面训练下自己的逻辑力和编程能力吧(0起点[s:3] )。
txyxsds 2008-2-15 17:53
回复 #11 Azrael 的帖子
要我说的话,大鹰头你的逻辑能力和语言能力对比是在太强烈了,说的话我要研究很久才明白一半,仿佛格林斯潘一样!
Azrael 2008-2-15 18:00
我自己都晕头了[s:15] (都不知在说什么)
if([b]GetHasFeat(1808, OBJECT_SELF)[/b]) //WP本身就是全BAB
1808是WP基于牧师进阶那个专长吧?就是 战斗牧师(牧师)那个?mmm 下班了回去慢慢看看
mj果然很强大
ccchoisy 2008-2-15 19:30
我觉得nwn2里面DP最大的一个bug是力量领域的dp不能持久,如果说持久法术要看原来的等级,
那为什么蛮力术持久的时候只按1级算,最后是7级持久蛮力.如果说6秒/轮的法术不能持久,
那祝福术怎么能持久.我战役里面费了好大劲让天使mm学了持久法术,准备享受神武双修的待遇.
结果发现dp不能持久,吐血....
Azrael 2008-2-15 19:32
DP 本就不能持久……
DP都持久了,这个世界就都脑残了,不要忘记DP本来是4级法术。
知道法术固有等级的概念吧?靠领域换到能用3级法术位记忆不代表那就是3lv法术
于是……道理很简单,在你没有神化到有10级法位之前,DP就是不能持久。话说等你有10级法位时,DM同意不同意也算是另一个故事了。(发现了没?这绕来绕去就是说“DP不能持久这便是公理”)
至于你说的蛮力术的问题,可以理解为游戏设计者又一次的脑残导致概念混淆~~(原谅他们吧他们从没干过DM这个YY职业)
-mj- 2008-2-15 19:51
也不是什么固有等级,恒效还有那个没出现的真ˉ持久对法术都有严格要求,基本上能否利用这个专长来超都是直接指定到具体法术的,不光是用高级法术位这么简单。说不能超就算你有15级法术位一样不能超
1808号就是FEAT_WARPRIEST_SPELLCASTING_CLERIC,免得杀错(某人:我的WP明明升的FS等级……)
ccchoisy 2008-2-15 20:48
游戏里是否能持久(恒效)确实是具体指定的.要想让dp持久,必须先改spells.2da里面dp的metamagic一栏,
然后去改dp的nss script,在extend后添加一个if( nMetaMagic == METAMAGIC_PERSIST )以及后面的赋值语句,
然后用toolset编译一下放到override里面.
看来游戏设计者也考虑到dp如果能持久太破坏平衡了,战士完全没有必要,牧师变得全能了.
回音 2008-2-15 21:26
现在的DP已经是在破坏平衡了,这还是30级的情况,如果开40级那就是神技了。
ccchoisy 2008-2-15 22:38
现在dp神力流唯一的缺点就是buff时间太长,还没开打,先要buff 2轮,如果是小战斗,每次都这样buff一下很烦.
buff完冲上去发现敌人就剩一半了.