Ticket #1555: cheats.6.patch

File cheats.6.patch, 21.6 KB (added by O.Davoodi, 12 years ago)
  • gui/gamesetup/gamesetup.js

     
    4343
    4444var g_MapFilters = [];
    4545
     46var g_PlayerColours = [];
     47
    4648// To prevent the display locking up while we load the map metadata,
    4749// we'll start with a 'loading' message and switch to the main screen in the
    4850// tick handler
     
    179181                updateGameAttributes();
    180182            }
    181183        };
     184       
     185        getGUIObjectByName("enableCheats").onPress = function()
     186        {   // Update attributes so other players can see change
     187            g_GameAttributes.settings.CheatsEnabled = this.checked;
     188
     189            if (!g_IsInGuiUpdate)
     190            {
     191                updateGameAttributes();
     192            }
     193        };
    182194    }
    183195    else
    184196    {
     
    207219        getGUIObjectByName("startGame").enabled = false;
    208220    }
    209221
    210     // Set up offline-only bits:
     222    // Set up multiplayer/singleplayer bits:
    211223    if (!g_IsNetworked)
    212224    {
    213225        getGUIObjectByName("chatPanel").hidden = true;
     226        getGUIObjectByName("enableCheats").checked = true;
     227        g_GameAttributes.settings.CheatsEnabled = true;
    214228    }
    215 
    216 
     229    else
     230    {
     231        getGUIObjectByName("enableCheatsDesc").hidden = false;
     232        getGUIObjectByName("enableCheats").checked = false;
     233        g_GameAttributes.settings.CheatsEnabled = false;
     234        if (g_IsController)
     235        {
     236            getGUIObjectByName("enableCheats").hidden = false;
     237        }
     238        else
     239        {
     240            getGUIObjectByName("enableCheatsText").hidden = false;
     241        }
     242    }
    217243    // Settings for all possible player slots
    218244    var boxSpacing = 32;
    219245    for (var i = 0; i < MAX_PLAYERS; ++i)
     
    245271                updateGameAttributes();
    246272            }
    247273        };
     274       
     275        // populate color dropdowns
     276        g_PlayerColours = [{ "r": 46, "g": 46, "b": 200 }, { "r": 150, "g": 20, "b": 20 }, { "r": 50, "g": 165, "b": 5 }, { "r": 230, "g": 230, "b": 75 }, { "r": 50, "g": 170, "b": 170 }, { "r": 160, "g": 80, "b": 200 }, { "r": 235, "g": 120, "b": 20 }, { "r": 64, "g": 64, "b": 64 }, { "r": 230, "g": 60, "b": 105 }];
     277        var colorSelect = getGUIObjectByName("playerColourSelect["+i+"]");
     278        colorSelect.list = ["[color=\"46 46 200 255\"]Blue", "[color=\"150 20 20 255\"]Red", "[color=\"50 165 5 255\"]Green", "[color=\"230 230 75 255\"]Yellow",
     279        "[color=\"50 170 170 255\"]Cyan", "[color=\"160 80 200 255\"]Purple", "[color=\"235 120 20 255\"]Orange", "[color=\"64 64 64 255\"]Gray", "[color=\"230 60 105 255\"]Fandango"];
     280        colorSelect.list_data = [0,1,2,3,4,5,6,7,8];
     281        colorSelect.selected = i;
     282        colorSelect.onSelectionChange = function()
     283        {   // Update color
     284            var numPlayers = g_GameAttributes.settings.PlayerData.length;
     285            var used = 0;
     286            for (var o = 0; o < numPlayers; o++)
     287            {
     288                if (g_PlayerColours[this.list_data[this.selected]] == g_GameAttributes.settings.PlayerData[o].Colour)
     289                {
     290                    ++used;
     291                    break;
     292                }
     293            }
     294            if (!used)
     295                if (this.selected != -1)
     296                {
     297                    g_GameAttributes.settings.PlayerData[playerSlot].Colour = g_PlayerColours[this.list_data[this.selected]];
     298                }
    248299
     300            if (!g_IsInGuiUpdate)
     301            {
     302                updateGameAttributes();
     303            }
     304        };
     305
    249306        // Set events
    250307        var civ = getGUIObjectByName("playerCiv["+i+"]");
    251308        civ.onSelectionChange = function()
    252309        {   // Update civ
    253             if (this.selected != -1)
     310            if ((this.selected != -1)&&(g_GameAttributes.mapType !== "scenario"))
    254311            {
    255312                g_GameAttributes.settings.PlayerData[playerSlot].Civ = this.list_data[this.selected];
    256313            }
     
    617674        g_GameAttributes.mapPath = "maps/random/";
    618675        g_GameAttributes.settings = {
    619676            PlayerData: g_DefaultPlayerData.slice(0, 4),
    620             Seed: Math.floor(Math.random() * 65536)
     677            Seed: Math.floor(Math.random() * 65536),
     678            CheatsEnabled: g_GameAttributes.settings.CheatsEnabled
    621679        };
    622680        break;
    623681
     
    801859    var victoryCondition = getGUIObjectByName("victoryCondition");
    802860    var lockTeams = getGUIObjectByName("lockTeams");
    803861    var mapSize = getGUIObjectByName("mapSize");
     862    var enableCheats = getGUIObjectByName("enableCheats");
    804863   
    805864    var numPlayersText= getGUIObjectByName("numPlayersText");
    806865    var mapSizeText = getGUIObjectByName("mapSizeText");
    807866    var revealMapText = getGUIObjectByName("revealMapText");
    808867    var victoryConditionText = getGUIObjectByName("victoryConditionText");
    809868    var lockTeamsText = getGUIObjectByName("lockTeamsText");
    810 
     869    var enableCheatsText = getGUIObjectByName("enableCheatsText");
     870   
    811871    var sizeIdx = (g_MapSizes.tiles.indexOf(mapSettings.Size) != -1 ? g_MapSizes.tiles.indexOf(mapSettings.Size) : g_MapSizes.default);
    812872    var victoryIdx = (VICTORY_DATA.indexOf(mapSettings.GameType) != -1 ? VICTORY_DATA.indexOf(mapSettings.GameType) : VICTORY_DEFAULTIDX);
    813 
     873    enableCheats.checked = (g_GameAttributes.settings.CheatsEnabled === undefined || !g_GameAttributes.settings.CheatsEnabled ? false : true)
     874    enableCheatsText.caption = (enableCheats.checked ? "Yes" : "No");
    814875    // Handle map type specific logic
    815876    switch (g_GameAttributes.mapType)
    816877    {
     
    877938        victoryConditionText.hidden = false;
    878939        lockTeamsText.hidden = false;
    879940
     941        for (var i = 0; i < MAX_PLAYERS; ++i)
     942        {
     943
     944        }
    880945        // Update map preview
    881946        getGUIObjectByName("mapPreview").sprite = "stretched:session/icons/mappreview/" + getMapPreview(mapName);
    882947        numPlayersText.caption = numPlayers;
     
    915980            var pTeam = getGUIObjectByName("playerTeam["+i+"]");
    916981            var pTeamText = getGUIObjectByName("playerTeamText["+i+"]");
    917982            var pColor = getGUIObjectByName("playerColour["+i+"]");
    918 
     983            var pColorSelect = getGUIObjectByName("playerColourSelect["+i+"]")
     984           
    919985            // Player data / defaults
    920986            var pData = mapSettings.PlayerData ? mapSettings.PlayerData[i] : {};
    921987            var pDefs = g_DefaultPlayerData ? g_DefaultPlayerData[i] : {};
     
    927993
    928994            var team = getSetting(pData, pDefs, "Team");
    929995            var civ = getSetting(pData, pDefs, "Civ");
    930 
     996            var colour = getSetting(pData, pDefs, "Colour");
     997           
    931998            // For clients or scenarios, hide some player dropdowns
    932999            if (!g_IsController || g_GameAttributes.mapType == "scenario")
    9331000            {
     
    9351002                pCiv.hidden = true;
    9361003                pTeamText.hidden = false;
    9371004                pTeam.hidden = true;
    938 
     1005                pColorSelect.hidden = true;
    9391006                // Set text values
    9401007                if (civ == "random")
    9411008                {
     
    9531020                pCiv.hidden = false;
    9541021                pTeamText.hidden = true;
    9551022                pTeam.hidden = false;
    956 
     1023                pColorSelect.hidden = false;
    9571024                // Set dropdown values
     1025                pColorSelect.selected = (colour ? (g_PlayerColours.indexOf(colour)+1 ? g_PlayerColours.indexOf(colour) : i) : i);
    9581026                pCiv.selected = (civ ? pCiv.list_data.indexOf(civ) : 0);
    9591027                pTeam.selected = (team !== undefined && team >= 0) ? team+1 : 0;
    9601028            }
  • gui/gamesetup/gamesetup.xml

     
    5959                <repeat count="8">
    6060                    <object name="playerBox[n]" size="0 0 100% 32" hidden="true">
    6161                        <object name="playerColour[n]" type="image" size="0 0 100% 100%"/>
    62                         <object name="playerName[n]" type="text" style="CenteredLabelText" size="0 2 25% 30"/>
    63                         <object name="playerAssignment[n]" type="dropdown" style="StoneDropDown" size="25%+10 2 50% 30" tooltip_style="onscreenToolTip" tooltip="Select player."/>
    64                         <object name="playerConfig[n]" type="button" style="StoneButton" size="50%+10 6 50%+35 26"
     62                        <object name="playerName[n]" type="text" style="CenteredLabelText" size="0 2 22% 30"/>
     63                        <object name="playerColourSelect[n]" type="dropdown" style="StoneDropDown" size="20%+10 2 35% 30" tooltip_style="onscreenToolTip" tooltip="Select color."/>
     64                        <object name="playerAssignment[n]" type="dropdown" style="StoneDropDown" size="35%+10 2 54% 30" tooltip_style="onscreenToolTip" tooltip="Select player."/>
     65                        <object name="playerConfig[n]" type="button" style="StoneButton" size="54%+10 6 54%+35 26"
    6566                            tooltip_style="onscreenToolTip"
    6667                            tooltip="Configure AI settings."
    6768                        >C</object>
    68                         <object name="playerCiv[n]" type="dropdown" style="StoneDropDown" size="50%+45 2 85% 30" tooltip_style="onscreenToolTip" tooltip="Select player's civilization."/>
    69                         <object name="playerCivText[n]" type="text" style="CenteredLabelText" size="50%+45 0 85% 30"/>
     69                        <object name="playerCiv[n]" type="dropdown" style="StoneDropDown" size="54%+45 2 85% 30" tooltip_style="onscreenToolTip" tooltip="Select player's civilization."/>
     70                        <object name="playerCivText[n]" type="text" style="CenteredLabelText" size="52%+45 0 85% 30"/>
    7071                        <object name="playerTeam[n]" type="dropdown" style="StoneDropDown" size="85%+10 2 100%-10 30" tooltip_style="onscreenToolTip" tooltip="Select player's team."/>
    7172                        <object name="playerTeamText[n]" type="text" style="CenteredLabelText" size="85%+10 0 100%-10 100%"/>
    7273                    </object>
     
    120121
    121122        </object>
    122123       
     124        <object size="20 463.8 11% 615" name="enableCheatsDesc" hidden="true">
     125            <object size="0 0 100% 32">
     126                <object size="0 0 100% 100%" type="text" style="RightLabelText">Cheats:</object>
     127            </object>
     128        </object>
     129           
     130        <object size="10.9% 463.8 28% 615">
     131            <object size="0 0 100% 32">
     132                <object name="enableCheatsText" size="0 0 100% 100%" type="text" style="LeftLabelText" hidden="true"/>
     133                <object name="enableCheats" size="0 50%-8 16 50%+8" type="checkbox" style="StoneCrossBox" hidden="true" tooltip_style="onscreenToolTip" tooltip="Toggle the usability of cheats."/>
     134            </object>
     135        </object>
     136       
    123137        <!-- Map Preview -->
    124138        <object  type="image" sprite="BackgroundIndentFillDark" name="gamePreviewBox" size="100%-425 58 100%-25 358">
    125139            <object type="image" sprite="snMapPreview" size="1 1 399 299" name="mapPreview"/>
     
    143157                <object size="0 60 100% 88">
    144158                    <object size="0 0 100% 100%" type="text" style="RightLabelText">Victory condition:</object>
    145159                </object>
     160               
    146161            </object>
    147 
     162           
    148163            <!-- Second Column -->
    149164            <object size="41% 0 94% 50%">
    150165
     
    173188            </object>
    174189
    175190            <!-- Third Column -->
     191           
    176192            <object size="0 40% 42.3% 100%">
    177193                <object size="0 0 100% 32">
    178194                    <object size="0 0 100% 100%" type="text" style="RightLabelText">Reveal map:</object>
  • gui/session/messages.js

     
    99const MAX_NUM_NOTIFICATION_LINES = 3;
    1010var notifications = [];
    1111var notificationsTimers = [];
     12var cheatList = parseJSONData("simulation/data/cheats.json").Cheats;
    1213
    1314// Notifications
    1415function handleNotifications()
     
    159160{
    160161    var input = getGUIObjectByName("chatInput");
    161162    var text = input.caption;
     163    var isCheat = false;
    162164    if (text.length)
    163165    {
    164         if (g_IsNetworked)
    165             Engine.SendNetworkChat(text);
    166         else
    167             addChatMessage({ "type": "message", "guid": "local", "text": text });
     166        var n = g_PlayerAssignments["local"].player;
     167        for (var i = 0; i < cheatList.length; i++)
     168        {
     169            if (text.indexOf(cheatList[i].Name)>-1)
     170            {
     171                if (cheatList[i].IsNumeric)
     172                {
     173                    var number = text.substr(cheatList[i].Name.length+1, text.length-1).valueOf();
     174                    if (!(number > 0))
     175                        number=cheatList[i].DefaultNumber;
     176                }
     177                else
     178                {
     179                    var number = undefined;
     180                }
     181                Engine.PostNetworkCommand({"type": "cheat", "action": cheatList[i].Action, "number": number , "selected": g_Selection.toList(), "templates": cheatList[i].Templates, "player": n});
     182                isCheat = true;
     183                break;
     184            }
     185        }
    168186
     187        if (!isCheat)
     188        {
     189            if (g_IsNetworked)
     190                Engine.SendNetworkChat(text);
     191            else
     192                addChatMessage({ "type": "message", "guid": "local", "text": text });
     193        }
    169194        input.caption = ""; // Clear chat input
    170195    }
    171196
     
    195220    }
    196221
    197222    var message = escapeText(msg.text);
    198 
     223   
    199224    var formatted;
    200 
     225   
    201226    switch (msg.type)
    202227    {
    203228    case "connect":
  • simulation/components/Cost.js

     
    4949
    5050Cost.prototype.GetBuildTime = function()
    5151{
    52     var buildTime = +this.template.BuildTime;
     52    var cmpPlayer = QueryOwnerInterface(this.entity, IID_Player);
     53    var buildTime = (+this.template.BuildTime) * cmpPlayer.cheatTimeMultiplier;
    5354    var cmpTechnologyManager = QueryOwnerInterface(this.entity, IID_TechnologyManager);
    5455    if (cmpTechnologyManager)
    5556        buildTime = cmpTechnologyManager.ApplyModifications("Cost/BuildTime", buildTime, this.entity);
  • simulation/components/Player.js

     
    2929    this.startCam = undefined;
    3030    this.controlAllUnits = false;
    3131    this.isAI = false;
     32    this.cheatsEnabled = true;
     33    this.cheatTimeMultiplier = 1;
    3234};
    3335
    3436Player.prototype.SetPlayerID = function(id)
     
    397399    }
    398400};
    399401
     402
     403Player.prototype.SetCheatEnabled = function(flag)
     404{
     405    this.cheatsEnabled = flag;
     406}
     407
     408Player.prototype.GetCheatEnabled = function(flag)
     409{
     410    return this.cheatsEnabled;
     411}
     412
    400413Engine.RegisterComponentType(IID_Player, "Player", Player);
  • simulation/components/ProductionQueue.js

     
    185185           
    186186            // Apply a time discount to larger batches.
    187187            // TODO: work out what equation we should use here.
    188             var timeMult = Math.pow(count, 0.7);
     188            var timeMult = Math.pow(count, 0.7) * cmpPlayer.cheatTimeMultiplier;
    189189           
    190190            // We need the costs after tech modifications
    191191            // Obviously we don't have the entities yet, so we must use template data
     
    233233            if (!template)
    234234                return;
    235235           
    236             var time = template.researchTime;
     236            var time = template.researchTime * CheatTimeMultiplier();
    237237
    238238            var cost = {};
    239239            for each (var r in ["food", "wood", "stone", "metal"])
  • simulation/components/ResourceGatherer.js

     
    245245 */
    246246ResourceGatherer.prototype.GetTargetGatherRate = function(target)
    247247{
     248    var cmpPlayer = QueryOwnerInterface(this.entity, IID_Player);
     249
    248250    var cmpResourceSupply = Engine.QueryInterface(target, IID_ResourceSupply);
    249251    if (!cmpResourceSupply)
    250252        return 0;
     
    255257
    256258    var rate;
    257259    if (type.specific && rates[type.generic+"."+type.specific])
    258         rate = rates[type.generic+"."+type.specific];
     260        rate = rates[type.generic+"."+type.specific] / cmpPlayer.cheatTimeMultiplier;
    259261    else
    260         rate = rates[type.generic];
     262        rate = rates[type.generic] / cmpPlayer.cheatTimeMultiplier;
    261263   
    262264    return (rate || 0);
    263265};
  • simulation/data/cheats.json

     
     1{
     2    "Cheats":
     3    [
     4        {
     5            "Name": "i want pizza",
     6            "Action": "addfood",
     7            "IsNumeric": true,
     8            "DefaultNumber": 1000
     9        },
     10        {
     11            "Name": "bring me my axe",
     12            "Action": "addwood",
     13            "IsNumeric": true,
     14            "DefaultNumber": 1000
     15        },
     16        {
     17            "Name": "your money or your life",
     18            "Action": "addmetal",
     19            "IsNumeric": true,
     20            "DefaultNumber": 1000
     21        },
     22        {
     23            "Name": "i see a mountain here",
     24            "Action": "addstone",
     25            "IsNumeric": true,
     26            "DefaultNumber": 1000
     27        },
     28        {
     29            "Name": "jame jam",
     30            "Action": "revealmap",
     31            "IsNumeric": false
     32        },
     33        {
     34            "Name": "the hive master",
     35            "Action": "maxpopulation",
     36            "IsNumeric": false
     37        },
     38        {
     39            "Name": "TARDIS",
     40            "Action": "changemaxpopulation",
     41            "IsNumeric": false
     42        },
     43        {
     44            "Name": "iwanttopwnthem",
     45            "Action": "createunits",
     46            "IsNumeric": true,
     47            "DefaultNumber": 1,
     48            "Templates": ["units/cart_hero_hamilcar", "units/cart_hero_hannibal", "units/cart_hero_maharbal", "units/rome_hero_marcellus", "units/rome_hero_maximus", "units/rome_hero_scipio", "units/pers_hero_cyrus", "units/pers_hero_darius", "units/pers_hero_xerxes"]
     49        },
     50        {
     51            "Name": "wololo",
     52            "Action": "convertunit",
     53            "IsNumeric": false
     54        },
     55        {
     56            "Name": "black death",
     57            "Action": "killunits",
     58            "IsNumeric": false
     59        },
     60        {
     61            "Name": "hehehehehehehehe",
     62            "Action": "defeatplayer",
     63            "IsNumeric": true,
     64            "DefaultNumber": 2
     65        },
     66        {
     67            "Name": "pandoras box",
     68            "Action": "controlallunits",
     69            "IsNumeric": false
     70        },
     71        {
     72            "Name": "i am too busy",
     73            "Action": "fastactions",
     74            "IsNumeric": false
     75        },
     76        {
     77            "Name": "how do you turn this on?",
     78            "Action": "createunits",
     79            "IsNumeric": true,
     80            "DefaultNumber": 1,
     81            "Templates": ["other/plane"]
     82        }
     83    ]
     84}
  • simulation/helpers/Cheat.js

     
     1
     2
     3function Cheat(input)
     4{
     5    //computing the neccessary components
     6    var cmpPlayerMan = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager);
     7    if (!cmpPlayerMan || input.player < 0)
     8        return;
     9    var playerEnt = cmpPlayerMan.GetPlayerByID(input.player);
     10    if (playerEnt == INVALID_ENTITY)
     11        return;
     12    var cmpPlayer = Engine.QueryInterface(playerEnt, IID_Player);
     13    if (!cmpPlayer)
     14        return;
     15    if (cmpPlayer.GetCheatEnabled())
     16    {
     17        if (input.action == "addfood")
     18        {
     19            cmpPlayer.AddResource("food", input.number);
     20        }
     21        else if (input.action == "addwood")
     22        {
     23            cmpPlayer.AddResource("wood", input.number);
     24        }
     25        else if (input.action == "addmetal")
     26        {
     27            cmpPlayer.AddResource("metal", input.number);
     28        }
     29        else if (input.action == "addstone")
     30        {
     31            cmpPlayer.AddResource("stone", input.number);
     32        }
     33        else if (input.action == "revealmap")
     34        {
     35            var cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager);
     36            cmpRangeManager.SetLosRevealAll(-1, true);
     37        }
     38        else if (input.action == "maxpopulation")
     39        {
     40            cmpPlayer.popBonuses += 500;
     41        }
     42        else if (input.action == "changemaxpopulation")
     43        {
     44            //this changes the max population limit
     45            cmpPlayer.maxPop = 500;
     46        }
     47        else if (input.action == "controlallunits")
     48        {
     49            cmpPlayer.SetControlAllUnits(true);
     50        }
     51        else if (input.action == "convertunit")
     52        {
     53            for each (var ent in input.selected)
     54            {
     55                var cmpOwnership = Engine.QueryInterface(ent, IID_Ownership);
     56                cmpOwnership.SetOwner(cmpPlayer.playerID);
     57            }
     58        }
     59        else if (input.action == "killunits")
     60        {
     61            for each (var ent in input.selected)
     62            {
     63                var cmpHealth = Engine.QueryInterface(ent, IID_Health);
     64                if (cmpHealth)
     65                    cmpHealth.Kill();
     66                else
     67                    Engine.DestroyEntity(ent);
     68            }
     69        }
     70        else if (input.action == "defeatplayer")
     71        {
     72            var cmpPlayerMan = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager);
     73            if (!cmpPlayerMan)
     74                return;
     75            var playerEnt = cmpPlayerMan.GetPlayerByID(input.number);
     76            if (playerEnt == INVALID_ENTITY)
     77                return;
     78            Engine.PostMessage(playerEnt, MT_PlayerDefeated, { "playerId": input.number } );
     79        }
     80        else if (input.action == "createunits")
     81        {   
     82            //the player must select a building that can train units for this.
     83            var cmpProductionQueue = Engine.QueryInterface(input.selected[0], IID_ProductionQueue);
     84            if (!cmpProductionQueue)
     85                return;
     86            for (var i = 0; i < input.number; i++)
     87            {
     88                cmpProductionQueue.SpawnUnits (input.templates[i%(input.templates.length)],1, null);
     89            }
     90        }
     91        else if (input.action == "fastactions")
     92        {   
     93            if (cmpPlayer.cheatTimeMultiplier == 1)
     94            {
     95                cmpPlayer.cheatTimeMultiplier = 0.01;
     96            }
     97            else
     98            {
     99                cmpPlayer.cheatTimeMultiplier = 1;
     100            }
     101        }
     102        //AI only
     103        else if (input.action == "changespeed")
     104        {   
     105            cmpPlayer.cheatTimeMultiplier = input.number;
     106        }
     107        if (cmpPlayer.name.indexOf(" the Cheater")==-1)
     108            cmpPlayer.name = cmpPlayer.name + " the Cheater";
     109    }
     110    else
     111    {
     112        var cmpGuiInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);
     113        cmpGuiInterface.PushNotification({"type": "chat", "player": input.player, "message": "Cheats are disbaled in this match"});
     114    }
     115}
     116
     117Engine.RegisterGlobal("Cheat", Cheat);
     118 No newline at end of file
  • simulation/helpers/Commands.js

     
    3131    case "debug-print":
    3232        print(cmd.message);
    3333        break;
    34 
     34   
    3535    case "chat":
    3636        var cmpGuiInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);
    3737        cmpGuiInterface.PushNotification({"type": "chat", "player": player, "message": cmd.message});
    3838        break;
    3939       
     40    case "cheat":
     41        Cheat(cmd);
     42        break;
     43       
    4044    case "quit":
    4145        // Let the AI exit the game for testing purposes
    4246        var cmpGuiInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);
  • simulation/helpers/InitGame.js

     
    1313    var cmpAIManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_AIManager);
    1414    for (var i = 0; i < settings.PlayerData.length; ++i)
    1515    {
     16        var cmpPlayer = Engine.QueryInterface(cmpPlayerManager.GetPlayerByID(i+1), IID_Player);
     17        if (!settings.CheatsEnabled)
     18            cmpPlayer.SetCheatStatus(false);
    1619        if (settings.PlayerData[i] && settings.PlayerData[i].AI && settings.PlayerData[i].AI != "")
    1720        {
    1821            cmpAIManager.AddPlayer(settings.PlayerData[i].AI, i+1);
    19             var cmpPlayer = Engine.QueryInterface(cmpPlayerManager.GetPlayerByID(i+1), IID_Player);
    2022            cmpPlayer.SetAI(true);
     23            cmpPlayer.SetCheatEnabled(true);
    2124        }
    2225    }
    2326}