Dodian Forums

Go Back   Dodian Forums > Site > Support Center > Suggestions

 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Old 01-14-2018   #1
Dashboard
Registered Member
 
Join Date: Jan 2018
Posts: 9
Default Systemic NPC Drop Table Adjustments to Improve the Economy

Item inflation is a problem that plagues RS3, OSRS, and Dodian.
The Dodian and RuneScape economies were built from a series of reactions and badly thought-out expansions that were designed to look temporarily shiny without significant consideration for how they would impact the long-term game economy.

My idea to kill item inflation is to have a system of 3 NPC types:

Unique drop NPCs:
- Drops either one unique item - like an Abyssal Whip, or a unique armour set.
- Targeted only when their unique item drops are in high demand.
- Players stop killing them when the unique item price is low, preventing further inflation.
- The items cannot be obtained from Smithing
- Not assignable by a slayer master, but could be locked behind a slayer requirements.
- Killing the NPC should could have either a GP or resource deflationary mechanism to decentivize camping of unprofitable NPCs.

Consumable Resource NPCs:
- Drops unique consumable resources tied to its NPC type (cow hide, green dhide, dragon bones, etc)
- The resources cannot be obtained from Dodian skills (food, logs, ores, runes, gems)
- Assignable by a slayer master to encourage market liquidity

Pure GP NPCs
- Drop only consistent GP that is tied linearly to the NPC's combat level
- Allow GP multipliers for special circumstances (slayer task 1.2x, key dungeon 1.6x)
- Does not contribute to item inflation
- Assignable by a slayer master


Generally desired effects:
- Unique items will only enter the game when they're in demand
- New content can be created to spread out the unique item drop table (abyssal demons, gargoyles, and such)
- Dead content is repurposed
- Mining / smithing will become useful again for pre-dragon gear
- New players will have better access to GP, stimulating early-game trading


Anticipated downsides:
- GP inflation that will need to be systematically deflated by another mechanism
- The game play won't be as linear for new players, forcing them to trade to progress combat efficiently, which might be frustrating


Development Pseudocode:
Code:
void onNpcDrop(Npc npc) {

	final int UNIQUE_DROP = 1;
	final int CONSUMABLE_RESOURCE_DROP = 2;
	
	switch (npc.dropTableType) {
		case UNIQUE_DROP:
			ResultSet resultSet = SELECT chance, item_id, quantity FROM npc_unique_drop_table WHERE npcId=npc.id
			
			foreach (Row row : resultSet.rows()) { // support for multiple unique drops in case of item sets
				double chance = row.chance
				int itemId = row.item_id
				int quantity = row.quantity
				
				if (chance <= Math.random()) {
					drop(itemId, quantity);
				}
			}
			break;
			
		case CONSUMABLE_RESOURCE_DROP:
			ResultSet resultSet = SELECT chance, item_id FROM npc_consumable_resource_drop_table WHERE npcId=npc.id
			
			foreach (Row row : resultSet.rows()) { // support for multiple consumeable resource drops for cases like green dragons
				double chance = row.chance
				int itemId = row.item_id
				
				if (chance <= Math.random()) {
					drop(itemId, quantity);
				}
			}
			break;		
			
		default: // Pure GP
			final int ITEM_ID_COINS = 995;
			final int GP_PER_COMBAT_LEVEL = ?;
			int multiplier = 1;
			if (npc.isSlayerTask) {
				multiplier *= 1.2;
			}
			if (npc.isKeyDungeonMob) {
				multiplier *= 1.6;
			}
			
			int quantity = npc.combatLevel * GP_PER_COMBAT_LEVEL * multiplier;
			drop(ITEM_ID_COINS, quantity);
			break;
	}
}

Last edited by Dashboard; 01-15-2018 at 02:44 AM.
Dashboard is offline  
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -5. The time now is 01:59 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.