JeuxOnLineForumsPlusConnectés : 818 (sites) | 1651 (forums)Créer un compte
Forum jeux-vidéo>Neverwinter Nights
Maskado
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > [DD SPELL]Melf Acid Arrow RSS
   
Répondre
Partager Outils Rechercher
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 

[DD SPELL]Melf Acid Arrow

Code PHP:
//::///////////////////////////////////////////////
//:: Melf's Acid Arrow
//:: MelfsAcidArrow.nss
//:: Copyright (c) 2000 Bioware Corp.
//:://////////////////////////////////////////////
/*
    An acidic arrow springs from the caster's hands
    and does 3d6 acid damage to the target.  For
    every 3 levels the caster has the target takes an
    additional 1d6 per round.
*/
/////////////////////////////////////////////////////////
//:://////////////////////////////////////////////
//:: Created By: Aidan Scanlan
//:: Created On: 01/09/01
//:://////////////////////////////////////////////
//:: Update Pass By: Preston W, On: Aug 2, 2001

#include "NW_I0_SPELLS"

void RunMelfAcidImpact(int nSecondsRemainingobject oTarget);

void main()
{
    
//Declare major variables
    
object oTarget GetSpellTargetObject();
    
int nMetaMagic GetMetaMagicFeat();
    
int nCountnDamage;
    
effect eDam;
    
effect eVis EffectVisualEffect(VFX_IMP_ACID_S);
    
effect eArrow;
    
int nDuration GetCasterLevel(OBJECT_SELF) / 3;
    
//figure out projectile timing
    
float fDist GetDistanceToObject(oTarget);
    
float fDelay = (fDist/25.0);//(3.0 * log(fDist) + 2.0);
    //Check that there is at least one payload damage
    
if (nDuration 1)
    {
        
nDuration 1;
    }
    if(!
GetIsReactionTypeFriendly(oTarget))
    {
        
//Fire cast spell at event for the specified target
        
SignalEvent(oTargetEventSpellCastAt(OBJECT_SELFSPELL_MELFS_ACID_ARROW));
         
eArrow EffectVisualEffect(245);
         
//Make an SR check
         
if(!MyResistSpell(OBJECT_SELFoTargetfDelay))
         {

        if (
TouchAttackRanged(oTarget,TRUE)==0)
            {
            
SendMessageToPC(OBJECT_SELF,"You missed the target, and lost the magic energy in the process");
                
ApplyEffectToObject(DURATION_TYPE_INSTANTeVisoTarget);
            return;
            }

            
//Roll initial damage
            
nDamage d4(2);
            
//Enter Metamagic conditions
            
if (nMetaMagic == METAMAGIC_MAXIMIZE)
            {
                
nDamage 8;//Damage is at max
            
}
            else if (
nMetaMagic == METAMAGIC_EMPOWER)
            {
                
nDamage nDamage + (nDamage/2);//Damage/Healing is +50%
            
}
            
//Set the initial damage effect
            
eDam EffectDamage(nDamage,DAMAGE_TYPE_ACID);
            
//Apply the inital VFX impact and damage effect
            
DelayCommand(fDelayApplyEffectToObject(DURATION_TYPE_INSTANTeVis,oTarget));
            
DelayCommand(fDelayApplyEffectToObject(DURATION_TYPE_INSTANTeDam,oTarget));
            
//Apply the bonus damage
            
nDuration nDuration 6;
            
DelayCommand(6.0RunMelfAcidImpact(nDurationoTarget));
        }
    }
    
ApplyEffectToObject(DURATION_TYPE_INSTANTeArrowoTarget);
}

void RunMelfAcidImpact(int nSecondsRemainingobject oTarget)
{
    if (
GetIsDead(oTarget) == FALSE)
    {
       
int nMetaMagic GetMetaMagicFeat();
       if (
nSecondsRemaining == 0)
       {
            
//Roll damage
            
int nDamage d4();
            
//check for metamagic
            
if (nMetaMagic == METAMAGIC_EMPOWER)
            {
                
nDamage nDamage + (nDamage/2);
            }
            if (
nMetaMagic == METAMAGIC_MAXIMIZE)
            {
                
nDamage 4;
            }
            
effect eDam EffectDamage(nDamageDAMAGE_TYPE_ACID);
            
effect eVis EffectVisualEffect(VFX_IMP_ACID_S);
            
ApplyEffectToObject(DURATION_TYPE_INSTANTeDamoTarget);
            
ApplyEffectToObject(DURATION_TYPE_INSTANTeVisoTarget);
       }
       --
nSecondsRemaining;
       if (
nSecondsRemaining 0)
       {
          
DelayCommand(1.0f,RunMelfAcidImpact(nSecondsRemaining,oTarget));
       }
   }
   
// Note:  if the target is dead during one of these second-long heartbeats,
   // the DelayCommand doesn't get run again, and the whole package goes away.
   // Do NOT attempt to put more than two parameters on the delay command.  They
   // may all end up on the stack, and that's all bad.  60 x 2 = 120.

Lien direct vers le message - Vieux
Avatar de Dolanor
Dolanor
Alpha & Oméga
 
Avatar de Dolanor
 
Comme je l'ai dit a Solaufein, normalement les dommages secondaire/rounds sont de 2d4 dans les regles officielles (a moins qu'il n'yai eu un errata, mais il me semble que ct pareil sur BG II donc... )

Code PHP:
void RunMelfAcidImpact(int nSecondsRemainingobject oTarget)
{
    if (
GetIsDead(oTarget) == FALSE)
    {
       
int nMetaMagic GetMetaMagicFeat();
       if (
nSecondsRemaining == 0)
       {
            
//Roll damage
            
int nDamage d4(2);
            
//check for metamagic
            
if (nMetaMagic == METAMAGIC_EMPOWER)
            {
                
nDamage nDamage + (nDamage/2);
            }
            if (
nMetaMagic == METAMAGIC_MAXIMIZE)
            {
                
nDamage 8;
            }
            
effect eDam EffectDamage(nDamageDAMAGE_TYPE_ACID);
            
effect eVis EffectVisualEffect(VFX_IMP_ACID_S);
            
ApplyEffectToObject(DURATION_TYPE_INSTANTeDamoTarget);
            
ApplyEffectToObject(DURATION_TYPE_INSTANTeVisoTarget);
       }
       --
nSecondsRemaining;
       if (
nSecondsRemaining 0)
       {
          
DelayCommand(1.0f,RunMelfAcidImpact(nSecondsRemaining,oTarget));
       }
   }
   
// Note:  if the target is dead during one of these second-long heartbeats,
   // the DelayCommand doesn't get run again, and the whole package goes away.
   // Do NOT attempt to put more than two parameters on the delay command.  They
   // may all end up on the stack, and that's all bad.  60 x 2 = 120.

Et d'autre part, je me demande si le
Code PHP:
SendMessageToPC(OBJECT_SELF,"You missed the target, and lost the magic energy in the process");
                
ApplyEffectToObject(DURATION_TYPE_INSTANTeVisoTarget); 
S'appliquerait vu que le lanceur a loupé sa cible, la cible ne devrait pas avoir l'impact visuel acide.
Enfin c'est ce que je pense, je vais tester le script =)
Lien direct vers le message - Vieux
Avatar de Dolanor
Dolanor
Alpha & Oméga
 
Avatar de Dolanor
 
Je viens de tester le TouchAttackRanged, et ca ne fonctionne pas du tout, je touche a chaque fois un elemental d'air avec 33 en dexterité
Donc la je me fait le script pour pouvoir simuler un jet de toucher a distance.

Par contre, NEED HELP, question de noob, comment obtient on le bonus de base au toucher ?? Je n'arrive pas et pourtant j'ai epluché toute les fonctions Get...
si qqn avait l'astuce, mon script serait fini ^^

Et si ca n'existe pas, est il possible d'utiliser des tableaux ou des collections dans le nwscript ??
merci d'avance
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
euh, le Touched se base sur un jet qui n'as pas de rapport avec la cible, non ?

OU bien seulement certains bonus de CA ?

Quelles sont les regles officielles DD, que l'on refasse la fonction peinard...
Lien direct vers le message - Vieux
Avatar de Dolanor
Dolanor
Alpha & Oméga
 
Avatar de Dolanor
 
Le jet de toucher a Distance est different du jet d'attaque a distance.
Le jet de toucher a distance est un jet de toucher
1d20 + bonus de base a l'attaque + bonus de dexterité

qui doit toucher la CA de la cible, mais seulement pour toucher, pas faire mal, donc pas transpercer ou autre, cad une CA dont SEUL le bonus de dexterité est pris en compte
en gros ca donnerait ca

Code PHP:
int nAC 10 GetAbilityModifier(ABILITY_DEXTERITYoTarget);
int nRangeTouchThrow d20(1) + GetAbilityModifier(ABILITY_DEXTERITYoCaster) + BAB 
Seulement, je n'arrive pas a chopper ce BAB et c bien la le probleme. Et si j'arrive pas a le chopper, je vais devoir faire une fonction pour le chopper en listant chaque BAB de chaque classe a chaque nivo et en additionnant tout ca selon le nb de classes differentes.
voila voila

EDIT : bon j'ai posté sur le forum Bioware, et j'ai deja ma reponse, donc je vais scripter la fonction GetBAB qui sera utilisable pour tout objet (classe de monstres comprises) fonction qui a été en tres grosse partie ecrite par un lecteur ^^ Mais bon j'aurais fait pareil sans les classes de monstres ^^
Donc voila, ce coup ci je me couche, c que j'ai un exam demain
Je publierais le script sur un autre lien car je pense qu'un script pareil vaut le coup
Puis je publierai le code release de la fleche acide
Lien direct vers le message - Vieux
Avatar de Zunzun
Zunzun
Alpha & Oméga
 
Avatar de Zunzun
 
Pour le bab, je crois qu'on en a parlé sur un autre post, le seul moyen est de te faire une fonction qui le calcule
Lien direct vers le message - Vieux
Avatar de Dolanor
Dolanor
Alpha & Oméga
 
Avatar de Dolanor
 
Citation:
Provient du message de Zunder
Pour le bab, je crois qu'on en a parlé sur un autre post, le seul moyen est de te faire une fonction qui le calcule
c bon, c deja fait, fo que je le copie colle, mais je le fait demain

PS : non je suis pas encore couché ^^ c pas serieux
Lien direct vers le message - Vieux
Avatar de Solaufein
Solaufein
Alpha & Oméga
 
Avatar de Solaufein
 
Citation:
Provient du message de Dolanor
Le jet de toucher a Distance est different du jet d'attaque a distance. Le jet de toucher a distance est un jet de toucher
1d20 + bonus de base a l'attaque + bonus de dexterité, qui doit toucher la CA de la cible, mais seulement pour toucher, pas faire mal, donc pas transpercer ou autre, cad une CA dont SEUL le bonus de dexterité est pris en compte. en gros ca donnerait ca.
Houlà, je crois que tu as simplifié sérieusement le jet de toucher à distance. Certes, c'est un jet pour toucher bien plus facile qu'un jet d'attaque à distance conventionnel (par exemple le tir à l'arc) mais pas à ce point là !

Pour les jets de toucher à distance, voici les paramètres qui ne sont pas pris en compte :
- Le bonus de CA (Armure)
- Le bonus de CA (Bouclier)
- Le bonus de CA (Altération Armure)
- Le bonus de CA (Altération Bouclier)
- Le bonus de CA (Armure naturelle)

Maintenant, ce qui est quand même pris en compte contre un jet de toucher à distance :
- La CA de base (10)
- Le modificateur de CA (Dextérité)
- Le modificateur de CA (Taille)
- Le bonus de CA (Parade)
- Le (ou les) bonus de CA (Esquive)
- Le bonus de CA (Sagesse) (Moine uniquement)
- Le bonus de CA (Classe) (Moine niv.5+ uniquement)

Donc un personnage n'est quand même pas totalement démuni contre un jet d'attaque de toucher à distance (surtout les moines... Et c'est normal : L'esquive et la rapidité sont leurs spécialités en général )

Sinon pour ce qui est des dégâts concernant la Flèche acide de Melf, tu avais effectivement raison : C'est bien 2D4 dégâts d'acide à l'impact... Et 2D4 également les rounds suivants. Je sais pas pourquoi je m'étais mis dans la tête que c'était 1D4
Lien direct vers le message - Vieux
Avatar de Solaufein
Solaufein
Alpha & Oméga
 
Avatar de Solaufein
 
Citation:
Provient du message de Dolanor
Je viens de tester le TouchAttackRanged, et ca ne fonctionne pas du tout, je touche a chaque fois un elemental d'air avec 33 en dexterité . Donc la je me fait le script pour pouvoir simuler un jet de toucher a distance.
Bha j'ai le même problème mais je me demande si cela vient vraiment de la commande TouchAttackRanged : Je me suis rendu compte que les scripts de sorts mis dans le répertoire override (en mettant les 2 fichiers pour chaque sort) n'étaient pas pris en compte : Alors que Ray of Frost devrait faire 1D3 dégâts, il continue à faire 1D4+1 (et bien sûr il continue à toucher automatiquement). Parallèlement à cela, j'ai essayé d'intégrer le script à l'intérieur même du module (tout en n'oubliant pas non plus d'importer "nw_io_spells") : même résultat, le script est ignoré totalement. Un indice toutefois : J'ai réalisé que lors d'une tentative de compilation du script de sort en question, il me met que le script n'est pas compilé / Erreur : "Parse Variable List" ou "Parsing Variable List" (je me souviens plus exactement )

Comment régler ce problème
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
un script qui n'es pas compile est effectivement ignoré : il n'est pas enregistré en .ncs, la version du script qui est lue par la machine.


Il te faut enlever les erreurs de compilation avant de voir la difference.

Je t'invite a poster ton script, et a mettre le message d'erreur exact (avec le N° ligne et tout), pour qu'on le corrige
Lien direct vers le message - Vieux
Avatar de Solaufein
Solaufein
Alpha & Oméga
 
Avatar de Solaufein
 
Ben en fait, j'ai utilisé ton script pour Ray of Frost (mais très légèrement modifié ). Toutes les infos concernant le problème, je les ai mise dans le sujet adéquat :

http://forums.jeuxonline.info/showth...hreadid=194426

(Le plus étrange justement, c'est qu'avec le message d'erreur, on est pas mis sur la ligne qui pose problème... Donc difficile de savoir où ça pêche )
Lien direct vers le message - Vieux
Avatar de Nek
Nek
Alpha & Oméga
 
Avatar de Nek
 
Dans le style acide: l'Acid Orb du "Tome and Blood".

Le seul truc que j'ai pas inclu, c'est la capacité qu'a le lanceur de choisir le nombre de projectiles (ça me parait difficilement scriptable, mis à part avec un dialogue ou un objet à charges, vu que cela demande une décision du joueur), donc le sort ne concerne qu'un seul projectile.

Code PHP:
#include "NW_I0_SPELLS"
void main()
{
   
int SPELL_ACID_ORB;
   
object oTarget GetSpellTargetObject();
   
int nMetaMagic GetMetaMagicFeat();
   
int nCasterLevel GetCasterLevel(OBJECT_SELF);
   
int nTouch TouchAttackRanged(oTarget);
   
int nDam;
   
effect eVis EffectVisualEffect(VFX_IMP_ACID_S);
   
effect eOrb EffectBeam(VFX_FNF_GAS_EXPLOSION_ACIDOBJECT_SELFBODY_NODE_HAND);

   
//Jet de Toucher
   
if (nTouch)
   {
    if(!
GetIsReactionTypeFriendly(oTarget))
    {
        
SignalEvent(oTargetEventSpellCastAt(OBJECT_SELFSPELL_ACID_ORB));
        
//RM
        
if(!MyResistSpell(OBJECT_SELFoTarget))
        {
            if(
nCasterLevel 15)
            {
             
nCasterLevel 15;
            }
            
nDam d6(nCasterLevel);
            
//Metamagie
            
if (nMetaMagic == METAMAGIC_MAXIMIZE)
            {
               
nDam nCasterLevel;
            }
            else if (
nMetaMagic == METAMAGIC_EMPOWER)
            {
               
nDam nDam nDam/2;
            }
            
//JP
            
if(MySavingThrow(SAVING_THROW_REFLEXoTargetGetSpellSaveDC()))
            {
             
nDam GetReflexAdjustedDamage(nDamoTargetGetSpellSaveDC(), SAVING_THROW_TYPE_ACID);
            }
            else if(!
MySavingThrow(SAVING_THROW_FORToTargetGetSpellSaveDC()))
            {
             
nDam nDam/2;
            
effect eDisease EffectDisease(DISEASE_FILTH_FEVER);
             
ApplyEffectToObject(DURATION_TYPE_TEMPORARYeDiseaseoTarget6.0);
            }
             
//Application effets
            
effect eDam EffectDamage(nDamDAMAGE_TYPE_ACID);
            
ApplyEffectToObject(DURATION_TYPE_INSTANTeVisoTarget);
            
ApplyEffectToObject(DURATION_TYPE_INSTANTeDamoTarget);
        }
    }
    
ApplyEffectToObject(DURATION_TYPE_TEMPORARYeOrboTarget1.7);
   }

Lien direct vers le message - Vieux
Avatar de Taern
Taern
Alpha & Oméga
 
Avatar de Taern
 
Euh dites, vous savez que normalement appeler TouchAttackRanged (ou Melee) fait littéralement exécuter l'attaque par la créature en question

Donc effectivement une fonction GetBAB sera très pratique, et dans ce cas indispensable
Lien direct vers le message - Vieux
Avatar de Dolanor
Dolanor
Alpha & Oméga
 
Avatar de Dolanor
 
Citation:
Provient du message de Solaufein
Houlà, je crois que tu as simplifié sérieusement le jet de toucher à distance. Certes, c'est un jet pour toucher bien plus facile qu'un jet d'attaque à distance conventionnel (par exemple le tir à l'arc) mais pas à ce point là !

Pour les jets de toucher à distance, voici les paramètres qui ne sont pas pris en compte :
- Le bonus de CA (Armure)
- Le bonus de CA (Bouclier)
- Le bonus de CA (Altération Armure)
- Le bonus de CA (Altération Bouclier)
- Le bonus de CA (Armure naturelle)

Maintenant, ce qui est quand même pris en compte contre un jet de toucher à distance :
- La CA de base (10)
- Le modificateur de CA (Dextérité)
- Le modificateur de CA (Taille)
- Le bonus de CA (Parade)
- Le (ou les) bonus de CA (Esquive)
- Le bonus de CA (Sagesse) (Moine uniquement)
- Le bonus de CA (Classe) (Moine niv.5+ uniquement)

Donc un personnage n'est quand même pas totalement démuni contre un jet d'attaque de toucher à distance (surtout les moines... Et c'est normal : L'esquive et la rapidité sont leurs spécialités en général )

Sinon pour ce qui est des dégâts concernant la Flèche acide de Melf, tu avais effectivement raison : C'est bien 2D4 dégâts d'acide à l'impact... Et 2D4 également les rounds suivants. Je sais pas pourquoi je m'étais mis dans la tête que c'était 1D4
Effectivement, j'avais omis cela !!
Bon je travaillerais plus dessus, mais je vais le sortir, je vais le faire !! ^^

Et sinon Nek, pour le fait que ca ne gere pas le fait qu'on ne puisse pas choisir le nombre de projectiles, pk ne pas faire un menu radial pour le nb de projectile ?? Avec la modif dans le 2da necessaire. Mais du coup, faut voir si on peut empecher l'acces a certaines versions du sorts en grisant l'icone si la personne n'a pas le nivo (genre lancer les 5 orbe avec le nivo 1 )
ou au pire, si il choisit 5 orbes et qu'il est nivo 5, le script vérifie son nivo et lance le nb d'orbes maxi selon son nivo, non ?
Le truc qui serait bien, c du coup, tant que le total d'orbe n'est pas vidé, le sort n'est pas dé memorisé et le reste des orbe se castent en instant cast.
mais par contre je pense que le fait de lancer un sort qui est dememorisé est hard coded, donc...dans le ...

Enfin bidouille powa, fo tester =)
Lien direct vers le message - Vieux
Avatar de Dolanor
Dolanor
Alpha & Oméga
 
Avatar de Dolanor
 
Et hop !
Voila le code de Melf's Acid Arrow qui :
*gere le jet de contact a distance
*gere les critiques
*gere le miss visuel ^^

Code PHP:
//::///////////////////////////////////////////////
//:: Melf's Acid Arrow
//:: MelfsAcidArrow.nss
//:: Copyright (c) 2000 Bioware Corp.
//:://////////////////////////////////////////////
/*
    An acidic arrow springs from the caster's hands
    and does 2d4 acid damage to the target if the caster
    succeed his RTA.  For
    every 3 levels the caster has the target takes an
    additional 2d4 per round.
*/
/////////////////////////////////////////////////////////
//:://////////////////////////////////////////////
//:: Created By: Aidan Scanlan
//:: Created On: 01/09/01
//:://////////////////////////////////////////////
//:: Update Pass By: Preston W, On: Aug 2, 2001
//::////////////////////////////////////////////
//:: Modified By: Dolanor
//:: Modified On: 22/05/2003
//:://///////////////////////////////////////////


#include "NW_I0_SPELLS"

//Include du Range Touch Attack
#include "raw_code_rta"

void RunMelfAcidImpact(int nSecondsRemainingobject oTarget);

int nRTA;

void main()
{
    
//Declare major variables
    
object oTarget GetSpellTargetObject();
    
int nMetaMagic GetMetaMagicFeat();
    
int nCountnDamage;
    
effect eDam;
    
effect eVis EffectVisualEffect(VFX_IMP_ACID_S);
    
effect eArrow;
    
int nDuration GetCasterLevel(OBJECT_SELF) / 3;
    
//figure out projectile timing
    
float fDist GetDistanceToObject(oTarget);
    
float fDelay = (fDist/25.0);//(3.0 * log(fDist) + 2.0);
    //Check that there is at least one payload damage
    
if (nDuration 1)
    {
        
nDuration 1;
    }
    if(!
GetIsReactionTypeFriendly(oTarget))
    {
        
//Fire cast spell at event for the specified target
        
SignalEvent(oTargetEventSpellCastAt(OBJECT_SELFSPELL_MELFS_ACID_ARROW));
        
eArrow EffectVisualEffect(245);
        
//Make an SR check
        
if(!MyResistSpell(OBJECT_SELFoTargetfDelay))
        {
            
//Roll initial damage
            
nDamage d4(2);
            
//Enter Metamagic conditions
            
if (nMetaMagic == METAMAGIC_MAXIMIZE)
            {
                
nDamage 8;//Damage is at max
            
}
            else if (
nMetaMagic == METAMAGIC_EMPOWER)
            {
                
nDamage nDamage + (nDamage/2);//Damage/Healing is +50%
            
}

            
//Attaque de contact a distance
            
nRTA RangeTouchAttack(oTarget,TRUE);
            switch(
nRTA)
            {
                
//Miss
                
case 0:
                {
                    
SendMessageToPC(OBJECT_SELF,"You missed the target, and lost the magic energy in the process");
                    
vector vPos MissRangeTouchAttack(oTargetATTACK_TYPE_SPELL);
                    
vPos Vector(vPos.x,vPos.y,vPos.z);
                    
location lLocation Location(GetArea(oTarget),vPos,1.7);
                    
//creation de l'objet fictif a la position decalee
                    
object oTEMP CreateObject(OBJECT_TYPE_PLACEABLE"neantobject"lLocation);

                    
ApplyEffectToObject(DURATION_TYPE_INSTANTeArrowoTarget);
                    
DestroyObject(oTEMP1.5);
                    return;
                    break;
                }
                
//Critique
                
case 2:
                    
nDamage nDamage d4(2);
                    break;
            }
            
//Set the initial damage effect
            
eDam EffectDamage(nDamage,DAMAGE_TYPE_ACID);
            
//Apply the inital VFX impact and damage effect
            
DelayCommand(fDelayApplyEffectToObject(DURATION_TYPE_INSTANTeVis,oTarget));
            
DelayCommand(fDelayApplyEffectToObject(DURATION_TYPE_INSTANTeDam,oTarget));
            
//Apply the bonus damage
            
nDuration nDuration 6;
            
DelayCommand(6.0RunMelfAcidImpact(nDurationoTarget));
        }
    }
    
ApplyEffectToObject(DURATION_TYPE_INSTANTeArrowoTarget);
}

void RunMelfAcidImpact(int nSecondsRemainingobject oTarget)
{
    if (
GetIsDead(oTarget) == FALSE)
    {
       
int nMetaMagic GetMetaMagicFeat();
       if (
nSecondsRemaining == 0)
       {
            
//Roll damage
            
int nDamage d4(2);
            
//check for metamagic
            
if (nMetaMagic == METAMAGIC_EMPOWER)
            {
                
nDamage nDamage + (nDamage/2);
            }
            if (
nMetaMagic == METAMAGIC_MAXIMIZE)
            {
                
nDamage 8;
            }

            
//Si critique au depart
            
if (nRTA == 2)
            {
                
nDamage nDamage d4(2);
            }

            
effect eDam EffectDamage(nDamageDAMAGE_TYPE_ACID);
            
effect eVis EffectVisualEffect(VFX_IMP_ACID_S);
            
ApplyEffectToObject(DURATION_TYPE_INSTANTeDamoTarget);
            
ApplyEffectToObject(DURATION_TYPE_INSTANTeVisoTarget);
       }
       --
nSecondsRemaining;
       if (
nSecondsRemaining 0)
       {
          
DelayCommand(1.0f,RunMelfAcidImpact(nSecondsRemaining,oTarget));
       }
   }
   
// Note:  if the target is dead during one of these second-long heartbeats,
   // the DelayCommand doesn't get run again, and the whole package goes away.
   // Do NOT attempt to put more than two parameters on the delay command.  They
   // may all end up on the stack, and that's all bad.  60 x 2 = 120.

CORRECTIONs apportées :
*Gestion du jet de contact a distance (ou RTA)
*Gestion du critique du RTA
*dommage de 2d4 + 2d4/round au lieu de 3d6 + 1d6
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > [DD SPELL]Melf Acid Arrow
   

Outils Rechercher
Rechercher:

Recherche avancée

Les vidéos de Neverwinter Nights RSS
  • Aucune vidéo pour le moment...
Thème visuel : Fuseau horaire GMT +1. Il est actuellement 19h03.
   

© JeuxOnLine, le site des MMO, MMORPG et MOBA. Tous droits réservés. - Conditions générales d'utilisation - Conditions d'utilisation des forums - Traitement des données personnelles - ! Signaler un contenu illicite