【法术研究之:藤蔓源泉(Vine Mine)】
看来有必要开个新帖了。关于Vine Mine的讨论请都归到本帖里来。基本资料:
藤蔓源泉(Vine Mine)
施法者等级:德鲁伊3,植物领域5
固有等级:5
派别:咒法系
组件:言语,姿势
范围:中距离
效果区域/目标:巨型范围
持续时间:10轮/等级
豁免:可(缠绕)
法术抵抗:可
描述:
当施展此法术的时,施法者必须在下面效果中选择其一:
- 纠缠术(如同名法术)
- 伪装(+4躲藏环境加值检定)
- 阻碍移动(移动速度减半)
这里可选择的第一个类别——纠缠术,在脚本中出现了一个重大BUG:程序员未添加vinementa.nss这个脚本,也就是on enter效果鉴定脚本。它所造成的直接后果便是该类别失效。我起初不信,还特意测试了一下,结果和理论完全吻合,OTZ。
这里第二个类别——伪装,从脚本来看没有什么问题,效果是自己或者队友hide鉴定+4,而且还有范围限制,跑出该区域奖励消失,这对于一个3级法术来说效果相当有限,几乎可以无视。我想只有int为3的小德才会为了那+4的hide奖励躲到一堆谁都能看到的草堆里>.<
Vine Mine的真正作用恰恰落在了这第三个类别——阻碍移动上,其效果就是无SR和SAVE鉴定将目标速度直接降为原来的50%,而变态的是减速效果叠加,更为变态的是即使目标离开法术AOE区域其减速DEBUFF仍然存在,并且只要重复进入哪怕是只有一个vinemine的AOE范围,减速效果都会叠加。
恩...刚才自己的一个假设被自己推翻了,531貌似是可以被识别的。 非常有可能。:)本来下午看到准备回帖的,但没时间了。既然新开了一帖,在这回吧。
我机器玩不了NWN2,实际我把1的代码和AZ帖的主要代码比较了下。,代码和NWN1是一样的。所以应该本身问题不大。
干脆把1代的代码帖出来。
X2_S0_VineMHmpB:
#include "NW_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
//Declare major variables
//Get the object that is exiting the AOE
object oTarget = GetExitingObject();
int bValid = FALSE;
effect eAOE;
if(GetHasSpellEffect(531, oTarget))
{
//Search through the valid effects on the target.
eAOE = GetFirstEffect(oTarget);
while (GetIsEffectValid(eAOE) && bValid == FALSE)
{
if (GetEffectCreator(eAOE) == GetAreaOfEffectCreator())
{
if(GetEffectType(eAOE) == EFFECT_TYPE_MOVEMENT_SPEED_DECREASE)
{
//If the effect was created by the Acid_Fog then remove it
if(GetEffectSpellId(eAOE) == 531)
{
RemoveEffect(oTarget, eAOE);
bValid = TRUE;
}
}
}
//Get next effect on the target
eAOE = GetNextEffect(oTarget);
}
}
} X2_S0_VineMHmpC:
#include "NW_I0_SPELLS"
#include "x0_i0_spells"
#include "x2_inc_spellhook"
void main()
{
//Declare major variables
object oTarget;
effect eVis = EffectVisualEffect(VFX_IMP_SLOW);
effect eSlow = EffectMovementSpeedDecrease(50);
effect eLink = EffectLinkEffects(eVis, eSlow);
float fDelay;
//--------------------------------------------------------------------------
// GZ 2003-Oct-15
// When the caster is no longer there, all functions calling
// GetAreaOfEffectCreator will fail. Its better to remove the barrier then
//--------------------------------------------------------------------------
if (!GetIsObjectValid(GetAreaOfEffectCreator()))
{
DestroyObject(OBJECT_SELF);
return;
}
//Get first target in spell area
oTarget = GetFirstInPersistentObject();
while(GetIsObjectValid(oTarget))
{
if(!GetHasFeat(FEAT_WOODLAND_STRIDE, oTarget) &&(GetCreatureFlag(OBJECT_SELF, CREATURE_VAR_IS_INCORPOREAL) != TRUE) )
{
if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, GetAreaOfEffectCreator()))
{
SignalEvent(oTarget, EventSpellCastAt(GetAreaOfEffectCreator(), GetSpellId()));
fDelay = GetRandomDelay(0.0, 2.0);
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oTarget));
}
}
//Get next target in spell area
oTarget = GetNextInPersistentObject();
}
}
AZ帖的2代这里很有趣:
// if(!GetHasFeat(FEAT_WOODLAND_STRIDE, oTarget) &&(GetCreatureFlag(OBJECT_SELF, CREATURE_VAR_IS_INCORPOREAL) != TRUE) )
if( (GetCreatureFlag(OBJECT_SELF, CREATURE_VAR_IS_INCORPOREAL) != TRUE) ) // AFW-OEI 05/01/2006: Woodland Stride no longer protects from spells
他把1代判断是否穿林步专长所在的地方屏蔽掉了。而改用了去掉专长的判断。
并说明:穿林不再免疫法术效果。 恩 海底眼 修正的附件在 http://game1.ali213.net/thread-1294270-1-1.html 发布了
把效果叠加的部分去掉了,同时离开效果区域不受影响。但效果范围内仍然不做SR和豁免鉴定…… 果然做研究了...上次才发帖"劝诱" baby,有空的话顺便测一下诗人的高级 法术 Dirge 挽歌……
照脚本的情形来看也是个 没鉴定且效果叠加的大YY(和当前这个法术写法类似)
bug 需求已提交
http://game1.ali213.net/thread-1294270-2-1.html
犯了个错误……
刚刚仔细看了描述……每轮叠加不应该算bug。而是这个法术确实应该每轮叠加效果(太牛了)。难怪最后打了一个补丁防止造成永久属性伤害……
baby 改 帮忙测是不是累加,且离开区域会不会正常好了 那也就是说除了第三个效果,其他的都没用?那这个每轮叠加的法术会不会出现导致死机?
PS:这个法术...是神术版的幽影咒啊!!
页:
[1]