Donc en gros tu veux créer un truc de bourrin
De base, je t'invite a utiliser la fonction recherche. Tu trouvera de cette manière comment mettre en place la fonction des TagBasedItems dans ton module. (rassure moi, c'est bien pour un module que tu veux faire ça ?)
Voici le script d'exemple de biobio :
//::///////////////////////////////////////////////
//:: Example Item Event Script
//:: x2_it_example
//:: Copyright (c) 2003 Bioware Corp.
//:://////////////////////////////////////////////
#include "x2_inc_switches"
void main()
{
int nEvent =GetUserDefinedItemEventNumber();
object oPC;
object oItem;
//SendMessageToPC(GetFirstPC(),IntToString(nEvent));
// * This code runs when the item has the OnHitCastSpell: Unique power property
// * and it hits a target(weapon) or is being hit (armor)
// * Note that this event fires for non PC creatures as well.
if (nEvent ==X2_ITEM_EVENT_ONHITCAST)
{
oItem = GetSpellCastItem(); // The item casting triggering this spellscript
object oSpellOrigin = OBJECT_SELF ;
object oSpellTarget = GetSpellTargetObject();
oPC = OBJECT_SELF;
}
// * This code runs when the Unique Power property of the item is used
// * Note that this event fires PCs only
else if (nEvent == X2_ITEM_EVENT_ACTIVATE)
{
oPC = GetItemActivator();
oItem = GetItemActivated();
}
// * This code runs when the item is equipped
// * Note that this event fires PCs only
else if (nEvent ==X2_ITEM_EVENT_EQUIP)
{
oPC = GetPCItemLastEquippedBy();
oItem = GetPCItemLastEquipped();
}
// * This code runs when the item is unequipped
// * Note that this event fires PCs only
else if (nEvent ==X2_ITEM_EVENT_UNEQUIP)
{
oPC = GetPCItemLastUnequippedBy();
oItem = GetPCItemLastUnequipped();
}
// * This code runs when the item is acquired
// * Note that this event fires PCs only
else if (nEvent == X2_ITEM_EVENT_ACQUIRE)
{
oPC = GetModuleItemAcquiredBy();
oItem = GetModuleItemAcquired();
}
// * This code runs when the item is unaquire d
// * Note that this event fires PCs only
else if (nEvent == X2_ITEM_EVENT_UNACQUIRE)
{
oPC = GetModuleItemLostBy();
oItem = GetModuleItemLost();
}
//* This code runs when a PC or DM casts a spell from one of the
//* standard spellbooks on the item
else if (nEvent == X2_ITEM_EVENT_SPELLCAST_AT)
{
oPC = GetModuleItemLostBy();
oItem = GetModuleItemLost();
}
}
En fonction du moment ou tu veux créer ton effet, tu place ton code au bon endroit.
Le soin aléatoire, c'est basiquement un nombre de PV aléatoire récupéré, donc tu peux utiliser : "EffectHeal(d100())" par exemple, ou d20(5), etc. a toi de voir.
Les effet visuels, tu les place avec "EffectVisualEffect" et les constantes VFX_*
Pour un effet juste parce que les gens sont présent, sans que tu n'ai rien a faire, je ne vois pas. Pour un effet activé "pouvoir unique" qui affecte tous les hostiles, tu te servira de "GetIsReactionTypeHostile"
En faisant une boucle sur toutes les créatures d'une zone, par exemple autour du porteur de l'armure.
Puis tu applique les effet "ActionCastSpellAtObject" avec les bon SpellID ou encore directement les effets "EffectParalyse", etc. note que les effets pure ne tienne compte d'aucune résistance. (ni save, ni RM, etc.)
Pour créer les 2 epées, tu les crée dans ta palette, puis tu utilise "CreateItemOnObject"