1. Are you planning to upload your awesome spell or system to Hive? Please review the rules here.
    Dismiss Notice
  2. The poll for our 11th Music Contest is up! Help us choose the most awesome cinematic tracks by casting a vote!
    Dismiss Notice
  3. Melee Mapping contest #3 - Poll is up! Vote for the best 4v4 melee maps!
    Dismiss Notice
  4. The 30th edition of the Modeling Contest is finally up! The Portable Buildings need your attention, so come along and have a blast!
    Dismiss Notice
  5. The Aftermath has been revealed for the 19th Terraining Contest! Be sure to check out the Results and see what came out of it.
    Dismiss Notice

Model and Effects Viewer v3.7

Submitted by CHA_Owner
This bundle is marked as approved. It works and satisfies the submission rules.
CHA_Owner Presents

Model and Effects Viewer
Created by razor21, a.k.a gekigengar

Map Info


This is basically just a very advanced version of the "Epic Animation Viewer" and of course I got full permission to continue this system;



Features


This system comes loaded with a ton of special features such as;
  • Easily view any model or effect in wc3.
  • Skip through effects using chat commands.
  • Loop unit animations while viewing them.
  • Adjust your camera anyway that you desire.
  • Easily add/remove any additional models or effects.
  • Even view attachments on a unit while using animations.


Testers/Viewers Included


These are the testers included so far;
  • Animations/Animation Names.
  • Sky Models/Sky Model Names and Raw Codes.
  • Terrain Tiles/Terrain Tile Names and Raw Codes.
  • Ubersplat Effects/Ubersplat Names and Raw Codes.
  • Lightning Effects/Lightning Names and Raw Codes.
  • Fade Filters/Fade Filter Names and Paths.
  • Weather Effects/Weather Effect Names and Raw Codes.
  • Attachment Models/Attachment Names and Paths.


vJASS Triggers


First Initialization
Code (vJASS):
library FirstInitialization initializer Init

    // Setting up global declarations
    globals
        boolean LoopingCommand
        boolean ShowBoard
        boolean array ArrowKey
        camerasetup Camera
        effect array TempEffect
        integer CamMode
        integer NewTerrainType
        integer SystemInUse
        integer TerrainType
        integer array Index
        integer array MinIndex
        integer array MaxIndex
        integer array TerrainChoice
        integer array WeatherChoice
        lightning TempLightning = null
        real XofActor
        real YofActor
        real NewYofActor
        real FinalYofActor
        real array CamSetting
        string array AnimationName
        string array AnimationNameA
        string array BootsChoiceLeft
        string array BootsChoiceRight
        string array BootsName
        string array BracersChoiceLeft
        string array BracersChoiceRight
        string array BracersName
        string array CameraModeName
        string array ChestChoice
        string array ChestName
        string array FadeChoice
        string array FadeName
        string array HelmetChoice
        string array HelmetName
        string array LightningChoice
        string array LightningName
        string array Line
        string array ShieldChoice
        string array ShieldName
        string array SkyChoice
        string array SkyName
        string array SwordChoice
        string array SwordName
        string array TerrainName
        string array UbersplatChoice
        string array UbersplatName
        string array WeatherName
        trigger Looping
        unit array Actor
        unit array ControlPanel
        BoardEx Board
    endglobals
    // --------------------------------------------

    private function InitActionsFirst takes nothing returns nothing
 
        // Terrain Tile Name Changer
        set Index[0] = 0
        set TerrainName[0] = "None"
        set TerrainName[1] = "('Ldrt') Lordaeron Summer Dirt (cliff)"
        set TerrainName[2] = "('Ldro') Lordaeron Summer Rough Dirt"
        set TerrainName[3] = "('Ldrg') Lordaeron Summer Grassy Dirt"
        set TerrainName[4] = "('Lrok') Lordaeron Summer Rock"
        set TerrainName[5] = "('Lgrs') Lordaeron Summer Grass (cliff)"
        set TerrainName[6] = "('Lgrd') Lordaeron Summer Dark Grass"
        set TerrainName[7] = "('Fdrt') Lordaeron Fall Dirt (cliff)"
        set TerrainName[8] = "('Fdro') Lordaeron Fall Rough Dirt"
        // --------------------------------------------
 
        // Terrain Tile Index Changer
        set TerrainChoice[1] = 'Ldrt'
        set TerrainChoice[2] = 'Ldro'
        set TerrainChoice[3] = 'Ldrg'
        set TerrainChoice[4] = 'Lrok'
        set TerrainChoice[5] = 'Lgrs'
        set TerrainChoice[6] = 'Lgrd'
        set TerrainChoice[7] = 'Fdrt'
        set TerrainChoice[8] = 'Fdro'
        // Terrain Tile Max and Min Index
        set MinIndex[0] = 0
        set MaxIndex[0] = 8
        // --------------------------------------------
 
        // Ubersplat Name Changer
        set Index[1] = 0
        set UbersplatName[0] = "None"
        set UbersplatName[1] = "(\"LSDS\") Lordaeron Summer Plain Dirt Small"
        set UbersplatName[2] = "(\"LSDM\") Lordaeron Summer Plain Dirt Medium"
        set UbersplatName[3] = "(\"LSDL\") Lordaeron Summer Plain Dirt Large"
        set UbersplatName[4] = "(\"HCRT\") Human Crater"
        set UbersplatName[5] = "(\"UDSU\") Undead Uber Splat"
        set UbersplatName[6] = "(\"DNCS\") Death Neutral City Building Small"
        set UbersplatName[7] = "(\"HMTP\") Human Mass Teleport"
        set UbersplatName[8] = "(\"SCTP\") Scroll Of Town Portal"
        set UbersplatName[9] = "(\"AMRC\") Amulet Of Recall"
        set UbersplatName[10] = "(\"DRKC\") Dark Conversion"
        set UbersplatName[11] = "(\"DOSB\") Death Orc Small Building"
        set UbersplatName[12] = "(\"DOMB\") Death Orc Medium Building"
        set UbersplatName[13] = "(\"DOLB\") Death Orc Large Building"
        set UbersplatName[14] = "(\"DHSB\") Death Human Small Building"
        set UbersplatName[15] = "(\"DHMB\") Death Human Medium Building"
        set UbersplatName[16] = "(\"DHLB\") Death Human Large Building"
        set UbersplatName[17] = "(\"DUSB\") Death Undead Small Building"
        set UbersplatName[18] = "(\"DUMB\") Death Undead Medium Building"
        set UbersplatName[19] = "(\"DULB\") Death Undead Large Building"
        set UbersplatName[20] = "(\"DNSB\") Death NightElf Small Building"
        set UbersplatName[21] = "(\"DNMB\") Death NightElf Medium Building"
        set UbersplatName[22] = "(\"DNSA\") Death NightElf Small Ancient"
        set UbersplatName[23] = "(\"DNMA\") Death NightElf Medium Ancient"
        set UbersplatName[24] = "(\"HSMA\") Human Small Building"
        set UbersplatName[25] = "(\"HMED\") Human Medium Building"
        set UbersplatName[26] = "(\"HLAR\") Human Large Building"
        set UbersplatName[27] = "(\"OSMA\") Orc Small Building"
        set UbersplatName[28] = "(\"OMED\") Orc Medium Building"
        set UbersplatName[29] = "(\"OLAR\") Orc Large Building"
        set UbersplatName[30] = "(\"USMA\") Undead Small Building"
        set UbersplatName[31] = "(\"UMED\") Undead Medium Building"
        set UbersplatName[32] = "(\"ULAR\") Undead Large Building"
        set UbersplatName[33] = "(\"ESMA\") NightElf Small Ancient"
        set UbersplatName[34] = "(\"EMDA\") NightElf Medium Ancient"
        set UbersplatName[35] = "(\"ESMB\") NightElf Small Building"
        set UbersplatName[36] = "(\"EMDB\") NightElf Medium Building"
        set UbersplatName[37] = "(\"HTOW\") Town Hall"
        set UbersplatName[38] = "(\"HCAS\") Castle"
        set UbersplatName[39] = "(\"NGOL\") Goldmine"
        set UbersplatName[40] = "(\"THND\") Thunder Clap"
        set UbersplatName[41] = "(\"NDGS\") Demon Gate"
        set UbersplatName[42] = "(\"CLTS\") Thorny Shield"
        set UbersplatName[43] = "(\"HFS1\") Human Flame Strike 1"
        set UbersplatName[44] = "(\"HFS2\") Human Flame Strike 2"
        set UbersplatName[45] = "(\"USBR\") Burrow"
        set UbersplatName[46] = "(\"NLAR\") Naga Large Building"
        set UbersplatName[47] = "(\"NMED\") Naga Medium Building"
        set UbersplatName[48] = "(\"DPSW\") Dark Portal SW"
        set UbersplatName[49] = "(\"DPSE\") Dark Portal SE"
        set UbersplatName[50] = "(\"NVOL\") Volcano"
        set UbersplatName[51] = "(\"NVCR\") Volcano Crater"
        // --------------------------------------------
 
        // Ubersplat Index Changer
        set UbersplatChoice[1] = "LSDS"
        set UbersplatChoice[2] = "LSDM"
        set UbersplatChoice[3] = "LSDL"
        set UbersplatChoice[4] = "HCRT"
        set UbersplatChoice[5] = "UDSU"
        set UbersplatChoice[6] = "DNCS"
        set UbersplatChoice[7] = "HMTP"
        set UbersplatChoice[8] = "SCTP"
        set UbersplatChoice[9] = "AMRC"
        set UbersplatChoice[10] = "DRKC"
        set UbersplatChoice[11] = "DOSB"
        set UbersplatChoice[12] = "DOMB"
        set UbersplatChoice[13] = "DOLB"
        set UbersplatChoice[14] = "DHSB"
        set UbersplatChoice[15] = "DHMB"
        set UbersplatChoice[16] = "DHLB"
        set UbersplatChoice[17] = "DUSB"
        set UbersplatChoice[18] = "DUMB"
        set UbersplatChoice[19] = "DULB"
        set UbersplatChoice[20] = "DNSB"
        set UbersplatChoice[21] = "DNMB"
        set UbersplatChoice[22] = "DNSA"
        set UbersplatChoice[23] = "DNMA"
        set UbersplatChoice[24] = "HSMA"
        set UbersplatChoice[25] = "HMED"
        set UbersplatChoice[26] = "HLAR"
        set UbersplatChoice[27] = "OSMA"
        set UbersplatChoice[28] = "OMED"
        set UbersplatChoice[29] = "OLAR"
        set UbersplatChoice[30] = "USMA"
        set UbersplatChoice[31] = "UMED"
        set UbersplatChoice[32] = "ULAR"
        set UbersplatChoice[33] = "ESMA"
        set UbersplatChoice[34] = "EMDA"
        set UbersplatChoice[35] = "ESMB"
        set UbersplatChoice[36] = "EMDB"
        set UbersplatChoice[37] = "HTOW"
        set UbersplatChoice[38] = "HCAS"
        set UbersplatChoice[39] = "NGOL"
        set UbersplatChoice[40] = "THND"
        set UbersplatChoice[41] = "NDGS"
        set UbersplatChoice[42] = "CLTS"
        set UbersplatChoice[43] = "HFS1"
        set UbersplatChoice[44] = "HFS2"
        set UbersplatChoice[45] = "USBR"
        set UbersplatChoice[46] = "NLAR"
        set UbersplatChoice[47] = "NMED"
        set UbersplatChoice[48] = "DPSW"
        set UbersplatChoice[49] = "DPSE"
        set UbersplatChoice[50] = "NVOL"
        set UbersplatChoice[51] = "NVCR"
        // Ubersplat Max and Min Index
        set MinIndex[1] = 0
        set MaxIndex[1] = 51
        // --------------------------------------------
 
        // Lightning Name Changer
        set Index[2] = 0
        set LightningName[0] = "None"
        set LightningName[1] = "(\"CLPB\") Chain Lightning - Primary"
        set LightningName[2] = "(\"CLSB\") Chain Lightning - Secondary"
        set LightningName[3] = "(\"DRAB\") Drain"
        set LightningName[4] = "(\"DRAL\") Drain Life"
        set LightningName[5] = "(\"DRAM\") Drain Mana"
        set LightningName[6] = "(\"AFOD\") Finger of Death"
        set LightningName[7] = "(\"FORK\") Forked Lightning"
        set LightningName[8] = "(\"HWPB\") Healing Wave - Primary"
        set LightningName[9] = "(\"HWSB\") Healing Wave - Secondary"
        set LightningName[10] = "(\"CHIM\") Lightning Attack"
        set LightningName[11] = "(\"LEAS\") Magic Leash"
        set LightningName[12] = "(\"MBUR\") Mana Burn"
        set LightningName[13] = "(\"MFPB\") Mana Flare"
        set LightningName[14] = "(\"SPLK\") Spirit Link"
        // --------------------------------------------
 
        // Lightning Index Changer
        set LightningChoice[1] = "CLPB"
        set LightningChoice[2] = "CLSB"
        set LightningChoice[3] = "DRAB"
        set LightningChoice[4] = "DRAL"
        set LightningChoice[5] = "DRAM"
        set LightningChoice[6] = "AFOD"
        set LightningChoice[7] = "FORK"
        set LightningChoice[8] = "HWPB"
        set LightningChoice[9] = "HWSB"
        set LightningChoice[10] = "CHIM"
        set LightningChoice[11] = "LEAS"
        set LightningChoice[12] = "MBUR"
        set LightningChoice[13] = "MFPB"
        set LightningChoice[14] = "SPLK"
        // Lightning Max and Min Index
        set MinIndex[2] = 0
        set MaxIndex[2] = 14
        // --------------------------------------------
 
        // Fade Filter Name Changer
        set Index[3] = 0
        set FadeName[0] = "None"
        set FadeName[1] = "White Mask"
        set FadeName[2] = "Black Mask"
        set FadeName[3] = "Haze Filter"
        set FadeName[4] = "Ground Fog"
        set FadeName[5] = "Haze And Fog"
        set FadeName[6] = "Diagonal Slash"
        set FadeName[7] = "Dream"
        set FadeName[8] = "Scope"
        set FadeName[9] = "Pow!"
        set FadeName[10] = "Splatt!"
        set FadeName[11] = "Panda-n-Cub"
        // --------------------------------------------
 
        // Fade Filter Index Changer
        set FadeChoice[1] = "ReplaceableTextures\\CameraMasks\\White_mask.blp"
        set FadeChoice[2] = "ReplaceableTextures\\CameraMasks\\Black_mask.blp"
        set FadeChoice[3] = "ReplaceableTextures\\CameraMasks\\HazeFilter_mask.blp"
        set FadeChoice[4] = "ReplaceableTextures\\CameraMasks\\GroundFog_mask.blp"
        set FadeChoice[5] = "ReplaceableTextures\\CameraMasks\\HazeAndFogFilter_Mask.blp"
        set FadeChoice[6] = "ReplaceableTextures\\CameraMasks\\DiagonalSlash_mask.blp"
        set FadeChoice[7] = "ReplaceableTextures\\CameraMasks\\DreamFilter_Mask.blp"
        set FadeChoice[8] = "ReplaceableTextures\\CameraMasks\\Scope_Mask.blp"
        set FadeChoice[9] = "ReplaceableTextures\\CameraMasks\\SpecialPowMask.blp"
        set FadeChoice[10] = "ReplaceableTextures\\CameraMasks\\SpecialSplatMask.blp"
        set FadeChoice[11] = "ReplaceableTextures\\CameraMasks\\Panda-n-Cub.blp"
        // Fade Filter Max and Min Index
        set MinIndex[3] = 0
        set MaxIndex[3] = 11
        // --------------------------------------------
 
        // Sky Name Changer
        set Index[4] = 0
        set SkyName[0] = "None"
        set SkyName[1] = "Blizzard Sky"
        set SkyName[2] = "Dalaran Sky"
        set SkyName[3] = "Felwood Sky"
        set SkyName[4] = "Fogged Sky"
        set SkyName[5] = "Generic Sky"
        set SkyName[6] = "Lordaeron Fall Sky"
        set SkyName[7] = "Lordaeron Summer Sky"
        set SkyName[8] = "Lordaeron Winter Sky"
        set SkyName[9] = "Lordaeron Winter Sky (Bright Green)"
        set SkyName[10] = "Lordaeron Winter Sky (Pink)"
        set SkyName[11] = "Lordaeron Winter Sky (Purple)"
        set SkyName[12] = "Lordaeron Winter Sky (Red)"
        set SkyName[13] = "Lordaeron Winter Sky (Yellow)"
        set SkyName[14] = "Outland Sky"
        // --------------------------------------------
 
        // Sky Index Changer
        set SkyChoice[1] = "Environment\\Sky\\BlizzardSky\\BlizzardSky.mdl"
        set SkyChoice[2] = "Environment\\Sky\\DalaranSky\\DalaranSky.mdl"
        set SkyChoice[3] = "Environment\\Sky\\FelwoodSky\\FelwoodSky.mdl"
        set SkyChoice[4] = "Environment\\Sky\\FoggedSky\\FoggedSky.mdl"
        set SkyChoice[5] = "Environment\\Sky\\Sky\\SkyLight.mdl"
        set SkyChoice[6] = "Environment\\Sky\\LordaeronFallSky\\LordaeronFallSky.mdl"
        set SkyChoice[7] = "Environment\\Sky\\LordaeronSummerSky\\LordaeronSummerSky.mdl"
        set SkyChoice[8] = "Environment\\Sky\\LordaeronWinterSky\\LordaeronWinterSky.mdl"
        set SkyChoice[9] = "Environment\\Sky\\LordaeronWinterSkyBrightGreen\\LordaeronWinterSkyBrightGreen.mdl"
        set SkyChoice[10] = "Environment\\Sky\\LordaeronWinterSkyPink\\LordaeronWinterSkyPink.mdl"
        set SkyChoice[11] = "Environment\\Sky\\LordaeronWinterSkyPurple\\LordaeronWinterSkyPurple.mdl"
        set SkyChoice[12] = "Environment\\Sky\\LordaeronWinterSkyRed\\LordaeronWinterSkyRed.mdl"
        set SkyChoice[13] = "Environment\\Sky\\LordaeronWinterSkyYellow\\LordaeronWinterSkyYellow.mdl"
        set SkyChoice[14] = "Environment\\Sky\\Outland_Sky\\Outland_Sky.mdl"
        // Sky Max and Min Index
        set MinIndex[4] = 0
        set MaxIndex[4] = 14
        // --------------------------------------------
 
        // Weather Name Changer
        set Index[5] = 0
        set WeatherName[0] = "None"
        set WeatherName[1] = "('RAhr') Ashenvale Rain (Heavy)"
        set WeatherName[2] = "('RAlr') Ashenvale Rain (Light)"
        set WeatherName[3] = "('MEds') Dalaran Shield"
        set WeatherName[4] = "('FDbh') Dungeon Blue Fog (Heavy)"
        set WeatherName[5] = "('FDbl') Dungeon Blue Fog (Light)"
        set WeatherName[6] = "('FDgh') Dungeon Green Fog (Heavy)"
        set WeatherName[7] = "('FDgl') Dungeon Green Fog (Light)"
        set WeatherName[8] = "('FDrh') Dungeon Red Fog (Heavy)"
        set WeatherName[9] = "('FDrl') Dungeon Red Fog (Light)"
        set WeatherName[10] = "('FDwh') Dungeon White Fog (Heavy)"
        set WeatherName[11] = "('FDwl') Dungeon White Fog (Light)"
        set WeatherName[12] = "('RLhr') Lordaeron Rain (Heavy)"
        set WeatherName[13] = "('RLlr') Lordaeron Rain (Light)"
        set WeatherName[14] = "('SNbs') Northrend Blizzard"
        set WeatherName[15] = "('SNhs') Northrend Snow (Heavy)"
        set WeatherName[16] = "('SNls') Northrend Snow (Light)"
        set WeatherName[17] = "('WOcw') Outland Wind (Heavy)"
        set WeatherName[18] = "('WOlw') Outland Wind (Light)"
        set WeatherName[19] = "('LRaa') Rays Of Light"
        set WeatherName[20] = "('LRma') Rays Of Moonlight"
        set WeatherName[21] = "('WNcw') Wind (Heavy)"
        // --------------------------------------------
 
        // Weather Index Changer
        set WeatherChoice[1]='RAhr'
        set WeatherChoice[2]='RAlr'
        set WeatherChoice[3]='MEds'
        set WeatherChoice[4]='FDbh'
        set WeatherChoice[5]='FDbl'
        set WeatherChoice[6]='FDgh'
        set WeatherChoice[7]='FDgl'
        set WeatherChoice[8]='FDrh'
        set WeatherChoice[9]='FDrl'
        set WeatherChoice[10]='FDwh'
        set WeatherChoice[11]='FDwl'
        set WeatherChoice[12]='RLhr'
        set WeatherChoice[13]='RLlr'
        set WeatherChoice[14]='SNbs'
        set WeatherChoice[15]='SNhs'
        set WeatherChoice[16]='SNls'
        set WeatherChoice[17]='WOcw'
        set WeatherChoice[18]='WOlw'
        set WeatherChoice[19]='LRaa'
        set WeatherChoice[20]='LRma'
        set WeatherChoice[21]='WNcw'
        // Weather Max and Min Index
        set MinIndex[5] = 0
        set MaxIndex[5] = 21
        // --------------------------------------------
     
        // Animation Name Changer
        set Index[6] = 0
        set AnimationName[0] = "Stand - 1"
        set AnimationName[1] = "Stand - 2"
        set AnimationName[2] = "Stand - 3"
        set AnimationName[3] = "Stand - 4"
        set AnimationName[4] = "Attack - 1"
        set AnimationName[5] = "Stand Work - 1"
        set AnimationName[6] = "Walk"
        set AnimationName[7] = "Death - 1"
        set AnimationName[8] = "Decay Flesh"
        set AnimationName[9] = "Decay Bone"
        set AnimationName[10] = "Stand Ready"
        set AnimationName[11] = "Stand Flesh First"
        set AnimationName[12] = "Stand Flesh Second"
        set AnimationName[13] = "Attack Morph - 1"
        set AnimationName[14] = "Attack Morph - 2"
        set AnimationName[15] = "Attack Morph - 3"
        set AnimationName[16] = "Attack Morph - 4"
        set AnimationName[17] = "Attack Morph - 5"
        set AnimationName[18] = "Attack Morph - 6"
        set AnimationName[19] = "Attack Morph - 7"
        set AnimationName[20] = "Attack Morph - 8"
        set AnimationName[21] = "Attack Morph - 9"
        set AnimationName[22] = "Attack Morph - 10"
        set AnimationName[23] = "Attack Morph - 11"
        set AnimationName[24] = "Attack Morph - 12"
        set AnimationName[25] = "Attack Morph - 13"
        set AnimationName[26] = "Attack Morph - 14"
        set AnimationName[27] = "Attack Morph - 15"
        set AnimationName[28] = "Attack Morph - 16"
        set AnimationName[29] = "Attack Morph - 17"
        set AnimationName[30] = "Attack Morph - 18"
        set AnimationName[31] = "Attack Morph - 19"
        set AnimationName[32] = "Attack Morph - 20"
        set AnimationName[33] = "Attack Morph - 21"
        set AnimationName[34] = "Attack Morph - 22"
        set AnimationName[35] = "Attack Morph - 23"
        set AnimationName[36] = "Attack Morph - 24"
        set AnimationName[37] = "Attack Morph - 25"
        set AnimationName[38] = "Attack Morph - 26"
        set AnimationName[39] = "Attack Morph - 27"
        set AnimationName[40] = "Attack Morph - 28"
        set AnimationName[41] = "Attack Morph - 29"
        set AnimationName[42] = "Attack Morph - 30"
        set AnimationName[43] = "Attack - 2"
        set AnimationName[44] = "Attack - 3"
        set AnimationName[45] = "Attack - 4"
        set AnimationName[46] = "Attack - 5"
        set AnimationName[47] = "Attack - 6"
        set AnimationName[48] = "Attack - 7"
        set AnimationName[49] = "Attack - 8"
        set AnimationName[50] = "Attack - 9"
        set AnimationName[51] = "Attack - 10"
        set AnimationName[52] = "Attack - 11"
        set AnimationName[53] = "Attack - 12"
        set AnimationName[54] = "Attack - 13"
        set AnimationName[55] = "Attack - 14"
        set AnimationName[56] = "Attack - 15"
        set AnimationName[57] = "Attack Alternate - 1"
        set AnimationName[58] = "Attack Alternate - 2"
        set AnimationName[59] = "Attack Alternate - 3"
        set AnimationName[60] = "Attack Alternate - 4"
        set AnimationName[61] = "Attack Alternate - 5"
        set AnimationName[62] = "Attack Alternate - 6"
        set AnimationName[63] = "Attack Alternate - 7"
        set AnimationName[64] = "Attack Alternate - 8"
        set AnimationName[65] = "Attack Alternate - 9"
        set AnimationName[66] = "Stand Hit - 1"
        set AnimationName[67] = "Stand Hit - 2"
        set AnimationName[68] = "Stand Hit - 3"
        set AnimationName[69] = "Stand Hit - 4"
        set AnimationName[70] = "Stand Hit - 5"
        set AnimationName[71] = "Stand Hit - 6"
        set AnimationName[72] = "Stand Hit - 7"
        set AnimationName[73] = "Stand Hit - 8"
        set AnimationName[74] = "Stand Hit - 9"
        set AnimationName[75] = "Stand Hit - 10"
        set AnimationName[76] = "Stand Hit - 11"
        set AnimationName[77] = "Stand Hit - 12"
        set AnimationName[78] = "Stand Hit - 13"
        set AnimationName[79] = "Stand Victory - 1"
        set AnimationName[80] = "Stand Victory - 2"
        set AnimationName[81] = "Stand Victory - 3"
        set AnimationName[82] = "Stand Victory - 4"
        set AnimationName[83] = "Stand Victory - 5"
        set AnimationName[84] = "Stand Victory - 6"
        set AnimationName[85] = "Stand Victory - 7"
        set AnimationName[86] = "Stand Victory - 9"
        set AnimationName[87] = "Stand Victory - 10"
        set AnimationName[88] = "Stand Victory - 11"
        set AnimationName[89] = "Stand Victory - 12"
        set AnimationName[90] = "Stand Victory - 13"
        set AnimationName[91] = "Walk Gold"
        set AnimationName[92] = "Stand Gold"
        set AnimationName[93] = "Attack Gold - 1"
        set AnimationName[94] = "Attack Gold - 2"
        set AnimationName[95] = "Walk Lumber"
        set AnimationName[96] = "Stand Lumber"
        set AnimationName[97] = "Attack Lumber - 1"
        set AnimationName[98] = "Stand Victory - 14"
        set AnimationName[99] = "Stand Victory - 15"
        set AnimationName[100] = "Stand Victory - 16"
        set AnimationName[101] = "Stand Victory - 17"
        set AnimationName[102] = "Attack Lumber - 2"
        set AnimationName[103] = "Stand Victory - 18"
        set AnimationName[104] = "Stand Victory - 19"
        set AnimationName[105] = "Stand Victory - 20"
        set AnimationName[106] = "Stand Victory - 21"
        set AnimationName[107] = "Stand Defend - 1"
        set AnimationName[108] = "Stand Defend - 2"
        set AnimationName[109] = "Stand Defend - 3"
        set AnimationName[110] = "Stand Defend - 4"
        set AnimationName[111] = "Stand Defend - 5"
        set AnimationName[112] = "Walk Defend"
        set AnimationName[113] = "Attack Defend - 1"
        set AnimationName[114] = "Attack Defend - 2"
        set AnimationName[115] = "Stand Victory - 22"
        set AnimationName[116] = "Stand Victory - 23"
        set AnimationName[117] = "Stand Work - 2"
        set AnimationName[118] = "Attack Throw - 1"
        set AnimationName[119] = "Attack Throw - 2"
        set AnimationName[120] = "Attack Throw - 3"
        set AnimationName[121] = "Attack Throw - 4"
        set AnimationName[122] = "Attack Throw - 5"
        set AnimationName[123] = "Attack Throw - 6"
        set AnimationName[124] = "Attack Throw - 7"
        set AnimationName[125] = "Stand Victory - 24"
        set AnimationName[126] = "Stand Victory - 25"
        set AnimationName[127] = "Stand Victory - 26"
        set AnimationName[128] = "Stand Victory - 27"
        set AnimationName[129] = "Stand Victory - 28"
        set AnimationName[130] = "Stand Victory - 29"
        set AnimationName[131] = "Stand Victory - 30"
        set AnimationName[132] = "Stand Victory - 31"
        set AnimationName[133] = "Stand Victory - 32"
        set AnimationName[134] = "Stand Victory - 33"
        set AnimationName[135] = "Stand Victory - 34"
        set AnimationName[136] = "Stand Victory - 35"
        set AnimationName[137] = "Stand Victory - 36"
        set AnimationName[138] = "Stand Victory - 37"
        set AnimationName[139] = "Stand Victory - 38"
        set AnimationName[140] = "Stand Victory - 39"
        set AnimationName[141] = "Stand Victory - 40"
        set AnimationName[142] = "Walk Upgrade"
        set AnimationName[143] = "Stand Upgrade"
        set AnimationName[144] = "Attack Upgrade - 1"
        set AnimationName[145] = "Attack Upgrade - 2"
        set AnimationName[146] = "Attack Upgrade - 3"
        set AnimationName[147] = "Attack Upgrade - 4"
        set AnimationName[148] = "Death Upgrade"
        set AnimationName[149] = "Stand Victory - 41"
        set AnimationName[150] = "Stand Victory - 42"
        set AnimationName[151] = "Stand Victory - 43"
        set AnimationName[152] = "Stand Victory - 44"
        set AnimationName[153] = "Stand Victory - 45"
        set AnimationName[154] = "Stand Victory - 46"
        set AnimationName[155] = "Stand Victory - 47"
        set AnimationName[156] = "Stand Victory - 48"
        set AnimationName[157] = "Stand Victory - 49"
        set AnimationName[158] = "Stand Victory - 50"
        set AnimationName[159] = "Stand Victory - 51"
        set AnimationName[160] = "Stand Victory - 52"
        set AnimationName[161] = "Stand Victory - 53"
        set AnimationName[162] = "Stand Victory - 54"
        set AnimationName[163] = "Stand Victory - 55"
        set AnimationName[164] = "Stand Victory - 56"
        set AnimationName[165] = "Stand Victory - 57"
        set AnimationName[166] = "Stand Victory - 58"
        set AnimationName[167] = "Stand Victory - 59"
        set AnimationName[168] = "Stand Victory - 60"
        set AnimationName[169] = "Stand Victory - 61"
        set AnimationName[170] = "Stand Victory - 62"
        set AnimationName[171] = "Stand Victory - 63"
        set AnimationName[172] = "Stand Victory - 64"
        set AnimationName[173] = "Stand Victory - 65"
        set AnimationName[174] = "Stand Victory - 66"
        set AnimationName[175] = "Stand Victory - 67"
        set AnimationName[176] = "Stand Victory - 68"
        set AnimationName[177] = "Stand Victory - 69"
        set AnimationName[178] = "Stand Victory - 70"
        set AnimationName[179] = "Stand Victory - 71"
        set AnimationName[180] = "Stand Victory - 72"
        set AnimationName[181] = "Stand Victory - 73"
        set AnimationName[182] = "Stand Victory - 74"
        set AnimationName[183] = "Stand Victory - 75"
        set AnimationName[184] = "Stand Victory - 76"
        set AnimationName[185] = "Death - 2"
        set AnimationName[186] = "Death - 3"
        set AnimationName[187] = "Flesh - 1"
        set AnimationName[188] = "Walk Victory - 1"
        set AnimationName[189] = "Walk Victory - 2"
        set AnimationName[190] = "Death - 4"
        set AnimationName[191] = "Stand Victory - 77"
        set AnimationName[192] = "Stand Victory - 78"
        set AnimationName[193] = "Stand Victory - 79"
        set AnimationName[194] = "Stand Victory - 80"
        set AnimationName[195] = "Stand Victory - 81"
        set AnimationName[196] = "Stand Victory - 82"
        set AnimationName[197] = "Stand Victory - 83"
        set AnimationName[198] = "Stand Victory - 84"
        set AnimationName[199] = "Stand Victory - 85"
        set AnimationName[200] = "Stand Victory - 86"
        set AnimationName[201] = "Walk Victory - 3"
        set AnimationName[202] = "Stand Victory - 87"
        set AnimationName[203] = "Stand Victory - 88"
        set AnimationName[204] = "Stand Victory - 89"
        set AnimationName[205] = "Stand Victory - 90"
        set AnimationName[206] = "Stand Victory - 91"
        set AnimationName[207] = "Stand Victory - 92"
        set AnimationName[208] = "Stand Victory - 93"
        set AnimationName[209] = "Flesh - 2"
        set AnimationName[210] = "Flesh - 3"
        set AnimationName[211] = "Flesh - 4"
        set AnimationName[212] = "Flesh - 5"
        set AnimationName[213] = "Flesh - 6"
        set AnimationName[214] = "Flesh - 7"
        set AnimationName[215] = "Flesh - 8"
        set AnimationName[216] = "Flesh - 9"
        set AnimationName[217] = "Flesh - 10"
        set AnimationName[218] = "Flesh - 11"
        set AnimationName[219] = "Stand Flesh - 1"
        set AnimationName[220] = "Walk Flesh - 1"
        set AnimationName[221] = "Death Flesh - 1"
        set AnimationName[222] = "Attack Flesh - 1"
        set AnimationName[223] = "Attack Flesh - 2"
        set AnimationName[224] = "Stand Spin First - 1"
        set AnimationName[225] = "Attack Spin First - 1"
        set AnimationName[226] = "Attack Spin First - 2"
        set AnimationName[227] = "Attack Spin First - 3"
        set AnimationName[228] = "Attack Spin First - 4"
        set AnimationName[229] = "Attack Spin First Spell - 1"
        set AnimationName[230] = "Attack Spin First Spell - 2"
        set AnimationName[231] = "Attack Spin First Spell Slam - 1"
        set AnimationName[232] = "Walk Spin Second - 1"
        set AnimationName[233] = "Stand Spin Second - 1"
        set AnimationName[234] = "Stand Spin Morph First - 1"
        set AnimationName[235] = "Stand Spin Morph Second - 1"
        set AnimationName[236] = "Attack Spin Second - 1"
        set AnimationName[237] = "Attack Spin Second - 2"
        set AnimationName[238] = "Attack Second Spell Slam - 1"
        set AnimationName[239] = "Death Spin Second"
        set AnimationName[240] = "Stand Victory - 94"
        set AnimationName[241] = "Stand Victory - 95"
        set AnimationName[242] = "Stand Victory - 96"
        set AnimationName[243] = "Stand Victory - 97"
        set AnimationName[244] = "Stand Victory - 98"
        set AnimationName[245] = "Walk Victory - 4"
        set AnimationName[246] = "Stand Victory - 99"
        set AnimationName[247] = "Stand Victory - 100"
        set AnimationName[248] = "Stand Victory - 101"
        set AnimationName[249] = "Stand Victory - 102"
        set AnimationName[250] = "Stand Victory - 103"
        set AnimationName[251] = "Stand Victory - 104"
        set AnimationName[252] = "Stand Victory - 105"
        set AnimationName[253] = "Stand Victory - 106"
        set AnimationName[254] = "Stand Victory - 107"
        // This is to set up the Maximum and Minimum Animation Index Range.
        set MinIndex[6] = 0
        set MaxIndex[6] = 254
        // --------------------------------------------
 
    endfunction

    private function Init takes nothing returns nothing
        local trigger t = CreateTrigger(  )
        call TriggerRegisterTimerEvent( t, 0.01, false)
        call TriggerAddAction( t, function InitActionsFirst )
        set t = null
    endfunction

endlibrary

Second Initialization
Code (vJASS):
scope SecondInitialization initializer Init

    private function InitActionsSecond takes nothing returns nothing

        // Creating local variables
        local quest q
        local integer i = 0
        local integer ie = 15
        // --------------------------------------------
     
        // Animation Name Changer
        set Index[7] = 0
        set AnimationNameA[0] = "Stand"
        set AnimationNameA[1] = "Stand - 2"
        set AnimationNameA[2] = "Stand - 3"
        set AnimationNameA[3] = "Stand - 4"
        set AnimationNameA[4] = "Attack"
        set AnimationNameA[5] = "Stand Work"
        set AnimationNameA[6] = "Walk"
        set AnimationNameA[7] = "Death"
        set AnimationNameA[8] = "Decay Flesh"
        set AnimationNameA[9] = "Decay Bone"
        set AnimationNameA[10] = "Stand Ready"
        set AnimationNameA[11] = "Stand Flesh First"
        set AnimationNameA[12] = "Stand Flesh Second"
        // This is to set up the Maximum and Minimum Animation Index Range.
        set MinIndex[7] = 0
        set MaxIndex[7] = 12
        // --------------------------------------------
     
        // Helmet Name Changer
        set Index[8] = 0
        set HelmetName[0] = "None"
        set HelmetName[1] = "Bronze Helmet"
        set HelmetName[2] = "Metal Helmet"
        set HelmetName[3] = "Bone Helmet"
        // --------------------------------------------
     
        // Helmet Choice Changer
        set HelmetChoice[1] = "war3mapImported\\Bronze Helmet.mdx"
        set HelmetChoice[2] = "war3mapImported\\White_Helm_Tier3_Portrait.mdx"
        set HelmetChoice[3] = "war3mapImported\\BoneHelmet.mdx"
        // This is to set up the Maximum and Minimum Index Range.
        set MinIndex[8] = 0
        set MaxIndex[8] = 3
        // --------------------------------------------
     
        // Chest Name Changer
        set Index[9] = 0
        set ChestName[0] = "None"
        set ChestName[1] = "Bronze Chestplate"
        set ChestName[2] = "Metal Heavy Armor"
        set ChestName[3] = "Bone Armor"
        // --------------------------------------------
     
        // Chest Choice Changer
        set ChestChoice[1] = "war3mapImported\\Bronze Chestplate.mdx"
        set ChestChoice[2] = "war3mapImported\\White_HeavyArmour_Tier3_Portrait.mdx"
        set ChestChoice[3] = "war3mapImported\\BoneArmorWhite2.mdx"
        // This is to set up the Maximum and Minimum Index Range.
        set MinIndex[9] = 0
        set MaxIndex[9] = 3
        // --------------------------------------------
     
        // Sword Name Changer
        set Index[10] = 0
        set SwordName[0] = "None"
        set SwordName[1] = "Bronze Broadsword"
        set SwordName[2] = "Ripper Sword"
        set SwordName[3] = "Bone Axe"
        // --------------------------------------------
     
        // Sword Choice Changer
        set SwordChoice[1] = "war3mapImported\\Bronze Broadsword.mdx"
        set SwordChoice[2] = "war3mapImported\\Ripper Sword.mdx"
        set SwordChoice[3] = "war3mapImported\\boneaxe9.mdx"
        // This is to set up the Maximum and Minimum Index Range.
        set MinIndex[10] = 0
        set MaxIndex[10] = 3
        // --------------------------------------------
     
        // Shield Name Changer
        set Index[11] = 0
        set ShieldName[0] = "None"
        set ShieldName[1] = "Bronze Buckler"
        set ShieldName[2] = "Metal Shield"
        set ShieldName[3] = "Bone Spiked Shield"
        // --------------------------------------------
     
        // Shield Choice Changer
        set ShieldChoice[1] = "war3mapImported\\Bronze Buckler.mdx"
        set ShieldChoice[2] = "war3mapImported\\Metal_Shield_Tier3_Portrait.mdx"
        set ShieldChoice[3] = "war3mapImported\\bonespikedshield.mdx"
        // This is to set up the Maximum and Minimum Index Range.
        set MinIndex[11] = 0
        set MaxIndex[11] = 3
        // --------------------------------------------
     
        // Boots Name Changer
        set Index[12] = 0
        set BootsName[0] = "None"
        set BootsName[1] = "Bronze Boots"
        set BootsName[2] = "Metal Boots"
        set BootsName[3] = "N/A"
        // --------------------------------------------
     
        // Boots Choice Changer
        set BootsChoiceLeft[1] = "war3mapImported\\Bronze Boots - Left.mdx"
        set BootsChoiceRight[1] = "war3mapImported\\Bronze Boots.mdx"
        set BootsChoiceLeft[2] = "war3mapImported\\MetalBoots_T3_byAstarothZion_LeftFoot.mdx"
        set BootsChoiceRight[2] = "war3mapImported\\MetalBoots_T3_byAstarothZion.mdx"
        set BootsChoiceLeft[3] = ""
        set BootsChoiceRight[3] = ""
        // This is to set up the Maximum and Minimum Index Range.
        set MinIndex[12] = 0
        set MaxIndex[12] = 3
        // --------------------------------------------
     
        // Bracers Name Changer
        set Index[13] = 0
        set BracersName[0] = "None"
        set BracersName[1] = "Bronze Bracers"
        set BracersName[2] = "Metal Guantlets"
        set BracersName[3] = "N/A"
        // --------------------------------------------
     
        // Bracers Choice Changer
        set BracersChoiceLeft[1] = "war3mapImported\\Bronze Bracer Left.mdx"
        set BracersChoiceRight[1] = "war3mapImported\\Bronze Bracers.mdx"
        set BracersChoiceLeft[2] = "war3mapImported\\Guantlet_Metal_Tier3_Portrait.mdx"
        set BracersChoiceRight[2] = "war3mapImported\\Guantlet_Metal_Tier3.mdx"
        set BracersChoiceLeft[3] = ""
        set BracersChoiceRight[3] = ""
        // This is to set up the Maximum and Minimum Index Range.
        set MinIndex[13] = 0
        set MaxIndex[13] = 3
        // --------------------------------------------
     
        // Setting the initial camera
        set Camera = CreateCameraSetup()
        set CamSetting[0] = 325.00
        set CamSetting[1] = 1900.00
        set CamSetting[2] = 0
        set CamSetting[3] = 0
        set CamSetting[4] = 200.00
        set CamSetting[5] = 10000.00
        set CamSetting[6] = 350.00
        set CamMode = 0
        // --------------------------------------------
     
        // Camera Mode Maker
        set CameraModeName[0] = "Normal"
        set CameraModeName[1] = "Roll"
        set CameraModeName[2] = "Zoom"
        // --------------------------------------------
     
        // Do Not Change This
        set Actor[0] = CreateUnit(Player(0), 'h001', 130.00, -240.00, 0)
        set Actor[1] = CreateUnit(Player(0), 'h000', 1540.00, 2280.00, 0)
        call SetUnitFacing(Actor[0], 180.00)
        call SetUnitFacing(Actor[1], 180.00)
        set ControlPanel[0] = CreateUnit(Player(0), 'H002', 1540.00, 2280.00, 0)
        set ControlPanel[1] = CreateUnit(Player(0), 'H003', 1540.00, 2280.00, 0)
        set ControlPanel[2] = CreateUnit(Player(0), 'H004', 1540.00, 2280.00, 0)
        set ControlPanel[3] = CreateUnit(Player(0), 'H005', 1540.00, 2280.00, 0)
        call SetCameraTargetController(Actor[0], 0, 0, false)
        call ClearSelection()
        call SelectUnit(ControlPanel[0], true)
        set XofActor = GetUnitX(Actor[0])
        set YofActor = GetUnitY(Actor[0])
        set NewYofActor = YofActor - 350.00
        set FinalYofActor = YofActor + 350.00
        set TerrainType = GetTerrainType(XofActor, YofActor)
        set NewTerrainType = GetTerrainType(XofActor, FinalYofActor)
        set SystemInUse = 0
        set ShowBoard = true
        set LoopingCommand = false
        set ArrowKey[0] = false
        set ArrowKey[1] = false
        set ArrowKey[2] = false
        set ArrowKey[3] = false
        // --------------------------------------------
     
        // Camera Setup and Display
        call CameraSetupSetField(Camera,CAMERA_FIELD_ANGLE_OF_ATTACK,CamSetting[0],0)
        call CameraSetupSetField(Camera,CAMERA_FIELD_TARGET_DISTANCE,CamSetting[1],0)
        call CameraSetupSetField(Camera,CAMERA_FIELD_ROLL,CamSetting[2],0)
        call CameraSetupSetField(Camera,CAMERA_FIELD_ROTATION,CamSetting[3],0)
        call CameraSetupSetField(Camera,CAMERA_FIELD_ZOFFSET,CamSetting[4],0)
        call CameraSetupSetField(Camera,CAMERA_FIELD_FARZ,CamSetting[5],0)
        call CameraSetupSetField(Camera,CAMERA_FIELD_FIELD_OF_VIEW,CamSetting[6],0)
        set Line[0] = "---------- C a m e r a ----------"
        set Line[1] = ( "Camera Mode : " + "Normal" )
        set Line[2] = ( "Distance : " + R2S(CamSetting[1]) )
        set Line[3] = ( "Angle of Attack : " + R2S(CamSetting[0]) )
        set Line[4] = ( "Rotation : " + R2S(CamSetting[3]) )
        set Line[5] = ( "Cam Height : " + R2S(CamSetting[4]) )
        set Line[6] = ( "Roll : " + R2S(CamSetting[2]) )
        set Line[7] = "---------- M o d e l s ----------"
        set Line[8] = ( "Unit Animations : " + ( ( "(" + ( "0" + ") " ) ) + "Stand - 1" ) )
        set Line[9] = ( "Weather Effects : " + ( ( "(" + ( "0" + ") " ) ) + "None" ) )
        set Line[10] = ( "Sky Models : " + ( ( "(" + ( "0" + ") " ) ) + "None" ) )
        set Line[11] = ( "Fade Filters : " + ( ( "(" + ( "0" + ") " ) ) + "None" ) )
        set Line[12] = ( "Lightning Effects : " + ( ( "(" + ( "0" + ") " ) ) + "None" ) )
        set Line[13] = ( "Ubersplat Effects : " + ( ( "(" + ( "0" + ") " ) ) + "None" ) )
        set Line[14] = ( "Terrain Tiles : " + ( ( "(" + ( "0" + ") " ) ) + "None" ) )
        // --------------------------------------------
     
        // Multiboard Setup and Display
        set Board = Board.create(ie,1,true,true)
        call Board.setTitle("Effects Tester - (Looping is : OFF)")
        call Board.setAllWidth(0.28)
        call Board.display(false,true)
        loop
            exitwhen i > ie
            call Board.setText(i,0,Line[i])
            if i == 0 then
                call Board.setIcon(i,0,"ReplaceableTextures\\CommandButtons\\BTN_NormCamera.blp")
            elseif i == 7 then
                call Board.setIcon(i,0,"ReplaceableTextures\\CommandButtons\\BTNAltarOfKings.blp")
            else
                call Board.setIcon(i,0,"ReplaceableTextures\\PassiveButtons\\PASBTNStatUp.blp")
            endif
            set i = i + 1
        endloop
        // --------------------------------------------
     
        // First optional quest
        set q = CreateQuest()
       call QuestSetTitle(q, "Effects Tester")
        call QuestSetDescription(q, "You can now make animations loop with the following commands;

                                    -loop ### (Loops every x amount of seconds entered), -loop off

                                    You can jump through all of the different numbers by using these commands;

                                    -animation ###, -weather ##, -sky ##, -filter ##, -lightning ##, -ubersplat ##, -terrain #

                                    You can also switch to the attachment tester and back at any time simply by typing;
                                 
                                    -attachments, -effects (effects tester being the initial multiboard)"
)
        call QuestSetIconPath(q, "ReplaceableTextures\\CommandButtons\\BTNSell.blp")
        call QuestSetRequired(q, false)
        call QuestSetDiscovered(q, true)
        call QuestSetCompleted(q, false)
     
        // Nulling quest variable
        set q = null
        // --------------------------------------------
     
        // Second optional quest
        set q = CreateQuest()
       call QuestSetTitle(q, "Attachments Tester")
        call QuestSetDescription(q, "You can now make animations loop with the following commands;

                                    -loop ### (Loops every x amount of seconds entered), -loop off

                                    You can jump through all of the different numbers by using these commands;

                                    -animation #, -helmet #, -chest #, -sword #, -shield #, -boots #, -bracers #

                                    You can also switch to the attachment tester and back at any time simply by typing;
                                 
                                    -attachments, -effects (effects tester being the initial multiboard)"
)
        call QuestSetIconPath(q, "ReplaceableTextures\\CommandButtons\\BTNDustOfAppearance.blp")
        call QuestSetRequired(q, false)
        call QuestSetDiscovered(q, true)
        call QuestSetCompleted(q, false)
     
        // Nulling quest variable
        set q = null
        // --------------------------------------------
     
        // First required quest
        set q = CreateQuest()
        call QuestSetTitle(q, "Credits")
        call QuestSetDescription(q, "-Blood Raven (Bronze Armor Pack)
                                    -InfernalTater (Bone Equipment)
                                    -Astaroth Zion (Attachment Pack)
                                    -IcemanBo (for his help with coding)
                                    -Mckill2009 (BoardEx (multiboard wrapper))
                                    -Graber (for his Villager 255 Animations)
                                    -Supermj (for his White Grid)
                                    -Rysnt11 (for modifying the white grid (added Alpha))
                                    -Razor21 a.k.a gekigengar (for making the map)
                                    -Darkdeathknight (for his camera icon pack)
                                    -CHA_Owner (for greatly improving this system)"
)
        call QuestSetIconPath(q, "ReplaceableTextures\\CommandButtons\\BTNSelectHeroOn.blp")
        call QuestSetRequired(q, true)
        call QuestSetDiscovered(q, true)
        call QuestSetCompleted(q, false)
     
        // Nulling quest variable
        set q = null
        // --------------------------------------------
     
        // Other settings and setup
        call SetUnitAnimationByIndex(Actor[0], Index[6])
        call SetFloatGameState(GAME_STATE_TIME_OF_DAY, 12.00)
        call SuspendTimeOfDay(true)
        set bj_useDawnDuskSounds = false
        call FogEnable(false)
        call FogMaskEnable(false)
        // --------------------------------------------
 
    endfunction
 
    function ResetMultiboard takes nothing returns nothing
 
        if SystemInUse == 0 then
            // Reset Animation
            set Index[6] = 0
            call SetUnitAnimationByIndex(Actor[0], Index[6])
            set Line[8] = ( "Unit Animations : " + ( ( "(" + ( "0" + ") " ) ) + "Stand - 1" ) )
            call Board.setText(8,0,Line[8])
            // --------------------------------------------
     
            // Reset Weather
            set Index[5] = 0
            call RemoveWeatherEffect( bj_lastCreatedWeatherEffect )
            set Line[9] = ( "Weather Effects : " + ( ( "(" + ( "0" + ") " ) ) + "None" ) )
            call Board.setText(9,0,Line[9])
            // --------------------------------------------
     
            // Reset Sky
            set Index[4] = 0
            call SetSkyModel( null )
            set Line[10] = ( "Sky Models : " + ( ( "(" + ( "0" + ") " ) ) + "None" ) )
            call Board.setText(10,0,Line[10])
            // --------------------------------------------
     
            // Reset Fade Filter
            set Index[3] = 0
            if (bj_cineFadeContinueTimer != null) then
                call DestroyTimer(bj_cineFadeContinueTimer)
            elseif (bj_cineFadeFinishTimer != null) then
                call DestroyTimer(bj_cineFadeFinishTimer)
            endif
            set bj_cineFadeFinishTimer = null
            call DisplayCineFilter(false)
            set Line[11] = ( "Fade Filters : " + ( ( "(" + ( "0" + ") " ) ) + "None" ) )
            call Board.setText(11,0,Line[11])
            // --------------------------------------------
     
            // Reset Lightning
            set Index[2] = 0
            call DestroyLightning( TempLightning )
            set Line[12] = ( "Lightning Effects : " + ( ( "(" + ( "0" + ") " ) ) + "None" ) )
            call Board.setText(12,0,Line[12])
            // --------------------------------------------
     
            // Reset Ubersplat
            set Index[1] = 0
            call DestroyUbersplat( bj_lastCreatedUbersplat )
            set Line[13] = ( "Ubersplat Effects : " + ( ( "(" + ( "0" + ") " ) ) + "None" ) )
            call Board.setText(13,0,Line[13])
            // --------------------------------------------
     
            // Reset Terrain
            set Index[0] = 0
            call SetTerrainType(XofActor, NewYofActor, TerrainType, 0, 1, 0)
            set Line[14] = ( "Terrain Tiles : " + ( ( "(" + ( "0" + ") " ) ) + "None" ) )
            call Board.setText(14,0,Line[14])
            // --------------------------------------------
        elseif SystemInUse == 1 then
            // Reset Animation
            set Index[7] = 0
            call SetUnitAnimationByIndex(Actor[1], Index[7])
            set Line[8] = ( "Unit Animations : " + ( ( "(" + ( "0" + ") " ) ) + "Stand" ) )
            call Board.setText(8,0,Line[8])
            // --------------------------------------------
     
            // Reset Helmet
            set Index[8] = 0
            call DestroyEffect(TempEffect[0])
            set Line[9] = ( "Helmet Models : " + ( ( "(" + ( "0" + ") " ) ) + "None" ) )
            call Board.setText(9,0,Line[9])
            // --------------------------------------------
     
            // Reset Chest
            set Index[9] = 0
            call DestroyEffect(TempEffect[1])
            set Line[10] = ( "Chest Models : " + ( ( "(" + ( "0" + ") " ) ) + "None" ) )
            call Board.setText(10,0,Line[10])
            // --------------------------------------------
     
            // Reset Sword
            set Index[10] = 0
            call DestroyEffect(TempEffect[2])
            set Line[11] = ( "Sword Models : " + ( ( "(" + ( "0" + ") " ) ) + "None" ) )
            call Board.setText(11,0,Line[11])
            // --------------------------------------------
     
            // Reset Shield
            set Index[11] = 0
            call DestroyEffect(TempEffect[3])
            set Line[12] = ( "Shield Models : " + ( ( "(" + ( "0" + ") " ) ) + "None" ) )
            call Board.setText(12,0,Line[12])
            // --------------------------------------------
     
            // Reset Boots
            set Index[12] = 0
            call DestroyEffect(TempEffect[4])
            call DestroyEffect(TempEffect[5])
            set Line[13] = ( "Boot Models : " + ( ( "(" + ( "0" + ") " ) ) + "None" ) )
            call Board.setText(13,0,Line[13])
            // --------------------------------------------
     
            // Reset Bracers
            set Index[13] = 0
            call DestroyEffect(TempEffect[6])
            call DestroyEffect(TempEffect[7])
            set Line[14] = ( "Bracer Models : " + ( ( "(" + ( "0" + ") " ) ) + "None" ) )
            call Board.setText(14,0,Line[14])
            // --------------------------------------------
        endif
     
    endfunction
 
    private function FinishFade takes nothing returns nothing
        set bj_cineFadeFinishTimer = null
        call DisplayCineFilter(false)
    endfunction
 
    // call RunFade( fade out/in, texture )
    function RunFade takes integer f, string s returns nothing
        if (bj_cineFadeContinueTimer != null) then
            call DestroyTimer(bj_cineFadeContinueTimer)
        elseif (bj_cineFadeFinishTimer != null) then
            call DestroyTimer(bj_cineFadeFinishTimer)
        endif
        if (f == bj_CINEFADETYPE_FADEOUT) then
            // Fade out to the requested color.
            call SetCineFilterTexture(s)
            call SetCineFilterBlendMode(BLEND_MODE_BLEND)
            call SetCineFilterTexMapFlags(TEXMAP_FLAG_NONE)
            call SetCineFilterStartUV(0, 0, 1, 1)
            call SetCineFilterEndUV(0, 0, 1, 1)
            call SetCineFilterStartColor(255, 255, 255, 0)
            call SetCineFilterEndColor(255, 255, 255, 255)
            call SetCineFilterDuration(2.00)
            call DisplayCineFilter(true)
        elseif (f == bj_CINEFADETYPE_FADEIN) then
            // Fade in from the requested color.
            call SetCineFilterTexture(s)
            call SetCineFilterBlendMode(BLEND_MODE_BLEND)
            call SetCineFilterTexMapFlags(TEXMAP_FLAG_NONE)
            call SetCineFilterStartUV(0, 0, 1, 1)
            call SetCineFilterEndUV(0, 0, 1, 1)
            call SetCineFilterStartColor(255, 255, 255, 255)
            call SetCineFilterEndColor(255, 255, 255, 0)
            call SetCineFilterDuration(2.00)
            call DisplayCineFilter(true)
            set bj_cineFadeFinishTimer = CreateTimer()
            call TimerStart(bj_cineFadeFinishTimer, 1.00, false, function FinishFade)
        endif
    endfunction

    private function Init takes nothing returns nothing
        local trigger t = CreateTrigger(  )
        call TriggerRegisterTimerEvent( t, 0.02, false)
        call TriggerAddAction( t, function InitActionsSecond )
        set t = null
    endfunction

endscope

Camera System
Code (vJASS):
scope CameraSystem initializer Init

    private function CameraActions takes nothing returns nothing
 
        // Creating local variables
        local integer i = 0
        // --------------------------------------------
 
        if ArrowKey[0] == true then
            if CamMode == 0 then
                set CamSetting[0] = ( CamSetting[0] - 1 )
                if CamSetting[0] < 0.00 then
                    set CamSetting[0] = ( CamSetting[0] + 360.00 )
                endif
                set Line[3] = ( "Angle of Attack : " + R2S(CamSetting[0]) )
                call Board.setText(3,0,Line[3])
            elseif CamMode == 1 then
                set CamSetting[4] = ( CamSetting[4] + 3.00 )
                if CamSetting[4] >= 4000.00 then
                    set CamSetting[4] = 4000.00
                endif
                set Line[5] = ( "Cam Height : " + R2S(CamSetting[4]) )
                call Board.setText(5,0,Line[5])
            elseif CamMode == 2 then
                set CamSetting[1] = ( CamSetting[1] - 30.00 )
                if CamSetting[1] <= 300.00 then
                    set CamSetting[1] = 300.00
                endif
                set Line[2] = ( "Distance : " + R2S(CamSetting[1]) )
                call Board.setText(2,0,Line[2])
            endif
        endif
        if ArrowKey[1] == true then
            if CamMode == 0 then
                set CamSetting[0] = ( CamSetting[0] + 1 )
                if CamSetting[0] >= 360.00 then
                    set CamSetting[0] = ( CamSetting[0] - 360.00 )
                endif
                set Line[3] = ( "Angle of Attack : " + R2S(CamSetting[0]) )
                call Board.setText(3,0,Line[3])
            elseif CamMode == 1 then
                set CamSetting[4] = ( CamSetting[4] - 3.00 )
                if CamSetting[4] <= -2000.00 then
                    set CamSetting[4] = -2000.00
                endif
                set Line[5] = ( "Cam Height : " + R2S(CamSetting[4]) )
                call Board.setText(5,0,Line[5])
            elseif CamMode == 2 then
                set CamSetting[1] = ( CamSetting[1] + 30.00 )
                if CamSetting[1] >= 3000.00 then
                    set CamSetting[1] = 3000.00
                endif
                set Line[2] = ( "Distance : " + R2S(CamSetting[1]) )
                call Board.setText(2,0,Line[2])
            endif
        endif
        if ArrowKey[2] == true then
            if CamMode == 0 then
                set CamSetting[3] = ( CamSetting[3] - 1 )
                if CamSetting[3] < 0.00 then
                    set CamSetting[3] = ( CamSetting[3] + 360.00 )
                endif
                set Line[4] = ( "Rotation : " + R2S(CamSetting[3]) )
                call Board.setText(4,0,Line[4])
            elseif CamMode == 1 then
                set CamSetting[2] = ( CamSetting[2] - 1 )
                if CamSetting[2] < 0.00 then
                    set CamSetting[2] = ( CamSetting[2] + 360.00 )
                endif
                set Line[6] = ( "Roll : " + R2S(CamSetting[2]) )
                call Board.setText(6,0,Line[6])
            elseif CamMode == 2 then
                set CamSetting[1] = 300.00
                set Line[2] = ( "Distance : " + R2S(CamSetting[1]) )
                call Board.setText(2,0,Line[2])
            endif
        endif
        if ArrowKey[3] == true then
            if CamMode == 0 then
                set CamSetting[3] = ( CamSetting[3] + 1 )
                if CamSetting[3] >= 360.00 then
                    set CamSetting[3] = ( CamSetting[3] - 360.00 )
                endif
                set Line[4] = ( "Rotation : " + R2S(CamSetting[3]) )
                call Board.setText(4,0,Line[4])
            elseif CamMode == 1 then
                set CamSetting[2] = ( CamSetting[2] + 1 )
                if CamSetting[2] >= 360.00 then
                    set CamSetting[2] = ( CamSetting[2] - 360.00 )
                endif
                set Line[6] = ( "Roll : " + R2S(CamSetting[2]) )
                call Board.setText(6,0,Line[6])
            elseif CamMode == 2 then
                set CamSetting[1] = 3000.00
                set Line[2] = ( "Distance : " + R2S(CamSetting[1]) )
                call Board.setText(2,0,Line[2])
            endif
        endif
        call SetCameraField(CAMERA_FIELD_FARZ, CamSetting[5], 0)
        call SetCameraField(CAMERA_FIELD_TARGET_DISTANCE, CamSetting[1], 0)
        call SetCameraField(CAMERA_FIELD_ANGLE_OF_ATTACK, CamSetting[0], 0)
        call SetCameraField(CAMERA_FIELD_ROTATION, CamSetting[3], 0)
        call SetCameraField(CAMERA_FIELD_ZOFFSET, CamSetting[4], 0)
        call SetCameraField(CAMERA_FIELD_ROLL, CamSetting[2], 0)
        loop
            exitwhen i > 3
            if (GetUnitAbilityLevel(ControlPanel[i], 'BEim') > 0) == true then
                set CamSetting[3] = ( CamSetting[3] + 1.00 )
                if CamSetting[3] >= 360.00 then
                    set CamSetting[3] = ( CamSetting[3] - 360.00 )
                endif
                set Line[4] = ( "Rotation : " + R2S(CamSetting[3]) )
                call Board.setText(4,0,Line[4])
            endif
            set i = i + 1
        endloop
 
    endfunction

    private function Init takes nothing returns nothing
        local trigger t = CreateTrigger(  )
        call TriggerRegisterTimerEvent( t, 0.03, true)
        call TriggerAddAction( t, function CameraActions )
        set t = null
    endfunction

endscope

Camera Controller
Code (vJASS):
scope CameraController initializer Init

    private function ControllerActions takes nothing returns nothing

        // Creating local variables
        local eventid id = GetTriggerEventId()
        // --------------------------------------------
 
        // Up Arrow Key Pressed
        if id == EVENT_PLAYER_ARROW_UP_DOWN then
            set ArrowKey[0] = true
        // Up Arrow Key Released
        elseif id == EVENT_PLAYER_ARROW_UP_UP then
            set ArrowKey[0] = false
        // Down Arrow Key Pressed
        elseif id == EVENT_PLAYER_ARROW_DOWN_DOWN then
            set ArrowKey[1] = true
        // Down Arrow Key Released
        elseif id == EVENT_PLAYER_ARROW_DOWN_UP then
            set ArrowKey[1] = false
        // Left Arrow Key Pressed
        elseif id == EVENT_PLAYER_ARROW_LEFT_DOWN then
            set ArrowKey[2] = true
        // Left Arrow Key Released
        elseif id == EVENT_PLAYER_ARROW_LEFT_UP then
            set ArrowKey[2] = false
        // Right Arrow Key Pressed
        elseif id == EVENT_PLAYER_ARROW_RIGHT_DOWN then
            set ArrowKey[3] = true
        // Right Arrow Key Released
        elseif id == EVENT_PLAYER_ARROW_RIGHT_UP then
            set ArrowKey[3] = false
        // Esc Key Used
        elseif id == EVENT_PLAYER_END_CINEMATIC then
            // Camera Setup and Display
            set CamSetting[0] = CameraSetupGetField(Camera, CAMERA_FIELD_ANGLE_OF_ATTACK)
            set CamSetting[1] = CameraSetupGetField(Camera, CAMERA_FIELD_TARGET_DISTANCE)
            set CamSetting[2] = CameraSetupGetField(Camera, CAMERA_FIELD_ROLL)
            set CamSetting[3] = CameraSetupGetField(Camera, CAMERA_FIELD_ROTATION)
            set CamSetting[4] = CameraSetupGetField(Camera, CAMERA_FIELD_ZOFFSET)
            set CamSetting[5] = CameraSetupGetField(Camera, CAMERA_FIELD_FARZ)
            set CamMode = 0
            set Line[1] = ( "Camera Mode : " + "Normal" )
            set Line[2] = ( "Distance : " + R2S(CamSetting[1]) )
            set Line[3] = ( "Angle of Attack : " + R2S(CamSetting[0]) )
            set Line[4] = ( "Rotation : " + R2S(CamSetting[3]) )
            set Line[5] = ( "Cam Height : " + R2S(CamSetting[4]) )
            set Line[6] = ( "Roll : " + R2S(CamSetting[2]) )
            call Board.setText(1,0,Line[1])
            call Board.setText(2,0,Line[2])
            call Board.setText(3,0,Line[3])
            call Board.setText(4,0,Line[4])
            call Board.setText(5,0,Line[5])
            call Board.setText(6,0,Line[6])
            // --------------------------------------------
        endif
     
        // Nulling the eventid variable
        set id = null
 
    endfunction

    private function Init takes nothing returns nothing
        local trigger t = CreateTrigger(  )
        call TriggerRegisterPlayerEvent( t, Player(0), EVENT_PLAYER_ARROW_UP_DOWN )
        call TriggerRegisterPlayerEvent( t, Player(0), EVENT_PLAYER_ARROW_UP_UP )
        call TriggerRegisterPlayerEvent( t, Player(0), EVENT_PLAYER_ARROW_DOWN_DOWN )
        call TriggerRegisterPlayerEvent( t, Player(0), EVENT_PLAYER_ARROW_DOWN_UP )
        call TriggerRegisterPlayerEvent( t, Player(0), EVENT_PLAYER_ARROW_RIGHT_DOWN )
        call TriggerRegisterPlayerEvent( t, Player(0), EVENT_PLAYER_ARROW_RIGHT_UP )
        call TriggerRegisterPlayerEvent( t, Player(0), EVENT_PLAYER_ARROW_LEFT_DOWN )
        call TriggerRegisterPlayerEvent( t, Player(0), EVENT_PLAYER_ARROW_LEFT_UP )
        call TriggerRegisterPlayerEvent( t, Player(0), EVENT_PLAYER_END_CINEMATIC)
        call TriggerAddAction( t, function ControllerActions )
        set t = null
    endfunction

endscope

Skipping Numbers
Code (vJASS):
scope SkippingNumbers initializer Init

    private function LoopAnimation takes nothing returns nothing
        if SystemInUse == 0 then
            call SetUnitAnimationByIndex( Actor[0], Index[6] )
        elseif SystemInUse == 1 then
            call SetUnitAnimationByIndex( Actor[1], Index[7] )
        endif
    endfunction

    private function SkippingActions takes nothing returns nothing
 
        // Creating local variables
        local string s = GetEventPlayerChatString()
        local integer a = StringLength(s)
        local integer i = 0
        local integer ie = 15
        // --------------------------------------------

        if SubString(s, 0, 11) == "-animation " then
            if SystemInUse == 0 then
                set Index[6] = S2I(SubString(s, 11, a))
                if Index[6] > MaxIndex[6] then
                    set Index[6] = MinIndex[6]
                elseif Index[6] < MinIndex[6] then
                    set Index[6] = MaxIndex[6]
                endif
                set Line[8] = ( "Unit Animations : " + ( ( "(" + ( I2S(Index[6]) + ") " ) ) + AnimationName[Index[6]] ) )
                call SetUnitAnimationByIndex(Actor[0], Index[6])
                call Board.setText(8,0,Line[8])
            else
                set Index[7] = S2I(SubString(s, 11, a))
                if Index[7] > MaxIndex[7] then
                    set Index[7] = MinIndex[7]
                elseif Index[7] < MinIndex[7] then
                    set Index[7] = MaxIndex[7]
                endif
                set Line[8] = ( "Unit Animations : " + ( ( "(" + ( I2S(Index[7]) + ") " ) ) + AnimationNameA[Index[7]] ) )
                call SetUnitAnimationByIndex(Actor[1], Index[7])
                call Board.setText(8,0,Line[8])
            endif
        elseif SubString( s, 0, 6) == "-loop " and LoopingCommand == false then
            set LoopingCommand = true
            if SystemInUse == 0 then
                call Board.setTitle("Effects Tester - (Looping is : ON)")
            elseif SystemInUse == 1 then
                call Board.setTitle("Attachments Tester - (Looping is : ON)")
            endif
            set Looping = CreateTrigger()
            call TriggerRegisterTimerEvent( Looping, S2R(SubString( s, 6, a)), true )
            call TriggerAddAction( Looping, function LoopAnimation )
        elseif s == "-loop off" and LoopingCommand == true then
            set LoopingCommand = false
            if SystemInUse == 0 then
                call Board.setTitle("Effects Tester - (Looping is : OFF)")
            elseif SystemInUse == 1 then
                call Board.setTitle("Attachments Tester - (Looping is : OFF)")
            endif
            call DestroyTrigger( Looping )
            set Looping = null
        elseif SystemInUse == 0 then
            if SubString(s, 0, 9) == "-weather " then
                set Index[5] = S2I(SubString(s, 9, a))
                if Index[5] > MaxIndex[5] then
                    set Index[5] = MinIndex[5]
                elseif Index[5] < MinIndex[5] then
                    set Index[5] = MaxIndex[5]
                endif
                call RemoveWeatherEffect( bj_lastCreatedWeatherEffect )
                if Index[5] != MinIndex[5] then
                    set bj_lastCreatedWeatherEffect = AddWeatherEffect(gg_rct_Map_Area, WeatherChoice[Index[5]])
                    call EnableWeatherEffect( bj_lastCreatedWeatherEffect, true )
                endif
                set Line[9] = ( "Weather Effects : " + ( ( "(" + ( I2S(Index[5]) + ") " ) ) + WeatherName[Index[5]] ) )
                call Board.setText(9,0,Line[9])
            elseif SubString(s, 0, 5) == "-sky " then
                set Index[4] = S2I(SubString(s, 5, a))
                if Index[4] > MaxIndex[4] then
                    set Index[4] = MinIndex[4]
                elseif Index[4] < MinIndex[4] then
                    set Index[4] = MaxIndex[4]
                endif
                if Index[4] != MinIndex[4] then
                    call SetSkyModel(SkyChoice[Index[4]])
                else
                    call SetSkyModel( null )
                endif
                set Line[10] = ( "Sky Models : " + ( ( "(" + ( I2S(Index[4]) + ") " ) ) + SkyName[Index[4]] ) )
                call Board.setText(10,0,Line[10])
            elseif SubString(s, 0, 8) == "-filter " then
                set Index[3] = S2I(SubString(s, 8, a))
                if Index[3] > MaxIndex[3] then
                    set Index[3] = MinIndex[3]
                elseif Index[3] < MinIndex[3] then
                    set Index[3] = MaxIndex[3]
                endif
                if (bj_cineFadeContinueTimer != null) then
                    call DestroyTimer(bj_cineFadeContinueTimer)
                elseif (bj_cineFadeFinishTimer != null) then
                    call DestroyTimer(bj_cineFadeFinishTimer)
                endif
                set bj_cineFadeFinishTimer = null
                call DisplayCineFilter(false)
                if Index[3] != MinIndex[3] then
                    call RunFade( 1, FadeChoice[Index[3]] )
                endif
                set Line[11] = ( "Fade Filters : " + ( ( "(" + ( I2S(Index[3]) + ") " ) ) + FadeName[Index[3]] ) )
                call Board.setText(11,0,Line[11])
            elseif SubString(s, 0, 11) == "-lightning " then
                set Index[2] = S2I(SubString(s, 11, a))
                if Index[2] > MaxIndex[2] then
                    set Index[2] = MinIndex[2]
                elseif Index[2] < MinIndex[2] then
                    set Index[2] = MaxIndex[2]
                endif
                call DestroyLightning( TempLightning )
                if Index[2] != MinIndex[2] then
                    set TempLightning = AddLightningEx(LightningChoice[Index[2]], true, 128.500, -12.000, 400, 128.500, -516.00, 400)
                endif
                set Line[12] = ( "Lightning Effects : " + ( ( "(" + ( I2S(Index[2]) + ") " ) ) + LightningName[Index[2]] ) )
                call Board.setText(12,0,Line[12])
            elseif SubString(s, 0, 11) == "-ubersplat " then
                set Index[1] = S2I(SubString(s, 11, a))
                if Index[1] > MaxIndex[1] then
                    set Index[1] = MinIndex[1]
                elseif Index[1] < MinIndex[1] then
                    set Index[1] = MaxIndex[1]
                endif
                call DestroyUbersplat( bj_lastCreatedUbersplat )
                if Index[1] != MinIndex[1] then
                    set bj_lastCreatedUbersplat = CreateUbersplat(XofActor, FinalYofActor, UbersplatChoice[Index[1]], 255, 255, 255, 255, true, true)
                    call SetUbersplatRenderAlways( bj_lastCreatedUbersplat, true )
                    call ShowUbersplat( bj_lastCreatedUbersplat, true )
                endif
                set Line[13] = ( "Ubersplat Effects : " + ( ( "(" + ( I2S(Index[1]) + ") " ) ) + UbersplatName[Index[1]] ) )
                call Board.setText(13,0,Line[13])
            elseif SubString(s, 0, 9) == "-terrain " then
                set Index[0] = S2I(SubString(s, 9, a))
                if Index[0] > MaxIndex[0] then
                    set Index[0] = MinIndex[0]
                elseif Index[0] < MinIndex[0] then
                    set Index[0] = MaxIndex[0]
                endif
                if Index[0] != MinIndex[0] then
                    call SetTerrainType( XofActor, NewYofActor, TerrainChoice[Index[0]], 0, 1, 0 )
                else
                    call SetTerrainType( XofActor, NewYofActor, NewTerrainType, 0, 1, 0 )
                endif
                set Line[14] = ( "Terrain Tiles : " + ( ( "(" + ( I2S(Index[0]) + ") " ) ) + TerrainName[Index[0]] ) )
                call Board.setText(14,0,Line[14])
            elseif s == "-attachments" then
                // Hiding previous multiboard and control panels
                call ResetMultiboard()
                call SetUnitPosition(Actor[0], 1540.00, 2280.00)
                set SystemInUse = 1
                call SetUnitPosition(Actor[1], 130.00, -240.00)
                call SetCameraTargetController(Actor[1], 0, 0, false)
                call ClearSelection()
                call SelectUnit(ControlPanel[2], true)
                // --------------------------------------------
     
                // Camera Setup and Display
                set CamSetting[0] = CameraSetupGetField(Camera, CAMERA_FIELD_ANGLE_OF_ATTACK)
                set CamSetting[1] = CameraSetupGetField(Camera, CAMERA_FIELD_TARGET_DISTANCE)
                set CamSetting[2] = CameraSetupGetField(Camera, CAMERA_FIELD_ROLL)
                set CamSetting[3] = CameraSetupGetField(Camera, CAMERA_FIELD_ROTATION)
                set CamSetting[4] = CameraSetupGetField(Camera, CAMERA_FIELD_ZOFFSET)
                set CamSetting[5] = CameraSetupGetField(Camera, CAMERA_FIELD_FARZ)
                set CamMode = 0
                set Line[0] = "---------- C a m e r a ----------"
                set Line[1] = ( "Camera Mode : " + "Normal" )
                set Line[2] = ( "Distance : " + R2S(CamSetting[1]) )
                set Line[3] = ( "Angle of Attack : " + R2S(CamSetting[0]) )
                set Line[4] = ( "Rotation : " + R2S(CamSetting[3]) )
                set Line[5] = ( "Cam Height : " + R2S(CamSetting[4]) )
                set Line[6] = ( "Roll : " + R2S(CamSetting[2]) )
                set Line[7] = "---------- M o d e l s ----------"
                set Line[8] = ( "Unit Animations : " + ( ( "(" + ( "0" + ") " ) ) + "Stand" ) )
                set Line[9] = ( "Helmet Models : " + ( ( "(" + ( "0" + ") " ) ) + "None" ) )
                set Line[10] = ( "Chest Models : " + ( ( "(" + ( "0" + ") " ) ) + "None" ) )
                set Line[11] = ( "Sword Models : " + ( ( "(" + ( "0" + ") " ) ) + "None" ) )
                set Line[12] = ( "Shield Models : " + ( ( "(" + ( "0" + ") " ) ) + "None" ) )
                set Line[13] = ( "Boot Models : " + ( ( "(" + ( "0" + ") " ) ) + "None" ) )
                set Line[14] = ( "Bracer Models : " + ( ( "(" + ( "0" + ") " ) ) + "None" ) )
                // --------------------------------------------
 
                // Multiboard Setup and Display
                call Board.setTitle("Attachments Tester - (Looping is : OFF)")
                call Board.setAllWidth(0.28)
                loop
                    exitwhen i > ie
                    call Board.setText(i,0,Line[i])
                    if i == 0 then
                        call Board.setIcon(i,0,"ReplaceableTextures\\CommandButtons\\BTN_NormCamera.blp")
                    elseif i == 7 then
                        call Board.setIcon(i,0,"ReplaceableTextures\\CommandButtons\\BTNAltarOfKings.blp")
                    else
                        call Board.setIcon(i,0,"ReplaceableTextures\\PassiveButtons\\PASBTNStatUp.blp")
                    endif
                    set i = i + 1
                endloop
                // --------------------------------------------
            endif
        elseif SystemInUse == 1 then
            if SubString(s, 0, 8) == "-helmet " then
                set Index[8] = S2I(SubString(s, 8, a))
                if Index[8] > MaxIndex[8] then
                    set Index[8] = MinIndex[8]
                elseif Index[8] < MinIndex[8] then
                    set Index[8] = MaxIndex[8]
                endif
                call DestroyEffect(TempEffect[0])
                if Index[8] != MinIndex[8] then
                    set TempEffect[0] = AddSpecialEffectTarget(HelmetChoice[Index[8]], Actor[1], "head")
                endif
                set Line[9] = ( "Helmet Models : " + ( ( "(" + ( I2S(Index[8]) + ") " ) ) + HelmetName[Index[8]] ) )
                call Board.setText(9,0,Line[9])
            elseif SubString(s, 0, 7) == "-chest " then
                set Index[9] = S2I(SubString(s, 7, a))
                if Index[9] > MaxIndex[9] then
                    set Index[9] = MinIndex[9]
                elseif Index[9] < MinIndex[9] then
                    set Index[9] = MaxIndex[9]
                endif
                call DestroyEffect(TempEffect[1])
                if Index[9] != MinIndex[9] then
                    set TempEffect[1] = AddSpecialEffectTarget(ChestChoice[Index[9]], Actor[1], "chest")
                endif
                set Line[10] = ( "Chest Models : " + ( ( "(" + ( I2S(Index[9]) + ") " ) ) + ChestName[Index[9]] ) )
                call Board.setText(10,0,Line[10])
            elseif SubString(s, 0, 7) == "-sword " then
                set Index[10] = S2I(SubString(s, 7, a))
                if Index[10] > MaxIndex[10] then
                    set Index[10] = MinIndex[10]
                elseif Index[10] < MinIndex[10] then
                    set Index[10] = MaxIndex[10]
                endif
                call DestroyEffect(TempEffect[2])
                if Index[10] != MinIndex[10] then
                    set TempEffect[2] = AddSpecialEffectTarget(SwordChoice[Index[10]], Actor[1], "hand, right")
                endif
                set Line[11] = ( "Sword Models : " + ( ( "(" + ( I2S(Index[10]) + ") " ) ) + SwordName[Index[10]] ) )
                call Board.setText(11,0,Line[11])
            elseif SubString(s, 0, 8) == "-shield " then
                set Index[11] = S2I(SubString(s, 8, a))
                if Index[11] > MaxIndex[11] then
                    set Index[11] = MinIndex[11]
                elseif Index[11] < MinIndex[11] then
                    set Index[11] = MaxIndex[11]
                endif
                call DestroyEffect(TempEffect[3])
                if Index[11] != MinIndex[11] then
                    set TempEffect[3] = AddSpecialEffectTarget(ShieldChoice[Index[11]], Actor[1], "hand, left")
                endif
                set Line[12] = ( "Shield Models : " + ( ( "(" + ( I2S(Index[11]) + ") " ) ) + ShieldName[Index[11]] ) )
                call Board.setText(12,0,Line[12])
            elseif SubString(s, 0, 7) == "-boots " then
                set Index[12] = S2I(SubString(s, 7, a))
                if Index[12] > MaxIndex[12] then
                    set Index[12] = MinIndex[12]
                elseif Index[12] < MinIndex[12] then
                    set Index[12] = MaxIndex[12]
                endif
                call DestroyEffect(TempEffect[4])
                call DestroyEffect(TempEffect[5])
                if Index[12] != MinIndex[12] then
                    set TempEffect[4] = AddSpecialEffectTarget(BootsChoiceLeft[Index[12]], Actor[1], "foot, left")
                    set TempEffect[5] = AddSpecialEffectTarget(BootsChoiceRight[Index[12]], Actor[1], "foot, right")
                endif
                set Line[13] = ( "Boot Models : " + ( ( "(" + ( I2S(Index[12]) + ") " ) ) + BootsName[Index[12]] ) )
                call Board.setText(13,0,Line[13])
            elseif SubString(s, 0, 9) == "-bracers " then
                set Index[13] = S2I(SubString(s, 9, a))
                if Index[13] > MaxIndex[13] then
                    set Index[13] = MinIndex[13]
                elseif Index[13] < MinIndex[13] then
                    set Index[13] = MaxIndex[13]
                endif
                call DestroyEffect(TempEffect[6])
                call DestroyEffect(TempEffect[7])
                if Index[13] != MinIndex[13] then
                    set TempEffect[6] = AddSpecialEffectTarget(BracersChoiceLeft[Index[13]], Actor[1], "hand, left")
                    set TempEffect[7] = AddSpecialEffectTarget(BracersChoiceRight[Index[13]], Actor[1], "hand, right")
                endif
                set Line[14] = ( "Bracer Models : " + ( ( "(" + ( I2S(Index[13]) + ") " ) ) + BracersName[Index[13]] ) )
                call Board.setText(14,0,Line[14])
            elseif s == "-effects" then
                // Hiding previous multiboard and control panels
                call ResetMultiboard()
                call SetUnitPosition(Actor[1], 1540.00, 2280.00)
                set SystemInUse = 0
                call SetUnitPosition(Actor[0], 130.00, -240.00)
                call SetCameraTargetController(Actor[0], 0, 0, false)
                call ClearSelection()
                call SelectUnit(ControlPanel[0], true)
                // --------------------------------------------
     
                // Camera Setup and Display
                set CamSetting[0] = CameraSetupGetField(Camera, CAMERA_FIELD_ANGLE_OF_ATTACK)
                set CamSetting[1] = CameraSetupGetField(Camera, CAMERA_FIELD_TARGET_DISTANCE)
                set CamSetting[2] = CameraSetupGetField(Camera, CAMERA_FIELD_ROLL)
                set CamSetting[3] = CameraSetupGetField(Camera, CAMERA_FIELD_ROTATION)
                set CamSetting[4] = CameraSetupGetField(Camera, CAMERA_FIELD_ZOFFSET)
                set CamSetting[5] = CameraSetupGetField(Camera, CAMERA_FIELD_FARZ)
                set CamMode = 0
                set Line[0] = "---------- C a m e r a ----------"
                set Line[1] = ( "Camera Mode : " + "Normal" )
                set Line[2] = ( "Distance : " + R2S(CamSetting[1]) )
                set Line[3] = ( "Angle of Attack : " + R2S(CamSetting[0]) )
                set Line[4] = ( "Rotation : " + R2S(CamSetting[3]) )
                set Line[5] = ( "Cam Height : " + R2S(CamSetting[4]) )
                set Line[6] = ( "Roll : " + R2S(CamSetting[2]) )
                set Line[7] = "---------- M o d e l s ----------"
                set Line[8] = ( "Unit Animations : " + ( ( "(" + ( "0" + ") " ) ) + "Stand - 1" ) )
                set Line[9] = ( "Weather Effects : " + ( ( "(" + ( "0" + ") " ) ) + "None" ) )
                set Line[10] = ( "Sky Models : " + ( ( "(" + ( "0" + ") " ) ) + "None" ) )
                set Line[11] = ( "Fade Filters : " + ( ( "(" + ( "0" + ") " ) ) + "None" ) )
                set Line[12] = ( "Lightning Effects : " + ( ( "(" + ( "0" + ") " ) ) + "None" ) )
                set Line[13] = ( "Ubersplat Effects : " + ( ( "(" + ( "0" + ") " ) ) + "None" ) )
                set Line[14] = ( "Terrain Tiles : " + ( ( "(" + ( "0" + ") " ) ) + "None" ) )
                // --------------------------------------------
 
                // Multiboard Setup and Display
                call Board.setTitle("Effects Tester - (Looping is : OFF)")
                call Board.setAllWidth(0.28)
                loop
                    exitwhen i > ie
                    call Board.setText(i,0,Line[i])
                    if i == 0 then
                        call Board.setIcon(i,0,"ReplaceableTextures\\CommandButtons\\BTN_NormCamera.blp")
                    elseif i == 7 then
                        call Board.setIcon(i,0,"ReplaceableTextures\\CommandButtons\\BTNAltarOfKings.blp")
                    else
                        call Board.setIcon(i,0,"ReplaceableTextures\\PassiveButtons\\PASBTNStatUp.blp")
                    endif
                    set i = i + 1
                endloop
                // --------------------------------------------
            endif
        endif
     
        // Nulling the string variable
        set s = null
        // --------------------------------------------
 
    endfunction

    private function Init takes nothing returns nothing
        local trigger t = CreateTrigger(  )
        call TriggerRegisterPlayerChatEvent( t, Player(0), "", false )
        call TriggerAddAction( t, function SkippingActions )
        set t = null
    endfunction

endscope

Control Panel Abilities
Code (vJASS):
scope ControlPanel initializer Init

    private function ControlPanelActions takes nothing returns nothing
 
        // Creating local variables
        local unit u = GetTriggerUnit()
        local integer uid = GetUnitTypeId(u)
        local integer aid = GetSpellAbilityId()
        // --------------------------------------------

        // Why Begins Casting an Ability? So that you could browse between animations a lot faster.
        call IssueImmediateOrder( u, "stop" )
        // Whats with the Stop? to prevent the Control Panel from casting anything.
        if aid == 'A004' then
            set CamMode = ( CamMode + 1 )
            if CamMode > 2 then
                set CamMode = 0
            endif
            set Line[1] = ( "Camera Mode : " + CameraModeName[CamMode] )
            call Board.setText(1,0,Line[1])
        elseif aid == 'A001' or aid == 'A000' then
            if uid == 'H002' or uid == 'H003' then
                if aid == 'A001' then
                    set Index[6] = ( Index[6] + 1 )
                else
                    set Index[6] = ( Index[6] - 1 )
                endif
                if Index[6] > MaxIndex[6] then
                    set Index[6] = MinIndex[6]
                elseif Index[6] < MinIndex[6] then
                    set Index[6] = MaxIndex[6]
                endif
                set Line[8] = ( "Unit Animations : " + ( ( "(" + ( I2S(Index[6]) + ") " ) ) + AnimationName[Index[6]] ) )
                call SetUnitAnimationByIndex(Actor[0], Index[6])
                call Board.setText(8,0,Line[8])
            else
                if aid == 'A001' then
                    set Index[7] = ( Index[7] + 1 )
                else
                    set Index[7] = ( Index[7] - 1 )
                endif
                if Index[7] > MaxIndex[7] then
                    set Index[7] = MinIndex[7]
                elseif Index[7] < MinIndex[7] then
                    set Index[7] = MaxIndex[7]
                endif
                set Line[8] = ( "Unit Animations : " + ( ( "(" + ( I2S(Index[7]) + ") " ) ) + AnimationNameA[Index[7]] ) )
                call SetUnitAnimationByIndex(Actor[1], Index[7])
                call Board.setText(8,0,Line[8])
            endif
        elseif aid == 'A006' or aid == 'A007' then
            if aid == 'A006' then
                set Index[5] = ( Index[5] + 1 )
            else
                set Index[5] = ( Index[5] - 1 )
            endif
            if Index[5] > MaxIndex[5] then
                set Index[5] = MinIndex[5]
            elseif Index[5] < MinIndex[5] then
                set Index[5] = MaxIndex[5]
            endif
            call RemoveWeatherEffect( bj_lastCreatedWeatherEffect )
            if Index[5] != MinIndex[5] then
                set bj_lastCreatedWeatherEffect = AddWeatherEffect(gg_rct_Map_Area, WeatherChoice[Index[5]])
                call EnableWeatherEffect( bj_lastCreatedWeatherEffect, true )
            endif
            set Line[9] = ( "Weather Effects : " + ( ( "(" + ( I2S(Index[5]) + ") " ) ) + WeatherName[Index[5]] ) )
            call Board.setText(9,0,Line[9])
        elseif aid == 'A00B' or aid == 'A00A' then
            if aid == 'A00B' then
                set Index[4] = ( Index[4] + 1 )
            else
                set Index[4] = ( Index[4] - 1 )
            endif
            if Index[4] > MaxIndex[4] then
                set Index[4] = MinIndex[4]
            elseif Index[4] < MinIndex[4] then
                set Index[4] = MaxIndex[4]
            endif
            if Index[4] != MinIndex[4] then
                call SetSkyModel(SkyChoice[Index[4]])
            else
                call SetSkyModel( null )
            endif
            set Line[10] = ( "Sky Models : " + ( ( "(" + ( I2S(Index[4]) + ") " ) ) + SkyName[Index[4]] ) )
            call Board.setText(10,0,Line[10])
        elseif aid == 'A00E' or aid == 'A00F' then
            if aid == 'A00E' then
                set Index[3] = ( Index[3] + 1 )
            else
                set Index[3] = ( Index[3] - 1 )
            endif
            if Index[3] > MaxIndex[3] then
                set Index[3] = MinIndex[3]
            elseif Index[3] < MinIndex[3] then
                set Index[3] = MaxIndex[3]
            endif
            if (bj_cineFadeContinueTimer != null) then
                call DestroyTimer(bj_cineFadeContinueTimer)
            elseif (bj_cineFadeFinishTimer != null) then
                call DestroyTimer(bj_cineFadeFinishTimer)
            endif
            set bj_cineFadeFinishTimer = null
            call DisplayCineFilter(false)
            if Index[3] != MinIndex[3] then
                call RunFade( 1, FadeChoice[Index[3]] )
            endif
            set Line[11] = ( "Fade Filters : " + ( ( "(" + ( I2S(Index[3]) + ") " ) ) + FadeName[Index[3]] ) )
            call Board.setText(11,0,Line[11])
        elseif aid == 'A00G' or aid == 'A00H' then
            if aid == 'A00G' then
                set Index[2] = ( Index[2] + 1 )
            else
                set Index[2] = ( Index[2] - 1 )
            endif
            if Index[2] > MaxIndex[2] then
                set Index[2] = MinIndex[2]
            elseif Index[2] < MinIndex[2] then
                set Index[2] = MaxIndex[2]
            endif
            call DestroyLightning( TempLightning )
            if Index[2] != MinIndex[2] then
                set TempLightning = AddLightningEx(LightningChoice[Index[2]], true, 128.500, -12.000, 400, 128.500, -516.00, 400)
            endif
            set Line[12] = ( "Lightning Effects : " + ( ( "(" + ( I2S(Index[2]) + ") " ) ) + LightningName[Index[2]] ) )
            call Board.setText(12,0,Line[12])
        elseif aid == 'A00I' or aid == 'A00J' then
            if aid == 'A00I' then
                set Index[1] = ( Index[1] + 1 )
            else
                set Index[1] = ( Index[1] - 1 )
            endif
            if Index[1] > MaxIndex[1] then
                set Index[1] = MinIndex[1]
            elseif Index[1] < MinIndex[1] then
                set Index[1] = MaxIndex[1]
            endif
            call DestroyUbersplat( bj_lastCreatedUbersplat )
            if Index[1] != MinIndex[1] then
                set bj_lastCreatedUbersplat = CreateUbersplat(XofActor, FinalYofActor, UbersplatChoice[Index[1]], 255, 255, 255, 255, true, true)
                call SetUbersplatRenderAlways( bj_lastCreatedUbersplat, true )
                call ShowUbersplat( bj_lastCreatedUbersplat, true )
            endif
            set Line[13] = ( "Ubersplat Effects : " + ( ( "(" + ( I2S(Index[1]) + ") " ) ) + UbersplatName[Index[1]] ) )
            call Board.setText(13,0,Line[13])
        elseif aid == 'A00L' or aid == 'A00K' then
            if aid == 'A00L' then
                set Index[0] = ( Index[0] + 1 )
            else
                set Index[0] = ( Index[0] - 1 )
            endif
            if Index[0] > MaxIndex[0] then
                set Index[0] = MinIndex[0]
            elseif Index[0] < MinIndex[0] then
                set Index[0] = MaxIndex[0]
            endif
            if Index[0] != MinIndex[0] then
                call SetTerrainType( XofActor, NewYofActor, TerrainChoice[Index[0]], 0, 1, 0 )
            else
                call SetTerrainType( XofActor, NewYofActor, NewTerrainType, 0, 1, 0 )
            endif
            set Line[14] = ( "Terrain Tiles : " + ( ( "(" + ( I2S(Index[0]) + ") " ) ) + TerrainName[Index[0]] ) )
            call Board.setText(14,0,Line[14])
        elseif aid == 'A008' then
            if ShowBoard == true then
                set ShowBoard = false
                call Board.display(true,false)
            else
                set ShowBoard = true
                call Board.display(false,true)
            endif
        elseif aid == 'A002' then
            call ResetMultiboard()
        elseif aid == 'A00C' then
            if uid == 'H002' or uid == 'H003' then
                call ClearSelection()
                call SelectUnit(ControlPanel[1], true)
            else
                call ClearSelection()
                call SelectUnit(ControlPanel[3], true)
            endif
        elseif aid == 'A00D' then
            if uid == 'H002' or uid == 'H003' then
                call ClearSelection()
                call SelectUnit(ControlPanel[0], true)
            else
                call ClearSelection()
                call SelectUnit(ControlPanel[2], true)
            endif
        elseif aid == 'A00N' or aid == 'A00O' then
            if aid == 'A00N' then
                set Index[8] = ( Index[8] + 1 )
            else
                set Index[8] = ( Index[8] - 1 )
            endif
            if Index[8] > MaxIndex[8] then
                set Index[8] = MinIndex[8]
            elseif Index[8] < MinIndex[8] then
                set Index[8] = MaxIndex[8]
            endif
            call DestroyEffect(TempEffect[0])
            if Index[8] != MinIndex[8] then
                set TempEffect[0] = AddSpecialEffectTarget(HelmetChoice[Index[8]], Actor[1], "head")
            endif
            set Line[9] = ( "Helmet Models : " + ( ( "(" + ( I2S(Index[8]) + ") " ) ) + HelmetName[Index[8]] ) )
            call Board.setText(9,0,Line[9])
        elseif aid == 'A00M' or aid == 'A003' then
            if aid == 'A00M' then
                set Index[9] = ( Index[9] + 1 )
            else
                set Index[9] = ( Index[9] - 1 )
            endif
            if Index[9] > MaxIndex[9] then
                set Index[9] = MinIndex[9]
            elseif Index[9] < MinIndex[9] then
                set Index[9] = MaxIndex[9]
            endif
            call DestroyEffect(TempEffect[1])
            if Index[9] != MinIndex[9] then
                set TempEffect[1] = AddSpecialEffectTarget(ChestChoice[Index[9]], Actor[1], "chest")
            endif
            set Line[10] = ( "Chest Models : " + ( ( "(" + ( I2S(Index[9]) + ") " ) ) + ChestName[Index[9]] ) )
            call Board.setText(10,0,Line[10])
        elseif aid == 'A00P' or aid == 'A00Q' then
            if aid == 'A00P' then
                set Index[10] = ( Index[10] + 1 )
            else
                set Index[10] = ( Index[10] - 1 )
            endif
            if Index[10] > MaxIndex[10] then
                set Index[10] = MinIndex[10]
            elseif Index[10] < MinIndex[10] then
                set Index[10] = MaxIndex[10]
            endif
            call DestroyEffect(TempEffect[2])
            if Index[10] != MinIndex[10] then
                set TempEffect[2] = AddSpecialEffectTarget(SwordChoice[Index[10]], Actor[1], "hand, right")
            endif
            set Line[11] = ( "Sword Models : " + ( ( "(" + ( I2S(Index[10]) + ") " ) ) + SwordName[Index[10]] ) )
            call Board.setText(11,0,Line[11])
        elseif aid == 'A00R' or aid == 'A00S' then
            if aid == 'A00R' then
                set Index[11] = ( Index[11] + 1 )
            else
                set Index[11] = ( Index[11] - 1 )
            endif
            if Index[11] > MaxIndex[11] then
                set Index[11] = MinIndex[11]
            elseif Index[11] < MinIndex[11] then
                set Index[11] = MaxIndex[11]
            endif
            call DestroyEffect(TempEffect[3])
            if Index[11] != MinIndex[11] then
                set TempEffect[3] = AddSpecialEffectTarget(ShieldChoice[Index[11]], Actor[1], "hand, left")
            endif
            set Line[12] = ( "Shield Models : " + ( ( "(" + ( I2S(Index[11]) + ") " ) ) + ShieldName[Index[11]] ) )
            call Board.setText(12,0,Line[12])
        elseif aid == 'A00T' or aid == 'A00U' then
            if aid == 'A00T' then
                set Index[12] = ( Index[12] + 1 )
            else
                set Index[12] = ( Index[12] - 1 )
            endif
            if Index[12] > MaxIndex[12] then
                set Index[12] = MinIndex[12]
            elseif Index[12] < MinIndex[12] then
                set Index[12] = MaxIndex[12]
            endif
            call DestroyEffect(TempEffect[4])
            call DestroyEffect(TempEffect[5])
            if Index[12] != MinIndex[12] then
                set TempEffect[4] = AddSpecialEffectTarget(BootsChoiceLeft[Index[12]], Actor[1], "foot, left")
                set TempEffect[5] = AddSpecialEffectTarget(BootsChoiceRight[Index[12]], Actor[1], "foot, right")
            endif
            set Line[13] = ( "Boot Models : " + ( ( "(" + ( I2S(Index[12]) + ") " ) ) + BootsName[Index[12]] ) )
            call Board.setText(13,0,Line[13])
        elseif aid == 'A00V' or aid == 'A00W' then
            if aid == 'A00V' then
                set Index[13] = ( Index[13] + 1 )
            else
                set Index[13] = ( Index[13] - 1 )
            endif
            if Index[13] > MaxIndex[13] then
                set Index[13] = MinIndex[13]
            elseif Index[13] < MinIndex[13] then
                set Index[13] = MaxIndex[13]
            endif
            call DestroyEffect(TempEffect[6])
            call DestroyEffect(TempEffect[7])
            if Index[13] != MinIndex[13] then
                set TempEffect[6] = AddSpecialEffectTarget(BracersChoiceLeft[Index[13]], Actor[1], "hand, left")
                set TempEffect[7] = AddSpecialEffectTarget(BracersChoiceRight[Index[13]], Actor[1], "hand, right")
            endif
            set Line[14] = ( "Bracer Models : " + ( ( "(" + ( I2S(Index[13]) + ") " ) ) + BracersName[Index[13]] ) )
            call Board.setText(14,0,Line[14])
        endif
     
        // Nulling the variables
        set u = null
        // --------------------------------------------
 
    endfunction

    private function Init takes nothing returns nothing
        local trigger t = CreateTrigger(  )
        call TriggerRegisterPlayerUnitEvent( t, Player(0), EVENT_PLAYER_UNIT_SPELL_CAST, null)
        call TriggerAddAction( t, function ControlPanelActions )
        set t = null
    endfunction

endscope


Change Log

Older Change Logs

Version 3.0

  • Rewrote entire system into vJASS.
  • Fixed all previous glitches and issues.
  • Removed multiple triggers and combined others.
  • Added more content with much, much more to come.

Version 3.1

  • Greatly improved all coding.
  • Separated initialization triggers.
  • Improved descriptions, comments, and readability.
  • Added more content with much, much more to come.

Version 3.2

  • Finished completely improving the coding.
  • Fixed hopefully the last few bugs and glitches that occured.
  • Improved descriptions, comments, and readability yet again.
  • Inserted the new multiboard wrapper to get rid of BJs.
  • Changed the way the multiboard setup was done to be more efficient.
  • Added more content with much, much more to come.

Version 3.3

  • Coding has been completely reworked once again for efficiency.
  • Fixed the multiboard glitch having to do with minimizing.
  • Improved descriptions, comments, and readability yet again.
  • Finished the multiboard wrappers and are now completely functioning.
  • Started separating the initialization triggers for readability.
  • Big changes made to global variables greatly reducing calls.
  • Added more content with much, much more to come.

Version 3.4

  • Terrain tiles reduced to 8 due to WC3 limits.
  • Commands and credits now fully up to date.
  • Fixed camera system so controls are no longer inverted.
  • Resized multiboard to be slightly smaller now.
  • Got rid of all udg_ variables now all listed as globals.
  • Recoded camera system for vJASS camera objects.
  • Fixed glitch regarding camera system updating text.
  • Fixed glitch with lightnings not getting correctly destroyed.


Version 3.5

  • Redone camera system to check keys individually.
  • Condensed initialization triggers and rearranged them.
  • Added the other 154 animation names to system.

Version 3.6

  • Made system more modular for later updates.
  • Finished making the attachment tester fully functional.
  • Rewrote chat commands system for better efficiency.
  • Added new model to better view the attachments.
  • Changed a bunch of icons and descriptions to better fit.
  • Added 2 additional attachment sets as examples for new system.

Version 3.7

  • System is now fully functional on new patches.
  • Special effects and attachments are now destroyed immediately.


Credits


Special Thanks:

  • IcemanBo - Coding Improvements
  • Mckill2009 - BoardEx (multiboard wrapper)
  • Blood Raven - Bronze Armor Pack
  • InfernalTater - Bone Equipment
  • Astaroth Zion - Attachment Pack
  • Graber - Villager 255 Animations
  • Supermj - White Grid
  • Rysnt11 - Modified White Grid Added Alpha
  • Darkdeathknight - Camera Icon Pack


Author's Notes


  • Make sure all of your WC3 visual settings are on high due to ubersplats and other special effects not displaying otherwise!
  • Terrain tiles are now limited to 8 in example due to the WC3 hardcoded terrain tile limit being 16.
  • Attachments have a slight delay when removing due to death animations within the models themselves not the system. <<< SOLVED
  • To solve the above issue with attachments goto your gameplay constants and set your Decay Time (sec) - Effects to 0 then the attachments will be correctly removed without model editing.

Map Description Template Created by -Kobas-
Find more here: Map Description - Templates

Contents

Model and Effects Viewer v3.7 (Map)

Reviews
Moderator
17:07, 3rd Dec 2012 Magtheridon96: This utility is alright. Well done.
  1. 17:07, 3rd Dec 2012
    Magtheridon96: This utility is alright.
    Well done.
     
  2. CHA_Owner

    CHA_Owner

    Joined:
    Feb 11, 2008
    Messages:
    799
    Resources:
    2
    Spells:
    2
    Resources:
    2
    *Subscribing*

    This system is not based completely on performance its more of just an easier way to go through different models and effects and view them easily.

    With that being said i am still fixing all leaks as i go along and performance stays on my mind.
     
  3. Ender

    Ender

    Joined:
    Jan 28, 2012
    Messages:
    208
    Resources:
    2
    Spells:
    1
    Tutorials:
    1
    Resources:
    2
    • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
      • SkyIndex Equal to (==) 1
      • Then - Actions
      • Environment - Set sky to Blizzard Sky
      • Else - Actions
      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
      • SkyIndex Equal to (==) 2
      • Then - Actions
      • Environment - Set sky to Dalaran Sky
      • Else - Actions
      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
      • SkyIndex Equal to (==) 3
      • Then - Actions
      • Environment - Set sky to Felwood Sky
      • Else - Actions
      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
      • SkyIndex Equal to (==) 4
      • Then - Actions
      • Environment - Set sky to Fogged Sky
      • Else - Actions
      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
      • SkyIndex Equal to (==) 5
      • Then - Actions
      • Environment - Set sky to Generic Sky
      • Else - Actions
      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
      • SkyIndex Equal to (==) 6
      • Then - Actions
      • Environment - Set sky to Lordaeron Fall Sky
      • Else - Actions
      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
      • SkyIndex Equal to (==) 7
      • Then - Actions
      • Environment - Set sky to Lordaeron Summer Sky
      • Else - Actions
      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
      • SkyIndex Equal to (==) 8
      • Then - Actions
      • Environment - Set sky to Lordaeron Winter Sky
      • Else - Actions
      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
      • SkyIndex Equal to (==) 9
      • Then - Actions
      • Environment - Set sky to Lordaeron Winter Sky (Bright Green)
      • Else - Actions
      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
      • SkyIndex Equal to (==) 10
      • Then - Actions
      • Environment - Set sky to Lordaeron Winter Sky (Pink)
      • Else - Actions
      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
      • SkyIndex Equal to (==) 11
      • Then - Actions
      • Environment - Set sky to Lordaeron Winter Sky (Purple)
      • Else - Actions
      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
      • SkyIndex Equal to (==) 12
      • Then - Actions
      • Environment - Set sky to Lordaeron Winter Sky (Red)
      • Else - Actions
      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
      • SkyIndex Equal to (==) 13
      • Then - Actions
      • Environment - Set sky to Lordaeron Winter Sky (Yellow)
      • Else - Actions
      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
      • SkyIndex Equal to (==) 14
      • Then - Actions
    you should use arrays instead of all of these ifs, reasons 1 it would be faster, 2 it would shorten your code 3 it would make it more readable.
    you should really do this for all of your long strings of if's
     
  4. CHA_Owner

    CHA_Owner

    Joined:
    Feb 11, 2008
    Messages:
    799
    Resources:
    2
    Spells:
    2
    Resources:
    2
    What do you mean by using arrays instead of if/then/elses give me an example please and ill get to it.
     
  5. doomhammer99

    doomhammer99

    Joined:
    Dec 5, 2011
    Messages:
    319
    Resources:
    5
    Models:
    1
    Spells:
    3
    Tutorials:
    1
    Resources:
    5
    Documentations puh-leeze.
     
  6. CHA_Owner

    CHA_Owner

    Joined:
    Feb 11, 2008
    Messages:
    799
    Resources:
    2
    Spells:
    2
    Resources:
    2
    With the release of the next version ill be improving the description got any suggestions or fixed for the system though?
     
  7. GhostHunter123

    GhostHunter123

    Joined:
    Oct 17, 2012
    Messages:
    425
    Resources:
    1
    Spells:
    1
    Resources:
    1
    • Skipping Numbers
      • Events
        • Player - Player 1 (Red) types a chat message containing <Empty String> as An exact match
      • Conditions
        • (Substring((Entered chat string), 1, 5)) Equal to -sky
      • Actions
        • Set SkyIndex[1] = Fogged Sky
        • Set SkyIndex[2] = Felwood Sky
        • Set SkyIndex[3] = Blizzard Sky
        • Environment - Set sky to SkyIndex[(Substring((Entered chat string), 6, 11))]


    This is basically what Ender means.
     
  8. Ender

    Ender

    Joined:
    Jan 28, 2012
    Messages:
    208
    Resources:
    2
    Spells:
    1
    Tutorials:
    1
    Resources:
    2
    I would do it basically like Ghost hunter, only set the variables in an init trigger. doing it for all of the different long chains of ifs would make the code a whole lot easier to read.
     
  9. Almia

    Almia

    Joined:
    Apr 24, 2012
    Messages:
    4,839
    Resources:
    35
    Spells:
    30
    Tutorials:
    4
    JASS:
    1
    Resources:
    35
  10. doomhammer99

    doomhammer99

    Joined:
    Dec 5, 2011
    Messages:
    319
    Resources:
    5
    Models:
    1
    Spells:
    3
    Tutorials:
    1
    Resources:
    5
  11. sonofjay

    sonofjay

    Joined:
    Oct 28, 2011
    Messages:
    4,247
    Resources:
    20
    Packs:
    1
    Maps:
    13
    Template:
    5
    Tutorials:
    1
    Resources:
    20
    Lol, fail is fail Radamantus.

    Haha anyway I love Razor's system really useful for lazy people, will check this one,
     
  12. Gekigengar

    Gekigengar

    Joined:
    Aug 20, 2009
    Messages:
    1,493
    Resources:
    2
    Maps:
    1
    Spells:
    1
    Resources:
    2
    Thanks ! xD

    This one needs WEU, which kinda differ from what i wanted it to be,

    Simple and Easy, but Epic!.

    but this one has Tons of new cool functions!,

    I am subscribing to this, hope you get approved!

    btw, thats one heck of a gigantically long trigger o.o!
     
  13. CHA_Owner

    CHA_Owner

    Joined:
    Feb 11, 2008
    Messages:
    799
    Resources:
    2
    Spells:
    2
    Resources:
    2
    Still working on next big update heres some things to expect;

    - adding a lot more terrain tiles to the list possibly all of them
    - redid all if/then/elses i could and replaced them with variables
    - ALL leaks will be completely taken care of
    - working on some new features that are really cool

    if anybody has any suggestions please tell me and ill get on it.

    EDIT*

    New version is up please let me know of any more changes or suggestions.
     
    Last edited: Nov 27, 2012
  14. CHA_Owner

    CHA_Owner

    Joined:
    Feb 11, 2008
    Messages:
    799
    Resources:
    2
    Spells:
    2
    Resources:
    2
    New version with massive changes coming soon just have to fix 1 last glitch with fade filters!

    EDIT*

    new version is now up hopefully everything is completely fixed and is working great so i am now focusing on adding more features, the rest of the terrain tiles, the rest of the animation names, and some new commands!
     
    Last edited: Dec 3, 2012
  15. shadowvzs

    shadowvzs

    Joined:
    Nov 13, 2006
    Messages:
    1,803
    Resources:
    2
    Spells:
    2
    Resources:
    2
    a bit off but i wanted to try with normal WE and can't open only weu can open the map?
     
  16. CHA_Owner

    CHA_Owner

    Joined:
    Feb 11, 2008
    Messages:
    799
    Resources:
    2
    Spells:
    2
    Resources:
    2
    Yes i always just use JNGP 1.5e and never have any issues so it is what i recommend using.
     
  17. CHA_Owner

    CHA_Owner

    Joined:
    Feb 11, 2008
    Messages:
    799
    Resources:
    2
    Spells:
    2
    Resources:
    2
    System got some much needed updates all for performance from this point on i will be adding more functionality since this system should now be as fast as it could get!
     
  18. CoLd Bon3

    CoLd Bon3

    Joined:
    Aug 8, 2010
    Messages:
    948
    Resources:
    4
    Spells:
    4
    Resources:
    4
    Uh... why i can't open the test map? I am with 1.24e (or 1.24a, i am not sure about the letter) version of War3 (i think). I tried with the original WE but i got an error. Then i tried with Jass New Gen and still nothing happened.
    The problem is not when i click "Test Map", it's when i open it. I can't get to see the code in the editor.
     
  19. CHA_Owner

    CHA_Owner

    Joined:
    Feb 11, 2008
    Messages:
    799
    Resources:
    2
    Spells:
    2
    Resources:
    2
    make sure you have the very newest version of WC3 then also make sure you have the latest JassHelper in your JNGP.