GetSpellId()

呪文の識別を得ます。

int GetSpellId();

Description

スクリプトで実行中の呪文のID(SPELL_*)を返します。

プログラムの再利用の為に呪文のeffectを扱う複数の呪文が同一スクリプトに割り当てられていますが、書付は動作中の特定呪文によってわずかに変化します。

例えば、ポリモーフセルフのスクリプト(スクリプト名 NW_S0_POLYSELF)は、変身するモンスターによって異なる呪文から呼出されます。



Remarks

厳格には、呪文や呪文の能力を扱うスクリプトの中で使用し、この関数は既存の呪文や呪文能力(Biowareによってスクリプト化された物やscripts.bifで見つかるスクリプト)を編集していなければ使用すべきではありません。

呪文のスクリプトを書き換え、モジュール内(またはHakパック)に保存することで、Biowareの呪文や呪文の能力(例、フレイム・ストライク用のファイル:NW_S0_FLMSTRIKE)を書き換えることが出来ます。

現在、(筆者の知る限り)既存の呪文や呪文能力を上書きすることができるだけで、新しく呪文を追加する方法はありません。


Version

1.24

Example

//::///////////////////////////////////////////////
//:: Polymorph Self
//:: NW_S0_PolySelf.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
    The PC is able to changed their form to one of
    several forms.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Jan 21, 2002
//:://////////////////////////////////////////////

void main()
{
    //Declare major variables
    int nSpell = GetSpellId();
    object oTarget = GetSpellTargetObject();
	effect eVis = EffectVisualEffect(VFX_IMP_POLYMORPH);
    effect ePoly;
    int nPoly;
    int nMetaMagic = GetMetaMagicFeat();
    int nDuration = GetCasterLevel(OBJECT_SELF);
    //Enter Metamagic conditions
    if (nMetaMagic == METAMAGIC_EXTEND)
    {
    	nDuration = nDuration *2; //Duration is +100%
    }

    //Determine Polymorph subradial type
    if(nSpell == 387)
    {
        nPoly = POLYMORPH_TYPE_GIANT_SPIDER;
    }
    else if (nSpell == 388)
    {
        nPoly = POLYMORPH_TYPE_TROLL;
    }
    else if (nSpell == 389)
    {
        nPoly = POLYMORPH_TYPE_UMBER_HULK;
    }
    else if (nSpell == 390)
    {
        nPoly = POLYMORPH_TYPE_PIXIE;
    }
    else if (nSpell == 391)
    {
        nPoly = POLYMORPH_TYPE_ZOMBIE;
    }
    ePoly = EffectPolymorph(nPoly);
    //Fire cast spell at event for the specified target
    SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_POLYMORPH_SELF, FALSE));

    //Apply the VFX impact and effects
	ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ePoly, oTarget, TurnsToSeconds(nDuration));
}


See Also

functions: GetLastSpell
categories: Spells Functions
constants: SPELL_* Constants


author: Tom Cassiotis, editor: Charles Feduke, JP team: Rainie
Send comments on this topic.