Merge pull request #503 from NeonKnightOA/skilllevel

Easier handling of skill levels by using defines instead of numbers.
This commit is contained in:
Yamagi 2020-01-28 15:28:14 +01:00 committed by GitHub
commit 83c9358105
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
26 changed files with 56 additions and 50 deletions

View File

@ -769,7 +769,7 @@ M_CheckAttack(edict_t *self)
if (enemy_range == RANGE_MELEE)
{
/* don't always melee in easy mode */
if ((skill->value == 0) && (randk() & 3))
if ((skill->value == SKILL_EASY) && (randk() & 3))
{
return false;
}
@ -823,11 +823,11 @@ M_CheckAttack(edict_t *self)
return false;
}
if (skill->value == 0)
if (skill->value == SKILL_EASY)
{
chance *= 0.5;
}
else if (skill->value >= 2)
else if (skill->value >= SKILL_HARD)
{
chance *= 2;
}

View File

@ -551,7 +551,7 @@ T_Damage(edict_t *targ, edict_t *inflictor, edict_t *attacker,
meansOfDeath = mod;
/* easy mode takes half damage */
if ((skill->value == 0) && (deathmatch->value == 0) && targ->client)
if ((skill->value == SKILL_EASY) && (deathmatch->value == 0) && targ->client)
{
damage *= 0.5;
@ -696,7 +696,7 @@ T_Damage(edict_t *targ, edict_t *inflictor, edict_t *attacker,
targ->pain(targ, attacker, knockback, take);
/* nightmare mode monsters don't go into pain frames often */
if (skill->value == 3)
if (skill->value == SKILL_HARDPLUS)
{
targ->pain_debounce_time = level.time + 5;
}

View File

@ -196,8 +196,8 @@ Pickup_Powerup(edict_t *ent, edict_t *other)
quantity = other->client->pers.inventory[ITEM_INDEX(ent->item)];
if (((skill->value == 1) &&
(quantity >= 2)) || ((skill->value >= 2) && (quantity >= 1)))
if (((skill->value == SKILL_MEDIUM) &&
(quantity >= 2)) || ((skill->value >= SKILL_HARD) && (quantity >= 1)))
{
return false;
}

View File

@ -692,12 +692,12 @@ SpawnEntities(const char *mapname, char *entities, const char *spawnpoint)
}
else
{
if (((skill->value == 0) &&
if (((skill->value == SKILL_EASY) &&
(ent->spawnflags & SPAWNFLAG_NOT_EASY)) ||
((skill->value == 1) &&
((skill->value == SKILL_MEDIUM) &&
(ent->spawnflags & SPAWNFLAG_NOT_MEDIUM)) ||
(((skill->value == 2) ||
(skill->value == 3)) &&
(((skill->value == SKILL_HARD) ||
(skill->value == SKILL_HARDPLUS)) &&
(ent->spawnflags & SPAWNFLAG_NOT_HARD))
)
{

View File

@ -45,7 +45,7 @@ check_dodge(edict_t *self, vec3_t start, vec3_t dir, int speed)
}
/* easy mode only ducks one quarter the time */
if (skill->value == 0)
if (skill->value == SKILL_EASY)
{
if (random() > 0.25)
{

View File

@ -485,6 +485,12 @@ extern int gibsthisframe;
#define MOD_TARGET_BLASTER 33
#define MOD_FRIENDLY_FIRE 0x8000000
/* Easier handling of AI skill levels */
#define SKILL_EASY 0
#define SKILL_MEDIUM 1
#define SKILL_HARD 2
#define SKILL_HARDPLUS 3
extern int meansOfDeath;
extern edict_t *g_edicts;

View File

@ -407,7 +407,7 @@ berserk_pain(edict_t *self, edict_t *other /* unused */,
self->pain_debounce_time = level.time + 3;
gi.sound(self, CHAN_VOICE, sound_pain, 1, ATTN_NORM, 0);
if (skill->value == 3)
if (skill->value == SKILL_HARDPLUS)
{
return; /* no pain anims in nightmare */
}

View File

@ -611,7 +611,7 @@ jorg_pain(edict_t *self, edict_t *other /* unused */,
self->pain_debounce_time = level.time + 3;
if (skill->value == 3)
if (skill->value == SKILL_HARDPLUS)
{
return; /* no pain anims in nightmare */
}

View File

@ -749,7 +749,7 @@ makron_pain(edict_t *self, edict_t *other /* unused */,
self->pain_debounce_time = level.time + 3;
if (skill->value == 3)
if (skill->value == SKILL_HARDPLUS)
{
return; /* no pain anims in nightmare */
}

View File

@ -547,7 +547,7 @@ brain_tentacle_attack(edict_t *self)
VectorSet(aim, MELEE_DISTANCE, 0, 8);
if (fire_hit(self, aim, (10 + (randk() % 5)), -600) && (skill->value > 0))
if (fire_hit(self, aim, (10 + (randk() % 5)), -600) && (skill->value > SKILL_EASY))
{
self->spawnflags |= 65536;
}
@ -683,7 +683,7 @@ brain_pain(edict_t *self, edict_t *other /* unused */,
self->pain_debounce_time = level.time + 3;
if (skill->value == 3)
if (skill->value == SKILL_HARDPLUS)
{
return; /* no pain anims in nightmare */
}

View File

@ -382,7 +382,7 @@ chick_pain(edict_t *self, edict_t *other /* unused */,
gi.sound(self, CHAN_VOICE, sound_pain3, 1, ATTN_NORM, 0);
}
if (skill->value == 3)
if (skill->value == SKILL_HARDPLUS)
{
return; /* no pain anims in nightmare */
}

View File

@ -334,7 +334,7 @@ flipper_pain(edict_t *self, edict_t *other /* unused */,
self->pain_debounce_time = level.time + 3;
if (skill->value == 3)
if (skill->value == SKILL_HARDPLUS)
{
return; /* no pain anims in nightmare */
}

View File

@ -726,7 +726,7 @@ floater_pain(edict_t *self, edict_t *other /* unused */,
self->pain_debounce_time = level.time + 3;
if (skill->value == 3)
if (skill->value == SKILL_HARDPLUS)
{
return; /* no pain anims in nightmare */
}

View File

@ -772,7 +772,7 @@ flyer_pain(edict_t *self, edict_t *other /* unused */,
self->pain_debounce_time = level.time + 3;
if (skill->value == 3)
if (skill->value == SKILL_HARDPLUS)
{
return; /* no pain anims in nightmare */
}

View File

@ -390,7 +390,7 @@ gladiator_pain(edict_t *self, edict_t *other /* unused */,
gi.sound(self, CHAN_VOICE, sound_pain2, 1, ATTN_NORM, 0);
}
if (skill->value == 3)
if (skill->value == SKILL_HARDPLUS)
{
return; /* no pain anims in nightmare */
}

View File

@ -407,7 +407,7 @@ gunner_pain(edict_t *self, edict_t *other /* unused */,
gi.sound(self, CHAN_VOICE, sound_pain2, 1, ATTN_NORM, 0);
}
if (skill->value == 3)
if (skill->value == SKILL_HARDPLUS)
{
return; /* no pain anims in nightmare */
}
@ -528,7 +528,7 @@ gunner_duck_down(edict_t *self)
self->monsterinfo.aiflags |= AI_DUCKED;
if (skill->value >= 2)
if (skill->value >= SKILL_HARD)
{
if (random() > 0.5)
{

View File

@ -662,7 +662,7 @@ hover_pain(edict_t *self, edict_t *other /* unused */,
self->pain_debounce_time = level.time + 3;
if (skill->value == 3)
if (skill->value == SKILL_HARDPLUS)
{
return; /* no pain anims in nightmare */
}

View File

@ -289,7 +289,7 @@ infantry_pain(edict_t *self, edict_t *other /* unused */,
self->pain_debounce_time = level.time + 3;
if (skill->value == 3)
if (skill->value == SKILL_HARDPLUS)
{
return; /* no pain anims in nightmare */
}

View File

@ -699,7 +699,7 @@ insane_pain(edict_t *self, edict_t *other /* unused */,
/* suppress screaming and moaning for 1 second so pain sound plays */
self->fly_sound_debounce_time = level.time + 1;
if (skill->value == 3)
if (skill->value == SKILL_HARDPLUS)
{
return; /* no pain anims in nightmare */
}

View File

@ -430,7 +430,7 @@ medic_pain(edict_t *self, edict_t *other /* unused */,
self->pain_debounce_time = level.time + 3;
if (skill->value == 3)
if (skill->value == SKILL_HARDPLUS)
{
return; /* no pain anims in nightmare */
}

View File

@ -376,7 +376,7 @@ mutant_check_refire(edict_t *self)
return;
}
if (((skill->value == 3) &&
if (((skill->value == SKILL_HARDPLUS) &&
(random() < 0.5)) || (range(self, self->enemy) == RANGE_MELEE))
{
self->monsterinfo.nextframe = FRAME_attack09;
@ -694,7 +694,7 @@ mutant_pain(edict_t *self, edict_t *other /* unused */,
self->pain_debounce_time = level.time + 3;
if (skill->value == 3)
if (skill->value == SKILL_HARDPLUS)
{
return; /* no pain anims in nightmare */
}

View File

@ -452,7 +452,7 @@ parasite_pain(edict_t *self, edict_t *other /* unused */,
self->pain_debounce_time = level.time + 3;
if (skill->value == 3)
if (skill->value == SKILL_HARDPLUS)
{
return; /* no pain anims in nightmare */
}

View File

@ -488,7 +488,7 @@ soldier_pain(edict_t *self, edict_t *other /* unused */,
return;
}
if (skill->value == 3)
if (skill->value == SKILL_HARDPLUS)
{
return; /* no pain anims in nightmare */
}
@ -662,7 +662,7 @@ soldier_attack1_refire1(edict_t *self)
return;
}
if (((skill->value == 3) &&
if (((skill->value == SKILL_HARDPLUS) &&
(random() < 0.5)) || (range(self, self->enemy) == RANGE_MELEE))
{
self->monsterinfo.nextframe = FRAME_attak102;
@ -691,7 +691,7 @@ soldier_attack1_refire2(edict_t *self)
return;
}
if (((skill->value == 3) &&
if (((skill->value == SKILL_HARDPLUS) &&
(random() < 0.5)) || (range(self, self->enemy) == RANGE_MELEE))
{
self->monsterinfo.nextframe = FRAME_attak102;
@ -751,7 +751,7 @@ soldier_attack2_refire1(edict_t *self)
return;
}
if (((skill->value == 3) &&
if (((skill->value == SKILL_HARDPLUS) &&
(random() < 0.5)) || (range(self, self->enemy) == RANGE_MELEE))
{
self->monsterinfo.nextframe = FRAME_attak204;
@ -780,7 +780,7 @@ soldier_attack2_refire2(edict_t *self)
return;
}
if (((skill->value == 3) &&
if (((skill->value == SKILL_HARDPLUS) &&
(random() < 0.5)) || (range(self, self->enemy) == RANGE_MELEE))
{
self->monsterinfo.nextframe = FRAME_attak204;
@ -956,7 +956,7 @@ soldier_attack6_refire(edict_t *self)
return;
}
if (skill->value == 3)
if (skill->value == SKILL_HARDPLUS)
{
self->monsterinfo.nextframe = FRAME_runs03;
}
@ -1029,7 +1029,7 @@ soldier_sight(edict_t *self, edict_t *other /* unused */)
gi.sound(self, CHAN_VOICE, sound_sight2, 1, ATTN_NORM, 0);
}
if ((skill->value > 0) && (range(self, self->enemy) >= RANGE_MID))
if ((skill->value > SKILL_EASY) && (range(self, self->enemy) >= RANGE_MID))
{
if (random() > 0.5)
{
@ -1095,7 +1095,7 @@ soldier_dodge(edict_t *self, edict_t *attacker, float eta)
FoundTarget(self);
}
if (skill->value == 0)
if (skill->value == SKILL_EASY)
{
self->monsterinfo.currentmove = &soldier_move_duck;
return;
@ -1104,7 +1104,7 @@ soldier_dodge(edict_t *self, edict_t *attacker, float eta)
self->monsterinfo.pausetime = level.time + eta + 0.3;
r = random();
if (skill->value == 1)
if (skill->value == SKILL_MEDIUM)
{
if (r > 0.33)
{
@ -1118,7 +1118,7 @@ soldier_dodge(edict_t *self, edict_t *attacker, float eta)
return;
}
if (skill->value >= 2)
if (skill->value >= SKILL_HARD)
{
if (r > 0.66)
{

View File

@ -610,7 +610,7 @@ supertank_pain(edict_t *self, edict_t *other /* unused */,
}
/* Don't go into pain if he's firing his rockets */
if (skill->value >= 2)
if (skill->value >= SKILL_HARD)
{
if ((self->s.frame >= FRAME_attak2_1) &&
(self->s.frame <= FRAME_attak2_14))
@ -621,7 +621,7 @@ supertank_pain(edict_t *self, edict_t *other /* unused */,
self->pain_debounce_time = level.time + 3;
if (skill->value == 3)
if (skill->value == SKILL_HARDPLUS)
{
return; /* no pain anims in nightmare */
}

View File

@ -403,7 +403,7 @@ tank_pain(edict_t *self, edict_t *other /* other */,
}
/* If hard or nightmare, don't go into pain while attacking */
if (skill->value >= 2)
if (skill->value >= SKILL_HARD)
{
if ((self->s.frame >= FRAME_attak301) &&
(self->s.frame <= FRAME_attak330))
@ -421,7 +421,7 @@ tank_pain(edict_t *self, edict_t *other /* other */,
self->pain_debounce_time = level.time + 3;
gi.sound(self, CHAN_VOICE, sound_pain, 1, ATTN_NORM, 0);
if (skill->value == 3)
if (skill->value == SKILL_HARDPLUS)
{
return; /* no pain anims in nightmare */
}
@ -643,7 +643,7 @@ tank_reattack_blaster(edict_t *self)
return;
}
if (skill->value >= 2)
if (skill->value >= SKILL_HARD)
{
if (visible(self, self->enemy))
{
@ -861,7 +861,7 @@ tank_refire_rocket(edict_t *self)
}
/* Only on hard or nightmare */
if (skill->value >= 2)
if (skill->value >= SKILL_HARD)
{
if (self->enemy->health > 0)
{

View File

@ -347,15 +347,15 @@ HelpComputerMessage(edict_t *ent)
return;
}
if (skill->value == 0)
if (skill->value == SKILL_EASY)
{
sk = "easy";
}
else if (skill->value == 1)
else if (skill->value == SKILL_MEDIUM)
{
sk = "medium";
}
else if (skill->value == 2)
else if (skill->value == SKILL_HARD)
{
sk = "hard";
}