begin liminiel_slave_companion
short companion
short posession
short once
short free
short travel
short wander
float px
float py
float pz
if ( MenuMode == 1 ) ;Le script ne tourne pas pendant les dialogues ou l'ouverture de l'inventaire, ce
return ;qui est meilleur pour le déplacement de la souris
endif
if ( once == 0 )
set companion to 1 ;ici, je mets en place la possession et le partage d'inventaire...
set posession to 1 ;Pour simplifier les choses, ici, Liminiel arrive sans passer par un marchand
AIFollow Player 0 0 0 0 ;et je mets donc directement tout en marche au début du script;
AddTopic "Souhaits" ;afin de la faire apparaitre par un "PlaceAtPc"...
addTopic "Se déplacer seule"
set once to 1
endif
if ( free == 1 ) ;Là, si je la libère, elle disparaitra quand je serai hors de vue...
if ( cellchanged == 1 )
disable
SetDelete, 1
endif
endif
if ( GetCurrentAIPackage == 3 )
if ( GetDistance, Player > 2000 ) ;Là, le warp... Si elle est en AiPackage 3 (Follow), et si elle est
set px to ( player-> GetPos, x ) ;éloignée de plus de 2000 unités du joueur, elle calque ses
set py to ( player-> GetPos, y ) ;coordonnées X,Y et Z sur celles du joueur.. C'est simple mais
set pz to ( player-> GetPos, z ) ;efficace....
SetPos, x, px
SetPos, y, py
SetPos, z, pz
endif
endif
if ( travel > 0 )
if ( cellchanged == 0 )
if ( travel == 1 )
positioncell -23265.2344, -15409.3721, 556.0000, 0, "Balmora"
set wander to 1
set travel to 0
endif ;Là, le bloc des voyages
if ( travel == 2 ) ;instantanés... Ces fonctions
positioncell -14688.3975, 52477.6445, 2119.9502, 0, "Ald'ruhn" ;ne peuvent être que dans le
set wander to 1 ;script, parce qu'elles causent
set travel to 0 ;un crash si elles sont placées
endif ;dans les résultats de dialogue...
if ( travel == 3 )
positioncell 48308.0547, -81831.6328, 576.7466, 0, "Vivec"
set wander to 1
set travel to 0
endif
if ( travel == 4 )
positioncell 105102.6641, -61811.3477, 635.0835, 0, "Molag Mar"
set wander to 1
set travel to 0
endif
if ( travel == 5 )
positioncell 149019.1250, 29684.0938, 700.0000, 0, "Complexe du Serval"
set wander to 1
set travel to 0
endif
if ( travel == 6 )
positioncell 98660.6641, 111530.5625, 308.0195, 0, "Vos"
set wander to 1
set travel to 0
endif
if ( travel == 7 )
positioncell 59803.8828, 183183.3594, 314.2573, 0, "Dagon Fel"
set wander to 1
set travel to 0
endif
if ( travel == 8 )
positioncell -67142.3594, 139129.8594, 205.1514, 0, "Khuul"
set wander to 1
set travel to 0
endif
if ( travel == 9 )
positioncell -84440.8203, 92241.1953, 1054.9253, 0, "Gnisis"
set wander to 1
set travel to 0
endif
if ( travel == 10 )
positioncell 20736.9922, 38396.8008, 1161.2622, 0, "Porte des Ames"
set wander to 1
set travel to 0
endif
if ( travel == 11 )
positioncell -5.3433, 2476.1021, 173.3262, 0, "Longsanglot, place Brindisi Dorom"
set wander to 1
set travel to 0
endif
endif
endif
if ( wander > 0 ) ;Ici, elle fait les cent pas en attendant le joueur après son voyage
if ( wander == 1 ) ;instantané....
AIWander 1024 20 20 20 10 10
set wander to 2
endif
if ( wander == 2 ) ;Là, quand le joueur s'approche à moins de 2000 unités alors
if ( GetDistance, player < 2000 ) ;qu'elle vient de voyager, elle le rejoint et se remet à le suivre...
AIFollow Player 0 0 0 0
set wander to 0
endif
endif
endif
end