Advertisement
Guest User

Untitled

a guest
Oct 5th, 2019
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //  This is the Item State you equip on the soldier.
  2. InvItemState = FindReplacementItemForUnit(NewUnitState, InventoryItems[idx], XComHQ);
  3.  
  4. private static function XComGameState_Item FindReplacementItemForUnit(const XComGameState_Unit UnitState, const EquipmentInfo InventoryItem, const XComGameState_HeadquartersXCom XComHQ)
  5. {
  6.     local XComGameStateHistory  History;
  7.     local XComGameState_Item    ItemState;
  8.     local X2WeaponTemplate      WeaponTemplate;
  9.     local X2ArmorTemplate       ArmorTemplate;
  10.  
  11.     History = `XCOMHISTORY;
  12.     ItemState = XComGameState_Item(History.GetGameStateForObjectID(InventoryItem.EquipmentRef.ObjectID));
  13.  
  14.     //  This is a weapon
  15.     WeaponTemplate = X2WeaponTemplate(ItemState.GetMyTemplate());
  16.     if (WeaponTemplate != none)
  17.     {
  18.         WeaponTemplate = GetBestWeaponTemplateForUnit(UnitState, WeaponTemplate, XComHQ);
  19.         if (WeaponTemplate != none)
  20.         {
  21.             return XComHQ.GetItemByName(WeaponTemplate.DataName);
  22.         }
  23.     }
  24.     ArmorTemplate = X2ArmorTemplate(ItemState.GetMyTemplate());
  25.     if (ArmorTemplate != none)
  26.     {
  27.         ArmorTemplate = GetBestArmorTemplateForUnit(UnitState, ArmorTemplate, XComHQ);
  28.         if (ArmorTemplate != none)
  29.         {
  30.             return XComHQ.GetItemByName(ArmorTemplate.DataName);
  31.         }
  32.     }
  33.     return none;
  34. }
  35.  
  36. private static function X2WeaponTemplate GetBestWeaponTemplateForUnit(const XComGameState_Unit UnitState, const X2WeaponTemplate OrigWeaponTemplate, const XComGameState_HeadquartersXCom XComHQ)
  37. {
  38.     local XComGameStateHistory          History;
  39.     local XComGameState_Item            ItemState;
  40.     local StateObjectReference          ItemRef;
  41.     local X2WeaponTemplate              WeaponTemplate;
  42.     local X2WeaponTemplate              BestWeaponTemplate;
  43.     local int                           HighestTier;
  44.  
  45.     HighestTier = -999;
  46.     History = `XCOMHISTORY;
  47.     foreach XComHQ.Inventory(ItemRef)
  48.     {
  49.         ItemState = XComGameState_Item(History.GetGameStateForObjectID(ItemRef.ObjectID));
  50.         WeaponTemplate = X2WeaponTemplate(ItemState.GetMyTemplate());
  51.  
  52.         if (WeaponTemplate != none)
  53.         {
  54.             if (WeaponTemplate.WeaponCat == OrigWeaponTemplate.WeaponCat && WeaponTemplate.InventorySlot == OrigWeaponTemplate.InventorySlot)
  55.             {
  56.                 if (WeaponTemplate.Tier > HighestTier)
  57.                 {
  58.                     HighestTier = WeaponTemplate.Tier;
  59.                     BestWeaponTemplate = WeaponTemplate;
  60.                 }
  61.             }
  62.         }
  63.     }
  64.     return BestWeaponTemplate;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement