Advertisement
Guest User

Untitled

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