Something I would ask, if you decide to make a version of this for 2.54, is to modify the drawing system, to use sprites provided by the item editor. The sword stab, slash, and beam sprites, for example, can be set, and read, as any normal sword would.
You can also do this now:
item script WeaponLauncher{
void run (int d0, int d1, int d2, int d3, int d4, int d5, int d6, int d7){
int q;
int ffcscript = this->Attributes[9]; //From the item editor.
int itm = this->ID;
int args[8] = {d0,d1,d2,d3,d4,d5,d6,d7}; //Now you have all eight, plus up to nine more Attributes[].
ffc launch = RunFFCScriptOrQuit(ffcscript, args);
/* You could also use the editor flags 1-5 as a flagset and forward them.
int flags;
if ( this->Flags[0] ) flags |= 00001b; if ( this->Flags[1] ) flags |= 00010b; if ( this->Flags[2] ) flags |= 00100b;
if ( this->Flags[3] ) flags |= 01000b; if ( this->Flags[4] ) flags |= 10000b; //Silly way to store five individual bits.
launch->Misc[17] = flags; //FFC can now read the item flags as flagset&bit.
*/
// or just use the forwarded item ID, which is simpler.
launch->Misc[16] = this->ID; //Store the ID of the item that launched this.
//then do itemdata id = Game->LoadItemData(this->Misc[16]) from the ffc, and you can read any property of
//the item that spawned it. :)
}
}
You can see that your options have opened up quite a bit.