various small fixes

master
an 2019-09-22 18:47:51 -04:00
parent 4f2ac13652
commit f26743600c
8 changed files with 28 additions and 28 deletions

View File

@ -277,13 +277,13 @@ some monsters refire twice automatically
void(float normal) sub_attack_finished = { void(float normal) sub_attack_finished = {
self.cnt = 0; // refire count for nightmare self.cnt = 0; // refire count for nightmare
if(skill != 3) { if(skill != SK_NIGHTMARE) {
self.attack_finished = time + normal; self.attack_finished = time + normal;
} }
}; };
void(void() thinkst) sub_check_refire = { void(void() thinkst) sub_check_refire = {
if(skill != 3) { if(skill != SK_NIGHTMARE) {
return; return;
} }
if(self.cnt == 1) { if(self.cnt == 1) {

View File

@ -113,15 +113,9 @@ void(entity targ, entity inflictor, entity attacker, float damage) ent_damage =
float take; float take;
// team play damage avoidance // team play damage avoidance
if(teamplay == 1 && is_same_team(targ, attacker)) { if((teamplay == 1 && is_same_team(targ, attacker)) ||
return; (teamplay == 3 && are_both_players(targ, attacker)) ||
} !targ.takedamage) {
if(teamplay == 3 && are_both_players(targ, attacker)) {
return;
}
if(!targ.takedamage) {
return; return;
} }
@ -134,7 +128,6 @@ void(entity targ, entity inflictor, entity attacker, float damage) ent_damage =
} }
// save damage based on the target's armor level // save damage based on the target's armor level
save = ceil(targ.armortype * damage); save = ceil(targ.armortype * damage);
if(save >= targ.armorvalue) { if(save >= targ.armorvalue) {
save = targ.armorvalue; save = targ.armorvalue;
@ -184,8 +177,8 @@ void(entity targ, entity inflictor, entity attacker, float damage) ent_damage =
oldself = self; oldself = self;
self = targ; self = targ;
if((self.flags & FL_MONSTER) && attacker != world) { if(self.flags & FL_MONSTER && attacker != world) {
// get mad unless of the same class(except for soldiers) // get mad unless of the same class (except for soldiers)
if(self != attacker && attacker != self.enemy) { if(self != attacker && attacker != self.enemy) {
if((self.classname != attacker.classname) if((self.classname != attacker.classname)
|| (self.classname == "monster_army")) { || (self.classname == "monster_army")) {
@ -201,7 +194,7 @@ void(entity targ, entity inflictor, entity attacker, float damage) ent_damage =
if(self.th_pain) { if(self.th_pain) {
self.th_pain(attacker, take); self.th_pain(attacker, take);
// nightmare mode monsters don't go into pain frames often // nightmare mode monsters don't go into pain frames often
if(skill == 3) { if(skill == SK_NIGHTMARE) {
self.pain_finished = time + 5; self.pain_finished = time + 5;
} }
} }

View File

@ -608,6 +608,13 @@ enum {
AI_MONSTER_HIGH = 48, AI_MONSTER_HIGH = 48,
}; };
enum {
SK_EASY,
SK_NORMAL,
SK_HARD,
SK_NIGHTMARE,
};
// super co-op additions // super co-op additions
enum { enum {
PRO_NONE, PRO_NONE,

View File

@ -192,7 +192,7 @@ void(vector p) boss_missile = {
org = self.origin + p_x * v_forward + p_y * v_right + p_z*'0 0 1'; org = self.origin + p_x * v_forward + p_y * v_right + p_z*'0 0 1';
// lead the player on hard mode // lead the player on hard mode
if(skill > 1) { if(skill > SK_NORMAL) {
t = vec_len(self.enemy.origin - org) / 300; t = vec_len(self.enemy.origin - org) / 300;
vec = self.enemy.velocity; vec = self.enemy.velocity;
vec_z = 0; vec_z = 0;
@ -225,7 +225,7 @@ void() boss_awake = {
set_model(self, "progs/boss.mdl"); set_model(self, "progs/boss.mdl");
set_size(self, '-128 -128 -24', '128 128 256'); set_size(self, '-128 -128 -24', '128 128 256');
if(skill == 0) { if(skill == SK_EASY) {
self.health = 1; self.health = 1;
} else { } else {
self.health = 3; self.health = 3;

View File

@ -158,7 +158,7 @@ void() shalrath_home = {
return; return;
} }
dir = normalize(vtemp - self.origin); dir = normalize(vtemp - self.origin);
if(skill == 3) { if(skill == SK_NIGHTMARE) {
self.velocity = dir * 350; self.velocity = dir * 350;
} else { } else {
self.velocity = dir * 250; self.velocity = dir * 250;

View File

@ -313,12 +313,10 @@ void() sham_magic6 = [ $magic6, sham_magic9 ] {
sham_cast_lightning(); sham_cast_lightning();
sound(self, CHAN_WEAPON, "shambler/sboom.wav", 1, ATTN_NORM); sound(self, CHAN_WEAPON, "shambler/sboom.wav", 1, ATTN_NORM);
}; };
void() sham_magic9 = [ $magic9, sham_magic10 ] void() sham_magic9 = [ $magic9, sham_magic10 ] {sham_cast_lightning();};
{sham_cast_lightning();}; void() sham_magic10 = [ $magic10, sham_magic11 ] {sham_cast_lightning();};
void() sham_magic10 = [ $magic10, sham_magic11 ]
{sham_cast_lightning();};
void() sham_magic11 = [ $magic11, sham_magic12 ] { void() sham_magic11 = [ $magic11, sham_magic12 ] {
if(skill == 3) { if(skill == SK_NIGHTMARE) {
sham_cast_lightning(); sham_cast_lightning();
} }
}; };

View File

@ -201,8 +201,7 @@ Go to the trouble of combining multiple pellets into a single damage call.
================ ================
*/ */
void(float shotcount, vector dir, vector spread) fire_bullets = { void(float shotcount, vector dir, vector spread) fire_bullets = {
vector direction; vector direction, src;
vector src;
make_vectors(self.v_angle); make_vectors(self.v_angle);
@ -382,7 +381,7 @@ void(vector p1, vector p2, entity from, float damage) lightning_damage = {
f_x = 0 - f_y; f_x = 0 - f_y;
f_y = f_x; f_y = f_x;
f_z = 0; f_z = 0;
f = f * 16; f *= 16;
e1 = e2 = world; e1 = e2 = world;

7
todo
View File

@ -19,8 +19,7 @@ extraneous features:
add expansion pack entities add expansion pack entities
emotes emotes
player sound effect option player sounds option
players shoot through eachother (teamplay 4?)
selectable player models and skins selectable player models and skins
sound clips sound clips
third person player weapon models third person player weapon models
@ -38,3 +37,7 @@ no friendly fire
rename all functions to be lower_underscore rename all functions to be lower_underscore
restart map after 10 seconds when everyone is dead restart map after 10 seconds when everyone is dead
users can cancel map ends ("<name> initiated travel to <mapname>") users can cancel map ends ("<name> initiated travel to <mapname>")
rejected:
players shoot through eachother (teamplay 4?) (can theoretically be done in quakec but the math is too complex)