PDA

View Full Version : Spawn Conditions Proposal


fathernitwit
02-16-2005, 04:24 PM
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.

garim12
02-17-2005, 01:48 PM
What about triggered on death spawns? That's something I've been thinking about lately that I haven't yet seen in the emu (unless it's there and I completely missed it). For instance, when you kill Lucan, the undead version of him spawns for the Soulfire quest. Many monsters in the Ykesha expansion trigger boss monsters when they die as well.

mattmeck
02-17-2005, 03:23 PM
Sounds good, i know we would use these changes to better S2K


What about triggered on death spawns? That's something I've been thinking about lately that I haven't yet seen in the emu (unless it's there and I completely missed it). For instance, when you kill Lucan, the undead version of him spawns for the Soulfire quest. Many monsters in the Ykesha expansion trigger boss monsters when they die as well.

You can do this using the perl quest system.

dragonflz
02-18-2005, 01:15 PM
I for one would like to see these proposed changes implemented...

Drag

fathernitwit
02-24-2005, 03:46 PM
for those interested, this is currently running on PEQ, and will get merged into CVS when I get my happy ass around to it.

fathernitwit
03-21-2005, 06:11 AM
tutorial on use of final implementation:
http://www.eqemulator.net/forums/showthread.php?p=106816