I am willing to look through all the 150 different games and reupload corrected versions AFTER the next stable comes out, but if I am going to do it, I'm only going to do it once, so can we make all the atomizing and corrections at the same time?
If we are going to break compatibility for one thing, we might as well break it for everything so that we only have to correct the game xml's just once
(i still believe it is easier to keep backwards compatibility by just keeping the properties the same and making new property names for the new atomized properties)
here is a list of everything that needs to be broken up into its component parts: isStrategicBomber (does 2 things) - isStrategicBomber (only strategic bombs) - isAirTransport (require paratroopers tech on to work)
isInfantry (does 2 things) - isAirTransportable - isGroundTransportable or just keep it as isInfantry (allows movement with the mechanized tech)
isMarine (does 2 things) - isMarine (just does the amphibious assault boost just for itself) - isGroundTransportable or just keep it as isInfantry (allows movement with the mechanized tech)
isSub (does 4 things) - isFirstStrike - isRetreat (can either submerge [ww2v2-v3-v4] or can retreat [ww2v1, nap empires] depending on the rules set and game properties) - isCanNotHitAir - isCanNotBeHitByAir (depending on the rules set, either air is allowed 1 round to hit it [ww2v2], or air does not hit it ever at all, unless an isDestroyer is present [ww2v3-v4]) (any unit with isRetreat can be affected by the supersubs tech)
isDestroyer (does 3 things) - isAntiFirstStrike - isAntiRetreat (prevents submerge and retreat) - isAllowAirToHitSub (only useful under v3 rules) (any unit with the isAntiRetreat can be affected by the destroyersBombard tech)
transportCapacity (does 2 things) - transportCapacity (allows transporting units) - isSeaTransport (this only functions to turn on and off features like not being able to take convoy zones, not being able to be taken casualty during v3 rules, etc.) (alternatively you could do a "isNOTseaTransport" which might work better because it is more of an exception)
isAA (does 7 things) - isAAgunForCombat (hits airplanes during regular combat only) - isAAgunForSBR (hits airplanes during strat bombing only [this distinction is needed for the new pacific map]) - aaGunAttacksAt [x] (has a value equal to x, default is 1, and the radar tech doubles that value) - isCapturable - isCanNotBeDestroyed - isHasFunnyMovementRules (aaGuns have funny movement rules) - isRocket (shoots rockets if you have the tech) - RocketRange (currently defaults to 3) (any unit with the isAAgunForXXX can be affected by Radar tech)
isFactory (does 4 things) - isCapturable - isCanNotBeDestroyed - canProduceByTerritoryValue (can be over-written with the territory attachment known as "originalFactory" and also over-written with placeanywhere v3 type rules) - canProduceX [x] (has a value equal to x, meaning that this factory can produce X units, no matter where it is placed) (any unit with the canProduceX or canProduceByTerritoryValue can be affected by the IncreasedFactoryProduction technology)
to be complete we also need these:
canBeTakenAsCasualty isDestroyedIfCaptured (can not be taken as a hit, but is destroyed if the enemy wins)
If we want to keep backwards compatibility (VERY EASY TO DO) then the following needs to be done:
all you need is to keep the original Property/Attachment doing all the things it currently does and give new names to the atomized versions.
so for example, isStrategicBomber currently does 2 things, so it would become 3 properties: - isStrategicBomber = can bomb stuff and if you also have paratroopers tech then you can also carry "isInfantry" and "isAirTransportable" units - isAirTransport = can NOT bomb stuff and if you also have paratroopers tech then you can also carry "isInfantry" and "isAirTransportable" units - isJustStrategicBomber = only bomb stuff, no transporting
more examples: isSub currently does 4 things, so it would become 5 properties: - isSub = does all 4 things - isFirstStrike - isRetreat (can either submerge [ww2v2-v3-v4] or can retreat [ww2v1, nap empires] depending on the rules set and game properties) - isCanNotHitAir - isCanNotBeHitByAir (depending on the rules set, either air is allowed 1 round to hit it [ww2v2], or air does not hit it ever at all, unless an isDestroyer is present [ww2v3-v4]) (any unit with isSub OR isRetreat can be affected by the supersubs tech)
I think this is the best way to do things because it makes making maps easier and it keeps backwards compatibility
here are the issues with breaking backwards compatibility: * a map maker may want to do just isSub instead of writing all the different properties and missing one by accident * I have to change approximately 150 different xml's (game files), AND re-upload every single map to the database again * online community has to redownload ALL of their zip/game files again * if someone has both the stable 22.214.171.124 and the unstable 126.96.36.199 then the stable will not work and generate JAVA errors when it runs (or the unstable will generate JAVA errors) * a conversion script will: alter people's maps without permission, including maps under development, as well as making 188.8.131.52 not able to run (hence they can no longer play with friends on the stable) * a conversion script must be capable of unzipping all the maps, changing them all flawlessly, and rezipping all of them (because they have to be zipped or else the user will be able to download duplicates. duplicates cause the game to not work and give a java error) * you will need two versions of every map, one for the stable, one for the unstable * the online community will get really pissed off and leave us
The New Busy is not the old busy. Search, chat and e-mail from your inbox. Get started.