fix various weapon and item functions
This commit is contained in:
parent
661307339e
commit
6857946b1a
|
@ -22,7 +22,7 @@ void() SetChangeParms = {
|
|||
}
|
||||
|
||||
// remove items
|
||||
self.items = self.items - (self.items & (IT_KEY1 | IT_KEY2 | IT_INVISIBILITY | IT_INVULNERABILITY | IT_SUIT | IT_QUAD));
|
||||
self.items &= ~(IT_KEY1 | IT_KEY2 | IT_INVISIBILITY | IT_INVULNERABILITY | IT_SUIT | IT_QUAD);
|
||||
|
||||
// cap super health
|
||||
if(self.health > 100) {
|
||||
|
@ -55,7 +55,7 @@ void() SetNewParms = {
|
|||
parm5 = 0;
|
||||
parm6 = 0;
|
||||
parm7 = 0;
|
||||
parm8 = 1;
|
||||
parm8 = IT_SHOTGUN;
|
||||
parm9 = 0;
|
||||
};
|
||||
|
||||
|
@ -93,13 +93,11 @@ entity() FindIntermission = {
|
|||
spot = find(world, classname, "info_intermission");
|
||||
if(spot) {
|
||||
// pick a random one
|
||||
cyc = random() * 4;
|
||||
while(cyc > 1) {
|
||||
for(cyc = random() * 4; cyc > 1; cyc--) {
|
||||
spot = find(spot, classname, "info_intermission");
|
||||
if(!spot) {
|
||||
spot = find(spot, classname, "info_intermission");
|
||||
}
|
||||
cyc = cyc - 1;
|
||||
}
|
||||
return spot;
|
||||
}
|
||||
|
@ -283,7 +281,7 @@ void() changelevel_touch = {
|
|||
};
|
||||
|
||||
/*QUAKED trigger_changelevel(0.5 0.5 0.5) ? NO_INTERMISSION
|
||||
When the player touches this, he gets sent to the map listed in the "map" variable. Unless the NO_INTERMISSION flag is set, the view will go to the info_intermission spot and display stats.
|
||||
When the player touches this, they get sent to the map listed in the "map" variable. Unless the NO_INTERMISSION flag is set, the view will go to the info_intermission spot and display stats.
|
||||
*/
|
||||
void() trigger_changelevel = {
|
||||
if(!self.map) {
|
||||
|
|
|
@ -357,7 +357,7 @@ void() teleport_touch = {
|
|||
spawn_tfog(org);
|
||||
spawn_tdeath(t.origin, other);
|
||||
|
||||
// move the player and lock him down for a little while
|
||||
// move the player and lock them down for a little while
|
||||
if(!other.health) {
|
||||
other.origin = t.origin;
|
||||
other.velocity = (v_forward * other.velocity_x) + (v_forward * other.velocity_y);
|
||||
|
|
|
@ -760,23 +760,6 @@ float() W_BestWeapon = {
|
|||
return IT_AXE;
|
||||
};
|
||||
|
||||
float() W_CheckNoAmmo = {
|
||||
if(self.currentammo > 0) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if(self.weapon == IT_AXE) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
self.weapon = W_BestWeapon();
|
||||
|
||||
W_SetCurrentAmmo();
|
||||
|
||||
// drop the weapon down
|
||||
return FALSE;
|
||||
};
|
||||
|
||||
/*
|
||||
============
|
||||
W_Attack
|
||||
|
@ -787,50 +770,59 @@ An attack impulse can be triggered now
|
|||
void() W_Attack = {
|
||||
float r;
|
||||
|
||||
if(!W_CheckNoAmmo()) {
|
||||
if(self.currentammo <= 0 && self.weapon != IT_AXE) {
|
||||
self.weapon = W_BestWeapon();
|
||||
W_SetCurrentAmmo();
|
||||
return;
|
||||
}
|
||||
|
||||
makevectors(self.v_angle); // calculate forward angle for velocity
|
||||
self.show_hostile = time + 1; // wake monsters up
|
||||
|
||||
if(self.weapon == IT_AXE) {
|
||||
sound(self, CHAN_WEAPON, "weapons/ax1.wav", 1, ATTN_NORM);
|
||||
r = random();
|
||||
if(r < 0.25) {
|
||||
player_axe1();
|
||||
} else if(r < 0.5) {
|
||||
player_axeb1();
|
||||
} else if(r < 0.75) {
|
||||
player_axec1();
|
||||
} else {
|
||||
player_axed1();
|
||||
}
|
||||
self.attack_finished = time + 0.5;
|
||||
} else if(self.weapon == IT_SHOTGUN) {
|
||||
player_shot1();
|
||||
W_FireShotgun();
|
||||
self.attack_finished = time + 0.5;
|
||||
} else if(self.weapon == IT_SUPER_SHOTGUN) {
|
||||
player_shot1();
|
||||
W_FireSuperShotgun();
|
||||
self.attack_finished = time + 0.7;
|
||||
} else if(self.weapon == IT_NAILGUN) {
|
||||
player_nail1();
|
||||
} else if(self.weapon == IT_SUPER_NAILGUN) {
|
||||
player_nail1();
|
||||
} else if(self.weapon == IT_GRENADE_LAUNCHER) {
|
||||
player_rocket1();
|
||||
W_FireGrenade();
|
||||
self.attack_finished = time + 0.6;
|
||||
} else if(self.weapon == IT_ROCKET_LAUNCHER) {
|
||||
player_rocket1();
|
||||
W_FireRocket();
|
||||
self.attack_finished = time + 0.8;
|
||||
} else if(self.weapon == IT_LIGHTNING) {
|
||||
player_light1();
|
||||
self.attack_finished = time + 0.1;
|
||||
sound(self, CHAN_AUTO, "weapons/lstart.wav", 1, ATTN_NORM);
|
||||
switch(self.weapon) {
|
||||
case IT_AXE:
|
||||
sound(self, CHAN_WEAPON, "weapons/ax1.wav", 1, ATTN_NORM);
|
||||
r = random();
|
||||
if(r < 0.25) {
|
||||
player_axe1();
|
||||
} else if(r < 0.5) {
|
||||
player_axeb1();
|
||||
} else if(r < 0.75) {
|
||||
player_axec1();
|
||||
} else {
|
||||
player_axed1();
|
||||
}
|
||||
self.attack_finished = time + 0.5;
|
||||
break;
|
||||
case IT_SHOTGUN:
|
||||
player_shot1();
|
||||
W_FireShotgun();
|
||||
self.attack_finished = time + 0.5;
|
||||
break;
|
||||
case IT_SUPER_SHOTGUN:
|
||||
player_shot1();
|
||||
W_FireSuperShotgun();
|
||||
self.attack_finished = time + 0.7;
|
||||
break;
|
||||
case IT_NAILGUN:
|
||||
case IT_SUPER_NAILGUN:
|
||||
player_nail1();
|
||||
break;
|
||||
case IT_GRENADE_LAUNCHER:
|
||||
player_rocket1();
|
||||
W_FireGrenade();
|
||||
self.attack_finished = time + 0.6;
|
||||
break;
|
||||
case IT_ROCKET_LAUNCHER:
|
||||
player_rocket1();
|
||||
W_FireRocket();
|
||||
self.attack_finished = time + 0.8;
|
||||
break;
|
||||
case IT_LIGHTNING:
|
||||
player_light1();
|
||||
self.attack_finished = time + 0.1;
|
||||
sound(self, CHAN_AUTO, "weapons/lstart.wav", 1, ATTN_NORM);
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -971,13 +963,14 @@ void() W_CycleWeapon = {
|
|||
am = 1;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
if((it & self.weapon) && am == 0) {
|
||||
W_SetCurrentAmmo();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -1040,13 +1033,14 @@ void() W_CycleWeaponReverse = {
|
|||
am = 1;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
if((it & self.weapon) && am == 0) {
|
||||
W_SetCurrentAmmo();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue
Block a user