Advertisement
Guest User

Untitled

a guest
Dec 19th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // #######################################################################################
  2. // -------------------- COMMON ----------------------------------------------------
  3. // #######################################################################################
  4.  
  5. static function SetUpWeaponUpgrade(out X2WeaponUpgradeTemplate Template)
  6. {
  7.     Template.MutuallyExclusiveUpgrades = default.MUTUALLY_EXCLUSIVE_WEAPON_UPGRADES;
  8.  
  9.     Template.MaxQuantity = 1;
  10.  
  11.     Template.BlackMarketTexts = class'X2Item_DefaultUpgrades'.default.UpgradeBlackMarketTexts;
  12.     Template.CanApplyUpgradeToWeaponFn = static.CanApplyUpgradeToWeapon;
  13.  
  14.     if(class'X2Item_Underbarrel_Research'.default.REQUIRE_RESEARCH) Template.Requirements.RequiredTechs.AddItem('UnderbarrelWeapons');
  15. }
  16.  
  17. static function bool CanApplyUpgradeToWeapon(X2WeaponUpgradeTemplate UpgradeTemplate, XComGameState_Item Weapon, int SlotIndex)
  18. {
  19.     local array<X2WeaponUpgradeTemplate> AttachedUpgradeTemplates;
  20.     local X2WeaponUpgradeTemplate AttachedUpgrade;
  21.     local int iSlot;
  22.     local WeaponSocketStruct        WeaponName;
  23.  
  24.     AttachedUpgradeTemplates = Weapon.GetMyWeaponUpgradeTemplates();
  25.  
  26.     foreach AttachedUpgradeTemplates(AttachedUpgrade, iSlot)
  27.     {
  28.         // Slot Index indicates the upgrade slot the player intends to replace with this new upgrade
  29.         if (iSlot == SlotIndex)
  30.         {
  31.             // The exact upgrade already equipped in a slot cannot be equipped again
  32.             // This allows different versions of the same upgrade type to be swapped into the slot
  33.             if (AttachedUpgrade == UpgradeTemplate)
  34.             {
  35.                 return false;
  36.             }
  37.         }
  38.         else if (UpgradeTemplate.MutuallyExclusiveUpgrades.Find(AttachedUpgrade.DataName) != INDEX_NONE)
  39.         {
  40.             // If the new upgrade is mutually exclusive with any of the other currently equipped upgrades, it is not allowed
  41.             return false;
  42.         }
  43.     }
  44.     foreach class'X2DownloadableContentInfo_WOTCUnderbarrelAttachments'.default.WEAPONS_TO_ADD_ATTACHMENTS(WeaponName)
  45.     {
  46.         if(Weapon.GetMyTemplate().DataName == WeaponName.TEMPLATE) return true;
  47.     }
  48.  
  49.     return false;
  50. }
  51.  
  52. // #######################################################################################
  53. // -------------------- UBGL ----------------------------------------------------
  54. // #######################################################################################
  55.  
  56. static function X2DataTemplate Create_UBGL_Conv()
  57. {
  58.     local X2WeaponUpgradeTemplate Template;
  59.     local ArtifactCost              Resources;
  60.     local WeaponSocketStruct        WeaponName;
  61.     local name SocketName;
  62.  
  63.     `CREATE_X2TEMPLATE(class'X2WeaponUpgradeTemplate', Template, 'UBGL_Conv');
  64.  
  65.     SetUpWeaponUpgrade(Template);
  66.     class'X2Item_DefaultUpgrades'.static.SetUpTier1Upgrade(Template);
  67.  
  68.     Template.BonusAbilities.AddItem('Fire_UBGL_Conv');
  69.     //
  70.     //Template.BonusAbilities.AddItem('Fire_UBGL_Beam');
  71.     //Template.BonusAbilities.AddItem('Reload_UBGL');
  72.     Template.BonusAbilities.AddItem('UBGL_Passive');
  73.     Template.BonusAbilities.AddItem('VolatileMix_UBGL');
  74.  
  75.     Template.strImage = "img:///Underbarrel.UI.UBGL_Conv_inv";
  76.  
  77.     if(default.HIDE_PREVIOUS_TIERS) Template.HideIfResearched = 'AutopsyMuton';
  78.  
  79.     Template.Requirements.RequiredEngineeringScore = default.CONVENTIONAL_ENGINEERING_SCORE;
  80.     Template.Requirements.bVisibleIfPersonnelGatesNotMet = true;
  81.  
  82.     Template.CanBeBuilt = true;
  83.     Template.ItemCat = 'weapon';
  84.  
  85.     Resources.ItemTemplateName = 'Supplies';
  86.     Resources.Quantity = default.CONVENTIONAL_UBGL_SUPPLY_COST;
  87.     Template.Cost.ResourceCosts.AddItem(Resources);
  88.  
  89.     //  Weapon attachment settings
  90.     foreach class'X2DownloadableContentInfo_WOTCUnderbarrelAttachments'.default.WEAPONS_TO_ADD_ATTACHMENTS(WeaponName)
  91.     {
  92.         Template.AddUpgradeAttachment('underbarrel', 'UIPawnLocation_WeaponUpgrade_AssaultRifle_Suppressor', "Underbarrel.Meshes.SM_UBGL_Conv", "", WeaponName.TEMPLATE, , "img:///Underbarrel.UI.UBGL_Conv", "img:///Underbarrel.UI.UBGL_Conv_inv", "img:///Underbarrel.UI.Inv_weaponIcon_UBGL");
  93.        
  94.         foreach WeaponName.SOCKETS_TO_HIDE(SocketName)
  95.         {
  96.             Template.AddUpgradeAttachment(SocketName, 'UIPawnLocation_WeaponUpgrade_AssaultRifle_Suppressor', "", "", WeaponName.TEMPLATE, , , , );
  97.         }
  98.     }
  99.     return Template;
  100. }
  101.  
  102.  
  103. static function X2DataTemplate Create_UBGL_Mag()
  104. {
  105.     local X2WeaponUpgradeTemplate   Template;
  106.     local ArtifactCost              Resources;
  107.     local WeaponSocketStruct        WeaponName;
  108.     local name SocketName;
  109.  
  110.     `CREATE_X2TEMPLATE(class'X2WeaponUpgradeTemplate', Template, 'UBGL_Mag');
  111.  
  112.     //  Generic settings
  113.     SetUpWeaponUpgrade(Template);
  114.     class'X2Item_DefaultUpgrades'.static.SetUpTier2Upgrade(Template);
  115.  
  116.     Template.BonusAbilities.AddItem('Fire_UBGL_Mag');
  117.     Template.BonusAbilities.AddItem('UBGL_Passive');
  118.     //Template.BonusAbilities.AddItem('Reload_UBGL');
  119.     Template.BonusAbilities.AddItem('VolatileMix_UBGL');
  120.  
  121.     Template.strImage = "img:///Underbarrel.UI.UBGL_Mag_inv";
  122.  
  123.     //  Engineering schematic settings
  124.     if(default.HIDE_PREVIOUS_TIERS) Template.HideIfResearched = default.TECH_REQUIRED_FOR_BEAM_UBGL[0];
  125.  
  126.     //Template.Requirements.RequiredTechs.AddItem('MagnetizedWeapons');
  127.     Template.Requirements.RequiredTechs.AddItem('AutopsyMuton');
  128.     Template.Requirements.RequiredEngineeringScore = default.MAGNETIC_ENGINEERING_SCORE;
  129.     Template.Requirements.bVisibleIfPersonnelGatesNotMet = true;
  130.  
  131.     Template.BaseItem = 'UBGL_Conv';
  132.     Template.CreatorTemplateName = 'GrenadeLauncher_MG_Schematic';
  133.     Template.CanBeBuilt = true;
  134.     Template.ItemCat = 'weapon';
  135.  
  136.     Resources.ItemTemplateName = 'Supplies';
  137.     Resources.Quantity = default.MAGNETIC_UBGL_SUPPLY_COST;
  138.     Template.Cost.ResourceCosts.AddItem(Resources);
  139.  
  140.     Resources.ItemTemplateName = 'AlienAlloy';
  141.     Resources.Quantity = default.MAGNETIC_UBGL_ALLOY_COST;
  142.     Template.Cost.ResourceCosts.AddItem(Resources);
  143.  
  144.     //  Weapon attachment settings
  145.     foreach class'X2DownloadableContentInfo_WOTCUnderbarrelAttachments'.default.WEAPONS_TO_ADD_ATTACHMENTS(WeaponName)
  146.     {
  147.         Template.AddUpgradeAttachment('underbarrel', 'UIPawnLocation_WeaponUpgrade_AssaultRifle_Suppressor', "Underbarrel.Meshes.SM_UBGL_Mag", "", WeaponName.TEMPLATE, , "img:///Underbarrel.UI.UBGL_Mag", "img:///Underbarrel.UI.UBGL_Mag_inv", "img:///Underbarrel.UI.Inv_weaponIcon_UBGL");
  148.        
  149.         foreach WeaponName.SOCKETS_TO_HIDE(SocketName)
  150.         {
  151.             Template.AddUpgradeAttachment(SocketName, 'UIPawnLocation_WeaponUpgrade_AssaultRifle_Suppressor', "", "", WeaponName.TEMPLATE, , , , );
  152.         }
  153.     }
  154.    
  155.     return Template;
  156. }
  157.  
  158. static function X2DataTemplate Create_UBGL_Beam()
  159. {
  160.     local X2WeaponUpgradeTemplate   Template;
  161.     local WeaponSocketStruct        WeaponName;
  162.     local ArtifactCost              Resources;
  163.     local name SocketName;
  164.  
  165.     `CREATE_X2TEMPLATE(class'X2WeaponUpgradeTemplate', Template, 'UBGL_Beam');
  166.  
  167.     //  Generic settings
  168.     SetUpWeaponUpgrade(Template);
  169.     class'X2Item_DefaultUpgrades'.static.SetUpTier3Upgrade(Template);
  170.     Template.strImage = "img:///Underbarrel.UI.UBGL_Beam_inv";
  171.  
  172.     Template.BonusAbilities.AddItem('Fire_UBGL_Beam');
  173.     Template.BonusAbilities.AddItem('UBGL_Passive');
  174.     //Template.BonusAbilities.AddItem('Reload_UBGL');
  175.     Template.BonusAbilities.AddItem('VolatileMix_UBGL');
  176.     //  Engineering schematic settings
  177.     Template.BaseItem = 'UBGL_Mag';
  178.    
  179.     foreach default.TECH_REQUIRED_FOR_BEAM_UBGL(SocketName) Template.Requirements.RequiredTechs.AddItem(SocketName);
  180.    
  181.     Template.Requirements.RequiredEngineeringScore = default.BEAM_ENGINEERING_SCORE;
  182.     Template.Requirements.bVisibleIfPersonnelGatesNotMet = true;
  183.  
  184.     Template.CreatorTemplateName = 'GrenadeLauncher_BM_Schematic';
  185.     Template.CanBeBuilt = true;
  186.     Template.ItemCat = 'weapon';
  187.  
  188.     Resources.ItemTemplateName = 'Supplies';
  189.     Resources.Quantity = default.BEAM_UBGL_SUPPLY_COST;
  190.     Template.Cost.ResourceCosts.AddItem(Resources);
  191.  
  192.     Resources.ItemTemplateName = 'AlienAlloy';
  193.     Resources.Quantity = default.BEAM_UBGL_ALLOY_COST;
  194.     Template.Cost.ResourceCosts.AddItem(Resources);
  195.  
  196.     Resources.ItemTemplateName = 'EleriumDust';
  197.     Resources.Quantity = default.BEAM_UBGL_ELERIUM_COST;
  198.     Template.Cost.ResourceCosts.AddItem(Resources);
  199.  
  200.     Resources.ItemTemplateName = 'EleriumCore';
  201.     Resources.Quantity = default.BEAM_UBGL_ELERIUM_CORE_COST;
  202.     Template.Cost.ArtifactCosts.AddItem(Resources);
  203.  
  204.     //  Weapon attachment settings
  205.     foreach class'X2DownloadableContentInfo_WOTCUnderbarrelAttachments'.default.WEAPONS_TO_ADD_ATTACHMENTS(WeaponName)
  206.     {
  207.         Template.AddUpgradeAttachment('underbarrel', 'UIPawnLocation_WeaponUpgrade_AssaultRifle_Suppressor', "Underbarrel.Meshes.SM_UBGL_Beam", "", WeaponName.TEMPLATE, , "img:///Underbarrel.UI.UBGL_Beam", "img:///Underbarrel.UI.UBGL_Beam_inv", "img:///Underbarrel.UI.Inv_weaponIcon_UBGL");
  208.        
  209.         foreach WeaponName.SOCKETS_TO_HIDE(SocketName)
  210.         {
  211.             Template.AddUpgradeAttachment(SocketName, 'UIPawnLocation_WeaponUpgrade_AssaultRifle_Suppressor', "", "", WeaponName.TEMPLATE, , , , );
  212.         }
  213.     }
  214.    
  215.     return Template;
  216. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement