I like the idea of feeding the greens, though I still want the chocobo to be a flighty as in FF7 when trying to catch one for a ride.
In FF7, you had to have a chocobo lure in your inventory for the chocobo to appear in your battles, and then you fed it greens during the turnbased battle.
Lingarn's main riding script
;=============================================================================; Horse Riding Script by Madmax ( 2004 );=============================================================================Begin _Chocobo_normal_ridefloat tempfloat anglefloat zanglefloat zzanglefloat xmulfloat ymulshort OnlyOnceshort quadrantshort clockwiseshort ridingmodeshort walkrunmodeshort companionmodeshort pressedshort pressed2short doOnceshort pheightshort dismountshort horsespeedshort buttonshort runningshort frontbackpositionfloat xxfloat yyfloat zzfloat timerfloat timer2short companionif ( Menumode == 1 ) returnendif;=============================================================================; Randomize horse speed;=============================================================================if ( OnlyOnce == 0 ) setscale 1.0; set companion to 1 ;Uncomment for pack animals set horsespeed to 30 ; a variable speed set frontbackposition to 30 ; position the player either front or back of the creature set OnlyOnce to 1endif;=============================================================================; Menu option for companion mode;=============================================================================if ( companionmode == 1 ) set button to GetButtonPressed if ( button < 0 ) return else if ( button == 0 ) AiFollow "player" 0 0 0 0 elseif ( button == 1 ) messagebox "The horse stands firm" AiWander 0 0 0 0 playgroup idle 1 elseif ( button == 2 ) messagebox "The horse is delighted with the food" elseif ( button == 3 ) messagebox "Horse Speed = %.0f", horsespeed endif set companionmode to 0 endifendif;=============================================================================; Activate Horse Riding;=============================================================================if ( ridingmode == 0 ) if ( OnActivate == 1 ) if ( GetHealth <= 0 ) ; if creature is dead, disable riding and access inventory only Activate return endif if ( getpos, z < -70 ) ; this automatically gets the horse to follow you out of the water AiFollow "player" 0 0 0 0 messagebox "The chocobo seems lost in the water. It seems to be following you......" return endif if ( GetPCSneaking == 1 ) ; this opens up the command menu Activate return endif set ridingmode to 1 AiWander, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 "player"->DisableLevitation "player"->addspell, "ridingspell" playsound "choco_call" set doOnce to 1 ;------------------------------------------------------------------------------------------------------------------------------ ; Setting player sitting height ( You can also add the riding pants script here ) ;------------------------------------------------------------------------------------------------------------------------------ if ( "player"->GetRace, "Argonian" == 1 ) set pheight to 16 elseif ( "player"->GetRace, "Breton" == 1 ) set pheight to 28 elseif ( "player"->GetRace, "Dark Elf" == 1 ) set pheight to 29 elseif ( "player"->GetRace, "High Elf" == 1 ) set pheight to 21 elseif ( "player"->GetRace, "Imperial" == 1 ) set pheight to 28 elseif ( "player"->GetRace, "Khajiit" == 1 ) set pheight to 19 elseif ( "player"->GetRace, "Nord" == 1 ) set pheight to 26 elseif ( "player"->GetRace, "Orc" == 1 ) set pheight to 26 elseif ( "player"->GetRace, "Redguard" == 1 ) set pheight to 26 elseif ( "player"->GetRace, "Wood Elf" == 1 ) set pheight to 36 else set pheight to 29 endif endif returnendifif ( CellChanged == 1 ) AiWander 0 0 0 0 0 0 0 0 0 0 0endif;=============================================================================; Calculate x and y forward direction *DO NOT TOUCH THIS PORTION*;=============================================================================set zangle to "player"->getangle, zif ( zangle >= 0 ) set clockwise to 1 set zzangle to zangleelse set clockwise to 0 set zzangle to ( -1 * zangle )endifif ( zzangle <= 45 ) set angle to zzangle set quadrant to 1elseif ( zzangle <= 90 ) set angle to ( 90 - zzangle ) set quadrant to 2elseif ( zzangle <= 135 ) set angle to ( zzangle - 90 ) set quadrant to 3elseif ( zzangle <= 180 ) set angle to ( 180 - zzangle ) set quadrant to 4endif if ( angle <= 0.5 ) set xmul to 0 set ymul to 1elseif ( angle <= 1.5 ) set xmul to 0.01745 set ymul to 0.99985elseif ( angle <= 2.5 ) set xmul to 0.03490 set ymul to 0.99939elseif ( angle <= 3.5 ) set xmul to 0.05234 set ymul to 0.99863elseif ( angle <= 4.5 ) set xmul to 0.06976 set ymul to 0.99756elseif ( angle <= 5.5 ) set xmul to 0.08716 set ymul to 0.99619elseif ( angle <= 6.5 ) set xmul to 0.10453 set ymul to 0.99452elseif ( angle <= 7.5 ) set xmul to 0.12187 set ymul to 0.99255elseif ( angle <= 8.5 ) set xmul to 0.13917 set ymul to 0.99027elseif ( angle <= 9.5 ) set xmul to 0.15643 set ymul to 0.98769elseif ( angle <= 10.5 ) set xmul to 0.17365 set ymul to 0.98481elseif ( angle <= 11.5 ) set xmul to 0.19081 set ymul to 0.98163elseif ( angle <= 12.5 ) set xmul to 0.20791 set ymul to 0.97815elseif ( angle <= 13.5 ) set xmul to 0.22495 set ymul to 0.97437elseif ( angle <= 14.5 ) set xmul to 0.24192 set ymul to 0.97030elseif ( angle <= 15.5 ) set xmul to 0.25882 set ymul to 0.96593elseif ( angle <= 16.5 ) set xmul to 0.27564 set ymul to 0.96126elseif ( angle <= 17.5 ) set xmul to 0.29237 set ymul to 0.95630elseif ( angle <= 18.5 ) set xmul to 0.30902 set ymul to 0.95106elseif ( angle <= 19.5 ) set xmul to 0.32557 set ymul to 0.94552elseif ( angle <= 20.5 ) set xmul to 0.34202 set ymul to 0.93969elseif ( angle <= 21.5 ) set xmul to 0.35837 set ymul to 0.93358elseif ( angle <= 22.5 ) set xmul to 0.37461 set ymul to 0.92718elseif ( angle <= 23.5 ) set xmul to 0.39073 set ymul to 0.92050elseif ( angle <= 24.5 ) set xmul to 0.40674 set ymul to 0.91355elseif ( angle <= 25.5 ) set xmul to 0.42262 set ymul to 0.90631elseif ( angle <= 26.5 ) set xmul to 0.43837 set ymul to 0.89879elseif ( angle <= 27.5 ) set xmul to 0.45399 set ymul to 0.89101elseif ( angle <= 28.5 ) set xmul to 0.46947 set ymul to 0.88295elseif ( angle <= 29.5 ) set xmul to 0.48481 set ymul to 0.87462elseif ( angle <= 30.5 ) set xmul to 0.50000 set ymul to 0.86603elseif ( angle <= 31.5 ) set xmul to 0.51504 set ymul to 0.85717elseif ( angle <= 32.5 ) set xmul to 0.52992 set ymul to 0.84805elseif ( angle <= 33.5 ) set xmul to 0.54464 set ymul to 0.83867elseif ( angle <= 34.5 ) set xmul to 0.55919 set ymul to 0.82904elseif ( angle <= 35.5 ) set xmul to 0.57358 set ymul to 0.81915elseif ( angle <= 36.5 ) set xmul to 0.58779 set ymul to 0.80902elseif ( angle <= 37.5 ) set xmul to 0.60182 set ymul to 0.79864elseif ( angle <= 38.5 ) set xmul to 0.61566 set ymul to 0.78801elseif ( angle <= 39.5 ) set xmul to 0.62932 set ymul to 0.77715elseif ( angle <= 40.5 ) set xmul to 0.64279 set ymul to 0.76604elseif ( angle <= 41.5 ) set xmul to 0.65606 set ymul to 0.75471elseif ( angle <= 42.5 ) set xmul to 0.66913 set ymul to 0.74314elseif ( angle <= 43.5 ) set xmul to 0.68200 set ymul to 0.73135elseif ( angle <= 44.5 ) set xmul to 0.69466 set ymul to 0.71934else set xmul to 0.70711 set ymul to 0.70711endifif ( quadrant > 1 ) if ( quadrant < 4 ) set temp to xmul set xmul to ymul set ymul to temp endifendifif ( clockwise == 1 ) if ( quadrant > 2 ) set ymul to ( -1 * ymul ) endifelse if ( quadrant <= 2 ) set xmul to ( -1 * xmul ) else set xmul to ( -1 * xmul ) set ymul to ( -1 * ymul ) endifendif;=============================================================================; Calculate and position/rotate horse direction *DO NOT TOUCH THIS PORTION*;=============================================================================set timer to ( timer + GetSecondsPassed )if ( timer > 0.1 ) set timer to 0 if ( clockwise == 1 ) if ( zzangle <= 0.5 ) face 0, 100000000 elseif ( zzangle <= 10.5 ) face 17364810, 98480770 elseif ( zzangle <= 20.5 ) face 34202010, 93969260 elseif ( zzangle <= 30.5 ) face 50000000, 86602540 elseif ( zzangle <= 40.5 ) face 64278760, 76604440 elseif ( zzangle <= 50.5 ) face 76604440, 64278760 elseif ( zzangle <= 60.5 ) face 86602540, 50000000 elseif ( zzangle <= 70.5 ) face 93969260, 34202010 elseif ( zzangle <= 80.5 ) face 98480770, 17364810 elseif ( zzangle <= 90.5 ) face 100000000, 0 elseif ( zzangle <= 100.5 ) face 98480770, -17364810 elseif ( zzangle <= 110.5 ) face 93969260, -34202010 elseif ( zzangle <= 120.5 ) face 86602540, -50000000 elseif ( zzangle <= 130.5 ) face 76604440, -64278760 elseif ( zzangle <= 140.5 ) face 64278760, -76604440 elseif ( zzangle <= 150.5 ) face 50000000, -86602540 elseif ( zzangle <= 160.5 ) face 34202010, -93969260 elseif ( zzangle <= 170.5 ) face 17364810, -98480770 else face 0, -100000000 endif else if ( zzangle <= 0.5 ) face 0, 100000000 elseif ( zzangle <= 10.5 ) face -17364810, 98480770 elseif ( zzangle <= 20.5 ) face -34202010, 93969260 elseif ( zzangle <= 30.5 ) face -50000000, 86602540 elseif ( zzangle <= 40.5 ) face -64278760, 76604440 elseif ( zzangle <= 50.5 ) face -76604440, 64278760 elseif ( zzangle <= 60.5 ) face -86602540, 50000000 elseif ( zzangle <= 70.5 ) face -93969260, 34202010 elseif ( zzangle <= 80.5 ) face -98480770, 17364810 elseif ( zzangle <= 90.5 ) face -100000000, 0 elseif ( zzangle <= 100.5 ) face -98480770, -17364810 elseif ( zzangle <= 110.5 ) face -93969260, -34202010 elseif ( zzangle <= 120.5 ) face -86602540, -50000000 elseif ( zzangle <= 130.5 ) face -76604440, -64278760 elseif ( zzangle <= 140.5 ) face -64278760, -76604440 elseif ( zzangle <= 150.5 ) face -50000000, -86602540 elseif ( zzangle <= 160.5 ) face -34202010, -93969260 elseif ( zzangle <= 170.5 ) face -17364810, -98480770 else face 0, -100000000 endif endifendif;=============================================================================; Horse movement;=============================================================================if ( pressed2 == 0 ) if ( GetPCRunning == 1 ) set pressed2 to 1 endifelse if ( GetPCRunning == 0 ) if ( running == 0 ) set running to 1 else set running to 0 endif set pressed2 to 0 endifendifif ( running == 1 ) if ( pressed == 3 ) set pressed to 0 stopsound "choco_call" ; disable this if you do not need this elseif ( pressed == -1 ) if ( GetPCSneaking == 0 ) set pressed to 0 endif endif if ( walkrunmode == 0 ) playgroup walkforward 2 set xx to ( getpos, x + ( 10 * xmul ) ) ; trot speed can be adjusted here set yy to ( getpos, y + ( 10 * ymul ) ) ; trot speed can be adjusted here if ( GetSoundPlaying, "_trot" == 0 ) playloopsound3D "_trot" ; disable this if you do not need this endif elseif ( walkrunmode == 1 ) if ( pressed <= 3 ) playgroup runforward 2 set xx to ( getpos, x + ( horsespeed * xmul ) ) set yy to ( getpos, y + ( horsespeed * ymul ) ) if ( GetSoundPlaying, "_run" == 0 ) playloopsound3D "_run" ; disable this if you do not need this endif endif endif setpos, x, xx setpos, y, yy setAngle, z, zangle set zz to ( getpos, z + pheight ) set xx to ( xx + ( frontbackposition * xmul ) ) set yy to ( yy + ( frontbackposition * ymul ) ) "player"->setpos, x, xx "player"->setpos, y, yy "player"->setpos, z, zz player -> fall if ( zz < ( pheight - 70 ) ) ; set allowable water height set dismount to 2 endif set doOnce to 2else if ( doOnce == 0 ) if ( walkrunmode == 1 ) playsound "choco_call" ; disable this if you do not need this endif set doOnce to 1 elseif ( doOnce == 2 ) set doOnce to 0 endif if ( pressed <= 1 ) playgroup idle 1 stopsound "_run" ; disable this if you do not need this stopsound "_trot" ; disable this if you do not need this set xx to getpos, x set yy to getpos, y setAngle, z, zangle set zz to ( getpos, z + pheight ) set xx to ( xx + ( frontbackposition * xmul ) ) set yy to ( yy + ( frontbackposition * ymul ) ) "player"->setpos, x, xx "player"->setpos, y, yy "player"->setpos, z, zz player -> fall endifendif;=============================================================================; Using SNEAK key to change horse movement mode;=============================================================================if ( pressed == 0 ) if ( GetPCSneaking == 1 ) set timer2 to 0 set pressed to 1 endifelseif ( pressed == 1 ) set timer2 to ( timer2 + GetSecondsPassed ) if ( GetPCSneaking == 0 ) if ( walkrunmode == 0 ) set walkrunmode to 1 messagebox "RUN MODE" else set walkrunmode to 0 messagebox "TROT MODE" endif stopsound "_run" ; disable this if you do not need this stopsound "_trot" ; disable this if you do not need this set pressed to 0 else if ( timer2 > 1 ) stopsound "_run" ; disable this if you do not need this stopsound "_trot" ; disable this if you do not need this set timer2 to 0 if ( walkrunmode == 0 ) set running to 0 set pressed to 2; playgroup idle7 1 ; this is the special move function. Just put in the animation group that you want to show here or disable it else if ( running == 0 ) set pressed to 0 else player->EnableLevitation set timer2 to 0 set pressed to 4; playsound "choco_call" ; disable this if you do not need this endif endif endif endifelseif ( pressed == 2 ) if ( GetPCSneaking == 0 ) set pressed to 0 else set timer2 to ( timer2 + GetSecondsPassed ) if ( timer2 < 1.5 ); set xx to ( getpos, x - ( 55 * xmul ) ) ; disable this if special move is not required; set yy to ( getpos, y - ( 55 * ymul ) ) ; disable this if special move is not required; set zz to ( getpos, z + pheight + 25 ) ; disable this if special move is not required "player"->setpos, x, xx "player"->setpos, y, yy "player"->setpos, z, zz player -> fall else set pressed to 3 playgroup idle 1 endif endifelseif ( pressed == 3 ) if ( GetPCSneaking == 0 ) set pressed to 0 endif set xx to ( getpos, x ) set yy to ( getpos, y ) set zz to ( getpos, z + pheight ) set xx to ( xx + ( frontbackposition * xmul ) ) set yy to ( yy + ( frontbackposition * ymul ) ) "player"->setpos, x, xx "player"->setpos, y, yy "player"->setpos, z, zz player -> fallelseif ( pressed == 4 ) stopsound "_run" addspell, "ridingspell2" set zz to ( getpos, z + 30 ) setpos, z, zz set zz to ( zz + pheight ) "player"->setpos, z, zz set pressed to 5 addspell, ridingspell3elseif ( pressed == 5 ) set timer2 to ( timer2 + GetSecondsPassed ) if ( timer2 < 0.5 ) set zz to ( getpos, z + 10 ) setpos, z, zz elseif ( timer2 > 1.8 ) removespell, "ridingspell3" set pressed to -1 set timer2 to 0 player->DisableLevitation else removespell, ridingspell2 endif set xx to ( getpos, x + ( ( horsespeed - 10 ) * xmul ) ) set yy to ( getpos, y + ( ( horsespeed - 10 ) * ymul ) ) setpos, x, xx setpos, y, yy set zz to ( getpos, z + pheight + 20 ) set xx to ( xx + ( frontbackposition * xmul ) ) set yy to ( yy + ( frontbackposition * ymul ) ) "player"->setpos, x, xx "player"->setpos, y, yy "player"->setpos, z, zz player -> fallendif;=============================================================================; Detect creature death and stop riding;=============================================================================if ( GetHealth <= 0 ) set dismount to 1endif;=============================================================================; Dismount horse;=============================================================================if ( OnActivate == 1 ) set dismount to 1endifif ( dismount > 0 ) stopsound "_run" ; disable this if you do not need this stopsound "_trot" ; disable this if you do not need this playsound "choco_call" ; disable this if you do not need this playgroup idle 1 set ridingmode to 0 set running to 0 "player"->removespell, "ridingspell" "player"->EnableLevitation if ( dismount == 1 ) messagebox "Dismount" else messagebox "You cannot ride a chocobo underwater" endif AiWander, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 set walkrunmode to 0 set dismount to 0 fixmeendif