Fix the backpack/weaponbox from not dropping
This commit is contained in:
parent
e52bea41a3
commit
f86934b685
14 changed files with 111 additions and 96 deletions
|
@ -47,6 +47,11 @@ HLGameRules::DamageApply(entity t, entity c, float dmg, int w, damageType_t type
|
|||
return;
|
||||
}
|
||||
|
||||
if (t.health > 100)
|
||||
t.max_health = 200;
|
||||
else
|
||||
t.max_health = 100;
|
||||
|
||||
super::DamageApply(t, c, dmg, w, type);
|
||||
}
|
||||
|
||||
|
|
|
@ -43,6 +43,8 @@ HLMultiplayerRules::IsTeamplay(void)
|
|||
void
|
||||
HLMultiplayerRules::InitPostEnts(void)
|
||||
{
|
||||
precache_model("models/backpack.mdl");
|
||||
|
||||
MOTD_LoadDefault();
|
||||
|
||||
if (IsTeamplay() == true) {
|
||||
|
@ -125,6 +127,8 @@ HLMultiplayerRules::PlayerDeath(NSClientPlayer pl)
|
|||
FX_Corpse_Spawn((player)pl, ANIM_DIESIMPLE);
|
||||
}
|
||||
|
||||
dmc_backpack_spawn((player)pl);
|
||||
|
||||
/* now let's make the real client invisible */
|
||||
pl.Death();
|
||||
pl.SetTakedamage(DAMAGE_NO);
|
||||
|
|
|
@ -14,12 +14,12 @@
|
|||
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
class item_weaponbox:NSRenderableEntity
|
||||
class item_backpack:NSRenderableEntity
|
||||
{
|
||||
|
||||
int weapon_items;
|
||||
int weapon_item;
|
||||
|
||||
void(void) item_weaponbox;
|
||||
void(void) item_backpack;
|
||||
|
||||
virtual void(void) Spawned;
|
||||
virtual void(entity) Touch;
|
||||
|
@ -27,7 +27,7 @@ class item_weaponbox:NSRenderableEntity
|
|||
};
|
||||
|
||||
void
|
||||
item_weaponbox::Touch(entity eToucher)
|
||||
item_backpack::Touch(entity eToucher)
|
||||
{
|
||||
if (eToucher.classname != "player") {
|
||||
return;
|
||||
|
@ -48,45 +48,49 @@ item_weaponbox::Touch(entity eToucher)
|
|||
pl.ammo_rockets = min(pl.ammo_rockets, MAX_A_ROCKETS);
|
||||
pl.ammo_cells = min(pl.ammo_cells, MAX_A_CELLS);
|
||||
|
||||
pl.g_items |= weapon_items;
|
||||
pl.g_items |= g_weapons[weapon_item].id;
|
||||
Weapons_RefreshAmmo(pl);
|
||||
|
||||
sprint(pl, PRINT_HIGH, sprintf("You get the %s, %d shells, %d nails, %d rockets, %d cells\n", g_weapons[weapon_item].name, ammo_shells, ammo_nails, ammo_rockets, ammo_cells));
|
||||
|
||||
Destroy();
|
||||
}
|
||||
|
||||
void
|
||||
item_weaponbox::setup(player pl)
|
||||
item_backpack::setup(player pl)
|
||||
{
|
||||
/* TODO: Should the magazine bits be transferred too? */
|
||||
ammo_shells = pl. ammo_shells;
|
||||
ammo_nails = pl. ammo_nails;
|
||||
ammo_rockets = pl.ammo_rockets;
|
||||
ammo_cells = pl.ammo_cells;
|
||||
weapon_items = pl.g_items;
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
item_weaponbox::Spawned(void)
|
||||
item_backpack::Spawned(void)
|
||||
{
|
||||
super::Spawned();
|
||||
|
||||
SetModel("models/w_weaponbox.mdl");
|
||||
SetModel("models/backpack.mdl");
|
||||
SetSize([-16,-16,0], [16,16,16]);
|
||||
SetSolid(SOLID_TRIGGER);
|
||||
SetMovetype(MOVETYPE_TOSS);
|
||||
modelflags = MF_ROTATE;
|
||||
}
|
||||
|
||||
void
|
||||
item_weaponbox::item_weaponbox(void)
|
||||
item_backpack::item_backpack(void)
|
||||
{
|
||||
botinfo = BOTINFO_AMMO;
|
||||
}
|
||||
|
||||
void
|
||||
weaponbox_spawn(player spawner)
|
||||
dmc_backpack_spawn(player spawner)
|
||||
{
|
||||
item_weaponbox weaponbox = spawn(item_weaponbox);
|
||||
item_backpack weaponbox = spawn(item_backpack);
|
||||
weaponbox.Spawned();
|
||||
weaponbox.SetOrigin(spawner.origin);
|
||||
weaponbox.setup(spawner);
|
||||
|
||||
weaponbox.ammo_shells = spawner.ammo_shells;
|
||||
weaponbox.ammo_nails = spawner.ammo_nails;
|
||||
weaponbox.ammo_rockets = spawner.ammo_rockets;
|
||||
weaponbox.ammo_cells = spawner.ammo_cells;
|
||||
weaponbox.weapon_item = spawner.activeweapon;
|
||||
//bprint(PRINT_HIGH, sprintf("Dropped the %s, %d shells, %d nails, %d rockets, %d cells.\n", g_weapons[weapon_item].name, ammo_shells, ammo_nails, ammo_rockets, ammo_cells));
|
||||
}
|
||||
|
|
|
@ -121,6 +121,7 @@ w_nailgun_primary(player pl)
|
|||
|
||||
entity nail = spawn();
|
||||
setmodel(nail, "models/spike.mdl");
|
||||
vector velOffset = pl.velocity * input_timelength;
|
||||
setsize(nail, g_vec_null, g_vec_null);
|
||||
nail.movetype = MOVETYPE_FLYMISSILE;
|
||||
nail.solid = SOLID_BBOX;
|
||||
|
@ -129,10 +130,10 @@ w_nailgun_primary(player pl)
|
|||
Weapons_MakeVectors(pl);
|
||||
|
||||
if (pl.ammo_nails & 1) {
|
||||
setorigin(nail, Weapons_GetCameraPos(pl) + (v_right * -2) + (v_up * -5));
|
||||
setorigin(nail, velOffset + Weapons_GetCameraPos(pl) + (v_right * -2) + (v_up * -5));
|
||||
nail.velocity = v_forward * 1000 + (v_right * -2) + (v_up * -5);
|
||||
} else {
|
||||
setorigin(nail, Weapons_GetCameraPos(pl) + (v_right * 2) + (v_up * -5));
|
||||
setorigin(nail, velOffset + Weapons_GetCameraPos(pl) + (v_right * 2) + (v_up * -5));
|
||||
nail.velocity = v_forward * 1000 + (v_right * 2) + (v_up * -5);
|
||||
}
|
||||
nail.angles = vectoangles(nail.velocity);
|
||||
|
|
|
@ -128,7 +128,8 @@ w_supernailgun_primary(player pl)
|
|||
|
||||
entity nail = spawn();
|
||||
setmodel(nail, "models/spike.mdl");
|
||||
setorigin(nail, Weapons_GetCameraPos(pl) + (v_up * -5));
|
||||
vector velOffset = pl.velocity * input_timelength;
|
||||
setorigin(nail, velOffset + Weapons_GetCameraPos(pl) + (v_up * -5));
|
||||
setsize(nail, g_vec_null, g_vec_null);
|
||||
nail.movetype = MOVETYPE_FLYMISSILE;
|
||||
nail.solid = SOLID_BBOX;
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
entityDef q3_item_health_large {
|
||||
spawnclass item_health
|
||||
"spawnclass" "item_health"
|
||||
}
|
||||
|
||||
entityDef q3_item_health_mega {
|
||||
spawnclass item_health
|
||||
spawnflags 2
|
||||
"spawnclass" "item_health"
|
||||
"spawnflags" "2"
|
||||
}
|
||||
|
||||
entityDef q3_item_health_small {
|
||||
spawnclass item_health
|
||||
spawnflags 1
|
||||
"spawnclass" "item_health"
|
||||
"spawnflags" "1"
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
// Quake 1's buttons are triggered by touch most of the time
|
||||
entityDef q1_func_button {
|
||||
spawnclass func_button
|
||||
spawnflags 256
|
||||
"spawnclass" "func_button"
|
||||
"spawnflags" "256"
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
entityDef dmc_trigger_teleport {
|
||||
spawnclass trigger_teleport
|
||||
snd_teleport "dmc_teleporter.teleported"
|
||||
"spawnclass" "trigger_teleport"
|
||||
"snd_teleport" "dmc_teleporter.teleported"
|
||||
}
|
Loading…
Reference in a new issue