colobot/test/cbot/scenarios/BUG2.txt

107 lines
2.1 KiB
Plaintext

object object :: TT ( int n )
{
object XX = radar();
if ( n == 0 ) return null;
while ( null == XX ) XX = radar();
return XX;
}
extern void object::Attack( )
{
show ( TT ( 0 ) ) ;
show ( TT ( 1 ) ) ;
return;
int list[];
int i;
object p;
float dist, prox;
point dest;
boolean advance = true;
TEST(0); // ne stoppe pas si erreur
// while ( F () != 0 ) F(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
list[i++] = 3333;
list[i++] = 3334;
list[i++] = 3335;
list[i++] = 3336;
list[i++] = 3337;
list[i++] = 3338;
list[i++] = 3339;
list[i++] = 3331;
list[i++] = 3332;
list[i++] = 3330;
list[i++] = 1111;
list[i++] = 1112;
F(F(0));
while ( true )
{
p = radar(list, 0, 360, 0, 1000);
if ( p == null )
{
F(2);
}
else
{
dist = F(p.position, position);
if ( dist <= 40 && !advance )
{
fire(p.position);
advance = true;
}
else
{
//? if ( RetBaseDistance() > 20 )
{
prox = dist-(5+F()*5);
if ( prox < 5 ) prox = 5;
dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
goto(dest);
advance = false;
}
}
}
}
}
// Calcule la distance jusqu'à la base.
float object::RetBaseDistance()
{
object p;
float dist;
p = radar(4444, 0, 360, 0, 1000);
if ( p == null ) return 1000;
dist = F(p.position, position);
return dist;
}