123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491 |
- set NOCOUNT on
- /*
- Look for error rows in the data.
- */
- /*
- Object Radius Test
- */
- declare @cErrors int
- select @cErrors = COUNT(*) from expendables where radius <= 0.0
- if (@cErrors > 0)
- select name, radius from expendables, missiles where (radius <= 0.0)
- select @cErrors = COUNT(*) from projectiles where size_cm <= 0
- if (@cErrors > 0)
- select projectileid, size_cm from projectiles where size_cm <= 0
- select @cErrors = COUNT(*) from shiptypes where length <= 0
- if (@cErrors > 0)
- select shiptypeid, name, length from shiptypes where length <= 0
- select @cErrors = COUNT(*) from stationtypes where radius <= 0.0
- if (@cErrors > 0)
- select stationtypeid, name, radius from stationtypes where radius <= 0
- go
- /*
- Object Mass Test
- */
- declare @cErrors int
- select @cErrors = COUNT(*) from expendables where mass <= 0.0
- if (@cErrors > 0)
- select expendableid, name, mass from expendables where mass <= 0.0
- select @cErrors = COUNT(*) from parts where mass <= 0
- if (@cErrors > 0)
- select partid, name, mass from parts where mass <= 0
- select @cErrors = COUNT(*) from shiptypes where weight <= 0.0
- if (@cErrors > 0)
- select shiptypeid, name, weight from shiptypes where weight <= 0.0
- go
- /*
- Hit Points Test
- */
- declare @cErrors int
- select @cErrors = COUNT(*) from expendables where hitpoints < 0
- if (@cErrors > 0)
- select expendableid, name, hitpoints from expendables where hitpoints < 0
- select @cErrors = COUNT(*) from projectiles where hitpointsself < 0
- if (@cErrors > 0)
- select projectileid, hitpointsself from projectiles where hitpointsself < 0
- select @cErrors = COUNT(*) from shiptypes where basehitpoints < 0
- if (@cErrors > 0)
- select shiptypeid, name, basehitpoints from shiptypes where basehitpoints < 0
- select @cErrors = COUNT(*) from stationtypes where hitpointsarmor < 0
- if (@cErrors > 0)
- select stationtypeid, name, hitpointsarmor from stationtypes where hitpointsarmor < 0
- select @cErrors = COUNT(*) from stationtypes where hitpointsshield < 0
- if (@cErrors > 0)
- select stationtypeid, name, hitpointsshield from stationtypes where hitpointsshield < 0
- select @cErrors = COUNT(*) from shields where (shields.hitpoints < 0)
- if (@cErrors > 0)
- select parts.partid, name, shields.hitpoints from parts, shields where (parts.partid = shields.partid) AND (shields.hitpoints < 0)
- go
- /*
- Price Test
- */
- declare @cErrors int
- select @cErrors = COUNT(*) from developments where (price <= 0)
- if (@cErrors > 0)
- select DevelopmentID, Name, Price from developments where (price <= 0)
- select @cErrors = COUNT(*) from drones where (price <= 0) and (DroneType <> 6)
- if (@cErrors > 0)
- select DroneID, Name, Price from drones where (price <= 0) and (DroneType <> 6)
- select @cErrors = COUNT(*) from expendables where (price <= 0)
- if (@cErrors > 0)
- select ExpendableId, Name, Price from expendables where (price <= 0)
- select @cErrors = COUNT(*) from parts where (price <= 0)
- if (@cErrors > 0)
- select PartID, Name, Price from parts where (price <= 0)
- select @cErrors = COUNT(*) from shiptypes where (price <= 0) and (shiptypeid not in (select escapepodshiptypeid from civs))
- if (@cErrors > 0)
- select ShipTypeID, Name, Price from shiptypes where (price <= 0) and (shiptypeid not in (select escapepodshiptypeid from civs))
- select @cErrors = COUNT(*) from stationtypes where (price <= 0)
- if (@cErrors > 0)
- select StationTypeID, Name, Price from stationtypes where (price <= 0)
- go
- /*
- Drone Test
- */
- declare @cErrors int
- select @cErrors = COUNT(*) from drones where (dronetype > 6) or (dronetype = 5) or (dronetype < 0)
- if (@cErrors > 0)
- select Name, dronetype from drones where (dronetype > 6) or (dronetype = 5) or (dronetype < 0)
- select @cErrors = COUNT(*) from drones, parts p1, parts p2, shiptypes where (drones.shiptypeid = shiptypes.shiptypeid) AND (p1.partid = drones.PartID_Weapon) AND (p2.partid = drones.PartID_Shield) AND (p1.drain + p2.drain > shiptypes.capacity)
- if (@cErrors > 0)
- select drones.droneid, drones.name, p1.name, p1.drain, p2.name, p2.drain, shiptypes.capacity from drones, parts p1, parts p2, shiptypes where (drones.shiptypeid = shiptypes.shiptypeid) AND (p1.partid = drones.PartID_Weapon) AND (p2.partid = drones.PartID_Shield) AND (p1.drain + p2.drain > shiptypes.capacity)
- go
- /*
- Mine Test
- */
- declare @cErrors int
- select @cErrors = COUNT(*) from mines where (munitioncount > 50)
- if (@cErrors > 0)
- select expendableid, munitioncount from mines where (munitioncount > 50)
- go
- /*
- Projectile Test
- */
- declare @cErrors int
- select @cErrors = COUNT(*) from projectiles where (timeduration < 250)
- if (@cErrors > 0)
- select projectileid, timeduration from projectiles where (timeduration < 250)
- select @cErrors = COUNT(*) from projectiles where (speedmax < 50) OR (speedmax > 1000)
- if (@cErrors > 0)
- select projectileid, speedmax from projectiles where (speedmax < 50) OR (speedmax > 1000)
- select @cErrors = COUNT(*) from projectiles where (hitpointsinflict < 0)
- if (@cErrors > 0)
- select projectileid, hitpointsinflict from projectiles where (hitpointsinflict < 0)
- go
- /*
- Shield Test
- */
- declare @cErrors int
- select @cErrors = COUNT(*) from shields where (regenrate < 0)
- if (@cErrors > 0)
- select parts.partid, name, regenrate from parts, shields where (parts.partid = shields.partid) AND (regenrate < 0)
- select @cErrors = COUNT(*) from shields where (percentreflectparticle < 0) OR (percentreflectparticle > 100)
- if (@cErrors > 0)
- select parts.partid, name, percentreflectparticle from parts, shields where (parts.partid = shields.partid) AND ((percentreflectparticle < 0) OR (percentreflectparticle > 100))
- select @cErrors = COUNT(*) from shields where (percentreflectenergy < 0) OR (percentreflectenergy > 100)
- if (@cErrors > 0)
- select parts.partid, name, percentreflectenergy from parts, shields where (parts.partid = shields.partid) AND ((percentreflectenergy < 0) OR (percentreflectenergy > 100))
- select @cErrors = COUNT(*) from shields where (percentleakageparticle < 0) OR (percentleakageparticle > 100)
- if (@cErrors > 0)
- select parts.partid, name, percentleakageparticle from parts, shields where (parts.partid = shields.partid) AND ((percentleakageparticle < 0) OR (percentleakageparticle > 100))
- select @cErrors = COUNT(*) from shields where (percentleakageenergy < 0) OR (percentleakageenergy > 100)
- if (@cErrors > 0)
- select parts.partid, name, percentleakageenergy from parts, shields where (parts.partid = shields.partid) AND ((percentleakageenergy < 0) OR (percentleakageenergy > 100))
- go
- /*
- Ship Test
- */
- declare @cErrors int
- select @cErrors = COUNT(*) from shiptypes where
- (length * length / 4) < (cockpitx * cockpitx) + (cockpity * cockpity) + (cockpitz * cockpitz)
- if (@cErrors > 0)
- select shiptypeid, name, length / 2, cockpitx, cockpity, cockpitz
- from shiptypes where (length * length / 4) < (cockpitx * cockpitx) + (cockpity * cockpity) + (cockpitz * cockpitz)
- select @cErrors = COUNT(*) from shiptypes where
- (shipclassid < 0) OR (shipclassid > 8)
- if (@cErrors > 0)
- select shiptypeid, name, shipclassid from shiptypes where
- (shipclassid < 0) OR (shipclassid > 8)
- /*
- AttachPoint test (this one's tricky).
- */
- select COUNT(*) as 'AttachPoints' into #bvtattachpt from attachpoints group by shiptypeid, parttypeid having COUNT(*) > 4
- select @cErrors = COUNT(*) from #bvtattachpt
- if (@cErrors > 0)
- select shiptypeid, parttypeid, COUNT(*) as 'AttachPoints' from attachpoints group by shiptypeid, parttypeid having COUNT(*) > 4
- drop table #bvtattachpt
- go
- /*
- Signature Test
- */
- declare @cErrors int
- select @cErrors = COUNT(*) from shiptypes where (basesignature < 50)
- if (@cErrors > 0)
- select shiptypeid, name, basesignature from shiptypes where (basesignature < 50)
- go
- /*
- Station Test
- */
- declare @cErrors int
- select @cErrors = COUNT(*) from stationtypes where (rateregenarmor < 0)
- if (@cErrors > 0)
- select stationtypeid, name, rateregenarmor from stationtypes where (rateregenarmor < 0)
- select @cErrors = COUNT(*) from stationtypes where (rateregenshield < 0)
- if (@cErrors > 0)
- select stationtypeid, name, rateregenshield from stationtypes where (rateregenshield < 0)
- select @cErrors = COUNT(*) from stationtypes where (UpgradeStationTypeID >= stationtypeid)
- if (@cErrors > 0)
- select stationtypeid, name, upgradestationtypeid from stationtypes where (UpgradeStationTypeID >= stationtypeid)
- select @cErrors = COUNT(*) from stationtypes where (upgradeprice = 0) AND (UpgradeName IS NOT NULL)
- if (@cErrors > 0)
- select stationtypeid, name, upgradeprice, upgradename from stationtypes where (upgradeprice = 0) AND (UpgradeName IS NOT NULL)
- select @cErrors = COUNT(*) from stationtypes where (capabilities % 2 = 1) and ((capabilities / 32) % 2 = 0)
- if (@cErrors > 0)
- select stationtypeid, name, capabilities from stationtypes where (capabilities % 2 = 1) and ((capabilities / 32) % 2 = 0)
- go
- /*
- Station Upgrade Test
- */
- declare @iIndex int
- declare @siStationType smallint
- declare @siUpgradeType smallint
- declare @szStationName varchar(20)
- declare @szUpgradeName varchar(20)
- declare @szStationEffect TechBits
- declare @szUpgradeEffect TechBits
- declare @iStationEffect int
- declare @iUpgradeEffect int
- declare @szStationLocal TechBits
- declare @szUpgradeLocal TechBits
- declare @iStationLocal int
- declare @iUpgradeLocal int
- declare curStations scroll cursor for
- select st1.stationtypeid, st2.stationtypeid,
- RTRIM(st1.name), RTRIM(st2.name),
- st1.techbitseffect, st2.techbitseffect,
- st1.techbitslocal, st2.techbitslocal
- from
- stationtypes st1, stationtypes st2 where
- (st1.upgradestationtypeid = st2.stationtypeid)
- order by st1.stationtypeid
- open curStations
- fetch next from curStations into @siStationType,
- @siUpgradeType,
- @szStationName,
- @szUpgradeName,
- @szStationEffect,
- @szUpgradeEffect,
- @szStationLocal,
- @szUpgradeLocal
- while (@@fetch_status <> -1)
- begin
- if (@@fetch_status <> -2)
- begin
- /*
- First check the effect bits.
- */
- select @iIndex = 1
- while (@iIndex <= datalength(@szStationEffect))
- begin
- /*
- Pull off one character at a time and compare the
- two bitmasks. Note that ASCII 0 == 48,
- ASCII A == 65, and ASCII a == 97.
- */
- select @iStationEffect =
- ASCII(SUBSTRING(@szStationEffect, @iIndex, 1)) - 48
- if (@iStationEffect > 9)
- select @iStationEffect = @iStationEffect - 7
- if (@iStationEffect > 15)
- select @iStationEffect = @iStationEffect - 32
- select @iUpgradeEffect =
- ASCII(SUBSTRING(@szUpgradeEffect, @iIndex, 1)) - 48
- if (@iUpgradeEffect > 9)
- select @iUpgradeEffect = @iUpgradeEffect - 7
- if (@iUpgradeEffect > 15)
- select @iUpgradeEffect = @iUpgradeEffect - 32
- if (@iStationEffect & @iUpgradeEffect <> @iStationEffect)
- begin
- select "Warning: Illegal upgrade from " +
- @szStationName + " to " + @szUpgradeName +
- " (effect)."
- select @iIndex = datalength(@szUpgradeEffect)
- end
- select @iIndex = @iIndex + 1
- end
- /*
- Now check the local bits.
- */
- select @iIndex = 1
- while (@iIndex <= datalength(@szStationLocal))
- begin
- /*
- Pull off one character at a time and compare the
- two bitmasks. Note that ASCII 0 == 48,
- ASCII A == 65, and ASCII a == 97.
- */
- select @iStationLocal =
- ASCII(SUBSTRING(@szStationLocal, @iIndex, 1)) - 48
- if (@iStationLocal > 9)
- select @iStationLocal = @iStationLocal - 7
- if (@iStationEffect > 15)
- select @iStationLocal = @iStationLocal - 32
- select @iUpgradeLocal =
- ASCII(SUBSTRING(@szUpgradeLocal, @iIndex, 1)) - 48
- if (@iUpgradeLocal > 9)
- select @iUpgradeLocal = @iUpgradeLocal - 7
- if (@iUpgradeLocal > 15)
- select @iUpgradeLocal = @iUpgradeLocal - 32
- if (@iStationLocal & @iUpgradeLocal <> @iStationLocal)
- begin
- select "Warning: Illegal upgrade from " +
- @szStationName + " to " + @szUpgradeName +
- " (local)."
- select @iIndex = datalength(@szUpgradeLocal)
- end
- select @iIndex = @iIndex + 1
- end
- end
- fetch next from curStations into @siStationType,
- @siUpgradeType,
- @szStationName,
- @szUpgradeName,
- @szStationEffect,
- @szUpgradeEffect,
- @szStationLocal,
- @szUpgradeLocal
- end
- close curStations
- deallocate curStations
- go
- /*
- Tech Tree Test
- */
- declare @cErrors int
- select @cErrors = COUNT(*) from civs where techbitsciv like '#%'
- if (@cErrors > 0)
- select Name, techbitsciv from civs where techbitsciv like '#%'
- select @cErrors = COUNT(*) from developments where techbitsrequired like '#%'
- if (@cErrors > 0)
- select Name, techbitsrequired from developments where techbitsrequired like '#%'
- select @cErrors = COUNT(*) from developments where techbitseffect like '#%'
- if (@cErrors > 0)
- select Name, techbitseffect from developments where techbitseffect like '#%'
- select @cErrors = COUNT(*) from drones where techbitsrequired like '#%'
- if (@cErrors > 0)
- select Name, techbitsrequired from drones where techbitsrequired like '#%'
- select @cErrors = COUNT(*) from drones where techbitseffect like '#%'
- if (@cErrors > 0)
- select Name, techbitseffect from drones where techbitseffect like '#%'
- select @cErrors = COUNT(*) from expendables where techbitsrequired like '#%'
- if (@cErrors > 0)
- select Name, techbitsrequired from expendables where techbitsrequired like '#%'
- select @cErrors = COUNT(*) from expendables where techbitseffect like '#%'
- if (@cErrors > 0)
- select Name, techbitseffect from expendables where techbitseffect like '#%'
- select @cErrors = COUNT(*) from parts where techbitsrequired like '#%'
- if (@cErrors > 0)
- select Name, techbitsrequired from parts where techbitsrequired like '#%'
- select @cErrors = COUNT(*) from parts where techbitseffect like '#%'
- if (@cErrors > 0)
- select Name, techbitseffect from parts where techbitseffect like '#%'
- select @cErrors = COUNT(*) from shiptypes where techbitsrequired like '#%'
- if (@cErrors > 0)
- select Name, techbitsrequired from shiptypes where techbitsrequired like '#%'
- select @cErrors = COUNT(*) from shiptypes where techbitseffect like '#%'
- if (@cErrors > 0)
- select Name, techbitseffect from shiptypes where techbitseffect like '#%'
- select @cErrors = COUNT(*) from stationtypes where techbitslocal like '#%'
- if (@cErrors > 0)
- select Name, techbitslocal from stationtypes where techbitslocal like '#%'
- select @cErrors = COUNT(*) from stationtypes where techbitsrequired like '#%'
- if (@cErrors > 0)
- select Name, techbitsrequired from stationtypes where techbitsrequired like '#%'
- select @cErrors = COUNT(*) from stationtypes where techbitseffect like '#%'
- if (@cErrors > 0)
- select Name, techbitseffect from stationtypes where techbitseffect like '#%'
- go
- /*
- Weapon Test
- */
- declare @cErrors int
- select @cErrors = COUNT(*) from weapons where (cBulletsPerShot <= 0) AND (energypershot <= 0)
- if (@cErrors > 0)
- select parts.partid, name, cBulletsPerShot from parts, weapons where (parts.partid = weapons.partid) AND (cBulletsPerShot <= 0) AND (energypershot <= 0)
- select @cErrors = COUNT(*) from weapons where (dispersion > 0.05)
- if (@cErrors > 0)
- select parts.partid, name, dispersion from parts, weapons where
- (parts.partid = weapons.partid) AND (dispersion > 0.05)
- select @cErrors = COUNT(*) from weapons, projectiles where (weapons.projectileid1 = projectiles.projectileid) AND (weapons.energypershot = 0) AND (projectiles.damagetype % 2 = 1)
- if (@cErrors > 0)
- select parts.name, projectileid, energypershot, cbulletspershot, damagetype from parts, weapons, projectiles where (parts.partid = weapons.partid) AND (weapons.projectileid1 = projectiles.projectileID) AND (weapons.energypershot = 0) and (projectiles.damagetype % 2 = 1)
- select @cErrors = COUNT(*) from weapons, projectiles where (weapons.projectileid1 = projectiles.projectileid) AND (weapons.cbulletspershot = 0) AND (projectiles.damagetype % 2 = 0)
- if (@cErrors > 0)
- select parts.name, projectileid, energypershot, cbulletspershot, damagetype from parts, weapons, projectiles where (parts.partid = weapons.partid) AND (weapons.projectileid1 = projectiles.projectileID) AND (weapons.cbulletspershot = 0) AND (projectiles.damagetype % 2 = 0)
- go
- declare @cWeapons int
- declare @cWeaponParts int
- declare @cShields int
- declare @cShieldParts int
- declare @cAfterburners int
- declare @cAfterburnerParts int
- declare @cAmmo int
- declare @cAmmoParts int
- select @cWeapons = COUNT(*) from weapons
- select @cWeaponParts = COUNT(*) from parts where parttypeid = 1
- select @cShields = COUNT(*) from shields
- select @cShieldParts = COUNT(*) from parts where parttypeid = 4
- select @cAfterburners = COUNT(*) from afterburners
- select @cAfterburnerParts = COUNT(*) from parts where parttypeid = 7
- select @cAmmo = COUNT(*) from ammo
- select @cAmmoParts = COUNT(*) from parts where parttypeid = 6
- if (@cWeapons <> @cWeaponParts)
- BEGIN
- select "ERROR: Wrong number of weapons (" +
- CONVERT(varchar, @cWeapons) + " vs " +
- CONVERT(varchar, @cWeaponParts) + ")"
- END
- if (@cShields <> @cShieldParts)
- BEGIN
- select "ERROR: Wrong number of shields (" +
- CONVERT(varchar, @cShields) + " vs " +
- CONVERT(varchar, @cShieldParts) + ")"
- END
- if (@cAfterburners <> @cAfterburnerParts)
- BEGIN
- select "ERROR: Wrong number of afterburners (" +
- CONVERT(varchar, @cAfterburners) + " vs " +
- CONVERT(varchar, @cAfterburnerParts) + ")"
- END
- if (@cAmmo <> @cAmmoParts)
- BEGIN
- select "ERROR: Wrong number of ammo (" +
- CONVERT(varchar, @cAmmo) + " vs " +
- CONVERT(varchar, @cAmmoParts) + ")"
- END
|