Potion de renvoi

Répondre
Partager Rechercher
Théoriquement, en terme de gameplay, ce ne serait pô vraiment logique. J'arrive pô à imaginer qu'on soit capable de détruire un mort-vivant rien qu'en buvant une potion mais tu dois avoir une bonne raison sinon tu n'aurais pô poster ça, et j'ai confiance en cela

Donc renvoyer un mort vivant est un feat si je ne me trompe. Ce qui pose problème, c'est qu'après avoir bu la potion, il ne reste plus rien à cliquer si l'on veut déclencher le renvoi. À moins que la potion fasse directement effet mais encore une fois ça coince, une potion est toujours à usage unique.

Le mieux est de ne pas faire de potion mais plutôt un objet divers. En cherchant bien tu devrais pouvoir trouver un objet divers avec l'apparence d'une potion. Avec un pouvoir unique (utilisable x fois/jour) sur cet objet, tu devrait pouvoir créer un script capable d'enclencher l'animation de boire une potion pour ensuite libérer le sort. Pour info, le script de renvoi des mort vivants est NW_S2_TurnDead, recopie le partiellement, modifie le pour qu'il puisse être utiliser correctement par toutes les classes.


Voilà, c'est tout ce que je peux te dire pour l'instant, ne sachant pô vraiment si la potion doit être bu entièrement ou si il faut en boire juste un petit peu à chaque fois qu'on souhaite utiliser le renvoi
Je vai répondre a tes doutes... donc oui j'ai bien une bonne raison, et c'est donc la suivante : c'est une potion d'eau bénite !

Voila, donc je vais essayé ce que tu me dis.. Merci .
Alors d'une part, tu met un pouvoir unique dans les propriété de ton item

ensuite, tu vas dans le OnItemActivated de ton module, et tu met un script de ce genre :

Code PHP:

void main()
{
    
object oItem GetItemActivated();
    
object oPC GetItemActivator();
    if(
GetTag(oItem) == "TAG_DE_TA_POTION")
    {
        
//Ton code d'eau bénite
    
}

Ok merci .... mais encore un problème pour modifier le sort repousser les mort vivants.

Voici le script de Bioware :

Code PHP:

//::///////////////////////////////////////////////
//:: Turn Undead
//:: NW_S2_TurnDead
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
    Checks domain powers and class to determine
    the proper turning abilities of the casting
    character.
*/
//:://////////////////////////////////////////////
//:: Created By: Nov 2, 2001
//:: Created On: Preston Watamaniuk
//:://////////////////////////////////////////////

void main()
{
    
int nClericLevel GetLevelByClass(CLASS_TYPE_CLERIC);
    
int nPaladinLevel GetLevelByClass(CLASS_TYPE_PALADIN);
    
int nTurnLevel nClericLevel;
    
int nClassLevel nClericLevel;

    if((
nPaladinLevel 2) > nClericLevel)
    {
        
nClassLevel nPaladinLevel;
        
nTurnLevel nPaladinLevel;
    }
    
//Flags for bonus turning types
    
int nElemental GetHasFeat(FEAT_AIR_DOMAIN_POWER) + GetHasFeat(FEAT_EARTH_DOMAIN_POWER) + GetHasFeat(FEAT_FIRE_DOMAIN_POWER) + GetHasFeat(FEAT_WATER_DOMAIN_POWER);
    
int nVermin GetHasFeat(FEAT_PLANT_DOMAIN_POWER) + GetHasFeat(FEAT_ANIMAL_COMPANION);
    
int nConstructs GetHasFeat(FEAT_DESTRUCTION_DOMAIN_POWER);
    
int nOutsider GetHasFeat(FEAT_GOOD_DOMAIN_POWER) + GetHasFeat(FEAT_EVIL_DOMAIN_POWER);

    
//Flag for improved turning ability
    
int nSun GetHasFeat(FEAT_SUN_DOMAIN_POWER);

    
//Make a turning check roll, modify if have the Sun Domain
    
int nChrMod GetAbilityModifier(ABILITY_CHARISMA);
    
int nTurnCheck d20() + nChrMod;              //The roll to apply to the max HD of undead that can be turned --> nTurnLevel
    
int nTurnHD d6(2) + nChrMod nClassLevel;   //The number of HD of undead that can be turned.

    
if(nSun == TRUE)
    {
        
nTurnCheck += d4();
        
nTurnHD += d6();
    }
    
//Determine the maximum HD of the undead that can be turned.
    
if(nTurnCheck <= 0)
    {
        
nTurnLevel -= 4;
    }
    else if(
nTurnCheck >= && nTurnCheck <= 3)
    {
        
nTurnLevel -= 3;
    }
    else if(
nTurnCheck >= && nTurnCheck <= 6)
    {
        
nTurnLevel -= 2;
    }
    else if(
nTurnCheck >= && nTurnCheck <= 9)
    {
        
nTurnLevel -= 1;
    }
    else if(
nTurnCheck >= 10 && nTurnCheck <= 12)
    {
        
//Stays the same
    
}
    else if(
nTurnCheck >= 13 && nTurnCheck <= 15)
    {
        
nTurnLevel += 1;
    }
    else if(
nTurnCheck >= 16 && nTurnCheck <= 18)
    {
        
nTurnLevel += 2;
    }
    else if(
nTurnCheck >= 19 && nTurnCheck <= 21)
    {
        
nTurnLevel += 3;
    }
    else if(
nTurnCheck >= 22)
    {
        
nTurnLevel += 4;
    }

    
//Gets all creatures in a 20m radius around the caster and turns them or not.  If the creatures
    //HD are 1/2 or less of the nClassLevel then the creature is destroyed.
    
int nCnt 1;
    
int nHDnRacialnHDCountbValidnDamage;
    
nHDCount 0;
    
effect eVis EffectVisualEffect(VFX_IMP_SUNSTRIKE);
    
effect eVisTurn EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR);
    
effect eDamage;
    
effect eTurned EffectTurned();
    
effect eDur EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
    
effect eLink EffectLinkEffects(eVisTurneTurned);
    
eLink EffectLinkEffects(eLinkeDur);

    
effect eDeath SupernaturalEffect(EffectDeath(TRUE));

    
effect eImpactVis EffectVisualEffect(VFX_FNF_LOS_HOLY_30);
    
ApplyEffectAtLocation(DURATION_TYPE_INSTANTeImpactVisGetLocation(OBJECT_SELF));

    
//Get nearest enemy within 20m (60ft)
    //Why are you using GetNearest instead of GetFirstObjectInShape
    
object oTarget GetNearestCreature(CREATURE_TYPE_PLAYER_CHARPLAYER_CHAR_NOT_PC OBJECT_SELFnCnt);
    while(
GetIsObjectValid(oTarget) && nHDCount nTurnHD && GetDistanceToObject(oTarget) <= 20.0)
    {
        if(!
GetIsFriend(oTarget))
        {
            
nHD GetHitDice(oTarget) + GetTurnResistanceHD(oTarget);
            
nRacial GetRacialType(oTarget);
            if(
nHD <= nTurnLevel && nHD <= (nTurnHD nHDCount))
            {
                
//Check the various domain turning types
                
if(nRacial == RACIAL_TYPE_UNDEAD)
                {
                    
bValid TRUE;
                }
                else if (
nRacial == RACIAL_TYPE_VERMIN && nVermin 0)
                {
                    
bValid TRUE;
                }
                else if (
nRacial == RACIAL_TYPE_ELEMENTAL && nElemental 0)
                {
                    
bValid TRUE;
                }
                else if (
nRacial == RACIAL_TYPE_CONSTRUCT && nConstructs 0)
                {
                    
SignalEvent(oTargetEventSpellCastAt(OBJECT_SELFSPELLABILITY_TURN_UNDEAD));
                    
nDamage d3(nTurnLevel);
                    
eDamage EffectDamage(nDamageDAMAGE_TYPE_MAGICAL);
                    
ApplyEffectToObject(DURATION_TYPE_INSTANTeVisoTarget);
                    
ApplyEffectToObject(DURATION_TYPE_INSTANTeDamageoTarget);
                    
nHDCount += nHD;
                }
                else if (
nRacial == RACIAL_TYPE_OUTSIDER && nOutsider 0)
                {
                    
bValid TRUE;
                }

                
//Apply results of the turn
                
if( bValid == TRUE)
                {
                    
ApplyEffectToObject(DURATION_TYPE_INSTANTeVisoTarget);
                    
//if(IntToFloat(nClassLevel)/2.0 >= IntToFloat(nHD))
                    //{

                    
if((nClassLevel/2) >= nHD)
                    {
                        
//Fire cast spell at event for the specified target
                        
SignalEvent(oTargetEventSpellCastAt(OBJECT_SELFSPELLABILITY_TURN_UNDEAD));
                        
//Destroy the target
                        
DelayCommand(0.1fApplyEffectToObject(DURATION_TYPE_INSTANTeDeathoTarget));
                    }
                    else
                    {
                        
//Turn the target
                        //Fire cast spell at event for the specified target
                        
SignalEvent(oTargetEventSpellCastAt(OBJECT_SELFSPELLABILITY_TURN_UNDEAD));
                        
AssignCommand(oTargetActionMoveAwayFromObject(OBJECT_SELFTRUE));
                        
ApplyEffectToObject(DURATION_TYPE_TEMPORARYeLinkoTargetRoundsToSeconds(nClassLevel 5));
                    }
                    
nHDCount nHDCount nHD;
                }
            }
            
bValid FALSE;
        }
        
nCnt++;
        
oTarget GetNearestCreature(CREATURE_TYPE_PLAYER_CHARPLAYER_CHAR_NOT_PCOBJECT_SELFnCnt);
    }

Mon problème est que ce script prend en compte le niveau des prêtres et paladin et les domaines (je n'en veu pas !), je veux que tous puisse utilisé la potion à un même niveau de pouvoir pour repousser les morts vivants.
De plus pour que ce soit tous le monde qui puisse l'utilisé, je doit rajouté des lignes ou les effacer ?

Scuse j'avais vérifier...
pitié édite ton message et met le crochet qui manque pour le php.

Je répond comme ca mais la un code de cette taille est vraiment lourd a lire sans couleurs
Répondre

Connectés sur ce fil

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