• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.
  • Vote for the theme of Hive's HD Modeling Contest #7! Click here to vote! - Please only vote if you plan on participating❗️

Could something like this be useful?

Status
Not open for further replies.
Level 5
Joined
Dec 1, 2008
Messages
120
What I have here, is a test map for a model that uses different texture for each animation.

I made this when I was figuring out an efficient way of creating icons for a full screen inventory system. I wrote a javascript code that generates a .mdl file using texture paths listed in a .txt file. I'm not an expert at creating models (not to mention javascript), so I bet it contains much unnecessary data.

But it works.
 

Attachments

  • IconModel.w3x
    14.2 KB · Views: 138
  • imc-v1.1.jar.7z
    6 KB · Views: 102
Last edited:
Could definitely be useful if it ends up being small enough. I wonder how much size it would take up to support every icon in the mpq! I imagine it'd probably be rather large, but if it is less than 50 kb, it could be an interesting option.

Obviously, if you're making it for your own map then you only need to support whichever icons you'll actually use. But for system purposes, I'm kinda curious how big it would get supporting all the icons.

And in case you need them, here is a list of most of the icons... not sure if I grabbed them all. They were listed online here:

ReplaceableTextures\CommandButtons\BTN3M1.blp
ReplaceableTextures\CommandButtons\BTN3M2.blp
ReplaceableTextures\CommandButtons\BTN3M3.blp
ReplaceableTextures\CommandButtons\BTNAbomination.blp
ReplaceableTextures\CommandButtons\BTNAbsorbMagic.blp
ReplaceableTextures\CommandButtons\BTNAcidBomb.blp
ReplaceableTextures\CommandButtons\BTNAcolyte.blp
ReplaceableTextures\CommandButtons\BTNAcorn.blp
ReplaceableTextures\CommandButtons\BTNAdvancedCreatureAttack.blp
ReplaceableTextures\CommandButtons\BTNAdvancedCreatureCarapace.blp
ReplaceableTextures\CommandButtons\BTNAdvancedDeathTower.blp
ReplaceableTextures\CommandButtons\BTNAdvancedEnergyTower.blp
ReplaceableTextures\CommandButtons\BTNAdvancedFlameTower.blp
ReplaceableTextures\CommandButtons\BTNAdvancedFrostTower.blp
ReplaceableTextures\CommandButtons\BTNAdvancedMoonArmor.blp
ReplaceableTextures\CommandButtons\BTNAdvancedReinforcedHides.blp
ReplaceableTextures\CommandButtons\BTNAdvancedRockTower.blp
ReplaceableTextures\CommandButtons\BTNAdvancedSpikedBarricades.blp
ReplaceableTextures\CommandButtons\BTNAdvancedStrengthOfTheMoon.blp
ReplaceableTextures\CommandButtons\BTNAdvancedStrengthOfTheWild.blp
ReplaceableTextures\CommandButtons\BTNAdvancedUnholyArmor.blp
ReplaceableTextures\CommandButtons\BTNAdvancedUnholyStrength.blp
ReplaceableTextures\CommandButtons\BTNAdvStruct.blp
ReplaceableTextures\CommandButtons\BTNAkama.blp
ReplaceableTextures\CommandButtons\BTNAlbatross.blp
ReplaceableTextures\CommandButtons\BTNAlleriaFlute.blp
ReplaceableTextures\CommandButtons\BTNAltarOfDarkness.blp
ReplaceableTextures\CommandButtons\BTNAltarOfDepths.blp
ReplaceableTextures\CommandButtons\BTNAltarOfElders.blp
ReplaceableTextures\CommandButtons\BTNAltarOfKings.blp
ReplaceableTextures\CommandButtons\BTNAltarOfStorms.blp
ReplaceableTextures\CommandButtons\BTNAmbush.blp
ReplaceableTextures\CommandButtons\BTNAmmoDump.blp
ReplaceableTextures\CommandButtons\BTNAmulet.blp
ReplaceableTextures\CommandButtons\BTNAmuletOftheWild.blp
ReplaceableTextures\CommandButtons\BTNAncestralSpirit.blp
ReplaceableTextures\CommandButtons\BTNAncientOfLore.blp
ReplaceableTextures\CommandButtons\BTNAncientOfTheEarth.blp
ReplaceableTextures\CommandButtons\BTNAncientOfTheMoon.blp
ReplaceableTextures\CommandButtons\BTNAncientOfWonders.blp
ReplaceableTextures\CommandButtons\BTNAnimalWarTraining.blp
ReplaceableTextures\CommandButtons\BTNAnimateDead.blp
ReplaceableTextures\CommandButtons\BTNAnkh.blp
ReplaceableTextures\CommandButtons\BTNAntiMagicShell.blp
ReplaceableTextures\CommandButtons\BTNArachnathid.blp
ReplaceableTextures\CommandButtons\BTNArachnathidGreen.blp
ReplaceableTextures\CommandButtons\BTNArachnathidpurple.blp
ReplaceableTextures\CommandButtons\BTNArcaneObservatory.blp
ReplaceableTextures\CommandButtons\BTNArcaneSanctum.blp
ReplaceableTextures\CommandButtons\BTNArcaneTower.blp
ReplaceableTextures\CommandButtons\BTNArcaneVault.blp
ReplaceableTextures\CommandButtons\BTNArcaniteArchitecture.blp
ReplaceableTextures\CommandButtons\BTNArcaniteArmor.blp
ReplaceableTextures\CommandButtons\BTNArcaniteMelee.blp
ReplaceableTextures\CommandButtons\BTNArcaniteRanged.blp
ReplaceableTextures\CommandButtons\BTNArcher.blp
ReplaceableTextures\CommandButtons\BTNArchimonde.blp
ReplaceableTextures\CommandButtons\BTNArmoredOgre.blp
ReplaceableTextures\CommandButtons\BTNArmorGolem.blp
ReplaceableTextures\CommandButtons\BTNArthas.blp
ReplaceableTextures\CommandButtons\BTNAssassin.blp
ReplaceableTextures\CommandButtons\BTNAttack.blp
ReplaceableTextures\CommandButtons\BTNAttackGround.blp
ReplaceableTextures\CommandButtons\BTNAuraOfDarkness.blp
ReplaceableTextures\CommandButtons\BTNAvatar.blp
ReplaceableTextures\CommandButtons\BTNAvatarOff.blp
ReplaceableTextures\CommandButtons\BTNAvatarOn.blp
ReplaceableTextures\CommandButtons\BTNAvengingAssassin.blp
ReplaceableTextures\CommandButtons\BTNAvengingWatcher.blp
ReplaceableTextures\CommandButtons\BTNAvengingWatcherOff.blp
ReplaceableTextures\CommandButtons\BTNAvengingWatcherOn.blp
ReplaceableTextures\CommandButtons\BTNAzureDragon.blp
ReplaceableTextures\CommandButtons\BTNBacktoWork.blp
ReplaceableTextures\CommandButtons\BTNBallista.blp
ReplaceableTextures\CommandButtons\BTNBandit.blp
ReplaceableTextures\CommandButtons\BTNBanditLord.blp
ReplaceableTextures\CommandButtons\BTNBanditMage.blp
ReplaceableTextures\CommandButtons\BTNBanditSpearThrower.blp
ReplaceableTextures\CommandButtons\BTNBanish.blp
ReplaceableTextures\CommandButtons\BTNBanshee.blp
ReplaceableTextures\CommandButtons\BTNBansheeAdept.blp
ReplaceableTextures\CommandButtons\BTNBansheeMaster.blp
ReplaceableTextures\CommandButtons\BTNBansheeRanger.blp
ReplaceableTextures\CommandButtons\BTNBarkSkin.blp
ReplaceableTextures\CommandButtons\BTNBarkSkinOff.blp
ReplaceableTextures\CommandButtons\BTNBarkSkinOn.blp
ReplaceableTextures\CommandButtons\BTNBarracks.blp
ReplaceableTextures\CommandButtons\BTNBarrel.blp
ReplaceableTextures\CommandButtons\BTNBash.blp
ReplaceableTextures\CommandButtons\BTNBasicStruct.blp
ReplaceableTextures\CommandButtons\BTNBattleRoar.blp
ReplaceableTextures\CommandButtons\BTNBattleShip.blp
ReplaceableTextures\CommandButtons\BTNBattleStations.blp
ReplaceableTextures\CommandButtons\BTNBearBlink.blp
ReplaceableTextures\CommandButtons\BTNBearDen.blp
ReplaceableTextures\CommandButtons\BTNBearForm.blp
ReplaceableTextures\CommandButtons\BTNBeastiary.blp
ReplaceableTextures\CommandButtons\BTNBeastMaster.blp
ReplaceableTextures\CommandButtons\BTNBelt.blp
ReplaceableTextures\CommandButtons\BTNBerserk.blp
ReplaceableTextures\CommandButtons\BTNBerserkForTrolls.blp
ReplaceableTextures\CommandButtons\BTNBigBadVoodooSpell.blp
ReplaceableTextures\CommandButtons\BTNBlackCitadel.blp
ReplaceableTextures\CommandButtons\BTNBlackDragon.blp
ReplaceableTextures\CommandButtons\BTNBlackDragonRoost.blp
ReplaceableTextures\CommandButtons\BTNBlackMammoth.blp
ReplaceableTextures\CommandButtons\BTNBlackMarket.blp
ReplaceableTextures\CommandButtons\BTNBlacksmith.blp
ReplaceableTextures\CommandButtons\BTNBlink.blp
ReplaceableTextures\CommandButtons\BTNBlizzard.blp
ReplaceableTextures\CommandButtons\BTNBlood&GhostKey.blp
ReplaceableTextures\CommandButtons\BTNBloodElfPeasant.blp
ReplaceableTextures\CommandButtons\BTNBloodElfSupplyWagon.blp
ReplaceableTextures\CommandButtons\BTNBloodKey.blp
ReplaceableTextures\CommandButtons\BTNBloodLust.blp
ReplaceableTextures\CommandButtons\BTNBloodLustOff.blp
ReplaceableTextures\CommandButtons\BTNBloodLustOn.blp
ReplaceableTextures\CommandButtons\BTNBLoodMage2.blp
ReplaceableTextures\CommandButtons\BTNBlueDemoness.blp
ReplaceableTextures\CommandButtons\BTNBlueDragonRoost.blp
ReplaceableTextures\CommandButtons\BTNBlueDragonSpawn.blp
ReplaceableTextures\CommandButtons\BTNBlueMagnataur.blp
ReplaceableTextures\CommandButtons\BTNBoneChimes.blp
ReplaceableTextures\CommandButtons\BTNBoneYard.blp
ReplaceableTextures\CommandButtons\BTNBookOfSummoning.blp
ReplaceableTextures\CommandButtons\BTNBookOfTheDead.blp
ReplaceableTextures\CommandButtons\BTNBoots.blp
ReplaceableTextures\CommandButtons\BTNBootsOfSpeed.blp
ReplaceableTextures\CommandButtons\BTNBox.blp
ReplaceableTextures\CommandButtons\BTNBreathOfFire.blp
ReplaceableTextures\CommandButtons\BTNBreathOfFrost.blp
ReplaceableTextures\CommandButtons\BTNBrilliance.blp
ReplaceableTextures\CommandButtons\BTNBronzeBowl.blp
ReplaceableTextures\CommandButtons\BTNBronzeBowlFull.blp
ReplaceableTextures\CommandButtons\BTNBronzeDragon.blp
ReplaceableTextures\CommandButtons\BTNBundleOfLumber.blp
ReplaceableTextures\CommandButtons\BTNCage.blp
ReplaceableTextures\CommandButtons\BTNCagedIllidan.blp
ReplaceableTextures\CommandButtons\BTNCallToArms.blp
ReplaceableTextures\CommandButtons\BTNCancel.blp
ReplaceableTextures\CommandButtons\BTNCannibalize.blp
ReplaceableTextures\CommandButtons\BTNCannonTower.blp
ReplaceableTextures\CommandButtons\BTNCarrionScarabs.blp
ReplaceableTextures\CommandButtons\BTNCarrionScarabsOff.blp
ReplaceableTextures\CommandButtons\BTNCarrionScarabsOn.blp
ReplaceableTextures\CommandButtons\BTNCarrionSwarm.blp
ReplaceableTextures\CommandButtons\BTNCastle.blp
ReplaceableTextures\CommandButtons\BTNCatapult.blp
ReplaceableTextures\CommandButtons\BTNCentaur.blp
ReplaceableTextures\CommandButtons\BTNCentaurArcher.blp
ReplaceableTextures\CommandButtons\BTNCentaurKhan.blp
ReplaceableTextures\CommandButtons\BTNChainLightning.blp
ReplaceableTextures\CommandButtons\BTNChaosBlademaster.blp
ReplaceableTextures\CommandButtons\BTNChaosGrom.blp
ReplaceableTextures\CommandButtons\BTNChaosGrunt.blp
ReplaceableTextures\CommandButtons\BTNChaosKotoBeast.blp
ReplaceableTextures\CommandButtons\BTNChaosPeon.blp
ReplaceableTextures\CommandButtons\BTNChaosSpaceOrc.blp
ReplaceableTextures\CommandButtons\BTNChaosWarlock.blp
ReplaceableTextures\CommandButtons\BTNChaosWarlockGreen.blp
ReplaceableTextures\CommandButtons\BTNChaosWarlord.blp
ReplaceableTextures\CommandButtons\BTNChaosWolfRider.blp
ReplaceableTextures\CommandButtons\BTNCharm.blp
ReplaceableTextures\CommandButtons\BTNCharm.blp*
ReplaceableTextures\CommandButtons\BTNCheese.blp
ReplaceableTextures\CommandButtons\BTNChemicalRage.blp
ReplaceableTextures\CommandButtons\BTNChestOfGold.blp
ReplaceableTextures\CommandButtons\BTNChimaera.blp
ReplaceableTextures\CommandButtons\BTNChimaeraRoost.blp
ReplaceableTextures\CommandButtons\BTNChime.blp
ReplaceableTextures\CommandButtons\BTNCirclet.blp
ReplaceableTextures\CommandButtons\BTNClawsOfAttack.blp
ReplaceableTextures\CommandButtons\BTNClayFigurine.blp
ReplaceableTextures\CommandButtons\BTNCleavingAttack.blp
ReplaceableTextures\CommandButtons\BTNCloak.blp
ReplaceableTextures\CommandButtons\BTNCloakOfFlames.blp
ReplaceableTextures\CommandButtons\BTNClockWerkGoblin.blp
ReplaceableTextures\CommandButtons\BTNCloudOfFog.blp
ReplaceableTextures\CommandButtons\BTNClusterRockets.blp
ReplaceableTextures\CommandButtons\BTNColdArrows.blp
ReplaceableTextures\CommandButtons\BTNColdArrowsOff.blp
ReplaceableTextures\CommandButtons\BTNColdArrowsOn.blp
ReplaceableTextures\CommandButtons\BTNColdTower.blp
ReplaceableTextures\CommandButtons\BTNCommand.blp
ReplaceableTextures\CommandButtons\BTNControlMagic.blp
ReplaceableTextures\CommandButtons\BTNCOP.blp
ReplaceableTextures\CommandButtons\BTNCoralBed.blp
ReplaceableTextures\CommandButtons\BTNCorpseExplode.blp
ReplaceableTextures\CommandButtons\BTNCorrosiveBreath.blp
ReplaceableTextures\CommandButtons\BTNCorruptedAncientOfProtector.blp
ReplaceableTextures\CommandButtons\BTNCorruptedAncientOfWar.blp
ReplaceableTextures\CommandButtons\BTNCorruptedEnt.blp
ReplaceableTextures\CommandButtons\BTNCorruptedMoonWell.blp
ReplaceableTextures\CommandButtons\BTNCorruptedTreeOfLife.blp
ReplaceableTextures\CommandButtons\BTNCrate.blp
ReplaceableTextures\CommandButtons\BTNCreatureAttack.blp
ReplaceableTextures\CommandButtons\BTNCreatureCarapace.blp
ReplaceableTextures\CommandButtons\BTNCripple.blp
ReplaceableTextures\CommandButtons\BTNCriticalStrike.blp
ReplaceableTextures\CommandButtons\BTNCritterChicken.blp
ReplaceableTextures\CommandButtons\BTNCritterRabbit.blp
ReplaceableTextures\CommandButtons\BTNCrushingWave.blp
ReplaceableTextures\CommandButtons\BTNCrypt.blp
ReplaceableTextures\CommandButtons\BTNCryptFiend.blp
ReplaceableTextures\CommandButtons\BTNCryptFiendBurrow.blp
ReplaceableTextures\CommandButtons\BTNCryptFiendUnBurrow.blp
ReplaceableTextures\CommandButtons\BTNCrystalBall.blp
ReplaceableTextures\CommandButtons\BTNCurse.blp
ReplaceableTextures\CommandButtons\BTNCurseOff.blp
ReplaceableTextures\CommandButtons\BTNCurseOn.blp
ReplaceableTextures\CommandButtons\BTNCyclone.blp
ReplaceableTextures\CommandButtons\BTNDaggerOfEscape.blp
ReplaceableTextures\CommandButtons\BTNDalaranGuardTower.blp
ReplaceableTextures\CommandButtons\BTNDalaranMutant.blp
ReplaceableTextures\CommandButtons\BTNDalaranReject.blp
ReplaceableTextures\CommandButtons\BTNDarkPortal.blp
ReplaceableTextures\CommandButtons\BTNDarkRitual.blp
ReplaceableTextures\CommandButtons\BTNDarkSummoning.blp
ReplaceableTextures\CommandButtons\BTNDarkTroll.blp
ReplaceableTextures\CommandButtons\BTNDarkTrollShadowPriest.blp
ReplaceableTextures\CommandButtons\BTNDarkTrollTrapper.blp
ReplaceableTextures\CommandButtons\BTNDeathAndDecay.blp
ReplaceableTextures\CommandButtons\BTNDeathCoil.blp
ReplaceableTextures\CommandButtons\BTNDeathPact.blp
ReplaceableTextures\CommandButtons\BTNDeathTower.blp
ReplaceableTextures\CommandButtons\BTNDeepLordRevenant.blp
ReplaceableTextures\CommandButtons\BTNDefend.blp
ReplaceableTextures\CommandButtons\BTNDefendStop.blp
ReplaceableTextures\CommandButtons\BTNDemolish.blp
ReplaceableTextures\CommandButtons\BTNDemolisher.blp
ReplaceableTextures\CommandButtons\BTNDemoness.blp
ReplaceableTextures\CommandButtons\BTNDemonGate.blp
ReplaceableTextures\CommandButtons\BTNDenOfWonders.blp
ReplaceableTextures\CommandButtons\BTNDestroyer.blp
ReplaceableTextures\CommandButtons\BTNDevotion.blp
ReplaceableTextures\CommandButtons\BTNDevour.blp
ReplaceableTextures\CommandButtons\BTNDevourMagic.blp
ReplaceableTextures\CommandButtons\BTNDiabloCar.blp
ReplaceableTextures\CommandButtons\BTNDireWolf.blp
ReplaceableTextures\CommandButtons\BTNDisenchant.blp
ReplaceableTextures\CommandButtons\BTNDispelMagic.blp
ReplaceableTextures\CommandButtons\BTNDivineIntervention.blp
ReplaceableTextures\CommandButtons\BTNDivineShieldOff.blp
ReplaceableTextures\CommandButtons\BTNDizzy.blp
ReplaceableTextures\CommandButtons\BTNDOCAdeptTraining.blp
ReplaceableTextures\CommandButtons\BTNDOCMasterTraining.blp
ReplaceableTextures\CommandButtons\BTNDoom.blp
ReplaceableTextures\CommandButtons\BTNDoomGuard.blp
ReplaceableTextures\CommandButtons\BTNDOTAdeptTraining.blp
ReplaceableTextures\CommandButtons\BTNDOTMasterTraining.blp
ReplaceableTextures\CommandButtons\BTNDragonHawk.blp
ReplaceableTextures\CommandButtons\BTNDragonRoost.blp
ReplaceableTextures\CommandButtons\BTNDrain.blp
ReplaceableTextures\CommandButtons\BTNDranai.blp
ReplaceableTextures\CommandButtons\BTNDranaiAkama.blp
ReplaceableTextures\CommandButtons\BTNDranaiChiefHut.blp
ReplaceableTextures\CommandButtons\BTNDranaiHut.blp
ReplaceableTextures\CommandButtons\BTNDranaiMage.blp
ReplaceableTextures\CommandButtons\BTNDruidOfTheClaw.blp
ReplaceableTextures\CommandButtons\BTNDruidOfTheTalon.blp
ReplaceableTextures\CommandButtons\BTNDrum.blp
ReplaceableTextures\CommandButtons\BTNDrunkenDodge.blp
ReplaceableTextures\CommandButtons\BTNDryad.blp
ReplaceableTextures\CommandButtons\BTNDryadDispelMagic.blp
ReplaceableTextures\CommandButtons\BTNDryadDispelMagicOff.blp
ReplaceableTextures\CommandButtons\BTNDryadDispelMagicOn.blp
ReplaceableTextures\CommandButtons\BTNDuneWorm.blp
ReplaceableTextures\CommandButtons\BTNDust.blp
ReplaceableTextures\CommandButtons\BTNDustOfAppearance.blp
ReplaceableTextures\CommandButtons\BTNDwarfCar.blp
ReplaceableTextures\CommandButtons\BTNDwarvenLongRifle.blp
ReplaceableTextures\CommandButtons\BTNEarthBrewMaster.blp
ReplaceableTextures\CommandButtons\BTNEarthquake.blp
ReplaceableTextures\CommandButtons\BTNEatTree.blp
ReplaceableTextures\CommandButtons\BTNElfVillager.blp
ReplaceableTextures\CommandButtons\BTNElunesBlessing.blp
ReplaceableTextures\CommandButtons\BTNElvenFarm.blp
ReplaceableTextures\CommandButtons\BTNElvenGuardTower.blp
ReplaceableTextures\CommandButtons\BTNEnchantedBears.blp
ReplaceableTextures\CommandButtons\BTNEnchantedCrows.blp
ReplaceableTextures\CommandButtons\BTNEnchantedGemstone.blp
ReplaceableTextures\CommandButtons\BTNEnergyTower.blp
ReplaceableTextures\CommandButtons\BTNEngineeringUpgrade.blp
ReplaceableTextures\CommandButtons\BTNEnsnare.blp
ReplaceableTextures\CommandButtons\BTNEnt.blp
ReplaceableTextures\CommandButtons\BTNEntangleMine.blp
ReplaceableTextures\CommandButtons\BTNEntanglingRoots.blp
ReplaceableTextures\CommandButtons\BTNEntrapmentWard.blp
ReplaceableTextures\CommandButtons\BTNEntrapmentWard.blp*
ReplaceableTextures\CommandButtons\BTNEnvenomedSpear.blp
ReplaceableTextures\CommandButtons\BTNeredarRed.blp
ReplaceableTextures\CommandButtons\BTNEredarWarlockPurple.blp
ReplaceableTextures\CommandButtons\BTNEtherealFormOn.blp
ReplaceableTextures\CommandButtons\BTNEvasion.blp
ReplaceableTextures\CommandButtons\BTNEvilIllidan.blp
ReplaceableTextures\CommandButtons\BTNExhumeCorpses.blp
ReplaceableTextures\CommandButtons\BTNExpandedView.blp
ReplaceableTextures\CommandButtons\BTNFacelessOne.blp
ReplaceableTextures\CommandButtons\BTNFaerieDragon.blp
ReplaceableTextures\CommandButtons\BTNFaerieFire.blp
ReplaceableTextures\CommandButtons\BTNFaerieFireOff.blp
ReplaceableTextures\CommandButtons\BTNFaerieFireOn.blp
ReplaceableTextures\CommandButtons\BTNFanOfKnives.blp
ReplaceableTextures\CommandButtons\BTNFarm.blp
ReplaceableTextures\CommandButtons\BTNFarSight.blp
ReplaceableTextures\CommandButtons\BTNFeedBack.blp
ReplaceableTextures\CommandButtons\BTNFelBoar.blp
ReplaceableTextures\CommandButtons\BTNFelGuard.blp
ReplaceableTextures\CommandButtons\BTNFelGuardBlue.blp
ReplaceableTextures\CommandButtons\BTNFellHound.blp
ReplaceableTextures\CommandButtons\BTNFemaleElfVillager.blp
ReplaceableTextures\CommandButtons\BTNFire.blp
ReplaceableTextures\CommandButtons\BTNFireBolt.blp
ReplaceableTextures\CommandButtons\BTNFireBrewMaster.blp
ReplaceableTextures\CommandButtons\BTNFireForTheCannon.blp
ReplaceableTextures\CommandButtons\BTNFireRocks.blp
ReplaceableTextures\CommandButtons\BTNFlakCannons.blp
ReplaceableTextures\CommandButtons\BTNFlameTower.blp
ReplaceableTextures\CommandButtons\BTNFlamingArrows.blp
ReplaceableTextures\CommandButtons\BTNFlare.blp
ReplaceableTextures\CommandButtons\BTNFleshGolem.blp
ReplaceableTextures\CommandButtons\BTNFlute.blp
ReplaceableTextures\CommandButtons\BTNFlyingMachine.blp
ReplaceableTextures\CommandButtons\BTNFootman.blp
ReplaceableTextures\CommandButtons\BTNForceOfNature.blp
ReplaceableTextures\CommandButtons\BTNForestTroll.blp
ReplaceableTextures\CommandButtons\BTNForestTrollShadowPriest.blp
ReplaceableTextures\CommandButtons\BTNForestTrollTrapper.blp
ReplaceableTextures\CommandButtons\BTNForge.blp
ReplaceableTextures\CommandButtons\BTNForgottenOne.blp
ReplaceableTextures\CommandButtons\BTNFortress.blp
ReplaceableTextures\CommandButtons\BTNFountainOfLife.blp
ReplaceableTextures\CommandButtons\BTNFountainOfLifeBlood.blp
ReplaceableTextures\CommandButtons\BTNFountainOfLifeDefiled.blp
ReplaceableTextures\CommandButtons\BTNFragmentationBombs.blp
ReplaceableTextures\CommandButtons\BTNFreezingBreath.blp
ReplaceableTextures\CommandButtons\BTNFrost.blp
ReplaceableTextures\CommandButtons\BTNFrostArmor.blp
ReplaceableTextures\CommandButtons\BTNFrostArmorOff.blp
ReplaceableTextures\CommandButtons\BTNFrostArmorOn.blp
ReplaceableTextures\CommandButtons\BTNFrostBear.blp
ReplaceableTextures\CommandButtons\BTNFrostBolt.blp
ReplaceableTextures\CommandButtons\BTNFrostMourne.blp
ReplaceableTextures\CommandButtons\BTNFrostTower.blp
ReplaceableTextures\CommandButtons\BTNFrostWyrm.blp
ReplaceableTextures\CommandButtons\BTNFurbolg.blp
ReplaceableTextures\CommandButtons\BTNFurbolgElder.blp
ReplaceableTextures\CommandButtons\BTNFurbolgPanda.blp
ReplaceableTextures\CommandButtons\BTNFurbolgShaman.blp
ReplaceableTextures\CommandButtons\BTNFurbolgTracker.blp
ReplaceableTextures\CommandButtons\BTNFurion.blp
ReplaceableTextures\CommandButtons\BTNGargoyle.blp
ReplaceableTextures\CommandButtons\BTNGarithos.blp
ReplaceableTextures\CommandButtons\BTNGatherGold.blp
ReplaceableTextures\CommandButtons\BTNGauntletsOfOgrePower.blp
ReplaceableTextures\CommandButtons\BTNGem.blp
ReplaceableTextures\CommandButtons\BTNGenericCreepBuilding.blp
ReplaceableTextures\CommandButtons\BTNGenericHumanBuilding.blp
ReplaceableTextures\CommandButtons\BTNGenericSpellImmunity.blp
ReplaceableTextures\CommandButtons\BTNGhost.blp
ReplaceableTextures\CommandButtons\BTNGhostKey.blp
ReplaceableTextures\CommandButtons\BTNGhostMage.blp
ReplaceableTextures\CommandButtons\BTNGhostOfKelThuzad.blp
ReplaceableTextures\CommandButtons\BTNGhoul.blp
ReplaceableTextures\CommandButtons\BTNGhoulFrenzy.blp
ReplaceableTextures\CommandButtons\BTNGlacier.blp
ReplaceableTextures\CommandButtons\BTNGlaiveThrower.blp
ReplaceableTextures\CommandButtons\BTNGLExchange.blp
ReplaceableTextures\CommandButtons\BTNGlove.blp
ReplaceableTextures\CommandButtons\BTNGlyph.blp
ReplaceableTextures\CommandButtons\BTNGlyph.blp*
ReplaceableTextures\CommandButtons\BTNGMExchange.blp
ReplaceableTextures\CommandButtons\BTNGnoll.blp
ReplaceableTextures\CommandButtons\BTNGnollArcher.blp
ReplaceableTextures\CommandButtons\BTNGnollCommandAura.blp
ReplaceableTextures\CommandButtons\BTNGnollKing.blp
ReplaceableTextures\CommandButtons\BTNGnollWarden.blp
ReplaceableTextures\CommandButtons\BTNGoblinLandMine.blp
ReplaceableTextures\CommandButtons\BTNGoblinSapper.blp
ReplaceableTextures\CommandButtons\BTNGoblinShipyard.blp
ReplaceableTextures\CommandButtons\BTNGoblinZeppelin.blp
ReplaceableTextures\CommandButtons\BTNGoldmine.blp
ReplaceableTextures\CommandButtons\BTNGoldRing.blp
ReplaceableTextures\CommandButtons\BTNGolemStormBolt.blp
ReplaceableTextures\CommandButtons\BTNGolemThunderClap.blp
ReplaceableTextures\CommandButtons\BTNGrabTree.blp
ReplaceableTextures\CommandButtons\BTNGraveYard.blp
ReplaceableTextures\CommandButtons\BTNGreaterInvisibility.blp
ReplaceableTextures\CommandButtons\BTNGreaterInvulneralbility.blp
ReplaceableTextures\CommandButtons\BTNGreaterRejuvPotion.blp
ReplaceableTextures\CommandButtons\BTNGreaterRejuvScroll.blp
ReplaceableTextures\CommandButtons\BTNGreatHall.blp
ReplaceableTextures\CommandButtons\BTNGreenDragon.blp
ReplaceableTextures\CommandButtons\BTNGreenDragonRoost.blp
ReplaceableTextures\CommandButtons\BTNGreenDragonSpawn.blp
ReplaceableTextures\CommandButtons\BTNGreenHydra.blp
ReplaceableTextures\CommandButtons\BTNGrimWard.blp
ReplaceableTextures\CommandButtons\BTNGrizzlyBear.blp
ReplaceableTextures\CommandButtons\BTNGrunt.blp
ReplaceableTextures\CommandButtons\BTNGryphonAviary.blp
ReplaceableTextures\CommandButtons\BTNGryphonRider.blp
ReplaceableTextures\CommandButtons\BTNGuardianWard.blp
ReplaceableTextures\CommandButtons\BTNGuardTower.blp
ReplaceableTextures\CommandButtons\BTNGuldan.blp
ReplaceableTextures\CommandButtons\BTNGuldanSkull.blp
ReplaceableTextures\CommandButtons\BTNGyrocopter.blp
ReplaceableTextures\CommandButtons\BTNHallOfTheDead.blp
ReplaceableTextures\CommandButtons\BTNHammer.blp
ReplaceableTextures\CommandButtons\BTNHardenedSkin.blp
ReplaceableTextures\CommandButtons\BTNHarpy.blp
ReplaceableTextures\CommandButtons\BTNHarpyQueen.blp
ReplaceableTextures\CommandButtons\BTNHarpyWitch.blp
ReplaceableTextures\CommandButtons\BTNHauntedMine.blp
ReplaceableTextures\CommandButtons\BTNHeadhunter.blp
ReplaceableTextures\CommandButtons\BTNHeadHunterBerserker.blp
ReplaceableTextures\CommandButtons\BTNHeal.blp
ReplaceableTextures\CommandButtons\BTNHealingSalve.blp
ReplaceableTextures\CommandButtons\BTNHealingSpray.blp
ReplaceableTextures\CommandButtons\BTNHealingWard.blp
ReplaceableTextures\CommandButtons\BTNHealingWave.blp
ReplaceableTextures\CommandButtons\BTNHealOff.blp
ReplaceableTextures\CommandButtons\BTNHealOn.blp
ReplaceableTextures\CommandButtons\BTNHealthStone.blp
ReplaceableTextures\CommandButtons\BTNHeartOfAszune.blp
ReplaceableTextures\CommandButtons\BTNHeartOfSearinox.blp
ReplaceableTextures\CommandButtons\BTNHellScream.blp
ReplaceableTextures\CommandButtons\BTNHelmOfValor.blp
ReplaceableTextures\CommandButtons\BTNHelmutPurple.blp
ReplaceableTextures\CommandButtons\BTNHermitCrab.blp
ReplaceableTextures\CommandButtons\BTNHeroAlchemist.blp
ReplaceableTextures\CommandButtons\BTNHeroArchMage.blp
ReplaceableTextures\CommandButtons\BTNHeroAvatarOfFlame.blp
ReplaceableTextures\CommandButtons\BTNHeroBlademaster.blp
ReplaceableTextures\CommandButtons\BTNHeroBloodElfPrince.blp
ReplaceableTextures\CommandButtons\BTNHeroCryptLord.blp
ReplaceableTextures\CommandButtons\BTNHeroDeathKnight.blp
ReplaceableTextures\CommandButtons\BTNHeroDemonHunter.blp
ReplaceableTextures\CommandButtons\BTNHeroDreadLord.blp
ReplaceableTextures\CommandButtons\BTNHeroFarseer.blp
ReplaceableTextures\CommandButtons\BTNHeroLich.blp
ReplaceableTextures\CommandButtons\BTNHeroMoonPriestess.blp
ReplaceableTextures\CommandButtons\BTNHeroMountainKing.blp
ReplaceableTextures\CommandButtons\BTNHeroPaladin.blp
ReplaceableTextures\CommandButtons\BTNHeroTaurenChieftain.blp
ReplaceableTextures\CommandButtons\BTNHeroTinker.blp
ReplaceableTextures\CommandButtons\BTNHeroWarden.blp
ReplaceableTextures\CommandButtons\BTNHex.blp
ReplaceableTextures\CommandButtons\BTNHighElvenArcher.blp
ReplaceableTextures\CommandButtons\BTNHippogriff.blp
ReplaceableTextures\CommandButtons\BTNHippogriffRider.blp
ReplaceableTextures\CommandButtons\BTNHire.blp
ReplaceableTextures\CommandButtons\BTNHoldPosition.blp
ReplaceableTextures\CommandButtons\BTNHolyBolt.blp
ReplaceableTextures\CommandButtons\BTNHolyWater.blp
ReplaceableTextures\CommandButtons\BTNHoodOfCunning.blp
ReplaceableTextures\CommandButtons\BTNHornOfCenarius.blp
ReplaceableTextures\CommandButtons\BTNHornOfDoom.blp
ReplaceableTextures\CommandButtons\BTNHornOfFog.blp
ReplaceableTextures\CommandButtons\BTNHowlOfTerror.blp
ReplaceableTextures\CommandButtons\BTNHumanArcaneTower.blp
ReplaceableTextures\CommandButtons\BTNHumanArmorUpOne.blp
ReplaceableTextures\CommandButtons\BTNHumanArmorUpThree.blp
ReplaceableTextures\CommandButtons\BTNHumanArmorUpTwo.blp
ReplaceableTextures\CommandButtons\BTNHumanArtilleryUpOne.blp
ReplaceableTextures\CommandButtons\BTNHumanBarracks.blp
ReplaceableTextures\CommandButtons\BTNHumanBattleShip.blp
ReplaceableTextures\CommandButtons\BTNHumanBuild.blp
ReplaceableTextures\CommandButtons\BTNHumanCaptureFlag.blp
ReplaceableTextures\CommandButtons\BTNHumanDestroyer.blp
ReplaceableTextures\CommandButtons\BTNHumanLumberMill.blp
ReplaceableTextures\CommandButtons\BTNHumanLumberUpgrade1.blp
ReplaceableTextures\CommandButtons\BTNHumanLumberUpgrade2.blp
ReplaceableTextures\CommandButtons\BTNHumanMissileUpOne.blp
ReplaceableTextures\CommandButtons\BTNHumanMissileUpThree.blp
ReplaceableTextures\CommandButtons\BTNHumanMissileUpTwo.blp
ReplaceableTextures\CommandButtons\BTNHumanShipyard.blp
ReplaceableTextures\CommandButtons\BTNHumanTransport.blp
ReplaceableTextures\CommandButtons\BTNHumanWatchTower.blp
ReplaceableTextures\CommandButtons\BTNHuntersHall.blp
ReplaceableTextures\CommandButtons\BTNHuntress.blp
ReplaceableTextures\CommandButtons\BTNHydra.blp
ReplaceableTextures\CommandButtons\BTNHydralisk.blp
ReplaceableTextures\CommandButtons\BTNHydraWarStomp.blp
ReplaceableTextures\CommandButtons\BTNIceCrownObelisk.blp
ReplaceableTextures\CommandButtons\BTNIceShard.blp
ReplaceableTextures\CommandButtons\BTNIceTroll.blp
ReplaceableTextures\CommandButtons\BTNIceTrollBeserker.blp
ReplaceableTextures\CommandButtons\BTNIceTrollShadowPriest.blp
ReplaceableTextures\CommandButtons\BTNIceTrollShaman.blp
ReplaceableTextures\CommandButtons\BTNIcyTreasureBox.blp
ReplaceableTextures\CommandButtons\BTNIllidanPrisonWagon.blp
ReplaceableTextures\CommandButtons\BTNImbuedMasonry.blp
ReplaceableTextures\CommandButtons\BTNImmolationOff.blp
ReplaceableTextures\CommandButtons\BTNImmolationOn.blp
ReplaceableTextures\CommandButtons\BTNImpale.blp
ReplaceableTextures\CommandButtons\BTNImpalingBolt.blp
ReplaceableTextures\CommandButtons\BTNImprovedBows.blp
ReplaceableTextures\CommandButtons\BTNImprovedCreatureAttack.blp
ReplaceableTextures\CommandButtons\BTNImprovedCreatureCarapace.blp
ReplaceableTextures\CommandButtons\BTNImprovedMining.blp
ReplaceableTextures\CommandButtons\BTNImprovedMoonArmor.blp
ReplaceableTextures\CommandButtons\BTNImprovedReinforcedHides.blp
ReplaceableTextures\CommandButtons\BTNImprovedSpikedBarricades.blp
ReplaceableTextures\CommandButtons\BTNImprovedStrengthOfTheMoon.blp
ReplaceableTextures\CommandButtons\BTNImprovedStrengthOfTheWild.blp
ReplaceableTextures\CommandButtons\BTNImprovedUnholyArmor.blp
ReplaceableTextures\CommandButtons\BTNImprovedUnholyStrength.blp
ReplaceableTextures\CommandButtons\BTNIncinerate.blp
ReplaceableTextures\CommandButtons\BTNIncinerateOff.blp
ReplaceableTextures\CommandButtons\BTNIncinerateOn.blp
ReplaceableTextures\CommandButtons\BTNInfernal.blp
ReplaceableTextures\CommandButtons\BTNInfernalCannon.blp
ReplaceableTextures\CommandButtons\BTNInfernalFlameCannon.blp
ReplaceableTextures\CommandButtons\BTNInfernalStone.blp
ReplaceableTextures\CommandButtons\BTNInn.blp
ReplaceableTextures\CommandButtons\BTNInnerFire.blp
ReplaceableTextures\CommandButtons\BTNInnerFireOff.blp
ReplaceableTextures\CommandButtons\BTNInnerFireOn.blp
ReplaceableTextures\CommandButtons\BTNInvisibility.blp
ReplaceableTextures\CommandButtons\BTNInvulnerable.blp
ReplaceableTextures\CommandButtons\BTNJaina.blp
ReplaceableTextures\CommandButtons\BTNJanggo.blp
ReplaceableTextures\CommandButtons\BTNJuggernaut.blp
ReplaceableTextures\CommandButtons\BTNJungleBeast.blp
ReplaceableTextures\CommandButtons\BTNJunkGolem.blp
ReplaceableTextures\CommandButtons\BTNKeep.blp
ReplaceableTextures\CommandButtons\BTNKeeperGhostBlue.blp
ReplaceableTextures\CommandButtons\BTNKeeperOfTheGrove.blp
ReplaceableTextures\CommandButtons\BTNKelThuzad.blp
ReplaceableTextures\CommandButtons\BTNKiljaedin.blp
ReplaceableTextures\CommandButtons\BTNKnight.blp
ReplaceableTextures\CommandButtons\BTNKobold.blp
ReplaceableTextures\CommandButtons\BTNKoboldGeomancer.blp
ReplaceableTextures\CommandButtons\BTNKotoBeast.blp
ReplaceableTextures\CommandButtons\BTNLament.blp
ReplaceableTextures\CommandButtons\BTNLamp.blp
ReplaceableTextures\CommandButtons\BTNLavaSpawn.blp
ReplaceableTextures\CommandButtons\BTNLeatherUpgradeOne.blp
ReplaceableTextures\CommandButtons\BTNLeatherUpgradeThree.blp
ReplaceableTextures\CommandButtons\BTNLeatherUpgradeTwo.blp
ReplaceableTextures\CommandButtons\BTNLesserClarityPotion.blp
ReplaceableTextures\CommandButtons\BTNLesserInvisibility.blp
ReplaceableTextures\CommandButtons\BTNLesserInvulneralbility.blp
ReplaceableTextures\CommandButtons\BTNLesserRejuvPotion.blp
ReplaceableTextures\CommandButtons\BTNLesserRejuvScroll.blp
ReplaceableTextures\CommandButtons\BTNLGExchange.blp
ReplaceableTextures\CommandButtons\BTNLichVersion2.blp
ReplaceableTextures\CommandButtons\BTNLifeDrain.blp
ReplaceableTextures\CommandButtons\BTNLightningShield.blp
ReplaceableTextures\CommandButtons\BTNLionHorn.blp
ReplaceableTextures\CommandButtons\BTNLiquidFire.blp
ReplaceableTextures\CommandButtons\BTNLoad.blp
ReplaceableTextures\CommandButtons\BTNLoadDwarf.blp
ReplaceableTextures\CommandButtons\BTNLoadPeon.blp
ReplaceableTextures\CommandButtons\BTNLobstrokkBlue.blp
ReplaceableTextures\CommandButtons\BTNLobstrokkGreen.blp
ReplaceableTextures\CommandButtons\BTNLobstrokkRed.blp
ReplaceableTextures\CommandButtons\BTNLocustSwarm.blp
ReplaceableTextures\CommandButtons\BTNMageTower.blp
ReplaceableTextures\CommandButtons\BTNMagicalSentry.blp
ReplaceableTextures\CommandButtons\BTNMagicImmunity.blp
ReplaceableTextures\CommandButtons\BTNMagicLariet.blp
ReplaceableTextures\CommandButtons\BTNMagicVault.blp
ReplaceableTextures\CommandButtons\BTNMagnataur.blp
ReplaceableTextures\CommandButtons\BTNMagnataurBrown.blp
ReplaceableTextures\CommandButtons\BTNMammoth.blp
ReplaceableTextures\CommandButtons\BTNManaBurn.blp
ReplaceableTextures\CommandButtons\BTNManaDrain.blp
ReplaceableTextures\CommandButtons\BTNManaFlare.blp
ReplaceableTextures\CommandButtons\BTNManaFlareOff.blp
ReplaceableTextures\CommandButtons\BTNManaRecharge.blp
ReplaceableTextures\CommandButtons\BTNManaRechargeOff.blp
ReplaceableTextures\CommandButtons\BTNManaRechargeOn.blp
ReplaceableTextures\CommandButtons\BTNManaShield.blp
ReplaceableTextures\CommandButtons\BTNManaStone.blp
ReplaceableTextures\CommandButtons\BTNMannoroth.blp
ReplaceableTextures\CommandButtons\BTNMantle.blp
ReplaceableTextures\CommandButtons\BTNMantleOfIntelligence.blp
ReplaceableTextures\CommandButtons\BTNManual.blp
ReplaceableTextures\CommandButtons\BTNManual2.blp
ReplaceableTextures\CommandButtons\BTNManual3.blp
ReplaceableTextures\CommandButtons\BTNMarine.blp
ReplaceableTextures\CommandButtons\BTNMarketPlace.blp
ReplaceableTextures\CommandButtons\BTNMarkOfFire.blp
ReplaceableTextures\CommandButtons\BTNMarksmanship.blp
ReplaceableTextures\CommandButtons\BTNMaskOfDeath.blp
ReplaceableTextures\CommandButtons\BTNMassTeleport.blp
ReplaceableTextures\CommandButtons\BTNMeatapult.blp
ReplaceableTextures\CommandButtons\BTNMeatWagon.blp
ReplaceableTextures\CommandButtons\BTNMechanicalCritter.blp
ReplaceableTextures\CommandButtons\BTNMedalionOfCourage.blp
ReplaceableTextures\CommandButtons\BTNMedivh.blp
ReplaceableTextures\CommandButtons\BTNMercenaryCamp.blp
ReplaceableTextures\CommandButtons\BTNMerchant.blp
ReplaceableTextures\CommandButtons\BTNMetamorphosis.blp
ReplaceableTextures\CommandButtons\BTNMGExchange.blp
ReplaceableTextures\CommandButtons\BTNMilitia.blp
ReplaceableTextures\CommandButtons\BTNMinorRejuvPotion.blp
ReplaceableTextures\CommandButtons\BTNMirrorImage.blp
ReplaceableTextures\CommandButtons\BTNMonsoon.blp
ReplaceableTextures\CommandButtons\BTNMonsterLure.blp
ReplaceableTextures\CommandButtons\BTNMoonArmor.blp
ReplaceableTextures\CommandButtons\BTNMoonKey.blp
ReplaceableTextures\CommandButtons\BTNMoonStone.blp
ReplaceableTextures\CommandButtons\BTNMoonWell.blp
ReplaceableTextures\CommandButtons\BTNMortarTeam.blp
ReplaceableTextures\CommandButtons\BTNMountainGiant.blp
ReplaceableTextures\CommandButtons\BTNMove.blp
ReplaceableTextures\CommandButtons\BTNMurgalBloodGill.blp
ReplaceableTextures\CommandButtons\BTNMurgalShadowCaster.blp
ReplaceableTextures\CommandButtons\BTNMurgalSlave.blp
ReplaceableTextures\CommandButtons\BTNMurgalTideWarrior.blp
ReplaceableTextures\CommandButtons\BTNMurloc.blp
ReplaceableTextures\CommandButtons\BTNMurlocFleshEater.blp
ReplaceableTextures\CommandButtons\BTNMurlocMutant.blp
ReplaceableTextures\CommandButtons\BTNMurlocNightCrawler.blp
ReplaceableTextures\CommandButtons\BTNNagaArmorUp1.blp
ReplaceableTextures\CommandButtons\BTNNagaArmorUp2.blp
ReplaceableTextures\CommandButtons\BTNNagaArmorUp3.blp
ReplaceableTextures\CommandButtons\BTNNagaBurrow.blp
ReplaceableTextures\CommandButtons\BTNNagaMyrmidon.blp
ReplaceableTextures\CommandButtons\BTNNagaMyrmidonRoyalGuard.blp
ReplaceableTextures\CommandButtons\BTNNagaSeaWitch.blp
ReplaceableTextures\CommandButtons\BTNNagaSummoner.blp
ReplaceableTextures\CommandButtons\BTNNagaUnBurrow.blp
ReplaceableTextures\CommandButtons\BTNNagaWeaponUp1.blp
ReplaceableTextures\CommandButtons\BTNNagaWeaponUp2.blp
ReplaceableTextures\CommandButtons\BTNNagaWeaponUp3.blp
ReplaceableTextures\CommandButtons\BTNNaturesBlessing.blp
ReplaceableTextures\CommandButtons\BTNNatureTouchGrow.blp
ReplaceableTextures\CommandButtons\BTNNecklace.blp
ReplaceableTextures\CommandButtons\BTNNecromancer.blp
ReplaceableTextures\CommandButtons\BTNNecromancerAdept.blp
ReplaceableTextures\CommandButtons\BTNNecromancerMaster.blp
ReplaceableTextures\CommandButtons\BTNNecropolis.blp
ReplaceableTextures\CommandButtons\BTNNerubian.blp
ReplaceableTextures\CommandButtons\BTNNerubianQueen.blp
ReplaceableTextures\CommandButtons\BTNNerubianSpiderLord.blp
ReplaceableTextures\CommandButtons\BTNNerubianZiggurat.blp
ReplaceableTextures\CommandButtons\BTNNetherDragon.blp
ReplaceableTextures\CommandButtons\BTNNeutralManaShield.blp
ReplaceableTextures\CommandButtons\BTNneutralManaShieldOff.blp
ReplaceableTextures\CommandButtons\BTNNightElfBattleCruiser.blp
ReplaceableTextures\CommandButtons\BTNNightElfBuild.blp
ReplaceableTextures\CommandButtons\BTNNightElfCaptureFlag.blp
ReplaceableTextures\CommandButtons\BTNNightElfDestroyer.blp
ReplaceableTextures\CommandButtons\BTNNightElfFishingBoat.blp
ReplaceableTextures\CommandButtons\BTNNightElfFishingVillage.blp
ReplaceableTextures\CommandButtons\BTNNightElfRunner.blp
ReplaceableTextures\CommandButtons\BTNNightElfShipyard.blp
ReplaceableTextures\CommandButtons\BTNNightElfTransport.blp
ReplaceableTextures\CommandButtons\BTNObsidianStatue.blp
ReplaceableTextures\CommandButtons\BTNOgre.blp
ReplaceableTextures\CommandButtons\BTNOgreLord.blp
ReplaceableTextures\CommandButtons\BTNOgreMagi.blp
ReplaceableTextures\CommandButtons\BTNOneHeadedOgre.blp
ReplaceableTextures\CommandButtons\BTNOrb.blp
ReplaceableTextures\CommandButtons\BTNOrbOfCorruption.blp
ReplaceableTextures\CommandButtons\BTNOrbOfDarkness.blp
ReplaceableTextures\CommandButtons\BTNOrbOfDeath.blp
ReplaceableTextures\CommandButtons\BTNOrbOfDeathOff.blp
ReplaceableTextures\CommandButtons\BTNOrbOfDeathOn.blp
ReplaceableTextures\CommandButtons\BTNOrbOfFire.blp
ReplaceableTextures\CommandButtons\BTNOrbOfFrost.blp
ReplaceableTextures\CommandButtons\BTNOrbOfLightning.blp
ReplaceableTextures\CommandButtons\BTNOrbOfSlowness.blp
ReplaceableTextures\CommandButtons\BTNOrbOfVenom.blp
ReplaceableTextures\CommandButtons\BTNOrcBattleStandard.blp
ReplaceableTextures\CommandButtons\BTNOrcCaptureFlag.blp
ReplaceableTextures\CommandButtons\BTNOrcCar.blp
ReplaceableTextures\CommandButtons\BTNOrcDestroyer.blp
ReplaceableTextures\CommandButtons\BTNOrcishTransport.blp
ReplaceableTextures\CommandButtons\BTNOrcLumberUpgradeTwo.blp
ReplaceableTextures\CommandButtons\BTNOrcMeleeUpOne.blp
ReplaceableTextures\CommandButtons\BTNOrcMeleeUpThree.blp
ReplaceableTextures\CommandButtons\BTNOrcMeleeUpTwo.blp
ReplaceableTextures\CommandButtons\BTNOrcRallyPoint.blp
ReplaceableTextures\CommandButtons\BTNOrcTower.blp
ReplaceableTextures\CommandButtons\BTNOrcWarlock.blp
ReplaceableTextures\CommandButtons\BTNOrcWarlockRed.blp
ReplaceableTextures\CommandButtons\BTNOtherBarrel.blp
ReplaceableTextures\CommandButtons\BTNOwlBear.blp
ReplaceableTextures\CommandButtons\BTNPackBeast.blp
ReplaceableTextures\CommandButtons\BTNPandarenBrewmaster.blp
ReplaceableTextures\CommandButtons\BTNPandaTaunt.blp
ReplaceableTextures\CommandButtons\BTNParasite.blp
ReplaceableTextures\CommandButtons\BTNParasiteOff.blp
ReplaceableTextures\CommandButtons\BTNParasiteOn.blp
ReplaceableTextures\CommandButtons\BTNPatrol.blp
ReplaceableTextures\CommandButtons\BTNPeasant.blp
ReplaceableTextures\CommandButtons\BTNPebble.blp
ReplaceableTextures\CommandButtons\BTNPendantOfEnergy.blp
ReplaceableTextures\CommandButtons\BTNPendantOfMana.blp
ReplaceableTextures\CommandButtons\BTNPenguin.blp
ReplaceableTextures\CommandButtons\BTNPeon.blp
ReplaceableTextures\CommandButtons\BTNPeriapt.blp
ReplaceableTextures\CommandButtons\BTNPeriapt1.blp
ReplaceableTextures\CommandButtons\BTNPhaseShift.blp
ReplaceableTextures\CommandButtons\BTNPhaseShiftOff.blp
ReplaceableTextures\CommandButtons\BTNPhaseShiftOn.blp
ReplaceableTextures\CommandButtons\BTNPhilosophersStone.blp
ReplaceableTextures\CommandButtons\BTNPhoenixEgg.blp
ReplaceableTextures\CommandButtons\BTNPickUpItem.blp
ReplaceableTextures\CommandButtons\BTNPig.blp
ReplaceableTextures\CommandButtons\BTNPigFarm.blp
ReplaceableTextures\CommandButtons\BTNPillage.blp
ReplaceableTextures\CommandButtons\BTNPipeOfInsight.blp
ReplaceableTextures\CommandButtons\BTNPitLord.blp
ReplaceableTextures\CommandButtons\BTNPlagueCloud.blp
ReplaceableTextures\CommandButtons\BTNPocketFactory.blp
ReplaceableTextures\CommandButtons\BTNPoisonArrow.blp
ReplaceableTextures\CommandButtons\BTNPoisonSting.blp
ReplaceableTextures\CommandButtons\BTNPolarFurbolg.blp
ReplaceableTextures\CommandButtons\BTNPolarFurbolgElder.blp
ReplaceableTextures\CommandButtons\BTNPolarFurbolgShaman.blp
ReplaceableTextures\CommandButtons\BTNPolarFurbolgTracker.blp
ReplaceableTextures\CommandButtons\BTNPolymorph.blp
ReplaceableTextures\CommandButtons\BTNPortal.blp
ReplaceableTextures\CommandButtons\BTNPossession.blp
ReplaceableTextures\CommandButtons\BTNPotionBlue.blp
ReplaceableTextures\CommandButtons\BTNPotionBlueBig.blp
ReplaceableTextures\CommandButtons\BTNPotionBlueSmall.blp
ReplaceableTextures\CommandButtons\BTNPotionGreen.blp
ReplaceableTextures\CommandButtons\BTNPotionGreenSmall.blp
ReplaceableTextures\CommandButtons\BTNPotionOfClarity.blp
ReplaceableTextures\CommandButtons\BTNPotionOfDivinity.blp
ReplaceableTextures\CommandButtons\BTNPotionOfOmniscience.blp
ReplaceableTextures\CommandButtons\BTNPotionOfRestoration.blp
ReplaceableTextures\CommandButtons\BTNPotionOfVampirism.blp
ReplaceableTextures\CommandButtons\BTNPotionPurple.blp
ReplaceableTextures\CommandButtons\BTNPotionRed.blp
ReplaceableTextures\CommandButtons\BTNPowerGenerator.blp
ReplaceableTextures\CommandButtons\BTNPriest.blp
ReplaceableTextures\CommandButtons\BTNPriest.blp*
ReplaceableTextures\CommandButtons\BTNPriestAdept.blp
ReplaceableTextures\CommandButtons\BTNPriestessOfTheMoon.blp
ReplaceableTextures\CommandButtons\BTNPriestMaster.blp
ReplaceableTextures\CommandButtons\BTNProudMoore.blp
ReplaceableTextures\CommandButtons\BTNPurge.blp
ReplaceableTextures\CommandButtons\BTNpurpleDragonSpawn.blp
ReplaceableTextures\CommandButtons\BTNPurpleFelhound.blp
ReplaceableTextures\CommandButtons\BTNQuillBeast.blp
ReplaceableTextures\CommandButtons\BTNQuillBeastGod.blp
ReplaceableTextures\CommandButtons\BTNQuillSpray.blp
ReplaceableTextures\CommandButtons\BTNQuillSprayOff.blp
ReplaceableTextures\CommandButtons\BTNRacoon.blp
ReplaceableTextures\CommandButtons\BTNRaider.blp
ReplaceableTextures\CommandButtons\BTNRaiseDead.blp
ReplaceableTextures\CommandButtons\BTNRaiseDeadOff.blp
ReplaceableTextures\CommandButtons\BTNRaiseDeadOn.blp
ReplaceableTextures\CommandButtons\BTNRallyPoint.blp
ReplaceableTextures\CommandButtons\BTNRallyPointNightElf.blp
ReplaceableTextures\CommandButtons\BTNRallyPointUndead.blp
ReplaceableTextures\CommandButtons\BTNRavenForm.blp
ReplaceableTextures\CommandButtons\BTNRazorback.blp
ReplaceableTextures\CommandButtons\BTNRazormaneChief.blp
ReplaceableTextures\CommandButtons\BTNRedDragon.blp
ReplaceableTextures\CommandButtons\BTNRedDragonDevour.blp
ReplaceableTextures\CommandButtons\BTNRegenerate.blp
ReplaceableTextures\CommandButtons\BTNRegeneration.blp*
ReplaceableTextures\CommandButtons\BTNRegenerationAura.blp
ReplaceableTextures\CommandButtons\BTNReincarnation.blp
ReplaceableTextures\CommandButtons\BTNReinforcedBurrows.blp
ReplaceableTextures\CommandButtons\BTNReinforcedHides.blp
ReplaceableTextures\CommandButtons\BTNRejuvenation.blp
ReplaceableTextures\CommandButtons\BTNRejuvenationPotion.blp
ReplaceableTextures\CommandButtons\BTNRejuvPotion.blp
ReplaceableTextures\CommandButtons\BTNRepair.blp
ReplaceableTextures\CommandButtons\BTNRepairOff.blp
ReplaceableTextures\CommandButtons\BTNRepairOn.blp
ReplaceableTextures\CommandButtons\BTNReplay-Loop.blp
ReplaceableTextures\CommandButtons\BTNReplay-Pause.blp
ReplaceableTextures\CommandButtons\BTNReplay-Play.blp
ReplaceableTextures\CommandButtons\BTNReplay-SpeedDown.blp
ReplaceableTextures\CommandButtons\BTNReplay-SpeedUp.blp
ReplaceableTextures\CommandButtons\BTNReplenishHealth.blp
ReplaceableTextures\CommandButtons\BTNReplenishHealthOff.blp
ReplaceableTextures\CommandButtons\BTNReplenishHealthOn.blp
ReplaceableTextures\CommandButtons\BTNReplenishMana.blp
ReplaceableTextures\CommandButtons\BTNReplenishManaOff.blp
ReplaceableTextures\CommandButtons\BTNReplenishManaOn.blp
ReplaceableTextures\CommandButtons\BTNResistantSkin.blp
ReplaceableTextures\CommandButtons\BTNResistMagic.blp
ReplaceableTextures\CommandButtons\BTNResStone.blp
ReplaceableTextures\CommandButtons\BTNResurrection.blp
ReplaceableTextures\CommandButtons\BTNReturnGoods.blp
ReplaceableTextures\CommandButtons\BTNReveal.blp
ReplaceableTextures\CommandButtons\BTNRevenant.blp
ReplaceableTextures\CommandButtons\BTNRiderlessHorse.blp
ReplaceableTextures\CommandButtons\BTNRiderlessKodo.blp
ReplaceableTextures\CommandButtons\BTNRifleman.blp
ReplaceableTextures\CommandButtons\BTNRingGreen.blp
ReplaceableTextures\CommandButtons\BTNRingJadeFalcon.blp
ReplaceableTextures\CommandButtons\BTNRingLionHead.blp
ReplaceableTextures\CommandButtons\BTNRingPurple.blp
ReplaceableTextures\CommandButtons\BTNRingSkull.blp
ReplaceableTextures\CommandButtons\BTNRingVioletSpider.blp
ReplaceableTextures\CommandButtons\BTNRobeOfTheMagi.blp
ReplaceableTextures\CommandButtons\BTNROBOGOBLIN.blp
ReplaceableTextures\CommandButtons\BTNROBOGOBLINOff.blp
ReplaceableTextures\CommandButtons\BTNROBOGOBLINOn.blp
ReplaceableTextures\CommandButtons\BTNRockGolem.blp
ReplaceableTextures\CommandButtons\BTNRockTower.blp
ReplaceableTextures\CommandButtons\BTNRodOfNecromancy.blp
ReplaceableTextures\CommandButtons\BTNRoot.blp
ReplaceableTextures\CommandButtons\BTNRune.blp
ReplaceableTextures\CommandButtons\BTNRunedBracers.blp
ReplaceableTextures\CommandButtons\BTNSacrifice.blp
ReplaceableTextures\CommandButtons\BTNSacrificialPit.blp
ReplaceableTextures\CommandButtons\BTNSacrificialSkull.blp
ReplaceableTextures\CommandButtons\BTNSasquatch.blp
ReplaceableTextures\CommandButtons\BTNSasquatchShaman.blp
ReplaceableTextures\CommandButtons\BTNSatyr.blp
ReplaceableTextures\CommandButtons\BTNSatyrTrickster.blp
ReplaceableTextures\CommandButtons\BTNScatterRockets.blp
ReplaceableTextures\CommandButtons\BTNScepterOfMastery.blp
ReplaceableTextures\CommandButtons\BTNScourgeBuild.blp
ReplaceableTextures\CommandButtons\BTNScout.blp
ReplaceableTextures\CommandButtons\BTNScroll.blp
ReplaceableTextures\CommandButtons\BTNScrollOfHaste.blp
ReplaceableTextures\CommandButtons\BTNScrollOfHealing.blp
ReplaceableTextures\CommandButtons\BTNScrollOfProtection.blp
ReplaceableTextures\CommandButtons\BTNScrollOfRegeneration.blp
ReplaceableTextures\CommandButtons\BTNScrollOfRegenerationGreen.blp
ReplaceableTextures\CommandButtons\BTNScrollOfTownPortal.blp
ReplaceableTextures\CommandButtons\BTNScrollUber.blp
ReplaceableTextures\CommandButtons\BTNSeaElemental.blp
ReplaceableTextures\CommandButtons\BTNSeaGiant.blp
ReplaceableTextures\CommandButtons\BTNSeaGiantGreen.blp
ReplaceableTextures\CommandButtons\BTNSeaGiantPulverize.blp
ReplaceableTextures\CommandButtons\BTNSeaGiantWarStomp.blp
ReplaceableTextures\CommandButtons\BTNSeal.blp
ReplaceableTextures\CommandButtons\BTNSearingArrows.blp
ReplaceableTextures\CommandButtons\BTNSearingArrowsOff.blp
ReplaceableTextures\CommandButtons\BTNSearingArrowsOn.blp
ReplaceableTextures\CommandButtons\BTNSeaTurtleGreen.blp
ReplaceableTextures\CommandButtons\BTNSeaTurtleRed.blp
ReplaceableTextures\CommandButtons\BTNSeaWitch.blp
ReplaceableTextures\CommandButtons\BTNSeigeEngine.blp
ReplaceableTextures\CommandButtons\BTNSeigeEngineWithMissles.blp
ReplaceableTextures\CommandButtons\BTNSelectHeroOff.blp
ReplaceableTextures\CommandButtons\BTNSelectHeroOn.blp
ReplaceableTextures\CommandButtons\BTNSelectUnit.blp
ReplaceableTextures\CommandButtons\BTNSelfDestruct.blp
ReplaceableTextures\CommandButtons\BTNSelfDestructOff.blp
ReplaceableTextures\CommandButtons\BTNSelfDestructOn.blp
ReplaceableTextures\CommandButtons\BTNSell.blp
ReplaceableTextures\CommandButtons\BTNSentinel.blp
ReplaceableTextures\CommandButtons\BTNSentryWard.blp
ReplaceableTextures\CommandButtons\BTNSerpentWard.blp
ReplaceableTextures\CommandButtons\BTNShade.blp
ReplaceableTextures\CommandButtons\BTNShadowHunter.blp
ReplaceableTextures\CommandButtons\BTNShadowMeld.blp
ReplaceableTextures\CommandButtons\BTNShadowPact.blp
ReplaceableTextures\CommandButtons\BTNShadowPact.blp*
ReplaceableTextures\CommandButtons\BTNShadowStrike.blp
ReplaceableTextures\CommandButtons\BTNShaman.blp
ReplaceableTextures\CommandButtons\BTNShamanAdept.blp
ReplaceableTextures\CommandButtons\BTNShamanMaster.blp
ReplaceableTextures\CommandButtons\BTNShandris.blp
ReplaceableTextures\CommandButtons\BTNSheep.blp
ReplaceableTextures\CommandButtons\BTNShimmerWeed.blp
ReplaceableTextures\CommandButtons\BTNShip.blp
ReplaceableTextures\CommandButtons\BTNShockWave.blp
ReplaceableTextures\CommandButtons\BTNShoveler.blp
ReplaceableTextures\CommandButtons\BTNShrineOfAszhara.blp
ReplaceableTextures\CommandButtons\BTNSilence.blp
ReplaceableTextures\CommandButtons\BTNSirenAdept.blp
ReplaceableTextures\CommandButtons\BTNSirenMaster.blp
ReplaceableTextures\CommandButtons\BTNSkeletalLongevity.blp
ReplaceableTextures\CommandButtons\BTNSkeletalOrc.blp
ReplaceableTextures\CommandButtons\BTNSkeletalOrcChampion.blp
ReplaceableTextures\CommandButtons\BTNSkeletalOrcGrunt.blp
ReplaceableTextures\CommandButtons\BTNSkeletonArcher.blp
ReplaceableTextures\CommandButtons\BTNSkeletonMage.blp
ReplaceableTextures\CommandButtons\BTNSkeletonWarrior.blp
ReplaceableTextures\CommandButtons\BTNSkillz.blp
ReplaceableTextures\CommandButtons\BTNSkink.blp
ReplaceableTextures\CommandButtons\BTNSlaughterHouse.blp
ReplaceableTextures\CommandButtons\BTNSleep.blp
ReplaceableTextures\CommandButtons\BTNSlippersOfAgility.blp
ReplaceableTextures\CommandButtons\BTNSlow.blp
ReplaceableTextures\CommandButtons\BTNSlowOff.blp
ReplaceableTextures\CommandButtons\BTNSlowOn.blp
ReplaceableTextures\CommandButtons\BTNSlowPoison.blp
ReplaceableTextures\CommandButtons\BTNSludgeCreature.blp
ReplaceableTextures\CommandButtons\BTNSmash.blp
ReplaceableTextures\CommandButtons\BTNSnapDragon.blp
ReplaceableTextures\CommandButtons\BTNSnazzyPotion.blp
ReplaceableTextures\CommandButtons\BTNSnazzyScroll.blp
ReplaceableTextures\CommandButtons\BTNSnazzyScrollGreen.blp
ReplaceableTextures\CommandButtons\BTNSnazzyScrollPurple.blp
ReplaceableTextures\CommandButtons\BTNSnowOwl.blp
ReplaceableTextures\CommandButtons\BTNSobiMask.blp
ReplaceableTextures\CommandButtons\BTNSorceress.blp
ReplaceableTextures\CommandButtons\BTNSorceressAdept.blp
ReplaceableTextures\CommandButtons\BTNSorceressMaster.blp
ReplaceableTextures\CommandButtons\BTNSoulBurn.blp
ReplaceableTextures\CommandButtons\BTNSoulGem.blp
ReplaceableTextures\CommandButtons\BTNSpawningGrounds.blp
ReplaceableTextures\CommandButtons\BTNSpellBookBLS.blp
ReplaceableTextures\CommandButtons\BTNSpellBreaker.blp
ReplaceableTextures\CommandButtons\BTNSpellBreakerMagicDefend.blp
ReplaceableTextures\CommandButtons\BTNSpellBreakerMagicUnDefend.blp
ReplaceableTextures\CommandButtons\BTNSpellShieldAmulet.blp
ReplaceableTextures\CommandButtons\BTNSpellSteal.blp
ReplaceableTextures\CommandButtons\BTNSpellStealOff.blp
ReplaceableTextures\CommandButtons\BTNSpellStealOn.blp
ReplaceableTextures\CommandButtons\BTNSpider.blp
ReplaceableTextures\CommandButtons\BTNSpiderBlack.blp
ReplaceableTextures\CommandButtons\BTNSpiderBlue.blp
ReplaceableTextures\CommandButtons\BTNSpiderCrab.blp
ReplaceableTextures\CommandButtons\BTNSpiderGreen.blp
ReplaceableTextures\CommandButtons\BTNSpiderling.blp
ReplaceableTextures\CommandButtons\BTNSpiderSilkBroach.blp
ReplaceableTextures\CommandButtons\BTNSpikedBarricades.blp
ReplaceableTextures\CommandButtons\BTNSpinyCrab.blp
ReplaceableTextures\CommandButtons\BTNSpiritLink.blp
ReplaceableTextures\CommandButtons\BTNSpiritLodge.blp
ReplaceableTextures\CommandButtons\BTNSpiritOfVengeance.blp
ReplaceableTextures\CommandButtons\BTNSpiritWalker.blp
ReplaceableTextures\CommandButtons\BTNSpiritWalkerAdeptTraining.blp
ReplaceableTextures\CommandButtons\BTNSpiritWalkerMasterTraining.blp
ReplaceableTextures\CommandButtons\BTNSpiritWolf.blp
ReplaceableTextures\CommandButtons\BTNSpiritWyvern.blp
ReplaceableTextures\CommandButtons\BTNSpy.blp
ReplaceableTextures\CommandButtons\BTNStaffOfNegation.blp
ReplaceableTextures\CommandButtons\BTNStaffOfPreservation.blp
ReplaceableTextures\CommandButtons\BTNStaffOfPurification.blp
ReplaceableTextures\CommandButtons\BTNStaffOfSanctuary.blp
ReplaceableTextures\CommandButtons\BTNStaffOfSilence.blp
ReplaceableTextures\CommandButtons\BTNStaffOfTeleportation.blp
ReplaceableTextures\CommandButtons\BTNStag.blp
ReplaceableTextures\CommandButtons\BTNStampede.blp
ReplaceableTextures\CommandButtons\BTNStarFall.blp
ReplaceableTextures\CommandButtons\BTNStarWand.blp
ReplaceableTextures\CommandButtons\BTNStasisTrap.blp
ReplaceableTextures\CommandButtons\BTNStatUp.blp
ReplaceableTextures\CommandButtons\BTNSteamTank.blp
ReplaceableTextures\CommandButtons\BTNSteelArmor.blp
ReplaceableTextures\CommandButtons\BTNSteelMelee.blp
ReplaceableTextures\CommandButtons\BTNSteelRanged.blp
ReplaceableTextures\CommandButtons\BTNStone.blp
ReplaceableTextures\CommandButtons\BTNStoneArchitecture.blp
ReplaceableTextures\CommandButtons\BTNStoneForm.blp
ReplaceableTextures\CommandButtons\BTNStop.blp
ReplaceableTextures\CommandButtons\BTNStormBolt.blp
ReplaceableTextures\CommandButtons\BTNStormBrewMaster.blp
ReplaceableTextures\CommandButtons\BTNStormEarth&Fire.blp
ReplaceableTextures\CommandButtons\BTNStormHammer.blp
ReplaceableTextures\CommandButtons\BTNStrengthOfTheMoon.blp
ReplaceableTextures\CommandButtons\BTNStrengthOfTheWild.blp
ReplaceableTextures\CommandButtons\BTNStrongDrink.blp
ReplaceableTextures\CommandButtons\BTNStrongHold.blp
ReplaceableTextures\CommandButtons\BTNStun.blp
ReplaceableTextures\CommandButtons\BTNSummonWaterElemental.blp
ReplaceableTextures\CommandButtons\BTNSunKey.blp
ReplaceableTextures\CommandButtons\BTNSupportBeam.blp
ReplaceableTextures\CommandButtons\BTNSylvanusWindRunner.blp
ReplaceableTextures\CommandButtons\BTNTalisman.blp
ReplaceableTextures\CommandButtons\BTNTameHippogriff.blp
ReplaceableTextures\CommandButtons\BTNTaunt.blp
ReplaceableTextures\CommandButtons\BTNTauren.blp
ReplaceableTextures\CommandButtons\BTNTaurenHut.blp
ReplaceableTextures\CommandButtons\BTNTaurenTotem.blp
ReplaceableTextures\CommandButtons\BTNTavern.blp
ReplaceableTextures\CommandButtons\BTNTelescope.blp
ReplaceableTextures\CommandButtons\BTNTemp.blp
ReplaceableTextures\CommandButtons\BTNTempleOfTheDamned.blp
ReplaceableTextures\CommandButtons\BTNTempleOfTides.blp
ReplaceableTextures\CommandButtons\BTNTentacle.blp
ReplaceableTextures\CommandButtons\BTNTheBlackArrow.blp
ReplaceableTextures\CommandButtons\BTNTheBlackArrowOnOff.blp
ReplaceableTextures\CommandButtons\BTNTheCaptain.blp
ReplaceableTextures\CommandButtons\BTNThickFur.blp
ReplaceableTextures\CommandButtons\BTNThievesGuild.blp
ReplaceableTextures\CommandButtons\BTNThoriumArmor.blp
ReplaceableTextures\CommandButtons\BTNThoriumMelee.blp
ReplaceableTextures\CommandButtons\BTNThoriumRanged.blp
ReplaceableTextures\CommandButtons\BTNThorns.blp
ReplaceableTextures\CommandButtons\BTNThornShield.blp
ReplaceableTextures\CommandButtons\BTNThornShieldOff.blp
ReplaceableTextures\CommandButtons\BTNThrall.blp
ReplaceableTextures\CommandButtons\BTNThunderClap.blp
ReplaceableTextures\CommandButtons\BTNThunderLizard.blp
ReplaceableTextures\CommandButtons\BTNThunderLizardEgg.blp
ReplaceableTextures\CommandButtons\BTNThunderLizardSalamander.blp
ReplaceableTextures\CommandButtons\BTNThunderLizardVizier.blp
ReplaceableTextures\CommandButtons\BTNTichondrius.blp
ReplaceableTextures\CommandButtons\BTNTidalGuardian.blp
ReplaceableTextures\CommandButtons\BTNTimberWolf.blp
ReplaceableTextures\CommandButtons\BTNTinyCastle.blp
ReplaceableTextures\CommandButtons\BTNTombOfRelics.blp
ReplaceableTextures\CommandButtons\BTNTombOfRetraining.blp
ReplaceableTextures\CommandButtons\BTNTome.blp
ReplaceableTextures\CommandButtons\BTNTomeBrown.blp
ReplaceableTextures\CommandButtons\BTNTomeRed.blp
ReplaceableTextures\CommandButtons\BTNTornado.blp
ReplaceableTextures\CommandButtons\BTNTower.blp
ReplaceableTextures\CommandButtons\BTNTownHall.blp
ReplaceableTextures\CommandButtons\BTNTranquility.blp
ReplaceableTextures\CommandButtons\BTNTransmute.blp
ReplaceableTextures\CommandButtons\BTNTransport.blp
ReplaceableTextures\CommandButtons\BTNTreant.blp
ReplaceableTextures\CommandButtons\BTNTreeOfAges.blp
ReplaceableTextures\CommandButtons\BTNTreeOfEternity.blp
ReplaceableTextures\CommandButtons\BTNTreeOfLife.blp
ReplaceableTextures\CommandButtons\BTNTrollBatRider.blp
ReplaceableTextures\CommandButtons\BTNTrollBurrow.blp
ReplaceableTextures\CommandButtons\BTNTrueShot.blp
ReplaceableTextures\CommandButtons\BTNTuskaarBlack.blp
ReplaceableTextures\CommandButtons\BTNTuskaarBrown.blp
ReplaceableTextures\CommandButtons\BTNTuskaarGold.blp
ReplaceableTextures\CommandButtons\BTNTuskaarNomad.blp
ReplaceableTextures\CommandButtons\BTNUltravision.blp
ReplaceableTextures\CommandButtons\BTNUnbroken.blp
ReplaceableTextures\CommandButtons\BTNUndeadAirBarge.blp
ReplaceableTextures\CommandButtons\BTNUndeadBattleShip.blp
ReplaceableTextures\CommandButtons\BTNUndeadCaptureFlag.blp
ReplaceableTextures\CommandButtons\BTNUndeadCar.blp
ReplaceableTextures\CommandButtons\BTNUndeadDestroyer.blp
ReplaceableTextures\CommandButtons\BTNUndeadLoad.blp
ReplaceableTextures\CommandButtons\BTNUndeadLoadOff.blp
ReplaceableTextures\CommandButtons\BTNUndeadLoadOn.blp
ReplaceableTextures\CommandButtons\BTNUndeadShipyard.blp
ReplaceableTextures\CommandButtons\BTNUndeadShrine.blp
ReplaceableTextures\CommandButtons\BTNUndeadTransport.blp
ReplaceableTextures\CommandButtons\BTNUndeadUnLoad.blp
ReplaceableTextures\CommandButtons\BTNUnholyArmor.blp
ReplaceableTextures\CommandButtons\BTNUnholyAura.blp
ReplaceableTextures\CommandButtons\BTNUnholyFrenzy.blp
ReplaceableTextures\CommandButtons\BTNUnholyStrength.blp
ReplaceableTextures\CommandButtons\BTNUnLoad.blp
ReplaceableTextures\CommandButtons\BTNUnloadDwarf.blp
ReplaceableTextures\CommandButtons\BTNUnloadPeon.blp
ReplaceableTextures\CommandButtons\BTNUnstableConcoction.blp
ReplaceableTextures\CommandButtons\BTNUnsummonBuilding.blp
ReplaceableTextures\CommandButtons\BTNUpgradeMoonGlaive.blp
ReplaceableTextures\CommandButtons\BTNUpgradeRegenerationAura.blp
ReplaceableTextures\CommandButtons\BTNUproot.blp
ReplaceableTextures\CommandButtons\BTNUrnOfKelThuzad.blp
ReplaceableTextures\CommandButtons\BTNUsedSoulGem.blp
ReplaceableTextures\CommandButtons\BTNVampiricAura.blp
ReplaceableTextures\CommandButtons\BTNVengeanceIncarnate.blp
ReplaceableTextures\CommandButtons\BTNVialEmpty.blp
ReplaceableTextures\CommandButtons\BTNVialFull.blp
ReplaceableTextures\CommandButtons\BTNVillagerKid.blp
ReplaceableTextures\CommandButtons\BTNVillagerKid2.blp
ReplaceableTextures\CommandButtons\BTNVillagerMan.blp
ReplaceableTextures\CommandButtons\BTNVillagerMan1.blp
ReplaceableTextures\CommandButtons\BTNVillagerWoman.blp
ReplaceableTextures\CommandButtons\BTNVoidWalker.blp
ReplaceableTextures\CommandButtons\BTNVolcano.blp
ReplaceableTextures\CommandButtons\BTNVoodooLounge.blp
ReplaceableTextures\CommandButtons\BTNVorpalBlades.blp
ReplaceableTextures\CommandButtons\BTNVulture.blp
ReplaceableTextures\CommandButtons\BTNWallOfFire.blp
ReplaceableTextures\CommandButtons\BTNWand.blp
ReplaceableTextures\CommandButtons\BTNWandOfCyclone.blp
ReplaceableTextures\CommandButtons\BTNWandOfManaSteal.blp
ReplaceableTextures\CommandButtons\BTNWandOfNeutralization.blp
ReplaceableTextures\CommandButtons\BTNWandOfShadowSight.blp
ReplaceableTextures\CommandButtons\BTNWandSkull.blp
ReplaceableTextures\CommandButtons\BTNWarden2.blp
ReplaceableTextures\CommandButtons\BTNWarEagle.blp
ReplaceableTextures\CommandButtons\BTNWarStomp.blp
ReplaceableTextures\CommandButtons\BTNWaygate.blp
ReplaceableTextures\CommandButtons\BTNWeb.blp
ReplaceableTextures\CommandButtons\BTNWebOff.blp
ReplaceableTextures\CommandButtons\BTNWebOn.blp
ReplaceableTextures\CommandButtons\BTNWellSpring.blp
ReplaceableTextures\CommandButtons\BTNWendigo.blp
ReplaceableTextures\CommandButtons\BTNWhirlwind.blp
ReplaceableTextures\CommandButtons\BTNWindSerpent.blp
ReplaceableTextures\CommandButtons\BTNWindWalkOff.blp
ReplaceableTextures\CommandButtons\BTNWindWalkOn.blp
ReplaceableTextures\CommandButtons\BTNWirtsLeg.blp
ReplaceableTextures\CommandButtons\BTNWirtsOtherLeg.blp
ReplaceableTextures\CommandButtons\BTNWirtsOtherLeg.blp*
ReplaceableTextures\CommandButtons\BTNWisp.blp
ReplaceableTextures\CommandButtons\BTNWispHealOff.blp
ReplaceableTextures\CommandButtons\BTNWispHealOn.blp
ReplaceableTextures\CommandButtons\BTNWispSplode.blp
ReplaceableTextures\CommandButtons\BTNWitchDoctor.blp
ReplaceableTextures\CommandButtons\BTNWitchDoctorAdept.blp
ReplaceableTextures\CommandButtons\BTNWitchDoctorMaster.blp
ReplaceableTextures\CommandButtons\BTNWolf.blp
ReplaceableTextures\CommandButtons\BTNWorkshop.blp
ReplaceableTextures\CommandButtons\BTNWyvern.blp
ReplaceableTextures\CommandButtons\BTNWyvernRider.blp
ReplaceableTextures\CommandButtons\BTNYouDirtyRat!.blp
ReplaceableTextures\CommandButtons\BTNZergling.blp
ReplaceableTextures\CommandButtons\BTNZiggurat.blp
ReplaceableTextures\CommandButtons\BTNZigguratUpgrade.blp
ReplaceableTextures\CommandButtons\BTNZombie.blp
ReplaceableTextures\PassiveButtons\PASBTNBash.blp
ReplaceableTextures\PassiveButtons\PASBTNBattleRoar.blp
ReplaceableTextures\PassiveButtons\PASBTNBrilliance.blp
ReplaceableTextures\PassiveButtons\PASBTNCleavingAttack.blp
ReplaceableTextures\PassiveButtons\PASBTNCommand.blp
ReplaceableTextures\PassiveButtons\PASBTNCorrosiveBreath.blp
ReplaceableTextures\PassiveButtons\PASBTNCriticalStrike.blp
ReplaceableTextures\PassiveButtons\PASBTNDemolish.blp
ReplaceableTextures\PassiveButtons\PASBTNDevotion.blp
ReplaceableTextures\PassiveButtons\PASBTNDrum.blp
ReplaceableTextures\PassiveButtons\PASBTNDrunkenDodge.blp
ReplaceableTextures\PassiveButtons\PASBTNElunesBlessing.blp
ReplaceableTextures\CommandButtons\PASBTNEngineeringUpgrade.blp*
ReplaceableTextures\PassiveButtons\PASBTNEnvenomedSpear.blp
ReplaceableTextures\PassiveButtons\PASBTNEvasion.blp
ReplaceableTextures\PassiveButtons\PASBTNExhumeCorpses.blp
ReplaceableTextures\PassiveButtons\PASBTNFeedBack.blp
ReplaceableTextures\PassiveButtons\PASBTNFireRocks.blp
ReplaceableTextures\PassiveButtons\PASBTNFlakCannons.blp
ReplaceableTextures\PassiveButtons\PASBTNFlyingMachineTrueSight.blp*
ReplaceableTextures\PassiveButtons\PASBTNFragmentationBombs.blp
ReplaceableTextures\PassiveButtons\PASBTNFreezingBreath.blp
ReplaceableTextures\PassiveButtons\PASBTNFrost.blp
ReplaceableTextures\PassiveButtons\PASBTNGenericSpellImmunity.blp
ReplaceableTextures\PassiveButtons\PASBTNGnollCommandAura.blp
ReplaceableTextures\PassiveButtons\PASBTNGyroCopterTrueSight.blp*
ReplaceableTextures\PassiveButtons\PASBTNHardenedSkin.blp
ReplaceableTextures\PassiveButtons\PASBTNHumanArtilleryUpOne.blp
ReplaceableTextures\PassiveButtons\PASBTNImmolation.blp
ReplaceableTextures\PassiveButtons\PASBTNImpalingBolt.blp
ReplaceableTextures\PassiveButtons\PASBTNIncinerate.blp
ReplaceableTextures\PassiveButtons\PASBTNLiquidFire.blp
ReplaceableTextures\PassiveButtons\PASBTNMagicalSentry.blp
ReplaceableTextures\PassiveButtons\PASBTNMagicImmunity.blp
ReplaceableTextures\PassiveButtons\PASBTNPillage.blp
ReplaceableTextures\PassiveButtons\PASBTNPlagueCloud.blp
ReplaceableTextures\PassiveButtons\PASBTNPoisonSting.blp
ReplaceableTextures\PassiveButtons\PASBTNRegenerate.blp
ReplaceableTextures\PassiveButtons\PASBTNRegenerationAura.blp
ReplaceableTextures\PassiveButtons\PASBTNReincarnation.blp
ReplaceableTextures\PassiveButtons\PASBTNResistantSkin.blp
ReplaceableTextures\PassiveButtons\PASBTNScatterRockets.blp
ReplaceableTextures\PassiveButtons\PASBTNScout.blp
ReplaceableTextures\PassiveButtons\PASBTNSeaGiantPulverize.blp
ReplaceableTextures\PassiveButtons\PASBTNShadeTrueSight.blp*
ReplaceableTextures\PassiveButtons\PASBTNSlowPoison.blp
ReplaceableTextures\PassiveButtons\PASBTNSmash.blp
ReplaceableTextures\PassiveButtons\PASBTNSpiritOfVengeance.blp
ReplaceableTextures\PassiveButtons\PASBTNStatUp.blp
ReplaceableTextures\PassiveButtons\PASBTNStormHammer.blp
ReplaceableTextures\PassiveButtons\PASBTNThickFur.blp
ReplaceableTextures\PassiveButtons\PASBTNThorns.blp
ReplaceableTextures\PassiveButtons\PASBTNThornShield.blp
ReplaceableTextures\PassiveButtons\PASBTNTrueShot.blp
ReplaceableTextures\PassiveButtons\PASBTNUnholyAura.blp
ReplaceableTextures\PassiveButtons\PASBTNUpgradeMoonGlaive.blp
ReplaceableTextures\PassiveButtons\PASBTNVampiricAura.blp
ReplaceableTextures\PassiveButtons\PASBTNVorpalBlades.blp
ReplaceableTextures\PassiveButtons\PASBTNWarStomp.blp


The text alone is like 66 kb so I expect the model to be a similar size.
 
Level 5
Joined
Dec 1, 2008
Messages
120
The thing is, I have a slight problem with the animations that take up most of the space.

Sample model with 3 textures:
Code:
Version {
	FormatVersion 800,
}
Model "cmdbtn" {
	NumGeosets 1,
	NumBones 1,
	BlendTime 150,
	MinimumExtent { -16, -16, 0 },
	MaximumExtent { 16, 16, 0 },
	BoundsRadius 32,
}
Sequences 3 {
	Anim "0" {
		Interval { 0, 1000 },
		NonLooping,
		MinimumExtent { -16, -16, 0 },
		MaximumExtent { 16, 16, 0 },
		BoundsRadius 32,
	}
	Anim "1" {
		Interval { 2000, 3000 },
		NonLooping,
		MinimumExtent { -16, -16, 0 },
		MaximumExtent { 16, 16, 0 },
		BoundsRadius 32,
	}
	Anim "2" {
		Interval { 4000, 5000 },
		NonLooping,
		MinimumExtent { -16, -16, 0 },
		MaximumExtent { 16, 16, 0 },
		BoundsRadius 32,
	}
}
Textures 3 {
	Bitmap {
		 Image "File1.blp",
	}
	Bitmap {
		 Image "File2.blp",
	}
	Bitmap {
		 Image "File3.blp",
	}
}
Materials 1 {
	Material {
		Layer {
			FilterMode Transparent,
			Alpha 6 {
				DontInterp,
				0: 1,
				1001: 0,
				2000: 0,
				3001: 0,
				4000: 0,
				5001: 0,
			}
			static TextureID 0,
		}
		Layer {
			FilterMode Transparent,
			Alpha 6 {
				DontInterp,
				0: 0,
				1001: 0,
				2000: 1,
				3001: 0,
				4000: 0,
				5001: 0,
			}
			static TextureID 1,
		}
		Layer {
			FilterMode Transparent,
			Alpha 6 {
				DontInterp,
				0: 0,
				1001: 0,
				2000: 0,
				3001: 0,
				4000: 1,
				5001: 0,
			}
			static TextureID 2,
		}
	}
}
Geoset {
	Vertices 4 {
		{ -16, -16, 0 },
		{ -16, 16, 0 },
		{ 16, -16, 0 },
		{ 16, 16, 0 },
	}
	Normals 4 {
		{ 0, 0, 1 },
		{ 0, 0, 1 },
		{ 0, 0, 1 },
		{ 0, 0, 1 },
	}
	TVertices 4 {
		{ 0, 1 },
		{ 0, 0 },
		{ 1, 1 },
		{ 1, 0 },
	}
	VertexGroup  {
		0,
		0,
		0,
		0,
	}
	Faces 1 6 {
		Triangles {
			{ 2, 3, 0, 1, 0, 3 },
		}
	}
	Groups 1 1 {
		Matrices { 0 },
	}
	MinimumExtent { -16, -16, 0 },
	MaximumExtent { 16, 16, 0 },
	BoundsRadius 32,
	MaterialID 0,
	SelectionGroup 0,
}
Bone "Bone0" {
	ObjectId 0,
	GeosetId Multiple,
	GeosetAnimId None,
}
PivotPoints 1 {
	{ 0, 0, 0 },
}
See this part in the material section:
Code:
0: 1,
1001: 0,
2000: 0,
3001: 0,
4000: 0,
5001: 0,
For each material layer there's start and end keyframe for each animation. Otherwise they'll show up on other animations.

So above we have 3 textures, 6 keyframes per material layer. With 1000 textures that's 2000 keyframes per material layer, which is total of 2000000 keyframes.

I'm stumped. I hope there's someone here who knows how to get around this. With how I currently have this, it's not possible.
 
Instead of using animated alpha, you can use animated textures. This method will also reduce the number of layers you'll need. :)

Code:
Materials 1 {
	Material {
		Layer {
			FilterMode Transparent,
			TextureID 11 {
				DontInterp,
				0: 0,
				2000: 1,
				4000: 2,
				6000: 3,
				8000: 4,
				10000: 5,
				12000: 6,
				14000: 7,
				16000: 8,
				18000: 9,
				20000: 10,
			}
		}
	}
}

TextureID should be set to the number of sequences listed within the layer (or maybe it is the number of textures).

Code:
//+-----------------------------------------------------------------------------
//| cmdbtn2.mdl
//| Generated by War3 Model Editor v1.07
//| Monday, July 20 2015 20:58:23
//| http://www.magosx.com
//+-----------------------------------------------------------------------------
Version {
	FormatVersion 800,
}
Model "cmdbtn" {
	NumGeosets 1,
	NumBones 1,
	BlendTime 150,
	MinimumExtent { -16, -16, 0 },
	MaximumExtent { 16, 16, 0 },
	BoundsRadius 32,
}
Sequences 11 {
	Anim "0" {
		Interval { 0, 1000 },
		NonLooping,
		MinimumExtent { -16, -16, 0 },
		MaximumExtent { 16, 16, 0 },
		BoundsRadius 32,
	}
	Anim "1" {
		Interval { 2000, 3000 },
		NonLooping,
		MinimumExtent { -16, -16, 0 },
		MaximumExtent { 16, 16, 0 },
		BoundsRadius 32,
	}
	Anim "2" {
		Interval { 4000, 5000 },
		NonLooping,
		MinimumExtent { -16, -16, 0 },
		MaximumExtent { 16, 16, 0 },
		BoundsRadius 32,
	}
	Anim "3" {
		Interval { 6000, 7000 },
		NonLooping,
		MinimumExtent { -16, -16, 0 },
		MaximumExtent { 16, 16, 0 },
		BoundsRadius 32,
	}
	Anim "4" {
		Interval { 8000, 9000 },
		NonLooping,
		MinimumExtent { -16, -16, 0 },
		MaximumExtent { 16, 16, 0 },
		BoundsRadius 32,
	}
	Anim "5" {
		Interval { 10000, 11000 },
		NonLooping,
		MinimumExtent { -16, -16, 0 },
		MaximumExtent { 16, 16, 0 },
		BoundsRadius 32,
	}
	Anim "6" {
		Interval { 12000, 13000 },
		NonLooping,
		MinimumExtent { -16, -16, 0 },
		MaximumExtent { 16, 16, 0 },
		BoundsRadius 32,
	}
	Anim "7" {
		Interval { 14000, 15000 },
		NonLooping,
		MinimumExtent { -16, -16, 0 },
		MaximumExtent { 16, 16, 0 },
		BoundsRadius 32,
	}
	Anim "8" {
		Interval { 16000, 17000 },
		NonLooping,
		MinimumExtent { -16, -16, 0 },
		MaximumExtent { 16, 16, 0 },
		BoundsRadius 32,
	}
	Anim "9" {
		Interval { 18000, 19000 },
		NonLooping,
		MinimumExtent { -16, -16, 0 },
		MaximumExtent { 16, 16, 0 },
		BoundsRadius 32,
	}
	Anim "10" {
		Interval { 20000, 21000 },
		NonLooping,
		MinimumExtent { -16, -16, 0 },
		MaximumExtent { 16, 16, 0 },
		BoundsRadius 32,
	}
}
Textures 11 {
	Bitmap {
		Image "ReplaceableTextures\CommandButtons\BTNAdvancedUnholyArmor.blp",
	}
	Bitmap {
		Image "ReplaceableTextures\CommandButtons\BTNArcaniteArmor.blp",
	}
	Bitmap {
		Image "ReplaceableTextures\CommandButtons\BTNBarkSkin.blp",
	}
	Bitmap {
		Image "ReplaceableTextures\CommandButtons\BTNDefendStop.blp",
	}
	Bitmap {
		Image "ReplaceableTextures\CommandButtons\BTNGrimWard.blp",
	}
	Bitmap {
		Image "ReplaceableTextures\CommandButtons\BTNHumanArmorUpOne.blp",
	}
	Bitmap {
		Image "ReplaceableTextures\CommandButtons\BTNHumanArmorUpThree.blp",
	}
	Bitmap {
		Image "ReplaceableTextures\CommandButtons\BTNHumanArmorUpTwo.blp",
	}
	Bitmap {
		Image "ReplaceableTextures\CommandButtons\BTNImprovedUnholyArmor.blp",
	}
	Bitmap {
		Image "ReplaceableTextures\CommandButtons\BTNSteelArmor.blp",
	}
	Bitmap {
		Image "ReplaceableTextures\CommandButtons\BTNThoriumArmor.blp",
	}
}
Materials 1 {
	Material {
		Layer {
			FilterMode Transparent,
			TextureID 11 {
				DontInterp,
				0: 0,
				2000: 1,
				4000: 2,
				6000: 3,
				8000: 4,
				10000: 5,
				12000: 6,
				14000: 7,
				16000: 8,
				18000: 9,
				20000: 10,
			}
		}
	}
}
Geoset {
	Vertices 4 {
		{ -16, -16, 0 },
		{ -16, 16, 0 },
		{ 16, -16, 0 },
		{ 16, 16, 0 },
	}
	Normals 4 {
		{ 0, 0, 1 },
		{ 0, 0, 1 },
		{ 0, 0, 1 },
		{ 0, 0, 1 },
	}
	TVertices 4 {
		{ 0, 1 },
		{ 0, 0 },
		{ 1, 1 },
		{ 1, 0 },
	}
	VertexGroup  {
		0,
		0,
		0,
		0,
	}
	Faces 1 6 {
		Triangles {
			{ 2, 3, 0, 1, 0, 3 },
		}
	}
	Groups 1 1 {
		Matrices { 0 },
	}
	MinimumExtent { -16, -16, 0 },
	MaximumExtent { 16, 16, 0 },
	BoundsRadius 32,
	MaterialID 0,
	SelectionGroup 0,
}
Bone "Bone0" {
	ObjectId 0,
	GeosetId Multiple,
	GeosetAnimId None,
}
PivotPoints 1 {
	{ 0, 0, 0 },
}

Test map:
 

Attachments

  • cmdbtn (1).w3x
    7.8 KB · Views: 101
Level 5
Joined
Dec 1, 2008
Messages
120
Warcraft 3 doesn't want to display the model at all if I go above 57 textures/animations. Sadness.

EDIT: Using texture animations. Also realized animation doesn't have to be 1 second long, so I made them 1 millisecond long to save some bytes.
 
Level 29
Joined
Jul 29, 2007
Messages
5,174
Something like this should be dynamic to some extent.
E.g. generating the model on compile time, given a list of used textures (loading 1154 textures isn't a very good idea, even if the game would have allowed it...)

Now, if you really want to stick a large number of textures, you can still do it realistically.
Generate texture atlases from the icon textures (if I remember correctly, they are 64x64, so that's 64 icons per 512x512 texture), and combine texture animations and animated textures.
You can also play with quality, and change them to 32x32 if that's good enough, letting you have 256 icons per texture (or whatever size you desire).

But if Warcraft doesn't allow for a high number of sequences, you are stumped there either way.
 
Level 5
Joined
Dec 1, 2008
Messages
120
It appears that the mistake was on my end. The list provided by PurgeandFire had wrong name on (at least) one texture, causing the model to not work.

Something like this should be dynamic to some extent.
E.g. generating the model on compile time, given a list of used textures (loading 1154 textures isn't a very good idea, even if the game would have allowed it...)

Now, if you really want to stick a large number of textures, you can still do it realistically.
Generate texture atlases from the icon textures (if I remember correctly, they are 64x64, so that's 64 icons per 512x512 texture), and combine texture animations and animated textures.
You can also play with quality, and change them to 32x32 if that's good enough, letting you have 256 icons per texture (or whatever size you desire).

But if Warcraft doesn't allow for a high number of sequences, you are stumped there either way.
You're absolutely right. But I am not capable of creating something that runs on compile time. I am currently writing all this javascript in Adobe ExtendScript Toolkit.

The only use for this I believe, is a full screen inventory, meaning that the map would likely be of RPG genre. So, maybe have them create a model per item type, such as "Weapon", "Armor", etc.

I've got a model with 204 animations working fine here.
 

Attachments

  • cmdbtn.w3x
    12.9 KB · Views: 87
Last edited:
Yeah perhaps it could be split up by item types. After all, it isn't that expensive to remove a destructable and create a new one if someone really needs to switch the icon to a different type.

But that seems to run quite well. 60 fps for me, and I consider that a pretty extreme case (256 icons or so on screen). Nice job, and sorry for the mistake in the list. I can generate a proper list with all the disabled buttons as well if you need it.
 
Level 5
Joined
Dec 1, 2008
Messages
120
Yeah perhaps it could be split up by item types. After all, it isn't that expensive to remove a destructable and create a new one if someone really needs to switch the icon to a different type.

But that seems to run quite well. 60 fps for me, and I consider that a pretty extreme case (256 icons or so on screen). Nice job, and sorry for the mistake in the list. I can generate a proper list with all the disabled buttons as well if you need it.
This cannot be used with destructables. Destructables don't have a version of SetUnitAnimationByIndex function. Their animations can only be set using strings and WC3 doesn't accept but a few (correct me if I'm wrong).

Thank you, but no need to, I already have done this. I will probably create some sort of demo for that item type stuff later tonight.
 
Level 5
Joined
Dec 1, 2008
Messages
120
I wrote a java application that creates the models. It converts all .txt files in the application folder into .mdl files. The .txt files are expected to be lists of texture paths.

I don't know what is required to run this application. I just created it in Eclipse as suggested by people of the internet.
 

Attachments

  • Icon Model Creator.7z
    4.4 KB · Views: 99
Level 12
Joined
Mar 13, 2012
Messages
1,121
This is great! I'm also in the process of making a UI and need exactly something like this!

Is there a way to further compress the many animations? As
Code:
NonLooping,
MinimumExtent { -16, -16, 0 },
MaximumExtent { 16, 16, 0 },
BoundsRadius 32,
is quite repetitive.

In the villager 255 animations thread it is stated that 255 (or 256) is the maximum. It is not clear however if maybe playing anims by id or some other trick can workaround this.


Now comes the hard part.. I would like to play certain animations (e.g. cooldown) for those UI units. Is there a reasonable way to include these animations in the model and have them played with the "icon" animation? Maybe with animation tags or so...
 
Level 5
Joined
Dec 1, 2008
Messages
120
This is great! I'm also in the process of making a UI and need exactly something like this!

Is there a way to further compress the many animations? As
Code:
NonLooping,
MinimumExtent { -16, -16, 0 },
MaximumExtent { 16, 16, 0 },
BoundsRadius 32,
is quite repetitive.

In the villager 255 animations thread it is stated that 255 (or 256) is the maximum. It is not clear however if maybe playing anims by id or some other trick can workaround this.


Now comes the hard part.. I would like to play certain animations (e.g. cooldown) for those UI units. Is there a reasonable way to include these animations in the model and have them played with the "icon" animation? Maybe with animation tags or so...

When I tried a high amount of animations things got a little weird. If I remember correctly, the unit displayed animations properly only up to some random number, after that it just repeated the animation 0. I didn't test this further as I thought such high amount of animations per model is insane anyway.

I believe WC3 crashes if I don't have the extents and bounds for the animations. I can test this.

I think a much better way of displaying a cooldown, is creating a second model that has only the cooldown animation and put it on top of the icon model.

EDIT: Updated first post with the newest map and the tool.
EDIT2: Confirmed 255 animations is the limit.
 
Level 12
Joined
Mar 13, 2012
Messages
1,121
When I tried a high amount of animations things got a little weird. If I remember correctly, the unit displayed animations properly only up to some random number, after that it just repeated the animation 0. I didn't test this further as I thought such high amount of animations per model is insane anyway.

I believe WC3 crashes if I don't have the extents and bounds for the animations. I can test this.
Thanks for testing, please share your results when done.

I think a much better way of displaying a cooldown, is creating a second model that has only the cooldown animation and put it on top of the icon model.
Yes currently that's my way to go but it would have been handy if everything could been done with one unit.
 
Level 5
Joined
Dec 1, 2008
Messages
120
You were right, it works without extents and bounds in sequences. Thank you.

Updated the first post once more with new map and tool.

EDIT: To-do, make model be unnaffected by time of day and fog of war.
 
Last edited:
Level 12
Joined
Mar 13, 2012
Messages
1,121
Some further things:

Could you add the info of 255 max animations and a simple .mdl example with the minimum required properties to the first post? Then it nearly has the structure of a tutorial..

Also you might want to use the Billboarded and NoDepthTest properties for UI elements.
I'm currently fighting the problem that a unit of the UI might be in the fog of war and therefore not clickable. I have not yet tested whether NoDepthTest makes it clickable/targetable but I guess it does not.
I got some things in my mind but if you know a good solution to this please share :). (messing with the fog of war is no option as this might lead to desyncs)
 
I think there are flags for unshaded/unfogged, i.e.
Code:
Layer {
    FilterMode Transparent,
    Unshaded,
    Unfogged,
    static TextureID 1,
}

Perhaps you knew that. Just thought I'd mention it in case you didn't.

@Ezekiel: Create a fog modifier. It won't desync. The natives allow you to specify which player you're creating it for, and all the natives for checking visibility (and the engine itself) take it into account (since fog of war is local to begin with).
 
Level 21
Joined
Mar 27, 2012
Messages
3,232
I recommend making your program so that it creates multiple models if more than 255 textures are input. This would allow me to write a fairly simple script that generates JASS code for registering icon paths ingame and thus, it would automate things thoroughly enough to just paste textures into a folder and have tools handle everything.
 
Level 12
Joined
Mar 13, 2012
Messages
1,121
@Ezekiel: Create a fog modifier. It won't desync.
I know that fog of war is local. As my UI is movable it might reveal other units though and if those are clicked, there will be desyncs.
 
Level 5
Joined
Dec 1, 2008
Messages
120
I recommend making your program so that it creates multiple models if more than 255 textures are input. This would allow me to write a fairly simple script that generates JASS code for registering icon paths ingame and thus, it would automate things thoroughly enough to just paste textures into a folder and have tools handle everything.
I'll make it so.

That's what the raw .txt file is sized. I assume it will be much more in a model file with all the extra animation frame data.
Compression might push the filesize down when imported into the map, though.
Import Manager says 102KB for the model with 255 animations. But as you can see, I have uploaded the actual map here, and it's 14.2KB.

Well, I suppose I'll just have to wait and see. In any case, it's better than WoW models, so it'd be useful.

EDIT: Bonus points for making the tool available in a way that lets people easily add paths.
I don't know any easier way than a text file with a list of the paths.

EDIT: What good is the NoDepthTest for? I don't understand how it would be useful for this. And I'm also not sure if I like to have it Billboarded either.
 
Last edited:
I know that fog of war is local. As my UI is movable it might reveal other units though and if those are clicked, there will be desyncs.

Do you mean like DGUI? iirc they hide units locally. Selections are asynchronous to begin with. As long as there isn't something that affects gameplay (e.g. differences in hp) and as long as your triggers exclude the dummy units (e.g. enters region events), then it should be ok to show/hide units locally.

Import Manager says 102KB for the model with 255 animations. But as you can see, I have uploaded the actual map here, and it's 14.2KB.

zlib works wonders. It's good to know that it gets compressed that well.
 
Level 5
Joined
Dec 1, 2008
Messages
120
Updated first post with new version of the tool.

- Made material Unshaded and Unfogged.
- Ignores empty lines in the .txt files.
- Allows maximum of 255 textures per model (splits the list into many models if necessary.)

EDIT: Fun fact, Unfogged doesn't seem to work.
 
Level 12
Joined
Mar 13, 2012
Messages
1,121
Do you mean like DGUI? iirc they hide units locally. Selections are asynchronous to begin with. As long as there isn't something that affects gameplay (e.g. differences in hp) and as long as your triggers exclude the dummy units (e.g. enters region events), then it should be ok to show/hide units locally.
Thanks for trying to help me, so I will explain it a bit further.
It's similar to DGUI. The same UI units are used by every player but moved locally according to the players camera.

Selections are not local but broadcasted to all players. It actually takes some effort to desync selections and when it happens ugly things happen.

What I meant with selection though is targeting a unit by an ability or rightclicking it. When a player e.g. rightclicks a unit over which he should have no vision from the hosts view (I guess), there will be desyncs.

Makes no sense for me but that's what my tests show.

So I need to make the UI units visible to every player though they might be in the fog for certain players and at the same time reveal nothing else.

- Made material Unshaded and Unfogged.
Did you try my tips too?
 
Last edited:
Level 5
Joined
Dec 1, 2008
Messages
120
Updated tool again.

- Corrected model as suggested by General Frank in this thread. Model now faces properly right when facing is 0, like other models in WC3.
- Removed Unfogged as it seems to be only for distance fog.

Thanks for trying to help me, so I will explain it a bit further.
It's similar to DGUI. The same UI units are used by every player but moved locally according to the players camera.

Selections are not local but broadcasted to all players. It actually takes some effort to desync selections and when it happens ugly things happen.

What I meant with selection though is targeting a unit by an ability or rightclicking it. When a player e.g. rightclicks a unit over which he should have no vision from the hosts view (I guess), there will be desyncs.

Makes no sense for me but that's what my tests show.

So I need to make the UI units visible to every player though they might be in the fog for certain players and at the same time make reveal nothing else.


Did you try my tips too?

Yes. Didn't notice any difference with NoDepthTest and Billboarded made the model extremely hard to see. I could only see a thin stripe of it when watching from above.

According to this, additive materials are unfogged. I'm not sure if it is worth implementing though, or whether it would even show up correctly.

EDIT: @Ezekiel: Ah I see. I'll let you know if I think of any solution.
I think it would get this "ghost" look to them if I changed the FilterMode to Additive. Units don't normally show in fog, so I think this is fine as it is?
 
Level 12
Joined
Mar 13, 2012
Messages
1,121
Didn't notice any difference with NoDepthTest and Billboarded made the model extremely hard to see. I could only see a thin stripe of it when watching from above.
Well do you know what Billboarded means? It means it retains always the same angle to the camera in all (or certain) axes. This is godsent for many UI systems.
I guess your model has the wrong facing in the editor that it only shows a thin stripe..
 
Level 5
Joined
Dec 1, 2008
Messages
120
It's not that I don't know what it means, it's just that I have no idea how to make it work. I don't know how to tell WC3 what side of the model I want to be facing the camera.
 
Level 12
Joined
Mar 13, 2012
Messages
1,121
I don't know how to tell WC3 what side of the model I want to be facing the camera.
Uhm my impression was that it is related to the general x, y and z axis in the model editor. This is just a guess though. You might want to look at some example models. I think lightning and some effects have this??
 
You might have to play around with the individual billboarding flags. There are a couple of types of billboarding as noted in the MDX specs:
http://www.hiveworkshop.com/forums/programming-714/mdx-specifications-240487/
C++:
// 0x8: billboarded
// 0x10: billboarded lock x
// 0x20: billboarded lock y
// 0x40: billboarded lock z

I'm not sure how that translates to the MDL, but maybe Magos' model editor has options for it. The behavior you're describing reminds me of how it works in WoW: it rotates about the z-axis to face you, but when you view it from above, it appears thin. I'm guessing they made it this way because it looks like it still has dimension to it. I leveled up a priest to 5 real quick to show you:
This is a view from the top of the character.
attachment.php

This is a view from an angle ~45 degrees facing the character.
attachment.php

This is a view with my camera parallel to the ground.
attachment.php


But I can't test which flags produce what behavior at the moment since I'm away from my PC. I'm not sure how it looks like on the mdl either.

Anyway, Uberplayer intended this for full-screen systems rather than a DGUI-like system, so that is probably why it doesn't need billboarding. But it'd be cool to find out how to implement that anyway for my own curiosity's sake. :p
 

Attachments

  • WoWScrnShot_072315_194033.jpeg
    WoWScrnShot_072315_194033.jpeg
    16 KB · Views: 227
  • WoWScrnShot_072315_194044.jpeg
    WoWScrnShot_072315_194044.jpeg
    25.8 KB · Views: 224
  • WoWScrnShot_072315_194047.jpeg
    WoWScrnShot_072315_194047.jpeg
    57.9 KB · Views: 225
So I need to make the UI units visible to every player though they might be in the fog for certain players and at the same time reveal nothing else.
You can also just set the alpha of units to 0. This is basicly the same as hiding them, but the game still considers them fully functional. Also, you can still select them, so no desync possibility for different players. You can also locally reduce the scale of the unit to 0 to make it virtually unselectable for other players without actually making it unselectable. The only way to select it then would be via drag select - but the problem is easily avoided when there is also an icon model at the same place from the owning player.
Drag select always prioritizes your own units if both your own and other player's units are at the same place. Hence why there is no way for other players to select an icon of another player if you just stack them on top of each other.

I used this method in my player stash system in Gaias. It's a cheap and effective way to hide interactive units locally without desyncs.

Also, you can just add a "death" animation that hides these material of the icon displayer model. Animations can be played asynchronous just fine.


To the billboard issue: for a DGUI like system you need full billboarding. Also, what Dr Super Good said. That's why you need the ignore z-depth check. This basicly makes the icon draw on top of everything, no matter if it's occluded or not.
 
Level 12
Joined
Mar 13, 2012
Messages
1,121
I don't know if I explained it well enough and I think you are talking about "hiding" the UI units? That is not my problem. All players use the same UI-units. I need a different area of vision for every player though so that the UI units are visible because they are placed related to each players camera. The problem now is that non-UI units (e.g. a random footman chilling around) might come into vision.

Hiding non-UI units by setting their scale to 0 is not good because it might fail. It would be optimal if they just would not appear at all..

Still thanks for helping.
 
I don't know if I explained it well enough and I think you are talking about "hiding" the UI units? That is not my problem. All players use the same UI-units. I need a different area of vision for every player though so that the UI units are visible because they are placed related to each players camera. The problem now is that non-UI units (e.g. a random footman chilling around) might come into vision.
I don't really understand your problem, tbh.

Maybe make a quick sketch to explain?

Hiding non-UI units by setting their scale to 0 is not good because it might fail. It would be optimal if they just would not appear at all.
It can not fail except for drag-selection. For targetting, it's 100% safe.
 
Level 5
Joined
Dec 1, 2008
Messages
120
I seem to be able to only make the units show a slice of themselves or nothing at all by billboarding. So I'll drop that for now.

I have a more curious problem.
JASS:
	private function CreateIcons takes nothing returns nothing
	
		local integer i = 0
		local integer j
		
		loop
			
			exitwhen ( i == GRID_WIDTH )
			
			set j = 0
			
			loop
			
				exitwhen ( j == GRID_HEIGHT )
				
				set Icon[ Count ] = CreateUnit( Player( 0 ), 'n000', -( ( CELL_SIZE * GRID_WIDTH ) / 2 ) + i * CELL_SIZE, -( ( CELL_SIZE * GRID_HEIGHT ) / 2 ) + j * CELL_SIZE, 270.0 )
				set Alpha[ Count ] = I2R( 255 / GRID_WIDTH * i )
				set Increment[ Count ] = INCREMENT
				
				call SetUnitVertexColor( Icon[ Count ], 255, 255, 255, R2I( Alpha[ Count ] ) )
				call SetUnitAnimationByIndex( Icon[ Count ], GetRandomInt( 0, ANIMS_MAX ) )
				
				set Count = Count + 1
				
				set j = j + 1
			
			endloop
			
			set i = i + 1
		
		endloop
	
	endfunction
The units will always have the same animation. Until I change it for the second time with a timer. Changing the unit to 'hpea' displays different animations properly.

EDIT: Working on a cooldown overlay model at the moment.
 
Last edited:
Level 12
Joined
Mar 13, 2012
Messages
1,121
It can not fail except for drag-selection. For targetting, it's 100% safe.
Desync safe or not is not the only problem. I would have to introduce a system when to upsize the units again and that gets messy along some other stuff. I think you understand my problem. Player must see locally moved units but must not see anything else he could not see with his normal vision.


The units will always have the same animation. Until I change it for the second time with a timer.
I'm no modeler but maybe it has to do with the forced birth anim when a unit is created?

EDIT: Working on a cooldown overlay model at the moment.
Nice. But be careful if you are planning to use SetUnitTimeScale (setting unit animation speed). It matters whether the unit is on- or off-screen how fast the animation plays when using this native.

I'm currently planning on just using a unit with different cooldown animations (or multiple special effects). If you make such a unit, would be cool if you upload it in .mdx and .mdl form. The normal cooldown model in war3.mpq can serve as example.
 
Level 5
Joined
Dec 1, 2008
Messages
120
How exactly does it affect the animation if the unit goes off screen? Does it speed up there.. or? I was actually going to base it off of the existing cooldown model, but upon opening that I realized there's no way that's going to work. It's just a big mess, and it doesn't help that for some reason Blizzard decided that it's good idea to make it microscopic.
 
Level 12
Joined
Mar 13, 2012
Messages
1,121
How exactly does it affect the animation if the unit goes off screen?
Srry I don't know and currently do not have the time to test. I just remember it's especially visible for very low animation speeds. When you find a pattern, let us know.
It's just a big mess
I guess you are talking about the texture rotation animation? Magos can not display them correctly IIRC.
 
Level 5
Joined
Dec 1, 2008
Messages
120
Srry I don't know and currently do not have the time to test. I just remember it's especially visible for very low animation speeds. When you find a pattern, let us know.

I guess you are talking about the texture rotation animation? Magos can not display them correctly IIRC.

It's not that. It has so many geosets and transformations that I don't make any sense of what their purpose is.
 
Status
Not open for further replies.
Top