Generic Perks DM Mod

Non-technical talk about multiplayer and singleplayer gameplay and game design.
scar3crow
InsideQC Staff
Posts: 1054
Joined: Tue Jan 18, 2005 8:54 pm
Location: Alabama

Generic Perks DM Mod

Post by scar3crow »

Wazat requested I post this, so here it is. A shameless ripping of CoD4's perk system, into a theoretical Quake mod with some other alterations in game behavior. Don't laugh too hard, I wrote this late last night before bed.

This assumes no one is bunnying or doing any other weird physics stuff. It also assumes you're a flexible enough player to play a mod, so you probably won't mind abdicating bunnying if you're reading this =)

Armor has changed, now they all have a base value of 100, and a base protection of 10% to all attacks. Touching an armor will switch out your current armor for what is in the level. Armor respawn times are now 10 seconds to prevent a player from just removing all armor pickups from the map.
* Green - 66% reduced damage from shells, nails, and ax.
* Yellow - 66% reduced damage from lightning.
* Red - 66% reduced damage from rockets and grenades.

Ax behavior has changed, it now takes into account attacker speed and victim speed, giving a damage bonus for the acceleration forces against the ax. The new behavior is generically damg = 40 + ((self.speed - other.speed) / 8) so a normal running player striking a completely still player would do 80 damage. At present this has no way to take into account what happens if other is running TOWARDS the ax, but that bit of unrealism may lend a balance of "greeting the ax."

Weapon respawns are modified. All but GL, RL and Shaft are Always Pickups, which on touch set the owner ammo to the minimum, or current +1 if greater than minimum. GL, RL, and Shaft have a 5 second respawn time so they are less common, but very difficult to dominate.

Powerups are delayed in spawning at the start of a match.
* Ring of Shadows - 35 second delay
* Quad Damage - 50 second delay
* Pentagram - 70 second delay

On connect, players are spectators, and are given a csqc menu (or a lazy centerprint menu) to select three perks from. The csqc menu would have three dropdowns on the left side, across from each would be a description of the currently selected perk. At the bottom would be a Ready button. A centerprint menu would be three pages of the perks, 1 through 5 selecting the associated perk, 7 being previous page, 8 being next page, and 0 being Ready.

Subsequent adjustments of your perks costs 5 frags to do, so use it wisely. Hitting the impulse will queue up the menu for the next time you die.

At start you have the first 2 perks of each category unlocked. The third for each category is unlocked on your 15th kill, the fourth on the 25th kill. The 5th can be unlocked by getting 5 "special kills", namely ax kills, midair kills, and telefrags; these are only counted after the 4th has been unlocked.

Items
1. Overstock - Triple ammo limit for all guns, double pickup value.
2. Blacksmith - Two armor types can be stacked.
3. Runic - 50% time bonus on quad, ring, and pent.
4. Elder Charms - Dying while possessing quad or ring will not remove it from your possession. Only time elapse will. No item drop from your corpse.
5. Ringholder - Ring of Shadows time only counts down while attacking. Time rounds up, so 0.5 seconds of attacking or more is 1 second on the ring timer.


Environment
1. Toxic - You take no damage from slime or lava.
2. Amphibian - You can breathe underwater, make no surfacing or splashing noises, and have a 20% speed increase when submerged.
3. Equestrian - Acceleration over linear distance of 5% gain per 120qu. Turning decreases speed by 50% per 60qu deviation. Fast acceleration, great speed over distance, but loses speed on turns. Maxspeed of 200qups.
4. Grounding - You only take damage from the lightning gun while at least 64 qu in the air.
5. Cannibal - Gibs are valid health pickups. Maxhealth of 200.


Combat
1. Equalizer - You receive normal damage from quad damage attacks.
2. Adrenaline - More than 10% of current health in damage taken, will roll for a 66% chance of an adrenaline boost, giving a 10% boost in player speed, and a 10 second long 5 health per second regeneration rate.
3. Determination - Automatic 10% resistance to all damage. Never enter into a pain frame, never emit a pain sound, you can push past players moving at equal or lesser speed.
4. Infection - All attacks do normal damage, plus 25% of damage dealt over the next 3 seconds. For example a 120 damage rocket would do 120 damage, then 10 a second adding up to 30 for 150 total damage.
5. Untouchable - Ignore all splash damage.
...and all around me was the chaos of battle and the reek of running blood.... and for the first time in my life I knew true happiness.
ceriux
Posts: 2230
Joined: Sat Sep 06, 2008 3:30 pm
Location: Indiana, USA

Post by ceriux »

in my opinion i think it would be a good entry for that speed modding compition going on just because of the perk system :)
Wazat
Posts: 771
Joined: Fri Oct 15, 2004 9:50 pm
Location: Middle 'o the desert, USA

Post by Wazat »

Very cool, scar3crow. I have some comments, as well as possible implementations for you or anyone else who wants to code this.

Axe:
The inertia axe could be incredibly easy to implement. It might be as simple as adding the two players' velocities (with one of them multiplied by -1), dividing by 2, and getting the magnitude. Not sure, haven't done the math (seems like perpendicular movement would be too powerful...?). Or maybe it could be a function of the magnitude of each velocity * the dot product. I dunno. Dang I'm tired. :)

Armor & Weapons:
It seems to me like green armor is more useful than yellow. This is because it covers the basics: Shotguns, nailguns and axes are more common than the lightning cannon (in fact, many maps don't have an LC). You may want to implement an item randomization system so that every map will potentially support every weapon, and every type of armor.

Unfortunately, randomization has an inherent problem in that it makes the really good item locations (ones you have to jump through hoops to reach) mundane, no better than any others. Thus I have a second suggestion if you do randomize items.

Each item spawn point has a power value that is determined by the power level of the item that normally spawns there. A rocket launcher might be 180, a red armor 200, etc.

When a random weapon is chosen to spawn there, its respawn rate and ammo capacity when picked up are affected by the power level. So the random items that spawn in a nailgun spot will have less ammo than those that spawn in a rocket launcher spot, and the new random item will respawn in the rocket launcher spot sooner.

You might also implement a damage bonus, ranging from 0-10% or 0-20%, just to add an extra bonus.

For armor, the respawn rate and protection percentage improve depending on whether it's green, red or yellow armor that would normally spawn there. The base damage blocking ranges from 10% - 30%, and the specialized blocking % (against the specific weapons the armor targets) ranges from 50% - 70%. When you touch an armor item, the game does a quick calculation to determine whether or not this new armor (which may be from a better spawn point) is better than what you're packing.


If you randomize items, you might also want to have them rerandomize themselves after a long time if no one picks them up. If a player sees that a nailgun has spawned in the rocket launcher spot, he's not going to go through the trials of jumping up there to go grab it. Because the weapon is never picked up and never has to respawn, it will never change to a more useful item.

You can deal with this by having the item change itself every 30 or 60 seconds of not getting picked up. I have some cool code in my monster swarm mod that makes a weapon change color and alpha for 10 seconds just before it rerandomizes so that players know it's about to disappear. This deals with the situation where the player runs up to a rocket launcher and it changes into a nailgun right before he reaches it. With the colormod and alpha he sees the change coming and expects it if he's not quick enough. :D

Dang, I need to get back to coding monster swarm. :)


Powerups:
Powerups may also benefit from randomization if you want them all to be able to be in the level even if they weren't included by the mapper. The reason this could be *very* important is because the perk system is heavily dedicated to the powerups, and if you pick a powerup not offered by the level you're SOL. If you do have knowledge of the level and you know a powerup isn't present, those perks are dead to you.

So there ought to be some method of ensuring all powerups can be represented on each level that can be played. The randomization system is one idea.

I recommend the same kind of bonuses for picking up a powerup from a more powerful spawn location. For example, the ring of invisibility is typically more freely passed out than, say, the quad damage or pent. You sometimes have to do some button pressing and run like hell to reach the quad and pent, whereas the biosuit is handed out like candy from creepy men driving suspicious vans. :)

Thus, I propose the following bonuses: Powerups are ordered as Bio suit < Ring < Megahealth < Quad < Pent. Those spawned from a more powerful source will have shorter respawn rates and/or longer durations.


I like the powerup inital spawn delay.


Perks:
I like the idea. As always I have recommendations and ideas. Take 'em with a grain of salt, but consider them.

Because the items, hazards (lava), etc available in any given map are inconsistent (one map has all powerups and weapons but no lava, another has no powerups and limited weapon selection, but has more lava than walking surfaces), you may want to have multiple perks per level in each tree. This way if invisibility isn't available in a certain map and there's no slime, water or lava, there's other perks unlocked in each tree that will still fit.

Items tree:
I recommend adding item perks that focus on specific weapons to complement those that focus on specific powerups.

I also recommend adding less powerful passive bonuses that will be active even when the player doesn't have the powerup so that they still get a bonus with the perk even if they can never get a hold of the powerup it's talored to.


1. Overstock - Triple ammo limit for all guns, double pickup value.
1. Boomstick - 10% damage bonus with shotguns, +50% shell ammo max and shells from pickups, and double knockback against enemies
1. Impact Axe - Enemies hit by your axe have 1/2 attack speed for 5 seconds, and your axe deals 20% more damage.

2. Blacksmith - Two armor types can be stacked.
2. Nailgun Focus - You gain 10% more nail ammo from pickups, and if you run out of nails you can still fire nailguns at half (or a fourth?) the normal attack rate.

3. Runic - 50% time bonus on quad, ring, and pent.
3. Robust - Gain 25% more health from health boxes.

4. Elder Charms - Dying while possessing quad or ring will not remove it from your possession. Only time elapse will. No item drop from your corpse. Idea: When you respawn without one of these powerups, you are given 10 seconds of the ring.
4. Stealth Master - You are completely invisible while you have the ring of shadows. Even without the ring, you do not emit light or sound from your gun while attacking (only your bullets etc make noise).

5. Ringholder - Ring of Shadows time only counts down while attacking. Time rounds up, so 0.5 seconds of attacking or more is 1 second on the ring timer.
5. Exploding Corpses - 10% more damage with rockets. When you gib an enemy with the rocket launcher, the body explodes as a cluster bomb with each gib as a small bomblet to damage enemies (but not harm you). The head becomes a proximity mine that will detonate when an enemy comes near.
5. Lightning God - +10% damage increase with the lightning gun, and enemies hit by your lightning gun will deal 30% less damage for 5 seconds.


Environment:
This could also be named Biology. As with the item tree, I recommend either adding additional perks to choose from at each level, or adding passive bonuses that make the perk useful even when you can't find any lava, slime etc. I like Equestrian and Cannibal the most because they are both universally useful (except in the case of a very cramped and twisty-turny map that would make straight paths with equestrian hard), and really damn cool.

1. Toxic - You take no damage from slime or lava. Warning: Some levels depend on lava/slime to kill a player. If the immune player falls into these places he will be permanently stuck. Perhaps if they spend X seconds in lava/slime without movement input they teleport out to a random or nearby spawn point?
2. Amphibian - You can breathe underwater, make no surfacing or splashing noises, and have a 20% speed increase when submerged. This one seems a little weak unless there's a lot of water in the level
3. Equestrian - Acceleration over linear distance of 5% gain per 120qu. Turning decreases speed by 50% per 60qu deviation. Fast acceleration, great speed over distance, but loses speed on turns. Maxspeed of 200qups. excellent
4. Grounding - You only take damage from the lightning gun while at least 64 qu in the air. This one is okay, but still limited to the occasion where someone comes at you with a lightning gun. Depending on circumstance, it will range from incredibly good to useless.
5. Cannibal - Gibs are valid health pickups. Maxhealth of 200. Love this one!

Additions:
2: Planeswalker: When you go through a teleporter, you gain a 25% bonus to defense for 10 seconds. The bonus cannot activate again for 25 seconds. (this is to prevent teleport abusers).

I currently don't have any other ideas for adding to this tree, but I'll post some if any occur to me.

Combat
This is a cool tree. I think one or two abilities suffer from some of the same circumstance-dependent bonuses as the other and could use either passive-always-active bonuses to polish them off, or some extra options to make the tree more rounded.

1. Equalizer - You receive normal damage from quad damage attacks. Idea: you also take 10% less damage from enemies that are healthier than you
2. Adrenaline - More than 10% of current health in damage taken, will roll for a 66% chance of an adrenaline boost, giving a 10% boost in player speed, and a 10 second long 5 health per second regeneration rate. I do like this one
3. Determination - Automatic 10% resistance to all damage. Never enter into a pain frame, never emit a pain sound, you can push past players moving at equal or lesser speed. Sweet
4. Infection - All attacks do normal damage, plus 25% of damage dealt over the next 3 seconds. For example a 120 damage rocket would do 120 damage, then 10 a second adding up to 30 for 150 total damage. Excellent, a 25% boost that stacks with any other boosts you have.
5. Untouchable - Ignore all splash damage. If the level sports rocket launchers and you're getting splashed often, this is huge. Otherwise it's going to pale in comparison to lower skills in this tree or other trees. Perhaps also add a 10-20% damage reduction to all other attacks.

No more ideas are coming to me at the moment. You might think I was tired, lol. I'm so glad for new years days off. :)


One thing I feel a need to mention: It's not necessarily important to do what I'm suggesting (making circumstance-specific bonuses less specific etc). For example, one player may love the lightning gun and focus heavily in it during one match (and in fact dominate with it), but the next match is in a level with no lightning gun and tons of lava. This forces the player to play differently this game and select different perks. If you randomized the items and rounded out the perks, that player would have less incentive to change strategies and perk layout from map to map. Not sure if that's good or bad.


Cheers scar3crow for a cool idea. I hope I didn't come off as annoying or offensive with all my suggestions and critiques. I didn't intend it that way. ^_^

Good heaven this turned out to be a long post. :shock:
When my computer inevitably explodes and kills me, my cat inherits everything I own. He may be the only one capable of continuing my work.
FrikaC
Site Admin
Posts: 1026
Joined: Fri Oct 08, 2004 11:19 pm

Post by FrikaC »

/me jots these down into his Token2 brainstorm doc
Wazat
Posts: 771
Joined: Fri Oct 15, 2004 9:50 pm
Location: Middle 'o the desert, USA

Post by Wazat »

FrikaC wrote:/me jots these down into his Token2 brainstorm doc
Yay! :D
When my computer inevitably explodes and kills me, my cat inherits everything I own. He may be the only one capable of continuing my work.
scar3crow
InsideQC Staff
Posts: 1054
Joined: Tue Jan 18, 2005 8:54 pm
Location: Alabama

Post by scar3crow »

I have partially coded the ax before, but it was a mere check for bonus damage based on the difference of attacker and victim's speed, nothing more. Nonetheless, doing a running jump ax attack on a grunt made for a nice gibbing.

I'm used to in dm, that despite the other weapons being more common, rl/gl/shaft is what you will see in combat more often, as players feel comfortable initiating combat with them (this might change in a mod with vwep, since in Quake you never know for sure what your opponent is packing). Note that it is the green which protects from the common, but the green is rarely positioned near rl, gl, or shaft, players who use those high damage weapons, have insignificant protection from the other weapons, unless they venture out for the green - at which point they expose both the rl pickup, their advantage, and the red armor, a partial neutralizer of their advantage.

I don't like randomization, I do like rotation however - perhaps every 120 seconds the guns shift placement "to the left", and armor "to the right". I also like messaging that the item is about to switch, so the player has reasonable expectations of behavior.

Part of the perk system is using them intelligently, and a part of multiplayer intelligence is knowing the environment of the map, not just powerups but also general contents. It is up to the player to make the decisions on this, and if they do not know for sure when they choose a perk that is at least partially relating to an item on the map, then they should understand that they are gambling (to a cost of 5 frags if they can't live with it).

The problem with randomizing powerups is... well look at dm4,pent would completely neutralize all threats on that map, lava won't kill you, it is feasible to rj out of it, and the map is very tight, its hard to hide from an opponent who isn't afraid of being shot. Biosuit would be completely useless. Only two powerups are feasible on the map, ring and quad. Biosuit in most situations would be useless - few maps really use the slime, and rarely is it in any sort of 'gameplay' area. In fact the only instance I can think of is e2m4, which has... a quad in the slime. I propose leaving the power-up spawn locations and items alone honestly, you get more messes if you alter them.

Thanks, I like it too, Q3A introduced a few neat things like that.

I'm not a fan of Overstock, though Impact Ax could be interesting (especially if you use it with Equestrian to setup someone for ludicrously high damage kills), though it makes for in a way, the easiest way to access tier 5 perks. Boomstick is a little too narrow as something... Unless the pushback on the enemy is boosted quite a bit for the shotgun, thats just not worth it.

I think Blacksmith is actually a very strong perk, having 66% damage reduction on 2 of the 3 damage groups is a really big deal I think.

Not keen on Nailgun Focus, perhaps Perforator - Nails ignore all armor and pass through players with no damage reduction. Maybe this could replace Overstock? It feels more Quakey.

I think I covered my defense of perks like Runic adequately earlier.

Your amendment to Elder Charms could be good. Not a fan of Stealth Master, as its plain invisibility, being still the base 30 seconds, theres not enough time to do any stalking - versus Ringholder where it is stalking, with a Predator feel in a way (Ringholder + Equestrian could make for some sudden damage).

Exploding Corpses sounds visually fun, but the 10% damage bonus to rockets, combined with rockets already high place in dm, might be too much... That and it doesn't quite have a slot in the lineup feel, at least to me.

Lightning God is just that. The shaft is already ridiculously powerful, beefing it up is just asking for a hurting, so I am against that.

To your concerns about Toxic, keeping out of inescapable pits is up to the player, they need to know the terrain before plunging. They can always rj out, or, due to their own behavior, become exposed and another player may attack them, or use 'kill'.

The goal of Amphibian is to make the players look at water differently, and opt for lesser played maps, such as e1m4 and e2m3. It also allows for sneakier playing - if you can navigate an area silently via the water ways, it can make all the difference.

Grounding, most of the times I'm killed by shaft is from medium-close range on foot charging. If someone can track me effectively while I'm > 64 qu in the air, then they deserve to deal the damage. Of course depending on the circumstance it will vary, thats the idea =)

Planeswalker, I would say let the bonus stack, but to a limit, and don't let the time stack (e.g. you can stack the bonus, but its based off of the 10 second decay from the first instance).

I like that addition to Equalizer. With Untouchable, its the same idea of Grounding, taking the powerful weapons, and requiring of the attacker a higher grade of skill to get the reward.
...and all around me was the chaos of battle and the reek of running blood.... and for the first time in my life I knew true happiness.
Wazat
Posts: 771
Joined: Fri Oct 15, 2004 9:50 pm
Location: Middle 'o the desert, USA

Post by Wazat »

Sounds good!

edit: However, I still take issue with getting stuck in lava/slime. I personally would hate having to frequently use the kill command because a rocket bounced me into the lava on dm3, or in mid-jump lag or a shotgun burst etc knocked me off-course. With the kill command I lose double the points vs just dying from the lava, and I don't want to just wait for someone to kill me (it's better to take -1 frags sometimes than to give someone else +1).

There's got to be a better solution. :(
When my computer inevitably explodes and kills me, my cat inherits everything I own. He may be the only one capable of continuing my work.
MeTcHsteekle
Posts: 399
Joined: Thu May 15, 2008 10:46 pm
Location: its a secret

Post by MeTcHsteekle »

Wazat wrote:There's got to be a better solution. :(
don your wings and fly from it
bah
scar3crow
InsideQC Staff
Posts: 1054
Joined: Tue Jan 18, 2005 8:54 pm
Location: Alabama

Post by scar3crow »

Well, I've gotta wonder where you're finding lava on dm3... perhaps dm1, 2, or 4? Most likely 4... I consider all the cases you listed to be just as much a risk for people not using the perk, the result still being negative frags. Of course, in many cases you can rj out of such sticky spots, or if you're clever, use your opponents rockets to get out.

Any 'stuck spot' is always a threat to any player, regardless of perk, and the penalty is the same. Hrmm. Maybe the Inactivity to Respawn bit could be good (thinking particularly of the dm2 lava trap which is quite the pain to get out of).

However, I still say, the problem you speak of isn't really unique to the perk, since the result is the same when it actually happens, -1 frags. Just when you knock someone with the perk into escapable lava, you haven't caused a serious problem for them at all.
...and all around me was the chaos of battle and the reek of running blood.... and for the first time in my life I knew true happiness.
r00k
Posts: 1111
Joined: Sat Nov 13, 2004 10:39 pm

Post by r00k »

scar3crow wrote: Nonetheless, doing a running jump ax attack on a grunt made for a nice gibbing.
This will GIB monsters if you are attacking them with an overhanded swing while you are touching them as you are in midair ;)

Code: Select all

void() player_touch =
{
	if (!(self.flags & FL_ONGROUND))
	{
		if ((self.frame == 131) || (self.frame == 132) || (self.frame == 133))
		{
			if (other.takedamage)		
				T_Damage (other, self, self, 2000);
		}
	}
}

MeTcHsteekle
Posts: 399
Joined: Thu May 15, 2008 10:46 pm
Location: its a secret

Post by MeTcHsteekle »

r00k wrote:

Code: Select all

				T_Damage (other, self, self, 2000);
say goodnite zombehs will have no more need of explosives fer yo
bah
Wazat
Posts: 771
Joined: Fri Oct 15, 2004 9:50 pm
Location: Middle 'o the desert, USA

Post by Wazat »

scar3crow wrote:Well, I've gotta wonder where you're finding lava on dm3... perhaps dm1, 2, or 4? Most likely 4... I consider all the cases you listed to be just as much a risk for people not using the perk, the result still being negative frags. Of course, in many cases you can rj out of such sticky spots, or if you're clever, use your opponents rockets to get out.
Meant dm4, sorry for the typo.
Any 'stuck spot' is always a threat to any player, regardless of perk, and the penalty is the same. Hrmm. Maybe the Inactivity to Respawn bit could be good (thinking particularly of the dm2 lava trap which is quite the pain to get out of).

However, I still say, the problem you speak of isn't really unique to the perk, since the result is the same when it actually happens, -1 frags. Just when you knock someone with the perk into escapable lava, you haven't caused a serious problem for them at all.
Actually the kill command is -2 frags, whereas a lava death is -1 and killed by a player is +1 for that player (similar to a -1 but not quite). It sucks having to use the kill command because a feature of the game has gotten you stuck.

Just my opinion.
When my computer inevitably explodes and kills me, my cat inherits everything I own. He may be the only one capable of continuing my work.
ceriux
Posts: 2230
Joined: Sat Sep 06, 2008 3:30 pm
Location: Indiana, USA

Post by ceriux »

why not just change it to where the kill cmd does 0 ?
Wazat
Posts: 771
Joined: Fri Oct 15, 2004 9:50 pm
Location: Middle 'o the desert, USA

Post by Wazat »

Because then it's incredibly easy to abuse. You can basically make it impossible for an opponent to score a frag by binding it to a key. Then you can use it any time you're in trouble and would rather respawn with basic equipment than give your opponent a frag and respawn with basic equipment. :)

Maybe lowering the kill command to just -1 frags, but that may be overly abusable as well.
When my computer inevitably explodes and kills me, my cat inherits everything I own. He may be the only one capable of continuing my work.
MeTcHsteekle
Posts: 399
Joined: Thu May 15, 2008 10:46 pm
Location: its a secret

Post by MeTcHsteekle »

on most servers they kick you for kill abuse i think
bah
Post Reply