[script] Agripper

Répondre
Partager Rechercher
Voici un script qui permet aux PJ d'agripper les autres. Sa permet par exemple d'attraper un voleur qui s'enfuit.

Dans le OnActivateItem du module :
Code PHP:

void agrippement(object oActivatorobject oTarget) {
    
int nEtat GetLocalInt(oActivator"agrippeur");
    if (
nEtat == 1) {
        
int nCasterModif;
        
int nCasterFor GetAbilityModifier(ABILITY_STRENGTH,oActivator);
        
int nCasterDex GetAbilityModifier(ABILITY_DEXTERITY,oActivator);
        if (
nCasterFor nCasterDex) {
            
nCasterModif nCasterDex;
        } else {
            
nCasterModif nCasterFor;
        }
        
int nCasterRoll d20(1) + nCasterModif;
        
int nTargetRoll d20(1) + GetAbilityModifier(ABILITY_DEXTERITY,oTarget);
        if (
nCasterRoll >= nTargetRoll) {// Si le jet est réussi
            
effect eParalize EffectCutsceneImmobilize();
            
effect eDur EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
            
effect eHand EffectVisualEffect(VFX_DUR_BIGBYS_GRASPING_HAND);
            
effect eLink EffectLinkEffects(eParalizeeDur);
            
eLink EffectLinkEffects(eHandeLink);
            
ApplyEffectToObject(DURATION_TYPE_TEMPORARYeParalizeoActivator6.0);
            
ApplyEffectToObject(DURATION_TYPE_TEMPORARYeLinkoTarget6.0);
            
FloatingTextStrRefOnCreature(2478oActivator);
            
DelayCommand(6.0agrippement(oActivatoroTarget));
        } else {    
// Si le jet est raté
            
FloatingTextStringOnCreature("* agrippement raté *",oActivator,FALSE);
            
effect eKnockdown EffectParalyze();
            
ApplyEffectToObject(DURATION_TYPE_TEMPORARYeKnockdownoActivator5.0);
            
SetLocalInt(oActivator"agrippeur"0);

        }
    } else {
        
FloatingTextStringOnCreature("* cible relachée *",oActivator,FALSE);
    }
}

void main()
{
object oActivator GetItemActivator();
object oItem GetItemActivated();
object oTarget GetItemActivatedTarget();
string sTag GetTag(oItem);

    if ((
sTag == "agrippeur") & GetIsObjectValid(oTarget)) {// Baton d'agrippement
        
location lActivator GetLocation(oActivator);
        
location lTarget GetLocation(oTarget);
        
vector vActivator GetPositionFromLocation(lActivator);
        
vector vTarget GetPositionFromLocation(lTarget);
        
vector vDistance vTarget vActivator;
        
float fDistance VectorMagnitude(vDistance);
        if(
fDistance 3.0) {      //Si on est trop loin
            
FloatingTextStringOnCreature("* Vous êtes trop loin *",oActivator,TRUE);
            return;
        } else {                     
//Si on est assez pres
            
int nEtat GetLocalInt(oActivator"agrippeur");
            if(
nEtat == 1) {
                
SetLocalInt(oActivator"agrippeur"0);
                return;
            } else {
                
SetLocalInt(oActivator"agrippeur"1);
                
agrippement(oActivatoroTarget);
            }
        }
    }

Il suffit ensuite de créer un bâton (comme le bâton d'émotions) qui a pour tag "agrippeur"

Voila ^^
J'attend avec impatience vos remarques, critiques et améliorations éventuelles

Edite : j'ai oublié de préciser quelque chose.
La personne qui tante d'agripper fait un jet de force opposé à un jet de force ou de dextérité (le meilleur des deux) de la victime.
Super! J'ai directement donné le lien à notre concepteur/scripteur/mappeur qui se fera un plaisir de mettre ça en route!
Merci beaucoup, c'est une terrible idée!!!

*encore du rp en perspective* niark !
Répondre

Connectés sur ce fil

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