Let Kline switch weapons on Venus (except in Classic difficulty).

It's a modified version of the weapon switching: if Kline's health
is less than 1500, the spread shot replaces the concentrated triple
shot.

This also keeps Kline with bullet weapons during the third phase.

The main purpose of this change is to make Kline consistent. He now
switches his secondary weapon, and that's about it. The way it was
in the original, it started out much easier than previous encounters,
then it went to slightly easier than previous encounters, then
something completely unlike previous encounters, and finally
something noticeably harder than previous encounters. Now, it starts
out exactly the same as previous encounters, and then gets
progressively harder.
This commit is contained in:
onpon4 2016-01-08 18:09:35 -05:00
parent 66faa897a5
commit 14a9dace7e
2 changed files with 12 additions and 7 deletions

View File

@ -1369,14 +1369,16 @@ void alien_setKlineAttackMethod(object *alien)
alien->flags |= FL_CANCLOAK;
alien->chance[0] = 100;
alien->chance[1] = 2;
alien->flags &= ~FL_CANNOTDIE;
}
else if (alien->shield <= 1000)
{
setRadioMessage(FS_KLINE, "Your ability to stay alive irritates me!! Try dodging some of these!!", 1);
alien->weaponType[0] = W_DIRSHOCKMISSILE;
if (game.difficulty == DIFFICULTY_ORIGINAL)
{
alien->weaponType[0] = W_DIRSHOCKMISSILE;
alien->chance[0] = 2;
}
alien->weaponType[1] = W_DIRSHOCKMISSILE;
alien->chance[0] = 2;
alien->chance[1] = 2;
alien->flags |= FL_AIMS;
}
@ -1396,14 +1398,17 @@ void alien_setKlineAI(object *alien)
// Weapon type change
if (CHANCE(1. / 3.))
{
if (game.area != MISN_VENUS)
if ((game.area != MISN_VENUS) || (game.difficulty != DIFFICULTY_ORIGINAL))
{
alien->flags &= ~FL_AIMS;
switch(rand() % 2)
{
case 0:
alien->weaponType[0] = W_TRIPLE_SHOT;
if ((game.area != MISN_VENUS) || (alien->shield > 1500))
alien->weaponType[0] = W_TRIPLE_SHOT;
else
alien->weaponType[0] = W_SPREADSHOT;
break;
case 1:
alien->weaponType[0] = W_AIMED_SHOT;
@ -1428,7 +1433,7 @@ void alien_setKlineAI(object *alien)
break;
case 1:
case 2:
// Kline only attacks then he is ready!
// Kline only attacks when he is ready!
if ((!(alien->flags & FL_NOFIRE)) &&
((game.area == MISN_MOEBO) ||
game.difficulty != DIFFICULTY_ORIGINAL))

View File

@ -73,7 +73,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define FL_DROPMINES 512
#define FL_AIMS 1024
#define FL_DISABLED 2048
#define FL_CANNOTDIE 4096 // This will only apply to Kline before the final mission
#define FL_CANNOTDIE 4096 // No longer used
#define FL_RUNSAWAY 8192
#define FL_ALWAYSFACE 16384 // Kline doesn't turn his back on you! ;)
#define FL_CIRCLES 32768L // Kline can circle around