[DD SPELL]Horrid Wilting

Répondre
Partager Rechercher
http://dolanor.free.fr/nwn/images/pierre100sorts.jpg


Modification de flétrissure :

Code PHP:

//::///////////////////////////////////////////////
//:: Horrid Wilting
//:: NW_S0_HorrWilt
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
    All living creatures (not undead or constructs)
    suffer 1d8 damage of negative energy per caster level to a maximum
    of 25d8 damage. 1/2 on successful fortitude save
    but Water elemental suffer a -2 penalty on the roll.

*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Sept 12 , 2001
//:: Modified By: Dolanor
//:: Modified On: 22/05/2003
//:://////////////////////////////////////////////

#include "NW_I0_SPELLS"
void main()
{
    
//Declare major variables
    
object oCaster OBJECT_SELF;
    
int nCasterLvl GetCasterLevel(oCaster);
    
int nMetaMagic GetMetaMagicFeat();
    
int nDamage;
    
float fDelay;
    
effect eExplode EffectVisualEffect(VFX_FNF_HORRID_WILTING);
    
effect eVis EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
    
effect eDam;
    
//Get the spell target location as opposed to the spell target.
    
location lTarget GetSpellTargetLocation();
    
//Limit Caster level for the purposes of damage
    
if (nCasterLvl 25)
    {
        
nCasterLvl 25;
    }
    
//Apply the horrid wilting explosion at the location captured above.
    
ApplyEffectAtLocation(DURATION_TYPE_INSTANTeExplodelTarget);
    
//Declare the spell shape, size and the location.  Capture the first target object in the shape.
    
object oTarget GetFirstObjectInShape(SHAPE_SPHERERADIUS_SIZE_HUGElTarget);
    
//Cycle through the targets within the spell shape until an invalid object is captured.
    
while (GetIsObjectValid(oTarget))
    {
        
//Fire cast spell at event for the specified target
        
SignalEvent(oTargetEventSpellCastAt(OBJECT_SELFSPELL_HORRID_WILTING));
        
//Get the distance between the explosion and the target to calculate delay
        
fDelay GetRandomDelay(1.52.5);
        if (!
MyResistSpell(OBJECT_SELFoTargetfDelay))
        {
            if(
GetRacialType(oTarget) != RACIAL_TYPE_CONSTRUCT && GetRacialType(oTarget) != RACIAL_TYPE_UNDEAD)
            {
                
//Roll damage for each target
                
nDamage d8(nCasterLvl);

                
//Resolve metamagic
                
if (nMetaMagic == METAMAGIC_MAXIMIZE)
                {
                    
nDamage nCasterLvl;
                }
                else if (
nMetaMagic == METAMAGIC_EMPOWER)
                {
                   
nDamage nDamage nDamage 2;
                }
                
//Si la cible est un elementaire d'eau, il subit un malus de -2 au JS
                
if (GetRacialType(oTarget) == RACIAL_TYPE_ELEMENTAL && GetStringLeft(GetTag(oTarget),6) == "NW_WAT")
                {
                    
//On applique le malus de -2 au jet de sauvegarde
                    
ApplyEffectToObject(DURATION_TYPE_PERMANENTEffectSavingThrowDecrease(SAVING_THROW_FORT2SAVING_THROW_TYPE_NONE), oTarget);
                    if(
/*Fort Save*/ MySavingThrow(SAVING_THROW_FORToTarget, (GetSpellSaveDC()), SAVING_THROW_TYPE_NONEOBJECT_SELFfDelay))
                    {
                        
nDamage nDamage/2;
                    }
                    
//On enleve le malus de -2 au jet de sauvegarde
                    
RemoveEffect(oTarget,EffectSavingThrowDecrease(SAVING_THROW_FORT2SAVING_THROW_TYPE_NEGATIVE));
                }
                else if(
/*Fort Save*/ MySavingThrow(SAVING_THROW_FORToTargetGetSpellSaveDC(), SAVING_THROW_TYPE_NONEOBJECT_SELFfDelay))
                {
                    
nDamage nDamage/2;
                }
                
//Set the damage effect
                
eDam EffectDamage(nDamageDAMAGE_TYPE_NEGATIVE);
                
// Apply effects to the currently selected target.
                
DelayCommand(fDelayApplyEffectToObject(DURATION_TYPE_INSTANTeDamoTarget));
                
//This visual effect is applied to the target object not the location as above.  This visual effect
                //represents the flame that erupts on the target not on the ground.
                
DelayCommand(fDelayApplyEffectToObject(DURATION_TYPE_INSTANTeVisoTarget));
            }

         }
       
//Select the next target within the spell shape.
       
oTarget GetNextObjectInShape(SHAPE_SPHERERADIUS_SIZE_HUGElTarget);
    }


CORRECTION apportées :
*Changement du type de dommage : Energie negative au lieu de magique.
*Rajout du malus au JS de -2 pour les elementaires d'eau, mais pas pour les vegetaux vu que le type vegetal n'existe pas.
*Endommage aussi bien ami que ennemi. Mages bigleux s'abstenir !


PS : Par contre, pourquoi voudrais tu mettre les dommages en type energie negative Sol ?? Je l'ai fait mais je me pose encore la question, je pense que les degats magiques sont plus adaptés.
Citation :
Provient du message de eMRaistlin
c'est pas dans le php, les degats magiques ?


(souvenirs de baldur inside...)
Non les dommages deviennent des dommage d'energie negative.
A moins que je n'ai pas compris la question ^^

Par contre j'ai besoin d'aide concernant la comparaison avec les tag de l'elemental d'eau :
Code PHP:

//Si la cible est un elementaire d'eau, il subit un malus de -2 au JS
                    
if (GetRacialType(oTarget) == RACIAL_TYPE_ELEMENTAL && GetTag(oTarget) == "NW_WAT"
En utilisant le GetTag(oTarget) == "NW_WAT", est ce qu'il va prendre en compte que la chaine NW_WAT peut etre continuée :
NW_WAT : elementaire d'eau
NW_WATHUGE : elementaire d'eau enorme
NW_WATELDER : Seigneur elementaire d'eau

Ou alors, comment faut il s'y prendre ?
Dans le MdJ, rien ne précise le type de dégâts infligés. Il est juste dit que Flétrissure provoque l'évaporation instantanée de toute l'eau corporelle des créatures vivantes.
De par l'explication, dégâts magique me semble plus approprié qu'Energie Négative. Normalement, la composante matérielle est un peu d'éponge.

Vous comptez rajouter les composantes matérielles ?
Citation :
Provient du message de Archamedes_Fr
Dans le MdJ, rien ne précise le type de dégâts infligés. Il est juste dit que Flétrissure provoque l'évaporation instantanée de toute l'eau corporelle des créatures vivantes.
De par l'explication, dégâts magique me semble plus approprié qu'Energie Négative. Normalement, la composante matérielle est un peu d'éponge.

Vous comptez rajouter les composantes matérielles ?
On va en discuter encore. on pourra toujours le faire apres, mais c'est vrai que c'est plus approprié de tout faire en meme temps pour chaque sort (modif 2da si nécéssaire, description dans le dialog.tlk, code et composantes matérielles (en option))
Je pensais aussi peut etre a implanter des zone de magie sauvage ou de magie morte. Je sais que Delphinea en a, fo que je vois avec elle.

Concernant les degats magiques, moi aussi ca me semble approprié pour Fletrissure, mais Solaufein avait demandé de le changer, c'est pour ca, je lui redemande les raisons, je ne les trouve plus ^^.
La partie du code qui gere les meta-magies est un peu inutile, etant donné qu'horrid wilting est deja un sort de niveau 8, les dons 'maximize spell' et 'empower spell' ne lui sont pas applicables (cela en ferait un sort au dessus du 9ieme niveau...)

Pour prendre en compte tous les elementaires d'eau utilise GetLeftString( GetTag(oTarget), 6 ) == "NW_WAT"
(plus efficace qu'un GetMatchedSubString() en terme de vitesse de traitement)
Le probleme demeure pour des elementaires customs dont le tag a été changé...
Citation :
Provient du message de Slay
La partie du code qui gere les meta-magies est un peu inutile, etant donné qu'horrid wilting est deja un sort de niveau 8, les dons 'maximize spell' et 'empower spell' ne lui sont pas applicables (cela en ferait un sort au dessus du 9ieme niveau...)

Pour prendre en compte tous les elementaires d'eau utilise GetLeftString( GetTag(oTarget), 6 ) == "NW_WAT"
(plus efficace qu'un GetMatchedSubString() en terme de vitesse de traitement)
Le probleme demeure pour des elementaires customs dont le tag a été changé...
Oui le probleme reste dans les deux cas, donc ca ne me gene pas outre mesure.
merci en tout cas de ta precision concernant la vitesse de traitement de GetLeftString

Je vais editer sur le champ.
Je supprime aussi la gestion des dons, je preferais laisser au cas où on obtienne des slots de nivo superieur a 9 avec un des add on. Donc je l'ai effacé ici pour plus de clarté mais je le laisse dans mon code en commentaire, comme ca, pas de jaloux !
Il est possible d'obtenir un niveau de sort bien au-delà du 9e, et ça même dans NWN.

Un PNJ peut avoir un niveau de lanceur de sort de 40 je vous le rappelle
Citation :
Provient du message de Delphinea
Il est possible d'obtenir un niveau de sort bien au-delà du 9e, et ça même dans NWN.

Un PNJ peut avoir un niveau de lanceur de sort de 40 je vous le rappelle
Et les nivos de sorts evoluent comment ?? Comment ca s'affiche dans un livre de sort ?? :P

Et sinon quel est le 2da qui a la table d'evolution des sorts ?? j'aimerais le compulser mais je ne l'ai pas trouvé dans les source de base.
Citation :
Provient du message de Delphinea
Il est possible d'obtenir un niveau de sort bien au-delà du 9e, et ça même dans NWN.

Un PNJ peut avoir un niveau de lanceur de sort de 40 je vous le rappelle
Ah oui exact, je viens de vérifier, et il est possible dans le toolset de leur attribuer de sorts de level 12
Bonjour les brutes
Citation :
Provient du message de Slay
Ah oui exact, je viens de vérifier, et il est possible dans le toolset de leur attribuer de sorts de level 12
Bonjour les brutes
level 12 c'est pas assez pour avoir un arret du temps en tant que capacité magique illimité 1/rd grace au don innate spell. ^^
Ca va chercher dans les slots de niveau 17 et superieur ^^
Met 50 en intel à ton monstre et donne lui le niveau mage 40, ensuite attribue lui les dons métamagiques, et enfin attribue ces dons aux sorts niveaux 9.
Et tu verras que le niveau du sort va monter tout seul
Petite mise a jour, en remettant la metamagie disponible, mais aussi en mettant l'effet ne differenciant pas les amis des ennemis.
Un ami est une creature vivante comme une autre, il souffrira comme les autres si jamais il se trouve dans le nuage evaporant ^^
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés