// Script « OnUserDefined »
// tm_flechette_ud
// Jeu de flechette
// Appelé par le OnHeartBeat script.
//
// Le joueur de fléchettes lance les dards de son inventaire ( 3 au départ )
// Va jusqu'à la cible. Récupère ses dards, revient et recommence.
//
void main()
{
int nAppelePar = GetUserDefinedEventNumber();
object oCible = GetNearestObjectByTag("CIBLE");
int nCiblePrete = GetLocalInt(OBJECT_SELF, "ETATCIBLE");
//
switch(nAppelePar)
{
case 1001: // Appelé par OnHeartbeat
//
// nCiblePrete est a 1 si la cible est prête.
//
if ((GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND)))
&& (nCiblePrete == 1))
{
// Si on a des dards dans la main droite et qu’on est prêt a les lancer, alors faisons le.
ClearAllActions();
ActionAttack(oCible, TRUE);
}
else
{
// Sinon, soit nous n’avons plus de dards, soit nous sommes déjà en train d’aller les chercher.
if (nCiblePrete == 1)
{
SetLocalInt(OBJECT_SELF, "ETATCIBLE", 2);
ActionMoveToObject(oCible);
ActionWait(0.5);
ActionPlayAnimation(ANIMATION_LOOPING_GET_MID, 1.0, 1.0);
ActionWait(0.5);
ActionPlayAnimation(ANIMATION_LOOPING_GET_MID, 1.0, 1.0);
ActionWait(0.5);
ActionPlayAnimation(ANIMATION_LOOPING_GET_MID, 1.0, 1.0);
object oDestination=GetNearestObjectByTag("CIBLEWP001");
ActionMoveToObject(oDestination);
CreateItemOnObject("nw_wthdt001", OBJECT_SELF, 3);
ActionEquipMostDamagingRanged();
ActionDoCommand(SetLocalInt(OBJECT_SELF, "ETATCIBLE", 1));
}
}
break;
}