//Script to control the child weapon of an item, mid-flight
//This is a passive item script and must run as such.
//v0.1, 16th September, 2019, by ZoriaRPG.
item script passive_weapon_dir_control
{
void run()
{
lweapon child; int currentbutton;
for ( int q = Screen->NumLWeapons(); q > 0; --q ) //match the child weapon of this item to it
{
lweapon temp = Screen->LoadLWeapon(q);
if ( temp->Parent == this->ID )
{
child = temp; break;
}
}
if ( !child ) Quit();
while(child->isValid())
{
if ( Hero->ItemA == this->ID )
{
currentbutton = CB_A;
}
else if ( Hero->ItemB == this->ID )
{
currentbutton = CB_B;
}
else currentbutton = 0;
if ( currentbutton && Input->Button[currentbutton] )
{
//holding down the item button
if ( Input->Button[CB_UP] )
{
if ( Input->Button[CB_LEFT] )
{
child->Dir = DIR_LEFTUP;
}
else if ( Input->Button[CB_RIGHT] )
{
child->Dir = DIR_RIGHTUP;
}
else child->Dir = DIR_UP;
}
else if ( Input->Button[CB_DOWN] )
{
if ( Input->Button[CB_LEFT] )
{
child->Dir = DIR_LEFTDOWN;
}
else if ( Input->Button[CB_RIGHT] )
{
child->Dir = DIR_RIGHTDOWN;
}
else child->Dir = DIR_DOWN;
` }
else if ( Input->Button[CB_RIGHT] ) //'else if', so that we don't clash.
{ //Won't conflict with combining with up or down.
child->Dir = DIR_RIGHT;
}
else if ( Input->Button[CB_LEFT] ) //'else if', so that we don't clash
{ //Won't conflict with combining with up or down.
child->Dir = DIR_LEFT;
}
}
Waitframe();
}
}
}
Comments