diff --git a/src/game/g_ai.c b/src/game/g_ai.c index 0d559a53..9f9dd628 100644 --- a/src/game/g_ai.c +++ b/src/game/g_ai.c @@ -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; } diff --git a/src/game/g_combat.c b/src/game/g_combat.c index f8911414..ef36d851 100644 --- a/src/game/g_combat.c +++ b/src/game/g_combat.c @@ -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; } diff --git a/src/game/g_items.c b/src/game/g_items.c index 0e1294ba..129a2aa3 100644 --- a/src/game/g_items.c +++ b/src/game/g_items.c @@ -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; } diff --git a/src/game/g_spawn.c b/src/game/g_spawn.c index 9a14e35e..c79924c9 100644 --- a/src/game/g_spawn.c +++ b/src/game/g_spawn.c @@ -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)) ) { diff --git a/src/game/g_weapon.c b/src/game/g_weapon.c index d247a359..22c2a52a 100644 --- a/src/game/g_weapon.c +++ b/src/game/g_weapon.c @@ -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) { diff --git a/src/game/header/local.h b/src/game/header/local.h index ddb55ba2..a2ca7edd 100644 --- a/src/game/header/local.h +++ b/src/game/header/local.h @@ -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; diff --git a/src/game/monster/berserker/berserker.c b/src/game/monster/berserker/berserker.c index fae0d02c..8ed2b298 100644 --- a/src/game/monster/berserker/berserker.c +++ b/src/game/monster/berserker/berserker.c @@ -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 */ } diff --git a/src/game/monster/boss3/boss31.c b/src/game/monster/boss3/boss31.c index d490cdef..60d163de 100644 --- a/src/game/monster/boss3/boss31.c +++ b/src/game/monster/boss3/boss31.c @@ -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 */ } diff --git a/src/game/monster/boss3/boss32.c b/src/game/monster/boss3/boss32.c index 276f0e7d..bd644811 100644 --- a/src/game/monster/boss3/boss32.c +++ b/src/game/monster/boss3/boss32.c @@ -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 */ } diff --git a/src/game/monster/brain/brain.c b/src/game/monster/brain/brain.c index ceee37b2..b66bdbd0 100644 --- a/src/game/monster/brain/brain.c +++ b/src/game/monster/brain/brain.c @@ -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 */ } diff --git a/src/game/monster/chick/chick.c b/src/game/monster/chick/chick.c index fee19883..fcb97d51 100644 --- a/src/game/monster/chick/chick.c +++ b/src/game/monster/chick/chick.c @@ -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 */ } diff --git a/src/game/monster/flipper/flipper.c b/src/game/monster/flipper/flipper.c index 6ec3c62b..20c7a044 100644 --- a/src/game/monster/flipper/flipper.c +++ b/src/game/monster/flipper/flipper.c @@ -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 */ } diff --git a/src/game/monster/float/float.c b/src/game/monster/float/float.c index a3a70923..5426c6af 100644 --- a/src/game/monster/float/float.c +++ b/src/game/monster/float/float.c @@ -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 */ } diff --git a/src/game/monster/flyer/flyer.c b/src/game/monster/flyer/flyer.c index 4d64f4dc..f3d5b935 100644 --- a/src/game/monster/flyer/flyer.c +++ b/src/game/monster/flyer/flyer.c @@ -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 */ } diff --git a/src/game/monster/gladiator/gladiator.c b/src/game/monster/gladiator/gladiator.c index 2ba1819f..a8e74c24 100644 --- a/src/game/monster/gladiator/gladiator.c +++ b/src/game/monster/gladiator/gladiator.c @@ -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 */ } diff --git a/src/game/monster/gunner/gunner.c b/src/game/monster/gunner/gunner.c index f5ff5073..1e2b2611 100644 --- a/src/game/monster/gunner/gunner.c +++ b/src/game/monster/gunner/gunner.c @@ -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) { diff --git a/src/game/monster/hover/hover.c b/src/game/monster/hover/hover.c index 0f1097c5..b8563d96 100644 --- a/src/game/monster/hover/hover.c +++ b/src/game/monster/hover/hover.c @@ -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 */ } diff --git a/src/game/monster/infantry/infantry.c b/src/game/monster/infantry/infantry.c index d3dfbe2c..647737a5 100644 --- a/src/game/monster/infantry/infantry.c +++ b/src/game/monster/infantry/infantry.c @@ -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 */ } diff --git a/src/game/monster/insane/insane.c b/src/game/monster/insane/insane.c index b7bfd29f..7d18137e 100644 --- a/src/game/monster/insane/insane.c +++ b/src/game/monster/insane/insane.c @@ -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 */ } diff --git a/src/game/monster/medic/medic.c b/src/game/monster/medic/medic.c index 29b9c70c..3bff87f3 100644 --- a/src/game/monster/medic/medic.c +++ b/src/game/monster/medic/medic.c @@ -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 */ } diff --git a/src/game/monster/mutant/mutant.c b/src/game/monster/mutant/mutant.c index 1887aa9c..ee907742 100644 --- a/src/game/monster/mutant/mutant.c +++ b/src/game/monster/mutant/mutant.c @@ -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 */ } diff --git a/src/game/monster/parasite/parasite.c b/src/game/monster/parasite/parasite.c index e5a8dd70..5e3428e9 100644 --- a/src/game/monster/parasite/parasite.c +++ b/src/game/monster/parasite/parasite.c @@ -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 */ } diff --git a/src/game/monster/soldier/soldier.c b/src/game/monster/soldier/soldier.c index b7ddbdf0..1fd048ad 100644 --- a/src/game/monster/soldier/soldier.c +++ b/src/game/monster/soldier/soldier.c @@ -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) { diff --git a/src/game/monster/supertank/supertank.c b/src/game/monster/supertank/supertank.c index ae495ece..509bf12a 100644 --- a/src/game/monster/supertank/supertank.c +++ b/src/game/monster/supertank/supertank.c @@ -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 */ } diff --git a/src/game/monster/tank/tank.c b/src/game/monster/tank/tank.c index 68134000..2adeb4bb 100644 --- a/src/game/monster/tank/tank.c +++ b/src/game/monster/tank/tank.c @@ -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) { diff --git a/src/game/player/hud.c b/src/game/player/hud.c index 26240c7a..2d1d3e87 100644 --- a/src/game/player/hud.c +++ b/src/game/player/hud.c @@ -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"; }