Finishing touches on "Spawn" subsystem

EQ2Emulator Development forum.

Moderator: Team Members

Post Reply
User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Finishing touches on "Spawn" subsystem

Post by John Adams » Thu Aug 28, 2008 8:26 am

I was thinking... and as you know, usually a bad thing... I would like to get this one subsystem completed so the Content Team can at least say Spawns are done.
What we currently have:
  • - Ability to spawn an NPC, Object, Sign, Widget
    - Ability to respawn a killed or depopped spawn
    - Ability to set "placeholders" with percentage chance for one or the other to spawn at a given location
What we're missing:
  • - Spawn "conditions", where criteria is set in order to determine pop/depop of NPC types (ie., day shift, night shift)
    - Ability to spawn "sets" of NPCs (beastmaster + his beast) which may also be placeholders for a different type of NPC (ie., falconer and his falcon 50% of the time)
    - Ability to spawn "groups" of NPCs (click one, they all light up and react together)
    - Ability to spawn NPCs/Objects for only a single client or group of clients all sharing the same quest/steps (Zexis)
    - Split the zonespawngroup.spawn_script so you can assign unique spawn_scripts for multiple spawns in the same group/location
Am I missing anything else for Spawns specifically?

I'd like to see these implemented before 0.7 if possible, so we have til 0.8 to play with it and set it up for Beta.
Last edited by John Adams on Sat Aug 30, 2008 7:55 am, edited 2 times in total.

User avatar
ZexisStryfe
Posts: 1026
Joined: Thu Jul 26, 2007 6:39 am
EQ2Emu Server: Sytherian Legends
Location: Connecticut
Contact:

Post by ZexisStryfe » Thu Aug 28, 2008 5:02 pm

Another thing the live servers can do is have spawns that only certain people can see. ie- you are on a certain step of a quest collecting spirits of the dead, and only you and others on that step of the quest can see them. (this quest in particular exists in Darklight Woods and is a lvl 6ish quest if you want to check it out)
~ EQ2 Emulator Project Manager

Image
Image
Image
"Zexis, from this day forth, you shall be known as... '3 of 6'" - John Adams

User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Post by John Adams » Thu Aug 28, 2008 6:23 pm

Thank you, Zexis. I forgot about that spawn scenario.

LethalEncounter
Team: Zombie
Posts: 2717
Joined: Wed Jul 25, 2007 10:10 pm

Re: Finishing touches on "Spawn" subsystem

Post by LethalEncounter » Fri Aug 29, 2008 5:01 am

John Adams wrote: What we're missing:
- Spawn "conditions", where criteria is set in order to determine pop/depop of NPC types (ie., day shift, night shift)
- Ability to spawn "sets" of NPCs (beastmaster + his beast) which may also be placeholders for a different type of NPC (ie., falconer and his falcon 50% of the time)
- Ability to spawn "groups" of NPCs (click one, they all light up and react together)
- Ability to spawn NPCs/Objects for only a single client or group of clients all sharing the same quest/steps (Zexis)
1. Which conditions did you need besides day and night?
2. Your next two examples would be fixed by having an additional table that combines multiple spawn groups together to form a party. I tried thinking of a way to get it to work without adding a new table but I cant think of anything. The biggest problem with adding a new table is the name since it will get confusing having two group tables for spawns. How about the new table being called zonespawnparty? That might differentiate it enough from zonespawngroup. If we do create this table, we would need to have party_id in zonespawns instead of spawngroup_id.
3. I never knew Live did that. OK, I'll add it as a LUA command, with the option to make them completely invisible to other players not in your group.
Last edited by LethalEncounter on Fri Aug 29, 2008 6:19 am, edited 1 time in total.

LethalEncounter
Team: Zombie
Posts: 2717
Joined: Wed Jul 25, 2007 10:10 pm

Post by LethalEncounter » Fri Aug 29, 2008 6:17 am

Alternatively instead of using zonespawnparty we could add a field in zonespawngroup called party_id that could be used to group spawngroups together. The only problem is that party_id wouldnt be a value that points anywhere. It would just be a number that if greater than 0 and the same as another spawngroup, would determine that they should be in the same group and should spawn together. I can see some complications with this, which is why I didnt bring it up earlier :P

Tyr
Posts: 32
Joined: Tue Jul 15, 2008 7:13 am

Post by Tyr » Fri Aug 29, 2008 10:39 am

Other conditions could be things like:
- Spawn at a specific time (5:53am game time for example)
- Spawn if X event has taken place (thinking of the avatars and how they do/used to work)
Also, I don’t know if we have this or not, but a “spawn time rangeâ€

User avatar
Arremis
Retired
Posts: 388
Joined: Sun Sep 02, 2007 10:11 am
Location: Memphis, TN

Post by Arremis » Fri Aug 29, 2008 12:02 pm

Some spawns only spawn if you're on a certain step in a quest, like that one gnoll that spawns in TS between the towers at the BB waterfall zone line, but only if you're on a certain step of that one quest I can't recall what it is. This is also an example of an area-specific spawn. The gnoll only spawns when you get withn a certain area near the towers.

User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Post by John Adams » Fri Aug 29, 2008 6:31 pm

Lethalencounter wrote:1. Which conditions did you need besides day and night?
I think if we make it generic, you would not have to tag it "day/night" or anything else. I am thinking back to the condition spawning in EQEmu, where there was a spawn_conditions table, and the spawn2 table contained a condition_id, and a condition_value that determined which state the condition was in. blahblah maybe that's too complex. Either way, I think I am just looking for a way to say "when 'x' condition is met, spawn 'y'" which may or may not include despawning 'z'.
Lethalencounter wrote:Alternatively instead of using zonespawnparty we could add a field in zonespawngroup called party_id
This is what I was thinking, actually. If a spawn belongs to a "party" of spawns, they could share a party_id so the server knows to spawn this set together. It may only be confusing in setup, but who's going to do those setups? Admins. They can suck it up and praise our genius and simplicity. This is not the only solution, so we can discuss it further if you think another intersection table is easier. Regardless, you're going to end up with a spawngroup_id -> party_id. The only reason I would think an intersection table was necessary is if we were going many-to-one - but this is really one-to-one, right?
Tyr wrote:Also, I don’t know if we have this or not, but a “spawn time rangeâ€

Tyr
Posts: 32
Joined: Tue Jul 15, 2008 7:13 am

Post by Tyr » Fri Aug 29, 2008 9:00 pm

John Adams wrote:This may simply be an effect of you don't get the spawn sent to your client until you are within the configured visual range. Or do you know for a fact if someone is standing near his spawn spot, he does not appear until YOU approach? That would be an interesting twist...
Oh there definitely are triggered spawns like there. Quite a few of them too, for instance on one of the HQs SSOY or SBD, can’t remember which; you have to run through x,y and z of the lowest level of the Qeynos catacombs, and when you do it triggers some assassins to spawn and attack you.
There are also alot of instances of mobs that spawn to match your level, I am thinking of the tempest quests on live most recently

User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Post by John Adams » Fri Aug 29, 2008 9:23 pm

Right, I am still not talking about Proximity spawns, since that can be handled by the AddQuestLocationStep() function + the new Spawn() function LE is adding. I recall a newbie area quest with rogues jumping out of a tree near the scarecrows.
I am asking about being tasked with going to kill a specific mob somewhere in the area of (wherever), and whether or not that spawn pops >the moment< I get that quest from the quest giver, but only to my client (so does no one else even see it?) -or- does it only spawn when I get within 100' as Arremis suggests?
Not sure it really makes a difference, if the spawn you are targetting is only visible to you.

LethalEncounter
Team: Zombie
Posts: 2717
Joined: Wed Jul 25, 2007 10:10 pm

Post by LethalEncounter » Sat Aug 30, 2008 7:37 am

Hey John it seems that several of these things would be accomplished whenever I get the Zone LUA Scripts completed. It would even allow greater flexibility in conditions as you could make some pretty complex conditions in LUA that you wouldn't dream of making using the database.
Btw as a side note, I am going to be adding /spawn set spawn_script and /spawn set faction. Any others that I should add? The problem right now with spawn scripts is that they are only in the zonespawngroup table, so if you spawn a new spawn that isn't in that table it wont use the spawn_script until I add the command and you set it for the spawn.

User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Post by John Adams » Sat Aug 30, 2008 7:54 am

LethalEncounter wrote:Hey John it seems that several of these things would be accomplished whenever I get the Zone LUA Scripts completed. It would even allow greater flexibility in conditions as you could make some pretty complex conditions in LUA that you wouldn't dream of making using the database.
Sold, I'll take it. :)
LethalEncounter wrote:Btw as a side note, I am going to be adding /spawn set spawn_script and /spawn set faction. Any others that I should add? The problem right now with spawn scripts is that they are only in the zonespawngroup table, so if you spawn a new spawn that isn't in that table it wont use the spawn_script until I add the command and you set it for the spawn.
Before you get to crazy on zonespawngroup.spawn_scripts, there is a request in from me to change this.
http://eq2emulator.net/forums/viewtopic.php?t=827
We have run into a pretty real scenario where locking a zonespawngroup to one single spawn_script is not going to work - unless you have something up your sleeve you have not told us about. :) See the thread above.

User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Re: Finishing touches on "Spawn" subsystem

Post by John Adams » Fri Sep 12, 2008 7:41 pm

John Adams wrote:- Spawn "conditions", where criteria is set in order to determine pop/depop of NPC types (ie., day shift, night shift)
Seeing some older data collected last Nov 07, reminded me of a "spawn condition" that could be useful.
Halloween, Frostfell, etc... where, only between specific dates of the Real-World calendar year, certain spawns are available in zones. Like the hanging bats, jack-o-lanterns, or NPCs donning scarey masks or wearing other festive garments.
I imagine the latter requires an entirely different spawn_id than the "normal" one, with different equipped items, perhaps? Just another example of a huge `Condition`.

User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Post by John Adams » Sat Feb 07, 2009 10:37 am

In planning out the final stages of the 0.7 cycle, I'd like the mentioned spawn enhancements to be considered soon, so we can wrap up our first 2 zones we populated. If we need to discuss it further, or work out the next highest priority after harvesting/collecting, let's do so maybe after the holidays.
0.7 is dying to be released, but many things are still unfinished and I'd feel good about making you complete them, LE. HAH ~runs~

User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Re: Finishing touches on "Spawn" subsystem

Post by John Adams » Sun May 31, 2009 9:50 am

John Adams wrote:I was thinking... and as you know, usually a bad thing... I would like to get this one subsystem completed so the Content Team can at least say Spawns are done.
What we currently have:
  • - Ability to spawn an NPC, Object, Sign, Widget
    - Ability to respawn a killed or depopped spawn
    - Ability to set "placeholders" with percentage chance for one or the other to spawn at a given location
    - Ability to spawn NPCs/Objects for only a single client or group of clients all sharing the same quest/steps (Zexis)
    - Split the zonespawngroup.spawn_script so you can assign unique spawn_scripts for multiple spawns in the same group/location
What we're missing:
  • - Spawn "conditions", where criteria is set in order to determine pop/depop of NPC types (ie., day shift, night shift)
    - Ability to spawn "sets" of NPCs (beastmaster + his beast) which may also be placeholders for a different type of NPC (ie., falconer and his falcon 50% of the time)
    - Ability to spawn "groups" of NPCs (click one, they all light up and react together)
Am I missing anything else for Spawns specifically?

I'd like to see these implemented before 0.7 if possible, so we have til 0.8 to play with it and set it up for Beta.
As you can tell by the date of this post, we have been waiting a long time for some additional Spawn functionality. That is not a negative, because I am the first to admit I ask for new stuff almost daily =) so I totally blame myself for not keeping focus on this.

But we've come to a point where some new options are coming available to use for Spawns (size_offset, min/max level, min_group_size, max_group_size), and with that, I'd like to switch focus for just a bit to at least designing out what we need to complete Spawns ("complete" being, what we know thusfar heh)

LE, are you ok with this? If not, tell me to sod off :)

As far as Priority for these features goes, here's a revised list:
  • - Ability to spawn "groups" of NPCs (click one, they all light up and react together)

    - Ability to spawn "sets" of NPCs (beastmaster + his beast) which may also be placeholders for a different type of NPC (ie., falconer and his falcon 50% of the time)

    - Spawn "conditions", where criteria is set in order to determine pop/depop of NPC types (ie., day shift, night shift)
The first one, spawn parties. These give us the effect when you click 1 goblin, 5 are targetted, and if you aggro the 1, all 5 will come running (no group splitting, you shadey monks!)

The next one is a bit trickier - and we might solve it with LUA(?) but when a beastmaster spawns (outpost of the overlord), they usually have a beast also. Wolf, bear, hawk whatever. However, in a particular x,y,z spawn location, it could be a Wolf, Bear, or Hawk trainer. So that means we need to utilize the existing spawnpercentages functionality - BUT when the spawn is determined, link that spawn to the exact type of "beast" that should spawn with him/her. Kinda like a pet.

Which is why I was wondering if it could/should be done with LUA... spawn the NPC, and have that NPC summon it's "pet". You tell me how that's supposed to work. Also, these two will definitely be it's own "spawn party", or could be a member of a larger party of multiple beastmasters. Complex, huh?


Lastly, I'd like to see a "condition" field added to zonespawns where we can set an int value correlating to a list of "conditions" we put into a new `zone_conditions` table. If the value in the zonespawns.condition field is 1, look up in the zone_conditions table for condition_id 1, and determine whether or not that entry is allowed to spawn or not.

Example conditions are:

Frostfell
Halloween
Bristlebane Day
Erollisi Day
Brell Day
Night Spawns
Day Spawns

EQEmu had this functionality, so maybe we can look to see how they did it, and improve on the system for our style.

Any questions/discussions, let's have it now. We've dragged this sucker out long enough ;) I promise not to ask for anything else -- today.

Post Reply

Who is online

Users browsing this forum: No registered users and 0 guests