ok Phantom, I have seen you bash bob smart and his spawner at every opportunity. Often it is even in threads that dont have anything to do with spawners (e.g. blaming the "unexplained lag" that some people have reported in b36 on bob smart and his spawner)
Now, I use his xml spawner as repackaged by Knightshade, I LIKE it, and I dont feel I deserve to be shot for it, but given that you feel so strongly about it I thought I would go through the "buggy-assed" spawner script again and look for all these so-called bugs.
Well, I dont see em. There was one fix that applied to both the distro spawner and to xmlspawner that was pointed out in another post (sorry forgot who found it) relating to the way in which locations are specified after the map leading to potentially lost internals.
I did find a few differences as listed below.
There is a small potential bug in the distro spawner that is addressed in xmlspawner
in Spawner(), index is not tested for negative values leading to a potential invalid index reference.
distro
[code:1]if ( map == null || map == Map.Internal || m_CreaturesName.Count == 0 || index >= m_CreaturesName.Count )
return;
Defrag();
if ( m_Creatures.Count >= m_Count )
return;
Type type = SpawnerType.GetType( (string)m_CreaturesName[index] );
[/code:1]
xmlspawner
[code:1]// Make sure everything is ok to spawn an object
if( ( map == null ) ||
( map == Map.Internal ) ||
( this.m_SpawnObjects.Count == 0 ) ||
( index < 0 ) ||
( index >= this.m_SpawnObjects.Count ) )
return false;
// Remove any spawns that don't belong to the spawner any more.
this.Defrag();
// Get the spawn object at the required index
SpawnObject TheSpawn = this.m_SpawnObjects[index] as SpawnObject;[/code:1]
Another difference is that xmlspawner does ontick() defrags for all spawners, distro spawner only does this for group=true spawners. This leads to a Defrag followed by spawn in xmlspawner, while only a spawn in distro. I may be wrong, but I believe the former is more correct (taming a non-group spawn will stop the distro spawner).
distro
[code:1]public void OnTick()
{
DoTimer();
if ( m_Group )
{
Defrag();
if ( m_Creatures.Count == 0 )
{
Respawn();
}
else
{
return;
}
}
else
{
Spawn();
}
}[/code:1]
xmlspawner
[code:1]public void OnTick()
{
this.Defrag();
this.DoTimer();
if( this.m_Group == true )
{
if( this.TotalSpawnedObjects <= 0 )
Respawn();
else
return;
}
else
Spawn();
}[/code:1]
Now, one thing I am definitely NOT doing is bashing any of the devs or those responsible for the distro spawner. The whole b36 package is amazing and I cant heap enough praise on everyone for the job they have done, but I have to say, if there is a problem with bob smarts spawner, then please tell us what it is?
In all the posts relating to this, the only piece of actual information that I've gathered is that you dont like bob smart, his world package, or his spawner. To support this dislike you have made statements about his spawner that just arent accurate, e.g. that [get home doesnt work with xmlspawner, (in my experience it does), and that home range doesnt work (in my experience it does).
Bottom line is, I'm having trouble getting an accurate picture of your criticism.
It sounds personal to me and I would like to make it a bit more objective.
What, exactly, in your opinion, is wrong with xmlspawner???