Skip to content
Commit 2f5e0842 authored by DarkGod's avatar DarkGod
Browse files

Merge branch 'DifficultyScaling' into 'master'

Updated Game Difficulty Scaling

The AI update makes NPCs tougher to kill in general, requiring adjustments to higher game difficulties.


Adjusting difficulty parameters for NPC talent levels and life is simplified in one place.

Game difficulty adjustments to zone level ranges are phased in over the first 10 (character) levels of play to make it easier to get various builds going.  (Expect full difficulty effects after clearing the first 3-4 zones.)

Players start at level 1 for all difficulties, with reduced bonus money (50/100/150) for higher difficulties.


NIGHTMARE gets a small nerf to talent levels and a significant boost to life levels.

INSANE difficulty is moved closer to the midpoint between NIGHTMARE and MADNESS, evening out progression.

The compounding effect from using getRankLifeAdjust for MADNESS is replaced with a higher max_life multiplier to eliminate excessively high life scaling towards end game.


The number of bonus classes for bosses is unchanged.


Summary of NPC talent/life and zone changes:

	difficulty		talent levels		max life			zone level
	NORMAL			x1.0 (unch)		x1.0 (unch)			x1.0 + 0
	NIGHTMARE:		x1.3 (vs 1.33)		x1.5 (vs 1.0)			x1.5 + 0
	INSANE:			x1.8 (vs 1.5)		x2.0 (vs 1.2)			x1.5 + 1
	MADNESS:		x2.7 (unch)		x3.0 (no level^2 scaling)	x2.5 + 2

Sample max_life levels (@ NPC level):		NORMAL		NIGHTMARE		INSANE		MADNESS

	forest troll (Trollmire 1)		~100@1		~120@1			~165@1		~300@2
	forest troll (Dreadfell 1)		~300@15		~475@15			~680@16		~1100@17
	forest troll (High Peak 1)		~1400@57	~2000@57		~3000@60	~5000@64
	Argoniel (High Peak 1) 			~16.5K@75	~25.0K@75		~33.7K@75	~50.5K@75

Functions:

NPC:addedToLevel(level, x, y):

	Rewritten to make adjusting the effects of higher game difficulties simpler; each difficulty specifies a talent multiplier and a life_multiplier that can be easily adjusted within the code.

Game:applyDifficulty(zone, level_range):

	New function that adjusts zone level ranges and base level while preventing compounded difficulty effects (unless level_range is specified)

	level_range can be a number (minimum level) or a table (for zone.level_range)

	The effects of higher game difficulties are the same as before, except that they are phased in for the early game -- reaching full effect when the player reaches level 10.


Game:loaded(), GameState:zoneCheckBackupGuardian(), and Atamathon's activation are updated to use this new function


See merge request !472
parents 5ed70af7 002bffed
Loading
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment