Quadrupled healing rates for axe healing. Have current map restart after 7days up. Added impulse 43 for an instant melee axe attack which swaps back to previous weapon automatically.

This commit is contained in:
slipyx 2020-04-26 23:32:16 -04:00
parent 341576570a
commit 3c92dd0564
Signed by: slipyx
GPG Key ID: 09CEED554B4B1172
4 changed files with 28 additions and 10 deletions

View File

@ -25,10 +25,12 @@ COOP specific
- Rune pickups and finding secret areas are broadcasted.
- Player's keys held are kept after death.
- Players cannot pickup other players' backpacks.
- The axe can be used to heal, up to 150 hp. Heals 2 points per hit for self when hitting wall, and 4 points for both self and teamate when attacking each-other.
- The axe can be used to heal, up to 150 hp. Heals 8 points per hit for self when hitting wall, and 16 points for both self and teamate when attacking each-other.
- A disposable personal spawn point can be placed using `impulse 42` that the player will spawn at on death instead of a map start point. Player's backpack is also teleported.
- An instant melee attack can be triggered using `impulse 43`. Automatically swaps back to previous weapon.
Spawn points have a 5 second cooldown and cannot be placed within a 200 unit radius of an existing point.
- The start map is skipped after ending an episode and next episode is started immediately.
- Current map is restarted automatically after a 7day total uptime.
- **Revenge system:**
Monsters now gain frag count for killing players, and keep track of name of recent player killed. Other monster's frag count and recent kill name are absorbed from an infight kill. Players can regain these frags by killing monsters with a frag count for a revenge kill. Revenge kills are broadcasted, including the name of the player avenged if not self.

View File

@ -1366,14 +1366,14 @@ void() DropBackpack =
item = spawn();
// [slipyx] drop player backpack at respawn point if one.
// also set owner so only they can pick it up
if (coop && self.classname == "player" && self.movetarget)
// also set owner so only they can pick it back up
item.origin = self.origin - '0 0 24';
if (coop && self.classname == "player")
{
item.origin = self.movetarget.origin - '0 0 24';
if (self.movetarget)
item.origin = self.movetarget.origin - '0 0 24';
item.owner = self;
}
else
item.origin = self.origin - '0 0 24';
item.items = self.weapon;
if (item.items == IT_AXE)

View File

@ -65,7 +65,7 @@ void() PlaceRespawn =
}
self.movetarget = spawn ();
setorigin (self.movetarget, self.origin + (self.view_ofs / 2));
setorigin (self.movetarget, self.origin);
self.movetarget.angles = self.angles;
self.movetarget.classname = "player_respawn";
setmodel (self.movetarget, "progs/s_light.spr");
@ -137,8 +137,8 @@ void() W_FireAxe =
stuffcmd (self, "bf\n");
if (trace_ent.health < maxheal)
stuffcmd (trace_ent, "bf\n");
self.health = self.health + 4;
trace_ent.health = trace_ent.health + 4;
self.health = self.health + 16;
trace_ent.health = trace_ent.health + 16;
if (self.health > maxheal) self.health = maxheal;
if (trace_ent.health > maxheal) trace_ent.health = maxheal;
}
@ -155,7 +155,7 @@ void() W_FireAxe =
// [slipyx] bonus health! :D
if (coop && self.health < maxheal)
{
self.health = self.health + 2;
self.health = self.health + 8;
if (self.health > maxheal) self.health = maxheal;
particle (org, '0 0 0', 47, 40);
sound (self, CHAN_ITEM, "items/r_item2.wav", 1, ATTN_NORM);
@ -1361,9 +1361,21 @@ void() ImpulseCommands =
if (self.impulse == 255)
QuadCheat ();
// [slipyx] place a respawn point
if (coop && self.impulse == 42)
PlaceRespawn ();
// [slipyx] dedicated quick-melee button
if (coop && self.impulse == 43) {
local float pwep;
pwep = self.weapon;
self.weapon = IT_AXE;
W_SetCurrentAmmo();
W_Attack();
self.weapon = pwep;
//W_SetCurrentAmmo();
}
self.impulse = 0;
};

View File

@ -344,6 +344,10 @@ void() StartFrame =
coop = cvar( "coop" );
skill = cvar("skill");
// [slipyx] in coop, check timelimit for map restart
if ( coop && time >= 604800 ) // 7 days
changelevel(mapname);
framecount = framecount + 1;
};