What is Sequential Spawning?
Sequential spawning works in conjunction with subgrouping by setting the spawn order based on the subgroup number.
Normal spawning selects randomly from the entire list of available spawns when determining what to spawn next.
With sequential spawning enabled, on each spawner OnTick (the interval set by min/maxdelay) the next spawn is the subgroup that follows the currently spawned subgroup (the SequentialSpawn property contains the currently spawned subgroup).
This lets you set up progressive spawns that advance from one type of spawn to another. This is similar to the way in which champion spawns work, and you can use Sequential Spawning to set up champ-like spawns.
Sequential spawning enabled by setting the SequentialSpawn property to a value 0 or greater.
Placing spawns in subgroups
When adding sequential spawns, you will need to assign them to a particular subgroup. This is done by opening the extended spawner gump (use the small right arrow in the lower right corner of the main spawner gump), and entering a number into the Sub field for the spawn entry.
The entry will change color to reflect the subgroup assignment.
You can assign as many entries as you like to the same subgroup by just giving them the same subgroup numbers.
Sorting entries by subgroup number
The Sort button in the lower right corner of the main spawner gump will reorder all spawn entries based on their subgroup assignment, from lowest to highest.
This can be used to help visually organize your entries.
Note that order of entries within a subgroup can sometimes make a difference since they are excuted in order from top to bottom. You can use the Sort button to change this order by temporarily assigning a larger or smaller subgroup number to an entry, doing a Sort, setting the subgroup number back, and doing a Sort again. This can be used to move an entry to the top or bottom of the list of entries within a subgroup.
Fields in the spawner gump that control sequential spawns
There are several fields that you can set for individual spawn entries that will control the way in which sequential spawning occurs. These fields are:
Reset (time limit on advancement)
To (subgroup that is assigned on failure to advance)
Kills (kills required to advance)
Clr (clear spawns on advancement)
RK (restrict kills counted toward the kill requirement to subgroup)
Using the Group property with sequential spawns
The Group property of the spawner normally operates by forcing the spawner to spawn all of its spawns as a "group", and it will not respawn until all spawns in the "group" are gone.
When both SequentialSpawn and Group are set, then the spawner will fully spawn a subgroup and will not advance to the next subgroup until the current group of spawns has been eliminated. This allows "champ-like" progressive spawns in which each subgroup is a "level", and the level must be cleared to advance.
Adding a kill count requirement.
The Kills (kills needed) field of the extended spawner gump allows an additional criterion for advancement to be set, and that is the total required number of kills in that subgroup.
If the "kills needed" is greater than zero, then the specified number of kills must be made at that level in order to advance. This can be used in conjunction with, or instead of, the Group property to control level advancement based on kills.
When the Clr (ClearOnAdvance) flag is checked (default) the selected entries will be cleared on sequential spawn advancement. When not checked, the selected spawns will remain following sequential spawn advancement.
If the RK (restrict kills to subgroup) flag is checked, kills of that entry will only be counted if they come from the currently active sequential subgroup.
If the RK (RestrictKills) flag is not checked for a spawn group, they can be counted as kills on any sequential spawn level.
So for champ-like spawning, when advancing a level, mobs from previous levels cannot be used to advance the current levels count.
The default is false which means if spawns are not cleared on sequential advance, they can be counted as kills on other sequential spawn levels (this is how distro champ spawns work as well).
Adding a kill speed requirement
You can also add a requirement for kills to be made at a certain rate.
The KillCount property of the spawner is also normally reset if the kills are not made fast enough as determined by the KillReset spawner property which specifies how many regular spawner OnTicks can pass without a kill being made before KillCount is reset to zero.
So increasing the value of KillReset will give players more time between kills before the KillCount is reset to zero.
Adding a time limit to sequential advancement
You can place a time limit on "clearing" the level. This is set in the Reset (reset time) field of the extended spawner gump and is a value in minutes.
If you do not advance past the current level before the time expires then the "level" (i.e. subgroup) is reset to the value given in the To (reset to) field.
For example, if the "To" field is set to 0 then failing to clear the spawns in the current "level" before the "Reset" time expires will result in the spawner returning the sequential spawning state to subgroup 0.
Setting "To" to the previous subgroup, will cause the spawner to move the sequence back one when the level is not cleared in time, in a champ-like fashion.
Setting the reset time to zero means unlimited time, and the sequence will never be reset.
Each time the level is reset under sequential spawning, the KillCount of the spawner is also reset to zero.
Controlling spawn rates for individual subgroups
Individual spawn entry Min and Max delay times between spawns can be entered in the extended spawner gump columns labeled 'MinD' and 'MaxD'. Values are entered as minutes (so to specify 30 seconds you would enter 0.5).
Note that entering individual min/max delay times that are less than the spawner min/maxdelay will NOT result in faster spawning. Spawns cannot occur faster than the main spawner min/maxdelay.
If no individual entries are specified, then the spawning time for that entry will be determined by the main spawner min/maxdelay.
When setting individual min/maxdelays for spawns with sequential spawning, make sure to check the KillReset property to make sure you are allowing enough OnTicks to actually achieve the desired target KillCount. KillCount will still be reset if the number of main spawner OnTicks specified in KillReset passes without making a kill, so for example, if you make the main spawner min/maxdelay 1 minute, and an individual spawn min/maxdelay 10 minutes, you should set KillReset to at least 10 (10 OnTicks would be 10 minutes), to allow spawning to occur (and thus give the players something to kill) before the killcount was reset.
Additional notes
Note that in the extended gump, only the primary spawn entry for a subgroup displays the reset timer and level information, but this still applies to all of the spawns in the subgroup.
Subgroup 0 cannot have reset information assigned to it. When the sequence reaches the final level, it "wraps around" back to the lowest level.
Subgroup numbers can be any non-negative value, only the order matters, so setting spawns to subgroups 1,10,30,100 will give the same behavior as setting them 1,2,3,4.
Because the current sequence state is available on the SequentialSpawn property, this can be used to chain spawners by making one spawner (or any other object such as the Combination lock) dependent on the sequence level of another spawner.
For example, make a spawner, set the TargetObject to a second spawner, and set the TargetObjectProp to "sequentialspawn>3", and that spawner will not trigger until the second spawner passed level 3.
These features can be used to generally create progressive spawn patterns in which the spawns change or become more difficult as more kills are made in the same area.
For example, a graveyard spawn that initially is just skeletons, but as more kills are made, the spawn pattern changes to spectres, then liches, etc., and then after a period of inactivity, goes back to skeletons.
Or it could be used to produce a decreasing spawn pattern with use, for example, decreasing item spawns if they are consumed quickly (overharvesting).
Examples:
Several examples of champ-like sequential spawners are included in the xmlextras package.
Champ.xml is the standard VenomType champ-spawn, with the venom boss.
Champ2.xml other is a bit more amusing and uses farm animal bodytypes (but these are no pushover).
Champ3.xml is a variation of champ2.xml with smooth transitions between levels (Clr=false) and kills restricted to within level (RestrictKills=true), and a few of the spawns slowed down (MinD/MaxD=0.3 mins).
Champ4.xml creates a spawner that implements a simple sequential spawning configuration that starts with some harpies. Killing at least one (Kills=1) will advance to subgroup 1.
Subgroup 1 spawns orcs and trolls. The trolls will spawn a bit faster than the orcs. The orcs will not be cleared when the sequence advances (Clear=false) but cannot be used later on to advance any other level (Restrict=true). The trolls will be cleared on advancement (Clear=true).
The next level spawns an ogre. Because the kill requirement is set to zero, this level will advance automatically on the next OnTick (20 seconds). Because Clear=true, the ogre will be cleared when the level advances.
The next level is a lich that has to be killed within 10 minutes to advance (Reset=10). If it is not killed within the time limit, the sequence will be reset back to subgroup 0 (To=0).
If the lich is killed, the sequence will advance to the final level which is a pile of 500 gold pieces that has to be picked up to advance (Kills=1).
Each line is a spawn entry and the number next to it refers to the subgroup assigned to the entry.
spawner Champ#4
0 harpy/SAY/I guard the master Kills=1 MinDelay=2 mins MaxDelay=3 mins Clear=true
1 orc/SAY/I think I'll hang out here Kills=1 MinDelay=1 min MaxDelay=2 mins Restrict=true Clear=false
1 troll MinDelay=30 sec MaxDelay=1 min Clear=true
2 ogre/SAY/Just stopping by... Kills=0 Clear=true
3 lich/SAY/You will never get past me! Kills=1 Reset=10 mins To=0
4 gold,500/MSG/Here is your reward Kills=1
SequentialSpawn
MinDelay 20 seconds
MaxDelay 20 seconds
QUOTE (ArteGordon @ January 05, 2006 03:24 pm) |
Adding a kill count requirement.
If the "kills needed" is greater than zero, then the specified number of kills must be made at that level in order to advance. This can be used in conjunction with, or instead of, the Group property to control level advancement based on kills.
If the RK (restrict kills to subgroup) flag is checked, kills of that entry will only be counted if they come from the currently active sequential subgroup.
If the RK (RestrictKills) flag is not checked for a spawn group, they can be counted as kills on any sequential spawn level. So for champ-like spawning, when advancing a level, mobs from previous levels cannot be used to advance the current levels count. |
Hello Arte,
I tryed setup a spawner for seqeuntional spawn according to your instruction.
Is working perfect, but only when i have a one row in each subgroup (only one type of MOB in subgroup).
When i want to have more rows (type of MOBs) in subgroup, restrict kills options doesnt work good.
I dont know how i can use option for RK (restrict kills) in subgroup.
When i checked a RK box and write number to the kills column (for example one) i expect, that when i kill one MOB from this subgroup spawner will come over to next subgroup. But it doesnt happened.
Can you give me advice please?
Thank you.
if you post the .xml file for the spawner I can take a look.
Note that when you satisfy the number of kills, you will still have to wait until the next spawner tick for it to advance. That will depend on your min/maxdelay settings.
Also, if you have a short Min/MaxDelay setting, you might want to increase the value of the KillReset property. That is the maximum number of ticks that can pass without a kill before the killcount is reset back to zero. If the value is too small you may not be able to kill them fast enough to count toward your kill requirement.
Ohhh...
Im stupid
Sorry for my lame question.
Now its working perfect!
Thank you!
Hello arte,
I have tryed again, and i still have problem with RK options.
Could you see to
this XML spawner and give me advice what i did wrong?
I would turn off the group flag on the spawner. That requires that all spawns be gone before respawning can occur and usually is not what you want to use when sequential spawning.
If you want multiple spawns per tick, then set the Per field for the entries.
I would put your snakes, ettins, and birds in a subgroup other than zero. Zero is a special subgroup that acts just like the default non-sequential spawning where it randomly picks one of the entries each tick. It will probably work, but it may not do what you expect.
You dont have any kills specified for your subgroup 1, so it will automatically advance on the next tick after it spawns it. I am guessing that is not what you want to happen since you assigned it a Reset time of 30 minutes.
Ok I am able to set up sequential champ style spawns but Ive noticed that unlike champion spawns that have a time delay that can be used so that a player cannot camp the spawn and keep doing it over and over. I know I can use TOD to set when it will spawn during a specific time period but then if I set it for a 30 minute window it will respawn for the 30 minutes then not again for 24 hours. Of course you can shorten the time frame by using game time instead of realtime. Is there a way I can set the sequential spawn so that it can be completed once then doesnt respawn for say every 4-6 hours?
I am not sure, there is a correct place but I want to try...
I want to do a mechanism that divide group of players on two teams, and that teams goes on different locations.
From one spawner there is two teleporters A and B.
These teleporters leading to two different locations (A -> C) and (B -> D).
Teleporters must work on the rule:
Comes player No1 and try to go on the B teleporter but this don't work, so he goes to A teleporter and go to location C. The next player No2 comes and he can use only teleporter B (A is not active) so he goes to D location. No3 player goes to A, No4 to B and so on.
I have try to use sequential spawning but it do not work as I wish. The teleporters appears and disappears in min/maxdelay time, maybe there is possibility to do it with trigger (but how?). Can somebody help?

Maybe there is another way to do it?