Hello again, I have another script, it's bigger, longer and meaner.
It works (now, it took me 3 days) but as usual, there's a pretty high chance I've added useless stuff and miss some important one, so please, can you check my homework again??
Here's what the scripts do:
It's a piece of clothing called "music sheet".
When I equip it, I don't want to have it equipped (I used skipequio, not sure I did it right).
Then, if I have one of the 4 lutes (they are weapons) , and if it's drawn, the music is streamed.
But also! I want a spell to be given depending on which lute is equipped and only as long as the lute is equip (but not drawn) and the music sheet in the inventory.
Begin aa_sheetmusic04_script short OnPCEquip short PCSkipEquip set PCSkipEquip to 1 if ( OnPCEquip == 1 ) if ( player->HasItemEquipped "aa_lute_weap_play" == 1 ) If ( Player -> GetWeaponDrawn ) StreamMusic, "Bard\Lute4.mp3" set gamehour to ( gamehour + 1 ) set aaBardExp to ( aaBardExp + 1 ) fadeout, 10 fadein, 10 StartScript "aa_RemoveSheetMusic04" endif elseif ( player->HasItemEquipped "aa_EBlute_weap_play" == 1 ) If ( Player -> GetWeaponDrawn ) StreamMusic, "Bard\Lute4.mp3" set gamehour to ( gamehour + 1 ) set aaBardExp to ( aaBardExp + 1 ) fadeout, 10 fadein, 10 StartScript "aa_RemoveSheetMusic04" endif elseif ( player->HasItemEquipped "aa_KOlute_weap_play" == 1 ) If ( Player -> GetWeaponDrawn ) StreamMusic, "Bard\Lute4.mp3" set gamehour to ( gamehour + 1 ) set aaBardExp to ( aaBardExp + 1 ) fadeout, 10 fadein, 10 StartScript "aa_RemoveSheetMusic04" endif elseif ( player->HasItemEquipped "aa_PJMlute_weap_play" == 1 ) If ( Player -> GetWeaponDrawn ) StreamMusic, "Bard\Lute4.mp3" set gamehour to ( gamehour + 1 ) set aaBardExp to ( aaBardExp + 1 ) fadeout, 10 fadein, 10 StartScript "aa_RemoveSheetMusic04" endif endif set OnPCEquip to 0 endif if ( player->HasItemEquipped "aa_lute_weap_play" == 1 ) If ( ( player->GetItemCount, "aa_lute_sheetmusic04" ) != 0 ) If ( ( ScriptRunning, "aa_scorespell04acontrol" ) != 1 ) If ( MenuMode == 0 ) player->AddSpell, "aa_scorespell04a" StartScript, "aa_scorespell04acontrol" endif endif endif elseif ( player->HasItemEquipped "aa_EBlute_weap_play" == 1 ) If ( ( player->GetItemCount, "aa_lute_sheetmusic04" ) != 0 ) If ( ( ScriptRunning, "aa_scorespell04bcontrol" ) != 1 ) If ( MenuMode == 0 ) player->AddSpell, "aa_scorespell04b" StartScript, "aa_scorespell04bcontrol" endif endif endif elseif ( player->HasItemEquipped "aa_KOlute_weap_play" == 1 ) If ( ( player->GetItemCount, "aa_lute_sheetmusic04" ) != 0 ) If ( ( ScriptRunning, "aa_scorespell04ccontrol" ) != 1 ) If ( MenuMode == 0 ) player->AddSpell, "aa_scorespell04c" StartScript, "aa_scorespell04ccontrol" endif endif endif elseif ( player->HasItemEquipped "aa_PJMlute_weap_play" == 1 ) If ( ( player->GetItemCount, "aa_lute_sheetmusic04" ) != 0 ) If ( ( ScriptRunning, "aa_scorespell04dcontrol" ) != 1 ) If ( MenuMode == 0 ) player->AddSpell, "aa_scorespell04d" StartScript, "aa_scorespell04dcontrol" endif endif endif endif end
This is the first global script used when a song is played to avoid the duplication of the music sheet (it's a glove btw) if used from a quick key
Begin aa_RemoveSheetMusic04 short frameCounter set frameCounter to ( frameCounter + 1 ) if ( frameCounter < 2 ) ; let music script finish executing return else player->RemoveItem "aa_lute_sheetmusic04" 1 player->AddItem "aa_lute_sheetmusic04" 1 set frameCounter to 0 StopScript "aa_RemoveSheetMusic04" endif End
And finally, this script removes the spell if the conditions aren't met anymore. There are 4 variants of this script (a, b, c and d) for each variant of the spell.
begin aa_scorespell04acontrol If ( ( player->GetItemCount, "aa_lute_sheetmusic04" ) == 0 ) If ( MenuMode == 0 ) player->RemoveSpell, "aa_scorespell04a" StopScript, aa_scorespell04acontrol endif elseif ( player->HasItemEquipped "aa_lute_weap_play" == 0 ) If ( MenuMode == 0 ) player->RemoveSpell, "aa_scorespell04a" StopScript, aa_scorespell04acontrol endif endifEnd
PHEW!
So, what do you think? Do I have a potential CTD sympathiser?