Advertisement
shiremct

Add Weapons to Inventory

Sep 8th, 2018
1,185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Game Setup/Load Events
  2. static event OnLoadedSavedGame()
  3. {
  4.     ManageWeaponTemplates();
  5. }
  6.  
  7. static event InstallNewCampaign(XComGameState StartState)
  8. {
  9.     // Not needed here.
  10. }
  11.  
  12. static event OnLoadedSavedGameToStrategy()
  13. {
  14.     ManageWeaponTemplates();
  15. }
  16.  
  17. static event OnPostMission()
  18. {
  19.     ManageWeaponTemplates();
  20. }
  21.  
  22. // Add initial XPACK CV weapons to inventory if not already present
  23. static function ManageWeaponTemplates()
  24. {
  25.     local XComGameState                     NewGameState;
  26.     local XComGameStateHistory              History;
  27.     local XComGameState_HeadquartersXCom    XComHQ;
  28.     local X2ItemTemplateManager             ItemTemplateMgr;
  29.     local array<X2ItemTemplate>             CheckItemTemplates, AddItemTemplates;
  30.     local XComGameState_Item                NewItemState;
  31.     local int i;
  32.  
  33.     History = `XCOMHISTORY;
  34.     ItemTemplateMgr = class'X2ItemTemplateManager'.static.GetItemTemplateManager();
  35.     XComHQ = XComGameState_HeadquartersXCom(History.GetSingleGameStateObjectForClass(class'XComGameState_HeadquartersXCom'));
  36.  
  37.     // Check to see if the base items are in the HQ Inventory - if any are not, add them
  38.     CheckItemTemplates.AddItem(ItemTemplateMgr.FindItemTemplate('Bullpup_CV'));
  39.     CheckItemTemplates.AddItem(ItemTemplateMgr.FindItemTemplate('VektorRifle_CV'));
  40.  
  41.     for (i = 0; i < CheckItemTemplates.Length; ++i)
  42.     {
  43.         if(CheckItemTemplates[i] != none)
  44.         {
  45.             if (!XComHQ.HasItem(CheckItemTemplates[i]))
  46.             {
  47.                 AddItemTemplates.AddItem(CheckItemTemplates[i]);
  48.     }   }   }
  49.  
  50.     // If any items need to be added, create a new gamestate and add them
  51.     if (AddItemTemplates.length > 0)
  52.     {
  53.         NewGameState = class'XComGameStateContext_ChangeContainer'.static.CreateChangeState("LW2 Secondaries: Updating HQ Storage");
  54.         XComHQ = XComGameState_HeadquartersXCom(NewGameState.CreateStateObject(class'XComGameState_HeadquartersXCom', XComHQ.ObjectID));
  55.         NewGameState.AddStateObject(XComHQ);
  56.  
  57.         for (i = 0; i < AddItemTemplates.Length; ++i)
  58.         {
  59.             if(AddItemTemplates[i] != none)
  60.             {
  61.                 NewItemState = AddItemTemplates[i].CreateInstanceFromTemplate(NewGameState);
  62.                 NewGameState.AddStateObject(NewItemState);
  63.                 XComHQ.AddItemToHQInventory(NewItemState);
  64.         }   }
  65.            
  66.         History.AddGameStateToHistory(NewGameState);
  67.     }
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement