Basic LUA guide

Started by Radical_Pi, September 13, 2009, 03:41:47 PM

Previous topic - Next topic
September 13, 2009, 03:41:47 PM Last Edit: September 14, 2009, 02:28:34 PM by Radical_Pi
Hey guys, since AG made that topic on ODF editing, I figured I might as well go through an LUA file with you.

In case you don't know, whenever a map is loaded, its LUA script is run. The job of the LUA is to load the map data and make sure there is enough memory available for the map. For most maps, there are 2 or 3 LUA files. 1 to load the game in each era, and 1 to add the map to the list of maps.

FYI this is a WIP so not every part of the LUA will be explained

Note: any time you see ***, replace it with your map id

First of all, you will find the LUA scripts in BFBuilder\Data***\Common\Scripts\***

***a.lua or ***i.lua are the GCW scripts. ***c.lua or ***r.lua are the CW scripts. There is also an addme.lua which eventually becomes addme.script, but I'm not going to go through that right now.

Now, I will explain a normal mod map LUA file line by line.

NOTE: This is the CW file. The GCW one is the same in terms of concept.


--start header -- This is a comment. Does not have any impact on the final script
function ScriptInit() -- tells the game that this is where the map loader begins
local CIS = 1 -- Script constants. Best not to touch these
local REP = 2
local ATT = 1
local DEF = 2
--end header
--start objectives
AddMissionObjective(REP,"red", "level.rya1.objectives.1"); -- The map objectives shown on the select unit screen. REP means it is shown to the Clones, red doesn't really mean anything, and "level.rya1..." is the language key displayed. (Don't ask about language keys in this topic)
AddMissionObjective(REP,"orange", "level.rya1.objectives.2");
AddMissionObjective(REP,"orange", "level.rya1.objectives.3");
AddMissionObjective(CIS,"red", "level.rya1.objectives.1");
AddMissionObjective(CIS,"orange", "level.rya1.objectives.2");
AddMissionObjective(CIS,"orange","level.rya1.objectives.3");
--end objectives
--start soundlvl
ReadDataFile("sound\\tat.lvl;tat1cw"); -- loads the map-specific sound files. Unless you plan on recording a whole new sound set, this should work just fine for you
--end soundlvl

-- Start sidelvls
ReadDataFile("SIDE\\cis.lvl", -- load the data file for the droids
"cis_inf_basic", -- the main 4 troopers
"cis_inf_countdooku", -- plus the jedi
"cis_inf_droideka"); -- plus the 5th trooper
ReadDataFile("SIDE\\rep.lvl", -- same as above but for clones
"rep_inf_basic",
"rep_inf_macewindu",
"rep_inf_jet_trooper");
--end sidelvls
--start loadouts
SetTeamName(CIS, "CIS") -- Sets the name of the team
SetTeamIcon(CIS, "cis_icon") -- Sets the icon used for the team
AddUnitClass(CIS, "cis_inf_battledroid",10) -- Adds the unit to the troop options. CIS means it's a droid, "cis_inf..." is which unit it is, and the number is how many of them are on the field as AI
AddUnitClass(CIS, "cis_inf_assault",1)
AddUnitClass(CIS, "cis_inf_pilotdroid",2)
AddUnitClass(CIS, "cis_inf_assassindroid",2)
AddUnitClass(CIS, "cis_inf_droideka",1)
SetHeroClass(CIS, "cis_inf_countdooku") -- Adds the jedi unit. Basically same as above
SetTeamName(REP, "Republic") -- See above but for clones
SetTeamIcon(REP, "rep_icon")
AddUnitClass(REP, "rep_inf_clone_trooper",10)
AddUnitClass(REP, "rep_inf_arc_trooper",1)
AddUnitClass(REP, "rep_inf_clone_pilot",2)
AddUnitClass(REP, "rep_inf_clone_sharpshooter",2)
AddUnitClass(REP, "rep_inf_jet_trooper",1)
SetHeroClass(REP, "rep_inf_macewindu")
--end loadouts
--start teamstats
SetUnitCount(ATT, 16) -- Number of AI on the field at once in SP. Ignored in MP
SetReinforcementCount(ATT, 200) -- Number of reinforcements
SetUnitCount(DEF, 16) -- See above
SetReinforcementCount(DEF, 200)
--end teamstats
--start alliances
SetTeamAsFriend(ATT, 1) -- AI stuff. No need to change unless adding natives
SetTeamAsEnemy(ATT, 2)
SetTeamAsFriend(DEF, 2)
SetTeamAsEnemy(DEF, 1)
SetAttackingTeam(ATT);
--end alliances

--start memorypools
ClearWalkers() -- Reset defaults on memory
AddWalkerType(0, 4)-- special -> droidekas -- Allocates the memory for a walker (AT-TE etc). First number is pairs of legs. 0 means droideka. Second number MUST be equal to number on the field at any one time. Not sure if it is adjusted when humans use dekas
AddWalkerType(1, 4)-- 1x2 (1 pair of legs) -- see above
AddWalkerType(2, 0)-- 2x2 (2 pairs of legs)
AddWalkerType(3, 0)-- 3x2 (3 pairs of legs)
SetMemoryPoolSize("PowerupItem", 60) -- Allocates the memory for other items. Not making a full list of options. First is entity type, second is max on the field at once
SetMemoryPoolSize("EntityMine", 40)
--end memorypools
--start worldlvl
ReadDataFile("dc:rya1\\rya1.lvl") -- Read in the actual map.
--end worldlvl
--start spawndelay
SetSpawnDelay(10.0, 0.25) -- Max and Min spawn delay, respectively
--end spawndelay
--start flyheight
--end flyheight
--start ainotify
--end ainotify
--start stayinturrets
--end stayinturrets
--start denseenvironment
SetDenseEnvironment("false") -- Changes some rendering options. Set to true on maps like endor
--end denseenvironment
--start birdsandfish
--end birdsandfish
--start deathregions
AddDeathRegion("deathregion") -- added this to the file because of importance. Any region you add in Zeroeditor that you want people to die in upon entry must have a copy of this
--end deathregions

--start soundconfig
OpenAudioStream("sound\\tat.lvl","tatcw_music"); -- Load the audio from an LVL file. first argument is the path to the file, second is the audio stream in the file
OpenAudioStream("sound\\tat.lvl","tat1");
OpenAudioStream("sound\\tat.lvl","tat1");
OpenAudioStream("sound\\cw.lvl","cw_vo");
OpenAudioStream("sound\\cw.lvl","cw_tac_vo");
OpenAudioStream("sound\\tat.lvl","tat1_emt");
SetBleedingVoiceOver(CIS,CIS,"cis_off_com_report_us_overwhelmed",1); -- Sound to play when a team has 2 CPs or less. First argument is the team to play it for, second is what team must have the low CP count, 3rd is the name of the audio entry in one of the streams listed above, and I need help with the 4th
SetBleedingVoiceOver(CIS,REP,"cis_off_com_report_enemy_losing",1);
SetBleedingVoiceOver(REP,CIS,"rep_off_com_report_enemy_losing",1);
SetBleedingVoiceOver(REP,REP,"rep_off_com_report_us_overwhelmed",1);
SetLowReinforcementsVoiceOver(CIS, CIS, "cis_off_defeat_im", .1,1);-- Same format as above, plays when there are less than 20 reinforcements left for a team
SetLowReinforcementsVoiceOver(CIS, REP, "cis_off_victory_im", .1,1);
SetLowReinforcementsVoiceOver(REP, REP, "rep_off_defeat_im", .1,1);
SetLowReinforcementsVoiceOver(REP, CIS, "rep_off_victory_im", .1,1);
SetOutOfBoundsVoiceOver(2,"Allleaving"); -- Sound to play when a player goes out of bounds. First is the team ID, second is the audio name
SetOutOfBoundsVoiceOver(1,"Impleaving");
SetAmbientMusic(CIS,1.0,"cis_tat_amb_start",0,1);-- Backround music to be played throughout the game. First is the team to play it for, second is the percentage of reinforcements remaining to start the music, 3rd is the audio name, and 4th and 5th I don't know
SetAmbientMusic(CIS,0.99,"cis_tat_amb_middle",1,1);
SetAmbientMusic(CIS,0.1,"cis_tat_amb_end",2,1);
SetAmbientMusic(REP,1.0,"rep_tat_amb_start",0,1);
SetAmbientMusic(REP,0.99,"rep_tat_amb_middle",1,1);
SetAmbientMusic(REP,0.1,"rep_tat_amb_end",2,1);
SetVictoryMusic(CIS,"cis_tat_amb_victory");-- Music to play on Victory/Defeat. You should know the format by now
SetDefeatMusic (CIS,"cis_tat_amb_defeat");
SetVictoryMusic(REP,"rep_tat_amb_victory");
SetDefeatMusic (REP,"rep_tat_amb_defeat");
SetSoundEffect("ScopeDisplayZoomIn","binocularzoomin");-- Sets up a sound effect. First is the event for the effect, second is the audio name
SetSoundEffect("ScopeDisplayZoomOut","binocularzoomout");
SetSoundEffect("SpawnDisplayUnitChange","shell_select_unit");
SetSoundEffect("SpawnDisplayUnitAccept","shell_menu_enter");
SetSoundEffect("SpawnDisplaySpawnPointChange","shell_select_change");
SetSoundEffect("SpawnDisplaySpawnPointAccept","shell_menu_enter");
SetSoundEffect("SpawnDisplayBack","shell_menu_exit");
SetPlanetaryBonusVoiceOver(REP,REP,0,"rep_bonus_rep_medical");-- Sound to play when a planetary bonus is activated in Galactic Conquest. First is the team to play it for, second is the team who got the bonus, 3rd is the bonus id, and 4th is the audio name
SetPlanetaryBonusVoiceOver(REP,CIS,0,"rep_bonus_cis_medical");
SetPlanetaryBonusVoiceOver(REP,REP,1,"");
SetPlanetaryBonusVoiceOver(REP,CIS,1,"");
SetPlanetaryBonusVoiceOver(REP,REP,2,"rep_bonus_rep_sensors");
SetPlanetaryBonusVoiceOver(REP,CIS,2,"rep_bonus_cis_sensors");
SetPlanetaryBonusVoiceOver(REP,REP,3,"rep_bonus_rep_hero");
SetPlanetaryBonusVoiceOver(REP,CIS,3,"rep_bonus_cis_hero");
SetPlanetaryBonusVoiceOver(REP,REP,4,"rep_bonus_rep_reserves");
SetPlanetaryBonusVoiceOver(REP,CIS,4,"rep_bonus_cis_reserves");
SetPlanetaryBonusVoiceOver(REP,REP,5,"rep_bonus_rep_sabotage");--sabotage
SetPlanetaryBonusVoiceOver(REP,CIS,5,"rep_bonus_cis_sabotage");
SetPlanetaryBonusVoiceOver(REP,REP,6,"");
SetPlanetaryBonusVoiceOver(REP,CIS,6,"");
SetPlanetaryBonusVoiceOver(REP,REP,7,"rep_bonus_rep_training");--advanced training
SetPlanetaryBonusVoiceOver(REP,CIS,7,"rep_bonus_cis_training");--advanced training
SetPlanetaryBonusVoiceOver(CIS,CIS,0,"cis_bonus_cis_medical");
SetPlanetaryBonusVoiceOver(CIS,REP,0,"cis_bonus_rep_medical");
SetPlanetaryBonusVoiceOver(CIS,CIS,1,"");
SetPlanetaryBonusVoiceOver(CIS,REP,1,"");
SetPlanetaryBonusVoiceOver(CIS,CIS,2,"cis_bonus_cis_sensors");
SetPlanetaryBonusVoiceOver(CIS,REP,2,"cis_bonus_rep_sensors");
SetPlanetaryBonusVoiceOver(CIS,CIS,3,"cis_bonus_cis_hero");
SetPlanetaryBonusVoiceOver(CIS,REP,3,"cis_bonus_rep_hero");
SetPlanetaryBonusVoiceOver(CIS,CIS,4,"cis_bonus_cis_reserves");
SetPlanetaryBonusVoiceOver(CIS,REP,4,"cis_bonus_rep_reserves");
SetPlanetaryBonusVoiceOver(CIS,CIS,5,"cis_bonus_cis_sabotage");--sabotage
SetPlanetaryBonusVoiceOver(CIS,REP,5,"cis_bonus_rep_sabotage");
SetPlanetaryBonusVoiceOver(CIS,CIS,6,"");
SetPlanetaryBonusVoiceOver(CIS,REP,6,"");
SetPlanetaryBonusVoiceOver(CIS,CIS,7,"cis_bonus_cis_training");--advanced training
SetPlanetaryBonusVoiceOver(CIS,REP,7,"cis_bonus_rep_training");--advanced training
--end soundconfig

--start activebonus
--end activebonus

--start camerashots
AddCameraShot(-0.404895, 0.000992, -0.914360, -0.002240, -85.539894, 20.536297, 141.699493);-- Adds a camera location to see during the spawn timer. freecam in SPTest can tell you the values for this (use fake console to get camera coordinates)
AddCameraShot(0.040922, 0.004049, -0.994299, 0.098381, -139.729523, 17.546598, -34.360893);
AddCameraShot(-0.312360, 0.016223, -0.948547, -0.049263, -217.381485, 20.150953, 54.514324);
--end camerashots

--start footer
end -- Pass control back to the main game
--end footer


A few important notes:

ALL paths to files MUST use double slashes!!!! The game will go wacky if you don't use them

To access files specific to your mod, prefix the path to an lvl with "dc:". Without that, it will go to the main _lvl_pc folder under GameData

Advanced LUA coming soon!

Viruses are like the New York Lottery. "Hey, you never know"

Quotelocal CIS = 1 -- Script constants. Best not to touch these
local REP = 2
local ATT = 1
local DEF = 2

If I am not mistaken, 1 represents the attacking team, 2 represents the defending team. With that said, don't touch them.


#TYBG

Yeah, 1 attack, 1 defend. I never really understood why LA made that distinction. I don't think it affects the AI that much. Perhaps it decides which team gets the odd player in MP games :P

Viruses are like the New York Lottery. "Hey, you never know"

Perhaps for who spawns in which CP. (They could have made a last minute switch of CPs.)


#TYBG

Yeah, but why would they have had both ATK and DEF as well as REP and CIS?

Viruses are like the New York Lottery. "Hey, you never know"

Because of the way CPs and scripting is handled.

Some functions require you to specify either the attacking team or the defending team. That whole thing there is telling the game which side is ATK and DEF so that scripting functions can be handled.

At least, that's my understanding.


(•̪●)=ε/̵͇̿̿/'̿'̿ ̿ ̿̿ ̿ ̿"" (-_-*)

Right, but my point is since ATK and CIS mean the same thing, why do the scipters make 2 variables. It would be much simpler if they just did something like "SetAttackingTeam(CIS)" instead of using ATK.

Viruses are like the New York Lottery. "Hey, you never know"

I always use ATK and DEF and change them around, it's useful if you seet up all your CP's, but you set them up for the wrong team, instead of going into ZE and manually change every single CP team, just go into the LUA's and change some numbers.

Rawr.

(Only suggestion is to spend a huge amount of time maybe making the formatting a bit like ag's one, would be a nice bit of continuity.)

[mod]Stickied[/mod]



Sure thing. I just didn't have time to do that when writing this :)

Viruses are like the New York Lottery. "Hey, you never know"

guide finished and colored!

Viruses are like the New York Lottery. "Hey, you never know"

Haha, the color scheme is the same as the ODF Guide.
Nice job on the LUA guide Pi.


#TYBG

As I suggested ag, nice to have a bit of continuity ;)



I have yet to make certain but the executeable seems to contain all known LUA function names.
In Progress:
--Star Wars: Battlefront - Anniversary Edition (formerly Star Wars: Battlefront - Legacy Edition)
--Endor: Imperial Base

On Hold:
--Star Wars Battlefront: Elite Squadron For SWBF1

Okay, here's everything I turned up out of the executeable with regards to the LUA coding in BF1. Please be aware these are mostly untested, and I think some are not even LUA, but because of the ordering of the exe they have been included between LUA codes.

SetDefeatMovie 
SetVictoryMovie
ScriptCB_SetHistoricalRulesOn   
ScriptCB_AreHistoricalRulesOn   
ScriptCB_SetAIDifficulty   
ScriptCB_SetCanSwitchSides 
ScriptCB_SetMetagameRulesOn
ScriptCB_AreMetagameRulesOn
ScriptCB_MetagameSetBonus   
ScriptCB_DeleteSavedMetagameState   
ScriptCB_SetLastBattleVictoryValid 
ScriptCB_GetLastBattleVictory   
ScriptCB_DoesMetagameExistOnCardSplitScreen
ScriptCB_GetSavedMetagameListSplitScreen   
ScriptCB_DoesMetagameExistOnCard   
ScriptCB_StartNewMetagame   
ScriptCB_GetSavedMetagameList   
ScriptCB_SetMetagameTeams   
ScriptCB_SetSPProgress 
ScriptCB_GetSPProgress 
ScriptCB_SaveSPState 
ScriptCB_IsSPStateSaved
ScriptCB_IsMetagameStateSaved   
ScriptCB_LoadMetagameState 
ScriptCB_SaveMetagameState
ScriptCB_UnlockUnlockable   
ScriptCB_UnlockableState   
GetMultisamplingModeDescription
GetNumMultisamplingQualityModes
GetMaxMultisamplingModeForScreenSize   
GetMaxScreenSizeForMultisamplingMode   
IsMultisamplingModeSupported   
IsMultisamplingModeForcedFromDriver
IsVideoModeSupported   
ScriptCB_SetProfileJoinIP   
ScriptCB_GetProfileJoinIP   
ScriptCB_IsPCVideoFixedFunction
ScriptCB_SetPCBrightnessContrast   
ScriptCB_SetPCVideoOptions 
ScriptCB_GetAutodetectPCVideoOptions   
ScriptCB_GetPCVideoOptions 
ScriptCB_GetIdealResolution
ScriptCB_SetResolution 
ScriptCB_FillMultisampleTable   
ScriptCB_FillResolutionTable   
ScriptCB_SetJoystickEnabled
ScriptCB_IsJoystickEnabled 
ScriptCB_SetMouseSensitivity   
ScriptCB_GetJoySensitivity 
ScriptCB_GetMouseSensitivity   
ScriptCB_SetMetaAllMapsOn   
ScriptCB_IsMetaAllMapsOn   
ScriptCB_GetControlMode
ScriptCB_SetControlMode
ScriptCB_ResetToolTips 
ScriptCB_PrevToolTipState   
ScriptCB_NextToolTipState   
ScriptCB_IsToolTipAuto 
ScriptCB_IsToolTipOn   
ScriptCB_SetHeroesOn   
ScriptCB_AreHeroesOn   
ScriptCB_SetFriendlyFire   
ScriptCB_GetFriendlyFire   
ScriptCB_SetAutoAimOn   
ScriptCB_IsAutoAimOn   
ScriptCB_SetRumbleOn   
ScriptCB_IsRumbleOn
ScriptCB_SetHorizontalSplitScreen   
ScriptCB_IsHorizontalSplitScreen   
ScriptCB_SetFirstPersonView
ScriptCB_IsFirstPersonView 
ScriptCB_ResetSoundToDefault   
ScriptCB_ResetGameOptionsToDefault 
ScriptCB_ResetControlsToDefault
ScriptCB_SetControlScale   
ScriptCB_GetControlScale   
ScriptCB_SetYAxisFlip   
ScriptCB_GetYAxisFlip   
ScriptCB_SetFunctionIdForAnalogId   
ScriptCB_GetFunctionIdForAnalogId   
ScriptCB_SetFunctionIdForButtonId   
ScriptCB_GetFunctionIdForButtonId   
ScriptCB_UpdateScreen   
ScriptCB_GetBuildStr   
ScriptCB_GetTeamName   
ScriptCB_PersonalStatsSetTitles
ScriptCB_TeamStatsSetTitles
ScriptCB_TeamStatsGetTeamColor 
ScriptCB_TeamStatsGetTeam1 
ScriptCB_TeamStatsValidatePos   
ScriptCB_GetAwardStats 
ScriptCB_GetPersonalStats   
ScriptCB_SetTeamStatsSortMode   
ScriptCB_GetTeamstats   
ScriptCB_ClientGotStats
ScriptCB_Freecamera
ScriptCB_GetMissionTime
ScriptCB_CheckPlayerListDone   
ScriptCB_ResetSkipToPlayerList 
ScriptCB_SkipToPlayerList   
ScriptCB_Unpause   
ScriptCB_QuitFromStats 
ScriptCB_QuitToWindows 
ScriptCB_QuitToShell   
ScriptCB_Reboot
ScriptCB_GetPausingViewport
ScriptCB_RestartMission
ScriptCB_LaunchDemo
ScriptCB_EnterMission   
ScriptCB_CheckMouseMark
ScriptCB_ResetMouseMark
ScriptCB_SetMouseMark   
ScriptCB_HideDownloadableContent   
ScriptCB_SetDCMap   
ScriptCB_GetDifficulty 
ScriptCB_SetDifficulty 
ScriptCB_SetPlayerSide 
ScriptCB_IsUniqueLoginName 
ScriptCB_GetUniqueLoginName
ScriptCB_TrimLoginName 
ScriptCB_Logout
ScriptCB_GetProfileName
ScriptCB_GetCurrentProfileName 
ScriptCB_GetCurrentProfileNetName   
ScriptCB_IsPlayerLoggedIn
ScriptCB_SwapActiveProfileSlots
ScriptCB_AddProfile
ScriptCB_GetLoginList   
ScriptCB_CheckIfOkToExitMemoryMode 
ScriptCB_SetMemoryProfileMode   
ScriptCB_InMemoryProfileMode   
ScriptCB_DoesProfileExistOnCard
ScriptCB_StartDeleteMetagameSplitScreen
ScriptCB_StartSaveMetagameSplitScreen   
ScriptCB_StartLoadMetagameSplitScreen   
ScriptCB_CheckMemoryCardMark   
ScriptCB_MarkMemoryCard
ScriptCB_StartDeleteMetagame   
ScriptCB_IsCurrentMetagame 
ScriptCB_StartSaveMetagame 
ScriptCB_StartLoadMetagame 
ScriptCB_StartSaveProfile   
ScriptCB_StartDeleteProfile
ScriptCB_ReloadMarkedProfile   
ScriptCB_MarkCurrentProfile
ScriptCB_StartLoadProfile   
ScriptCB_StartPreOp
ScriptCB_StartInitialMemcardCheck   
ScriptCB_DoInitialMemcardCheck 
ScriptCB_ShowMultipageText 
ScriptCB_IndexMultipageText
ScriptCB_DoneCheckPatch
ScriptCB_ShouldCheckPatch   
ScriptCB_SetHasSeenDNASEULA
ScriptCB_HasSeenDNASEULA   
ScriptCB_DoneCheckDNAS 
ScriptCB_ShouldCheckDNAS   
ScriptCB_LoadSavePopupResult   
ScriptCB_SetProfileNotDirty
ScriptCB_IsProfileDirty
ScriptCB_IsCurProfileDirty 
ScriptCB_ShouldShowDemoPostscreen   
ScriptCB_ShouldShowLegal   
ScriptCB_GetQuitPlayer 
ScriptCB_SetQuitPlayer 
ScriptCB_WasSplitscreen
ScriptCB_IsSplitscreen 
ScriptCB_SetSplitscreen
ScriptCB_GetAutoNetScript   
ScriptCB_SetupAutoNetIsLan 
ScriptCB_SetupAutoNetMissions   
ScriptCB_GetAutoGetPlayerCount 
ScriptCB_GetAutoNetGameName
ScriptCB_GetAutoNetIsDedicated 
ScriptCB_ReadLeftstick 
ScriptCB_GetNumControllers 
ScriptCB_SetIgnoreControllerRemoval
ScriptCB_UnbindController   
ScriptCB_ReadAllControllers
ScriptCB_SetAutoAcquireControllers 
ScriptCB_GetShellActive
ScriptCB_GetDateStr
ScriptCB_random
ScriptCB_srand 
ScriptCB_ustrupper 
ScriptCB_usprintf   
ScriptCB_getlocalizestr
ScriptCB_UnicodeStrCat 
ScriptCB_ununicode 
ScriptCB_tounicode 
ScriptCB_GetMaxMissionQueue
ScriptCB_SetMissionNames   
ScriptCB_SetTeamNames   
ScriptCB_IsLegalGamespyString   
ScriptCB_GetVKeyboardCharacter 
ScriptCB_FormatTimeString   
ScriptCB_GetLanguage   
ScriptCB_GetPlatform   
ScriptCB_DoFile Team2
Team1   
Side
Map
Attract
mode
fs_opt_pcvideo_reslistbox_contents
ifs_opt_pcvideo_fsaalistbox_contents
memslot
showstr
ifs_saveop_InitialMemcardCheckDone 
ifs_saveop_PreOpDone   
ifs_saveop_LoadProfileDone 
ifs_saveop_DeleteProfileDone   
ifs_saveop_SaveProfileDone 
ifs_saveop_LoadMetagameDone
ifs_saveop_SaveMetagameDone
ifs_saveop_DeleteMetagameDone   
isCurrent   
datestr
filename   
namestr contentsstr
labelustr   
contentsustr
ColorB 
ColorG 
ColorR 
val3str
val2str
val1str
fix MP stats   
teamstats_listbox_contentsR
teamstats_listbox_contentsL
com_icon_CIS   
com_icon_imperial   
com_icon_alliance   
com_icon_republic   
ifs_teamstats.RightModel 
ifs_teamstats.LeftModel
ifs_teamstats.RightList.Title   
ifs_teamstats.LeftList.Title
ifs_personalstats.IconModel
stats_listbox_contents   
ifs_awardstats_seticonstartside
ifs_awardstats.IconModels.%d.model
ScriptCB_EnableCursor   
ScriptCB_ResetControl   
ScriptCB_SetBinding
ScriptCB_GetKeyBoardCmds   
ScriptCB_DoConsoleCmd
ScriptCB_GetConsoleCmds
ScriptCB_IFModel_SetLighting   
ScriptCB_SetSunlight   
ScriptCB_ResetLeaderBoardPlayerData
ScriptCB_CancelLeaderBoardPlayerData   
ScriptCB_DownloadLeaderBoardData   
ScriptCB_LeaderBoardDownloadDone   
ScriptCB_GetLeaderBoardPlayerData   
ScriptCB_GetSafeScreenInfo 
ScriptCB_GetScreenInfo 
ScriptCB_GetErrorLevel 
ScriptCB_CloseErrorBox 
ScriptCB_OpenErrorBox
ScriptCB_IsPropertyPlayingNow   
ScriptCB_SetMovieAudioBus   
ScriptCB_StopMovie 
ScriptCB_AreMoviePropertiesPlaying 
ScriptCB_IsMoviePlaying
ScriptCB_PlayMovie 
ScriptCB_CloseMovie
ScriptCB_OpenMovie 
ScriptCB_SetIgnoreInputs   
ScriptCB_IsPopupOpen   
ScriptCB_IsErrorBoxOpen
ScriptCB_ClosePopup
ScriptCB_OpenPopup 
ScriptCB_PopScreen 
ScriptCB_PushScreen
ScriptCB_SetIFScreen   
ScriptCB_IFObj_SetUseSafezone   
ScriptCB_IFObj_SetScreenPosition   
ScriptCB_IFModel_SetOmegaY 
ScriptCB_IFModel_GetDepth   
ScriptCB_IFModel_SetDepth   
ScriptCB_IFModel_GetTranslation
ScriptCB_IFModel_SetTranslation
ScriptCB_IFModel_GetRotation   
ScriptCB_IFModel_SetRotation   
ScriptCB_IFModel_GetScale   
ScriptCB_IFModel_SetScale   
ScriptCB_IFModel_SetAnimation   
ScriptCB_IFModel_SetModel   
ScriptCB_IFMaskImage_GetMaskTexCoords   
ScriptCB_IFMaskImage_SetMaskTexCoords   
ScriptCB_IFMaskImage_SetMaskTexture
ScriptCB_IFImage_SetTexCoords   
ScriptCB_IFImage_GetTexCoords   
ScriptCB_IFImage_SetRect   
ScriptCB_IFImage_GetRect   
ScriptCB_IFImage_SetTexture
ScriptCB_IFFlashyText_StartFlashiness   
ScriptCB_IFFlashyText_SetBackgroundRightJustify
ScriptCB_IFFlashyText_SetBackgroundSize
ScriptCB_IFFlashyText_SetBackground
ScriptCB_IFFlashyText_SetTextColor 
ScriptCB_IFFlashyText_Setup
ScriptCB_IFText_GetLeading 
ScriptCB_IFText_SetLeading 
ScriptCB_IFText_SetTextStyle   
ScriptCB_IFText_GetDisplayRect 
ScriptCB_IFText_GetTextExtent   
ScriptCB_IFText_GetTextScaleY   
ScriptCB_IFText_GetTextScaleX
ScriptCB_IFText_SetTextScale   
ScriptCB_IFText_SetTextBreak   
ScriptCB_IFText_SetJustify 
ScriptCB_IFText_GetTextBox 
ScriptCB_IFText_SetTextBox 
ScriptCB_IFText_GetIntercharacterSpacing   
ScriptCB_IFText_SetIntercharacterSpacing   
ScriptCB_IFText_SetFont
ScriptCB_IFText_SetTextPosition
ScriptCB_IFText_SetUString 
ScriptCB_IFText_SetString   
ScriptCB_GetFontHeight 
ScriptCB_IFObj_RemoveHotSpot   
ScriptCB_IFObj_CreateHotSpot   
ScriptCB_IFObj_TestHotSpot 
ScriptCB_IFObj_MouseOver   
ScriptCB_IFObj_IsGroup 
ScriptCB_IFObj_IsEnabled   
ScriptCB_IFObj_Enable   
ScriptCB_IFObj_SendToBack
ScriptCB_IFObj_BringToFront
ScriptCB_IFObj_GetPosition 
ScriptCB_IFObj_GetWidthHeight   
ScriptCB_IFObj_GetVis   
ScriptCB_IFObj_GetZOrder   
ScriptCB_IFObj_GetColor
ScriptCB_IFObj_GetAlpha
ScriptCB_IFObj_GetPos   
ScriptCB_IFObj_SetRotation 
ScriptCB_IFObj_SetRelativeRotation 
ScriptCB_IFObj_SetBasicRotation
ScriptCB_IFObj_SetPosition 
ScriptCB_IFObj_SetWidthHeight   
ScriptCB_IFObj_SetVis   
ScriptCB_IFObj_SetZOrder   
ScriptCB_IFObj_SetColor
ScriptCB_IFObj_SetAlpha
ScriptCB_IFObj_SetPos   
ScriptCB_IFObj_GetCPointer 
ScriptCB_IsFileExist   
ScriptCB_IsPAL 
ScriptCB_EndIFScreen   
ScriptCB_SetIFScreenViewport   
ScriptCB_AddIFScreen   
ScriptCB_EndIFObj   
ScriptCB_AddIFContainer
ScriptCB_AddIFModel
ScriptCB_AddIFMaskImage
ScriptCB_AddIFImage
ScriptCB_AddIFFlashyText   
ScriptCB_AddIFText
ScriptCB_PlayerSuicide 
AddMissionObjective
SetAIVehicleNotifyRadius   
SetAIFormationRadius   
AddWalkerType   
ClearWalkers   
AddDeathRegion 
SetFishType
SetNumFishTypes
SetBirdFlockMinHeight   
SetBirdType
SetNumBirdTypes
SetMemoryPoolSize   
SetLevelModelMem   
SetEnemyTeamDifficultyHard 
SetEnemyTeamDifficultyMedium   
SetEnemyTeamDifficultyEasy 
SetEnemyTeamDifficulty 
SetPlayerTeamDifficultyHard
SetPlayerTeamDifficultyMedium   
SetPlayerTeamDifficultyEasy
SetPlayerTeamDifficulty
SetStayInTurrets   
SetDefenderSnipeRange   
SetAttackerSnipeRange   
SetDenseEnvironment
SetUrbanEnvironment
SetSpawnDelay   
SetCarrierClass AddBleedThreshold   
ActivateBonus   
SetHeroClass   
AddUnitClass   
SetReinforcementCount   
SetUnitCount    SetTeamAsFriend
SetTeamAsNeutral   
SetTeamAsEnemy 
SetTeamIcon
SetStationaryWaitTime   
SetAllowBlindJetJumps  SetMaxPlayerFlyHeight   
SetMinPlayerFlyHeight   
SetMaxFlyHeight
SetMinFlyHeight
SetTeamAggressiveness   SetTeamName
SetHistorical   
SetState   
SetCameraPosition   
SetCameraRotation   
AddCameraShot   
SetModelMemory ReadDataFileInGame 
ReadDataFile
false   
true   
EntityLight EntityDroideka  WalkerBlendUnit
WalkerBlend
WalkerLegPair   
EntityWalker   
ScriptCB_CanClientLeaveStats    ScriptCB_SetVoiceLocalEchoEnable   
ScriptCB_GetLobbyPlayerCount   
ScriptCB_ResetSkipToNTGUI   ScriptCB_GetSkipToNTGUIProfileName 
ScriptCB_SkipToNTGUI   
ScriptCB_GetFriendListIcon  ScriptCB_DoFriendAction
ScriptCB_GetFriendActions   
ScriptCB_GetFriendStateStr 
ScriptCB_UpdateFriends  ScriptCB_CancelFriends 
ScriptCB_BeginFriends   
ScriptCB_CheckForPatch 
ScriptCB_AllowSkipDNAS  ScriptCB_GetIPAddr 
ScriptCB_SetNoticeNoCable   
ScriptCB_IsNetCableIn   
ScriptCB_IsNetHWPresent ScriptCB_IsLeaveDone   
ScriptCB_CancelLeave   
ScriptCB_LaunchLeave   
ScriptCB_UpdateLeave    ScriptCB_BeginLeave
ScriptCB_IsJoinDone
ScriptCB_CancelJoin
ScriptCB_LaunchJoin
ScriptCB_UpdateJoin ScriptCB_BeginJoin 
ScriptCB_CanSupportMaxPlayers   
ScriptCB_IsBadNetworkConnection
ScriptCB_IsQuickmatchDone  ScriptCB_CancelQuickmatch   
ScriptCB_LaunchQuickmatch   
ScriptCB_UpdateQuickmatch   
ScriptCB_BeginJoinSpecial ScriptCB_BeginJoinIP   
ScriptCB_BeginQuickmatch   
ScriptCB_GetCmdlineLogin    ScriptCB_IsCmdlineJoinPending   
ScriptCB_IsSpecialJoinPending   
ScriptCB_GetDSSessionList   ScriptCB_CancelDSSessionList   
ScriptCB_LaunchDSSessionList   
ScriptCB_UpdateDSSessionList    ScriptCB_BeginDSSessionList
ScriptCB_PreviousHost   
ScriptCB_NextHost   
ScriptCB_SetSortOrder   ScriptCB_GetSortOrder   
ScriptCB_SetSessionSortMode
ScriptCB_GetSessionSortMode
ScriptCB_ApplyFilters   ScriptCB_GetExtraSessionInfo   
ScriptCB_GetSessionListPercent 
ScriptCB_IsSessionReady ScriptCB_GetSessionList
ScriptCB_PauseSessionList   
ScriptCB_CancelSessionList 
ScriptCB_LaunchSessionList  ScriptCB_UpdateSessionList 
ScriptCB_BeginSessionList   
ScriptCB_ClearPrevSessionId
ScriptCB_VoteOrNominate ScriptCB_VoteKick   
ScriptCB_LobbyAction   
ScriptCB_CancelLobby   
ScriptCB_LaunchLobby    ScriptCB_HasServerLaunched 
ScriptCB_UpdateLobby   
ScriptCB_BeginLobby
ScriptCB_TrackLoginErrors   ScriptCB_CancelLogin   
ScriptCB_StartLoginDedicatedServer 
ScriptCB_StartLogin
ScriptCB_IsLoginDone    ScriptCB_SetGSProfileInfo   
ScriptCB_GetGSProfileInfo   
ScriptCB_UpdateMPMetagame   
ScriptCB_BeginMPMetagame   ScriptCB_ClearError
ScriptCB_GetError   
ScriptCB_GetLatestError
ScriptCB_DownloadJournals   ScriptCB_EnablePlayback
ScriptCB_UploadJournals
ScriptCB_EnableJournal 
ScriptCB_GetConnectType ScriptCB_SetConnectType
ScriptCB_GetOnlineOpts 
ScriptCB_SetOnlineOpts 
ScriptCB_GetAutoAssignTeams ScriptCB_SetNetGameDefaults
ScriptCB_GetNetGameDefaults
ScriptCB_IsBootInvitePending   
ScriptCB_CloseNetShell ScriptCB_IsNetworkOn   
ScriptCB_OpenNetShell   
ScriptCB_GetAutoNetMode
ScriptCB_EndAutoNet ScriptCB_IsAutoNet 
ScriptCB_IsInShell 
ScriptCB_IsDedicated   
ScriptCB_SetDedicated   
ScriptCB_NetWasClient  ScriptCB_NetWasDedicatedQuit   
ScriptCB_NetWasDedicated   
ScriptCB_NetWasHost
ScriptCB_InNetSession   ScriptCB_InMultiplayer 
ScriptCB_SetInNetGame   
ScriptCB_InNetGame 
ScriptCB_GetLobbyPlayerFlags    ScriptCB_GetLobbyPlayerlist
ScriptCB_GetGameName   
ScriptCB_SetNumBots
ScriptCB_SetGameName    ScriptCB_SetHostLimit   
ScriptCB_GetAmHost 
ScriptCB_SetAmHost 
ScriptCB_SetNetLoginName    ScriptCB_GetOnlineService   
ScriptCB_AutoNetJoin   
friends_listbox_contents
ClearListbox   
mp_joinds_listbox_contents 
indexstr     
–Cgsfriends_listbox_layout   
StateIcon   
VoiceIcon 
launchflag 
fnFindReady
ListManager_fnMoveCursor(ifs_mp_sessionlist.listbox,mpsessionlist_listbox_layout)   
FirstShownIdx   
ifs_mp_joinds   
ScriptCB_GetVoiceEnable
ScriptCB_VoiceEnable   
ScriptCB_SoundDisable   
ScriptCB_SoundEnable   
ScriptCB_ShellPlayDelayedStream
ScriptCB_IsShellMusicPlaying   
ScriptCB_SetShellMusicInterval 
ScriptCB_SetShellMusic 
ScriptCB_PlayAuditionEffect
ScriptCB_GetBassManagement 
ScriptCB_SetBassManagement 
ScriptCB_GetMixConfigChanged   
ScriptCB_GetEAXVersion 
ScriptCB_NextMixConfig 
ScriptCB_PreviousMixConfig 
ScriptCB_GetMixConfig   
ScriptCB_NextOutputMode
ScriptCB_PreviousOutputMode
ScriptCB_GetOutputMode 
ScriptCB_HWSupport 
ScriptCB_ToggleEffects 
ScriptCB_EffectsEnabled
ScriptCB_SetVolumes
ScriptCB_GetVolumes
ScaleSoundParameter
SetOutOfBoundsVoiceOver
SetDefeatMusic 
SetVictoryMusic
SetAttackingTeam   
SetAmbientMusic
SetSoundEffect
SetLowReinforcementsVoiceOver   
ScriptCB_SetBleedingRepeatTime 
SetBleedingVoiceOver   
SetReservesVO   
SetPlanetaryBonusVoiceOver 
AudioStreamAppendSegments   
AudioStreamComplete
CloseAudioStream   
OpenAudioStream
StopAudioStream
PlayAudioStreamUsingProperties 
PlayAudioStream
ScriptCB_SndPlaySound   
ScriptCB_SndBusFadeAAdvancedTraining   
Regeneration   
Reinforcements 
SensorJam   
SneakAttack
Hero   
Sabotage   
endor   
hoth   
kamino 
geonosis   
naboo   
kashyyyk   
rhenvar
yavin   
tatooine   
bespin
bSetsBlockade   
aicontrol   
lastattack 
char   
icon   
shortname   
teamname2   
teamname   
Bonus2Votes
Bonus1Votes
SecretBaseVotes
AttackVotes
bBlockaded 
activatedthisturn   
destroyed   
pickorder   
charge 
owner2 
owner1 
mJoystickTeams 
mIsSplitscreen 
metagame_state_local   
mWonMaps3   
mWonMaps2   
mWonMaps1   
mWonMaps0   
teamsAreBackwards   
team2_charged   
team1_charged   
applyingbonus   
charge_meter_team2 
charge_meter_team1 
TimePerTurn
bSneakAttack   
pickplanet 
pickteam   
era
MaxTime
MaxTurn
CurTime
ShowedTurn1Intro   
ShowedTurn0Intro 
planets
team2   
team1   
metagame_state 
gBonus2
gBonus1
gBonusPlanet   
gAttackPlanet   
metagame_host_state
gBonus2Vote
gBonus1Vote
gBonusPlanetVote   
gAttackPlanetVote   
metagame_vote_state mEra   
classic new cw
ifs_meta_opts
In Progress:
--Star Wars: Battlefront - Anniversary Edition (formerly Star Wars: Battlefront - Legacy Edition)
--Endor: Imperial Base

On Hold:
--Star Wars Battlefront: Elite Squadron For SWBF1