Spawn Conditions Proposal
			 
			 
			
		
		
		
		OK, so in my downtime recently, I have been dreaming up a spawn condition system which can be used to make eqemu's spawn system more dynamic. Here is the proposal, let me know what you guys think: 
 
This system should facilitate several things which I have heard requests for in eqemu: 
1. time of day spawns - the ability to change what spawns in a zone based on what the EQ time is. 
2. LDoN spawns - change the spawn in a zone based on the ldon difficulty easily. 
3. mutliple spawn tables - The ability to switch an entire zone's spawn tables easily. 
4. quests - quests will be able to make permanent changes to spawn patterns even across zones. 
5. timed spawns - cause a mob to only spawn for an hour, then depop. 
 
 
 
New table to hold spawn conditions: 
zone - the zone this spawn condition applies to 
id - a numeric id of this spawn condition in this zone 
value - the current value of this spawn condition 
onchange - an action which says what to do for a spawn point which uses this spawn condition when that spawn point changes state between on and off. values: nothing, depop, repop, signal 
 
New table to handle time-driven events: 
zone, condition id - what condition does this apply to 
enabled - is this event enabled? 
time_base, period - values to specify when the event happens. It occurrs every period time units from time_base based on the EQ clock, assuming if we start before time_base, that we start our time base on the previous day and skip any events from that time base to now. 
action - what to do when this event is triggered. values: set, add, subtract, multiply, divide 
value - the number used by action 
 
the spawn2 table gets two new fields: 
1. a spawn condition ID - this associates this specific spawn point with a spawn condition. value 0 is a default 'always enabled' condition number. 
2. a spawn condition value - This is a threshold value for the spawn condition. If the condition is below this, the spawn is disabled, above: enabled. 
 
this new functionality will be complimented by some quest functions: 
quest::spawn_condition(zone_short, condition_id, new_value) - set a spawn condition's value. 
quest::get_spawn_condition(zone_short, condition_id) - returns the value of the spawn condition. 
quest::toggle_spawn_event(event_id, bool enable, bool reset_base); 
 
These quest events would be capible of affecting other currently active zones, to cause for example a mob to spawn in another zone, or entire spawn patterns to be altered from a different zone. 
		
	
		
		
		
		
		
		
		
		
		
	
		
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 |