75 lines
1.3 KiB
Plaintext
75 lines
1.3 KiB
Plaintext
![]() |
extern void object::Produce( )
|
||
|
{
|
||
|
point path[7];
|
||
|
int i;
|
||
|
float r;
|
||
|
|
||
|
errmode(0); // ne stoppe pas si erreur
|
||
|
ipf(10); // 10 instructions / second
|
||
|
while ( ismovie() != 0 ) wait(1);
|
||
|
|
||
|
path[0].x = cmdline(0);
|
||
|
path[0].y = cmdline(1);
|
||
|
path[1].x = cmdline(2);
|
||
|
path[1].y = cmdline(3);
|
||
|
path[2].x = cmdline(4);
|
||
|
path[2].y = cmdline(5);
|
||
|
path[3].x = cmdline(6);
|
||
|
path[3].y = cmdline(7);
|
||
|
path[4].x = cmdline(8);
|
||
|
path[4].y = cmdline(9);
|
||
|
path[5].x = cmdline(10);
|
||
|
path[5].y = cmdline(11);
|
||
|
path[6].x = cmdline(12);
|
||
|
path[6].y = cmdline(13);
|
||
|
|
||
|
i = 1;
|
||
|
while ( true )
|
||
|
{
|
||
|
goto(path[i%7]);
|
||
|
|
||
|
if ( rand() < 0.2 ) // attaqueuse 1x / 5
|
||
|
{
|
||
|
produce(position, orientation, AlienAnt, "antattsw.txt");
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if ( AlienCount() < 10 )
|
||
|
{
|
||
|
r = rand();
|
||
|
if( r < 0.3 )
|
||
|
{
|
||
|
produce(position, orientation, AlienAnt, "antt41.txt");
|
||
|
}
|
||
|
if( r >= 0.6 )
|
||
|
{
|
||
|
produce(position, orientation, AlienAnt, "antt42.txt");
|
||
|
}
|
||
|
if( r < 0.6 and r >= 0.3 )
|
||
|
{
|
||
|
produce(position, orientation, AlienAnt, "antt43.txt");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
i ++;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
int object::AlienCount()
|
||
|
{
|
||
|
object item;
|
||
|
int total = 0;
|
||
|
int i = 0;
|
||
|
|
||
|
while ( true )
|
||
|
{
|
||
|
item = retobject(i++);
|
||
|
if ( item == null ) return total;
|
||
|
|
||
|
if ( item.category == AlienAnt )
|
||
|
{
|
||
|
total ++;
|
||
|
}
|
||
|
}
|
||
|
}
|