int initial_flags[NO_OF_SHIPS + 1] =
{
0, // NULL,
- 0, // missile
+ FLG_TARGET, // missile
0, // coriolis
FLG_SLOW | FLG_FLY_TO_PLANET, // escape
- FLG_INACTIVE, // alloy
- FLG_INACTIVE, // cargo
- FLG_INACTIVE, // boulder
- FLG_INACTIVE, // asteroid
- FLG_INACTIVE, // rock
+ FLG_INACTIVE | FLG_TARGET, // alloy
+ FLG_INACTIVE | FLG_TARGET, // cargo
+ FLG_INACTIVE | FLG_TARGET, // boulder
+ FLG_INACTIVE | FLG_TARGET, // asteroid
+ FLG_INACTIVE | FLG_TARGET, // rock
FLG_FLY_TO_PLANET | FLG_SLOW, // shuttle
FLG_FLY_TO_PLANET | FLG_SLOW, // transporter
0, // cobra3
FLG_SLOW, // anaconda
FLG_SLOW, // hermit
FLG_BOLD | FLG_POLICE, // viper
- FLG_BOLD | FLG_ANGRY, // sidewinder
- FLG_BOLD | FLG_ANGRY, // mamba
- FLG_BOLD | FLG_ANGRY, // krait
- FLG_BOLD | FLG_ANGRY, // adder
- FLG_BOLD | FLG_ANGRY, // gecko
- FLG_BOLD | FLG_ANGRY, // cobra1
- FLG_SLOW | FLG_ANGRY, // worm
- FLG_BOLD | FLG_ANGRY, // cobra3
- FLG_BOLD | FLG_ANGRY, // asp2
- FLG_BOLD | FLG_ANGRY, // python
- FLG_POLICE, // fer_de_lance
- FLG_BOLD | FLG_ANGRY, // moray
- FLG_BOLD | FLG_ANGRY, // thargoid
- FLG_ANGRY, // thargon
+ FLG_BOLD | FLG_ANGRY | FLG_TARGET, // sidewinder
+ FLG_BOLD | FLG_ANGRY | FLG_TARGET, // mamba
+ FLG_BOLD | FLG_ANGRY | FLG_TARGET, // krait
+ FLG_BOLD | FLG_ANGRY | FLG_TARGET, // adder
+ FLG_BOLD | FLG_ANGRY | FLG_TARGET, // gecko
+ FLG_BOLD | FLG_ANGRY | FLG_TARGET, // cobra1
+ FLG_SLOW | FLG_ANGRY | FLG_TARGET, // worm
+ FLG_BOLD | FLG_ANGRY | FLG_TARGET, // cobra3
+ FLG_BOLD | FLG_ANGRY | FLG_TARGET, // asp2
+ FLG_BOLD | FLG_ANGRY | FLG_TARGET, // python
+ FLG_POLICE, // fer_de_lance
+ FLG_BOLD | FLG_ANGRY | FLG_TARGET, // moray
+ FLG_BOLD | FLG_ANGRY | FLG_TARGET, // thargoid
+ FLG_ANGRY | FLG_TARGET, // thargon
FLG_ANGRY, // constrictor
FLG_POLICE | FLG_CLOAKED, // cougar
0 // dodec
type = universe[un].type;
flags = universe[un].flags;
- if (flags & FLG_INACTIVE)
- return;
-
+ if (flags & FLG_INACTIVE) {
+ universe[un].flags |= FLG_TACTICAL;
+ return;
+ }
+
if ((type == SHIP_CORIOLIS) || (type == SHIP_DODEC))
{
universe[un].flags |= FLG_ANGRY;
{
universe[un].rotx = 4;
universe[un].acceleration = 2;
- universe[un].flags |= FLG_ANGRY;
+ universe[un].flags |= FLG_ANGRY | FLG_TACTICAL;
}
}
ns = &universe[newship];
ns->velocity = flight_speed * 2;
- ns->flags = FLG_ANGRY;
+ ns->flags |= FLG_TACTICAL;
ns->target = missile_target;
if (universe[missile_target].type > SHIP_ROCK)
activate_ecm (0);
return;
}
- }
+ }
+
+ if ((rand255() < 16) &&
+ (ship_count[SHIP_CORIOLIS] || ship_count[SHIP_DODEC])) {
+ activate_ecm(0);
+ return;
+ }
nvec = unit_vector(&vec);
direction = vector_dot_product (&nvec, &missile->rotmat[2]);
if (rand255() > 200)
{
launch_enemy (un, SHIP_SIDEWINDER + (rand255() & 3), FLG_ANGRY | FLG_HAS_ECM, 113);
- ship->flags |= FLG_INACTIVE;
+ ship->flags |= FLG_INACTIVE | FLG_TARGET;
}
return;
if ((type == SHIP_THARGLET) && (ship_count[SHIP_THARGOID] == 0))
{
- ship->flags = 0;
+ ship->flags &= FLG_TARGET | FLG_TACTICAL;
ship->velocity /= 2;
return;
}
(ship->missiles >= (rand255() & 31)))
{
ship->missiles--;
+ ship->flags |= FLG_TACTICAL;
if (type == SHIP_THARGOID)
launch_enemy (un, SHIP_THARGLET, FLG_ANGRY, ship->bravery);
else
{
launch_enemy (un, SHIP_MISSILE, FLG_ANGRY, 126);
+ ship->flags |= FLG_HOSTILE;
info_message ("INCOMING MISSILE");
}
return;
(ship_list[type]->laser_strength != 0))
{
if (direction <= -0.917)
- ship->flags |= FLG_FIRING | FLG_HOSTILE;
+ ship->flags |= FLG_FIRING | FLG_HOSTILE | FLG_TACTICAL;
if (direction <= -0.972)
{
newship = create_other_ship (SHIP_THARGOID);
if (newship != -1)
{
- universe[newship].flags = FLG_ANGRY | FLG_HAS_ECM;
+ universe[newship].flags = FLG_ANGRY | FLG_HAS_ECM | FLG_TARGET;
universe[newship].bravery = 113;
if (rand255() > 64)
- launch_enemy (newship, SHIP_THARGLET, FLG_ANGRY | FLG_HAS_ECM, 96);
+ launch_enemy (newship, SHIP_THARGLET, FLG_ANGRY | FLG_HAS_ECM,
+ 96);
+ in_battle = 1;
}
}
if (rnd & 1)
universe[newship].flags |= FLG_HAS_ECM;
-// if (rnd & 2)
-// universe[newship].flags |= FLG_ANGRY;
+ if (rnd > 200)
+ universe[newship].flags |= FLG_ANGRY | FLG_TARGET;
}
}
if (newship != -1)
{
- universe[newship].flags = FLG_ANGRY;
+ // universe[newship].flags = FLG_ANGRY;
if ((rand255() > 200) || (type == SHIP_CONSTRICTOR))
universe[newship].flags |= FLG_HAS_ECM;
universe[newship].bravery = ((rand255() * 2) | 64) & 127;
- in_battle = 1;
+ if (type == SHIP_FER_DE_LANCE) {
+ if (rand255() > 160)
+ universe[newship].flags |= FLG_ANGRY | FLG_TARGET;
+ else {
+ universe[newship].rotmat[2].z = -1.0;
+ universe[newship].rotz = rand255() & 7;
+ rnd = rand255();
+ universe[newship].velocity = (rnd & 31) | 16;
+ }
+ }
+
+ if (universe[newship].flags & FLG_ANGRY)
+ in_battle = 1;
}
}
if (newship != -1)
{
- universe[newship].flags = FLG_ANGRY;
+ universe[newship].flags |= FLG_ANGRY;
if (rand255() > 245)
universe[newship].flags |= FLG_HAS_ECM;
newship = add_new_ship (type, x, y, z, rotmat, 0, 0);
if (newship != -1)
{
- universe[newship].flags = FLG_ANGRY;
+ universe[newship].flags |= FLG_ANGRY | FLG_TARGET;
if (rand255() > 245)
universe[newship].flags |= FLG_HAS_ECM;