BEGIN
DECLARE sInstance VARCHAR(8) DEFAULT '1';
DECLARE iVehSpawnMax INT DEFAULT 387;
DECLARE iTimeoutMax INT DEFAULT 450;
DECLARE iTimeout INT DEFAULT 0;
DECLARE iNumVehExisting INT DEFAULT 0;
DECLARE iNumClassExisting INT DEFAULT 0;
DECLARE i INT DEFAULT 1;
CALL pCleanup();
SELECT COUNT(*)
INTO iNumVehExisting
FROM object_data
WHERE Instance = sInstance
AND Classname != 'Hedgehog_DZ'
AND Classname != 'Wire_cat1'
AND Classname != 'Sandbag1_DZ'
AND Classname != 'TrapBear'
AND Classname != 'TentStorage'
AND Classname != 'TentStorageR' AND
Classname != 'wooden_shed_lvl_1' AND
Classname != 'log_house_lvl_2' AND
Classname != 'wooden_house_lvl_3' AND
Classname != 'large_shed_lvl_1' AND
Classname != 'small_house_lvl_2' AND
Classname != 'big_house_lvl_3' AND
Classname != 'small_garage' AND
Classname != 'big_garage' AND
Classname != 'object_x';
WHILE (iNumVehExisting < iVehSpawnMax) DO
SELECT Classname, Chance, MaxNum, Damage
INTO @rsClassname, @rsChance, @rsMaxNum, @rsDamage
FROM object_classes ORDER BY RAND() LIMIT 1;
SELECT COUNT(*)
INTO iNumClassExisting
FROM object_data
WHERE Instance = sInstance
AND Classname = @rsClassname;
IF (iNumClassExisting < @rsMaxNum) THEN
IF (rndspawn(@rschance) = 1) THEN
INSERT INTO `object_data` (ObjectUID, Instance,Classname, Damage, CharacterID, Worldspace, Inventory, Hitpoints, Fuel, Datestamp)
SELECT ot.ObjectUID, '1', ot.Classname, ot.Damage, '0', ot.Worldspace, '[]', ot.Hitpoints, '0.01', SYSDATE()
FROM (SELECT oc.Classname, oc.Chance, oc.MaxNum, oc.Damage, oc.Hitpoints, os.ObjectUID, os.Worldspace
FROM object_classes AS oc
INNER JOIN `object_spawns` AS os
ON oc.Classname = os.Classname
ORDER BY RAND()) AS ot
WHERE NOT EXISTS (SELECT od.ObjectUID
FROM `object_data` AS od
WHERE ot.ObjectUID = od.ObjectUID)
AND fGetClassCount(ot.Classname) < ot.MaxNum
AND fGetSpawnFromChance(ot.Chance) = 1
LIMIT 1;
SELECT COUNT(*)
INTO iNumVehExisting
FROM object_data
WHERE Instance = sInstance
AND Classname != 'Hedgehog_DZ'
AND Classname != 'Wire_cat1'
AND Classname != 'Sandbag1_DZ'
AND Classname != 'TrapBear'
AND Classname != 'TentStorage'
AND Classname != 'TentStorageR' AND
Classname != 'wooden_shed_lvl_1' AND
Classname != 'log_house_lvl_2' AND
Classname != 'wooden_house_lvl_3' AND
Classname != 'large_shed_lvl_1' AND
Classname != 'small_house_lvl_2' AND
Classname != 'big_house_lvl_3' AND
Classname != 'small_garage' AND
Classname != 'big_garage' AND
Classname != 'object_x';
SELECT COUNT(*)
INTO iNumClassExisting
FROM object_data
WHERE Instance = sInstance
AND Classname = @rsClassname;
END IF;
END IF;
SET iTimeout = iTimeout + 1;
IF (iTimeout >= iTimeoutMax) THEN
SET iNumVehExisting = iVehSpawnMax;
END IF;
END WHILE;
SET i = i + 1;
END