JeuxOnLineForumsPlusConnectés : 309 (sites) | 507 (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]Ray Of Frost RSS
   
Répondre
Partager Outils Rechercher
Avatar de Slay
Slay
Dauphin
 
Avatar de Slay
 
Bah ca arrive sans arret la création d'objet a la volée tout au long du jeu... quand tu declenche un encounter, quand tu ouvre un coffre, etc... le fait est que des que tu declare une variable object quelque part tu reserves de la place memoire pour un objet complet... la seule difference c'est que tu l'affiches pas forcement.

Ah puis il existe deja un placeable 'Invisible object', pourquoi ne pas utiliser celui-ci pour servir de 'cible' ?
Lien direct vers le message - Vieux
Avatar de Dolanor
Dolanor
Alpha & Oméga
 
Avatar de Dolanor
 
Citation:
Provient du message de Slay
Bah ca arrive sans arret la création d'objet a la volée tout au long du jeu... quand tu declenche un encounter, quand tu ouvre un coffre, etc... le fait est que des que tu declare une variable object quelque part tu reserves de la place memoire pour un objet complet... la seule difference c'est que tu l'affiches pas forcement.

Ah puis il existe deja un placeable 'Invisible object', pourquoi ne pas utiliser celui-ci pour servir de 'cible' ?
Oui pourquoi pas, je m'y connais en algo, mais en bidouille pour nwn, je suis pas tres fort, je viens de démarrer

Ce qu'il me faudrait, c un objet :
*qui me serve de cible pour le rayon mais qui ne gene en rien le deplacement d'un personnage. Pas que des qu'on lance un rayon qui foire, ben on est bloqué dans un couloir ^^
*Qui soit invisible
*et qui ne bouge pas si on passe a coté (genre qd plusieurs creature se bousculent, certaines font des pas de cotés.)
Lien direct vers le message - Vieux
Avatar de Dolanor
Dolanor
Alpha & Oméga
 
Avatar de Dolanor
 
Bon c'est bon, j'ai géré le fait que les rayons partent a coté si le caster miss.
Merci pour vos tips.
Euhh, sinon, ben j'ai fini le code pour le Ray of Frost.
Maintenant, il est considéré comme sort de rayon, cad :
  • Il y'a un jet de contact a distance pour pouvoir toucher la cible : 1d20 + BAB + bonus de dex + bonus de 1 grâce au don "Tir a bout portant" si l'on caste a moins de 10 m de la cible.
  • La CA de la cible n'est pas une CA "normale" car on prends tous les bonus en compte sauf :

    * Le bonus de CA naturelle du monstre
    * Le bonus de CA obtenue grâce à une armure
    * Le bonus de CA obtenu grâce à un bouclier
Seulement, comme la fonction GetCA() ne retourne que la valeur de la CA totale sans aucune customisation, je ne pouvais obtenir ces differents bonus, donc j'ai du "construire" la CA de la cible a partir de la valeur de base 10 et en ajoutant tous les bonus possibles excepté les bonus du dessus.
Malheureusement, je n'ai pas pu obtenir les bonus du aux sorts non plus, car je devrais faire le tri entre les bonus de CA naturelle et les autres, et je peux obtenir l'effet et son type (EFFECT_TYPE_AC_INCREASE) mais je ne peux obtenir le type de bonus a la CA (naturel par exemple.) car la fonction GetEffectType() donne le type d'amélioration, mais ne gere pas les valeurs (donc on ne peut pas savoir de cb c augmenté...) et donc je ne peux pas soustraire a la CA calculée. Donc ce n'est pas possible a gerer.
Meme topo pour les bonus d'objets :
  • Un rayon peut faire un coup critique, c un critique de type 20/x2, donc en cas de critique, doublement des dommages du sort.
  • Affichage des jets de toucher a distance dans le log avec un SendToPC()
  • Gestion des ratés de sort : Lorsque le jet de toucher est loupé, alors la cible de l'effet visuel n'est plus la cible réele mais une cible factice pour indiquer que le sort a bien loupé (a 3 m de la cible par exemple, ca se voit bien qu'on a fait un jet de quiche )

Voici le code, et il nécéssite 2 include imbriqués qui sont disponible dans ce =.erf=

Code PHP:
//::///////////////////////////////////////////////
//:: Ray of Frost
//:: [NW_S0_rayfrost.nss]
//::
//:://////////////////////////////////////////////
/*
    If the caster succeeds at a ranged touch attack
    the target takes 1d3 damage.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: feb 4, 2001
//:: Modified By: Dolanor
//:: Modified On: 22/05/2003
//:://////////////////////////////////////////////

#include "NW_I0_SPELLS"

//Inclus les fonctions de jet de toucher a distance et les fonctions de decalage de cible en cas de miss
#include "raw_code_rta"


void main()
{
    
//Declare major variables
    
object oTarget GetSpellTargetObject();
    
int nMetaMagic GetMetaMagicFeat();
    
int nCasterLevel GetCasterLevel(OBJECT_SELF);
    
int nDam d3(1);
    
effect eDam;
    
effect eVis EffectVisualEffect(VFX_IMP_FROST_S);
    
effect eRay EffectBeam(VFX_BEAM_COLDOBJECT_SELFBODY_NODE_HAND);

    if(!
GetIsReactionTypeFriendly(oTarget))
    {
        
//Fire cast spell at event for the specified target
        
SignalEvent(oTargetEventSpellCastAt(OBJECT_SELFSPELL_RAY_OF_FROST));
        
eRay EffectBeam(VFX_BEAM_COLDOBJECT_SELFBODY_NODE_HAND);
        
//Make SR Check
        
if(!MyResistSpell(OBJECT_SELFoTarget))
        {
            
//Enter Metamagic conditions
            
if (nMetaMagic == METAMAGIC_MAXIMIZE)
            {
                
nDam ;//Damage is at max
            
}
            else if (
nMetaMagic == METAMAGIC_EMPOWER)
            {
                
nDam nDam nDam/2//Damage/Healing is +50%
            
}

            switch(
RangeTouchAttack(oTarget,TRUE))
            {
                
//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_TEMPORARYeRayoTEMP1.7);
                    
DestroyObject(oTEMP2.0);
                    return;
                    break;
                }
                
//Critique
                
case 2:
                    
nDam nDam d3();
                    break;
            }
            
//Set damage effect
            
eDam EffectDamage(nDamDAMAGE_TYPE_COLD);
            
//Apply the VFX impact and damage effect
            
ApplyEffectToObject(DURATION_TYPE_INSTANTeVisoTarget);
            
ApplyEffectToObject(DURATION_TYPE_INSTANTeDamoTarget);
            
ApplyEffectToObject(DURATION_TYPE_TEMPORARYeRayoTarget1.7);

        }
    }


Voilà, il me reste encore quelques trucs a gerer :
*Gestions des bonus de buffs/d'items pour la CA de la cible et pour le jet d'attaque du caster. Mais je dois attendre que Bioware sorte des fonctions supplementaires sinon je ne peux rien faire, et si il sort les fonction pour permettre ce bidouillage, je pense que diminuer la CA totale par des bonus divers sera plus simple et moins gourmand en ressource.
*Gestion des animations d'esquive de la cible lorsque le bonus de dex ou d'esquive est responsable du miss voire une parade avec l'arme du rayon (déviation stylé ^^) Mais pour le moment, je pense que c'est infaisable.

En tout cas, merci pour les tips sur le fait de gerer les effet avec un objet en invisible, sans vous je n'y serais pas arrivé, je suis un sale nioub en nwscript ^^

.erf total incluant le sort et les includes + le placeable invisible pour les miss de sorts, a importer et utiliser directement sans autre manipulation.

CORRECTIONS apportées :
*gestion de l'effet de type "rayon"
*gestion du critique
*1d3 au lieu de 1d4
Lien direct vers le message - Vieux
Avatar de Solaufein
Solaufein
Alpha & Oméga
 
Avatar de Solaufein
 
Impressionant
J'ai remarqué que tu avais aussi rajouté le "double dégâts" si jamais il y a coup critique ! C'est vrai que même sur papier, c'est une règle que l'on a souvent tendance à oublier avec les sorts utilisant un jet pour toucher. Cela n'a pas que des désavantages de devoir faire des jets pour toucher : Quand on fait un critique lors d'un jet pour toucher avec le sort Energie négative (niv.5, 1D4 niveaux négatifs), on se retrouve ni plus ni moins avec l'effet d'un sort d'Absorption d'Energie (niv.9, 2D4 niveaux négatifs) ! ... Et oui ça doit marcher également pour les niveaux négatifs (l'exemple est même cité dans le supplément D&D3 "Par l'Encre et le Sang" )
Lien direct vers le message - Vieux
Avatar de Dolanor
Dolanor
Alpha & Oméga
 
Avatar de Dolanor
 
Citation:
Provient du message de Solaufein
Impressionant
J'ai remarqué que tu avais aussi rajouté le "double dégâts" si jamais il y a coup critique ! C'est vrai que même sur papier, c'est une règle que l'on a souvent tendance à oublier avec les sorts utilisant un jet pour toucher. Cela n'a pas que des désavantages de devoir faire des jets pour toucher : Quand on fait un critique lors d'un jet pour toucher avec le sort Energie négative (niv.5, 1D4 niveaux négatifs), on se retrouve ni plus ni moins avec l'effet d'un sort d'Absorption d'Energie (niv.9, 2D4 niveaux négatifs) ! ... Et oui ça doit marcher également pour les niveaux négatifs (l'exemple est même cité dans le supplément D&D3 "Par l'Encre et le Sang" )
Oui
Mais ca ne marche pas de cette maniere, pour un sort absorbant des niveaux ou des carac, le critique se resume a dommage de 1 d'energie negative (maintenant, si tu peux me donner la page ou tu trouves cela dans tome and blood, je ne retrouve plus et cela me gene, car je ne sais plus si c 1 de dommage d'energie negative ou 1 dmg par pt de carac/nivo enlevé d'energie negative. Ca change pas mal de choses.)

Citation:
Impressionant
héhé, merci ca fait plaisir ^^
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > [DD SPELL]Ray Of Frost
   

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 03h43.
   

© 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