Tout marche parfaitement, merci beaucoup !
Voici les scripts en question, si ca peut être utile à quelqu'un.
Le premier: Un couteau possédant un "Unique Power" permettant de prélever une mèche de cheveux sur une victime, avec risque d'echec.
void main()
{
object oPC;
object oTarget;
object oOwner;
oPC = GetItemActivator();
oOwner = GetItemActivatedTarget();
if (GetIsSkillSuccessful(oPC, SKILL_PICK_POCKET, 15))
{
object oLock = CreateItemOnObject("hairlock", oPC, 1);
SetLocalObject(oLock,"owner", oOwner);
}
else
{
oTarget = GetItemActivatedTarget();
SendMessageToPC(oTarget, "A person has tryied to cut you a hair lock !");
AdjustReputation(oPC, oTarget, -100);
}
}
Ensuite, le parchemin qui permet de lancer le rituel. (parchemin avec "Unique Power")
void main()
{
object oPC;
oPC = GetItemActivator();
effect eEffect;
eEffect = EffectDamage(25, DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_NORMAL);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, GetItemActivator());
object oTarget;
oTarget = GetItemActivator();
int nInt;
nInt = GetObjectType(oTarget);
if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_BLOOD_CRT_RED), oTarget);
else ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_BLOOD_CRT_RED), GetLocation(oTarget));
if (GetItemPossessedBy(oPC, "maho")!= OBJECT_INVALID)
{
if (GetItemPossessedBy(oPC, "hairlock")!= OBJECT_INVALID)
{
if (GetIsSkillSuccessful(oPC, SKILL_SPELLCRAFT, 30))
{
object oLock = GetObjectByTag("hairlock");
object oTarget = GetLocalObject(oLock, "owner");
if(oTarget != OBJECT_INVALID)
ExecuteScript("ritual01", oTarget);
}
}
}
}
Pour le début du script, je n'utilise pas le système de magie du jeu, j'utilise le mien qui consiste en des parchemins, suivant des types de magies differentes.
Ici la magie du sang, qui demande un sacrifice personnel pour lancer les sorts, d'où le perte de HP au début.
Puis viens le script pour les effets du rituel:
void main()
{
object oTarget = OBJECT_SELF;
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(d20()), oTarget);
effect eEffect;
eEffect = EffectCurse(5, 5, 5, 5, 5, 5);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, 1200.0f);
eEffect = EffectDisease(DISEASE_DEMON_FEVER);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, 1200.0f);
}
Voila, encore un grand merci à vous