Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class X2Item_Underbarrel extends X2Item config(Underbarrel);
- var config int CONVENTIONAL_UBS_SUPPLY_COST;
- var config int MAGNETIC_UBS_SUPPLY_COST;
- var config int MAGNETIC_UBS_ALLOY_COST;
- var config int BEAM_UBS_SUPPLY_COST;
- var config int BEAM_UBS_ALLOY_COST;
- var config int BEAM_UBS_ELERIUM_COST;
- var config int CONVENTIONAL_UBGL_SUPPLY_COST;
- var config int MAGNETIC_UBGL_SUPPLY_COST;
- var config int MAGNETIC_UBGL_ALLOY_COST;
- var config int BEAM_UBGL_SUPPLY_COST;
- var config int BEAM_UBGL_ALLOY_COST;
- var config int BEAM_UBGL_ELERIUM_COST;
- var config int BEAM_UBGL_ELERIUM_CORE_COST;
- var config int CONVENTIONAL_ENGINEERING_SCORE;
- var config int MAGNETIC_ENGINEERING_SCORE;
- var config int BEAM_ENGINEERING_SCORE;
- var config bool HIDE_PREVIOUS_TIERS;
- var config array<name> TECH_REQUIRED_FOR_BEAM_UBGL;
- var config array<name> MUTUALLY_EXCLUSIVE_WEAPON_UPGRADES;
- static function array<X2DataTemplate> CreateTemplates()
- {
- local array<X2DataTemplate> Items;
- Items.AddItem(Create_UBGL_Conv());
- Items.AddItem(Create_UBGL_Mag());
- Items.AddItem(Create_UBGL_Beam());
- return Items;
- }
- // #######################################################################################
- // -------------------- COMMON ----------------------------------------------------
- // #######################################################################################
- static function SetUpWeaponUpgrade(out X2WeaponUpgradeTemplate Template)
- {
- Template.MutuallyExclusiveUpgrades = default.MUTUALLY_EXCLUSIVE_WEAPON_UPGRADES;
- Template.MaxQuantity = 1;
- Template.BlackMarketTexts = class'X2Item_DefaultUpgrades'.default.UpgradeBlackMarketTexts;
- Template.CanApplyUpgradeToWeaponFn = static.CanApplyUpgradeToWeapon;
- if(class'X2Item_Underbarrel_Research'.default.REQUIRE_RESEARCH) Template.Requirements.RequiredTechs.AddItem('UnderbarrelWeapons');
- }
- static function bool CanApplyUpgradeToWeapon(X2WeaponUpgradeTemplate UpgradeTemplate, XComGameState_Item Weapon, int SlotIndex)
- {
- local array<X2WeaponUpgradeTemplate> AttachedUpgradeTemplates;
- local X2WeaponUpgradeTemplate AttachedUpgrade;
- local int iSlot;
- local WeaponSocketStruct WeaponName;
- AttachedUpgradeTemplates = Weapon.GetMyWeaponUpgradeTemplates();
- foreach AttachedUpgradeTemplates(AttachedUpgrade, iSlot)
- {
- // Slot Index indicates the upgrade slot the player intends to replace with this new upgrade
- if (iSlot == SlotIndex)
- {
- // The exact upgrade already equipped in a slot cannot be equipped again
- // This allows different versions of the same upgrade type to be swapped into the slot
- if (AttachedUpgrade == UpgradeTemplate)
- {
- return false;
- }
- }
- else if (UpgradeTemplate.MutuallyExclusiveUpgrades.Find(AttachedUpgrade.DataName) != INDEX_NONE)
- {
- // If the new upgrade is mutually exclusive with any of the other currently equipped upgrades, it is not allowed
- return false;
- }
- }
- foreach class'X2DownloadableContentInfo_WOTCUnderbarrelAttachments'.default.WEAPONS_TO_ADD_ATTACHMENTS(WeaponName)
- {
- if(Weapon.GetMyTemplate().DataName == WeaponName.TEMPLATE) return true;
- }
- return false;
- }
- // #######################################################################################
- // -------------------- UBGL ----------------------------------------------------
- // #######################################################################################
- static function X2DataTemplate Create_UBGL_Conv()
- {
- local X2WeaponUpgradeTemplate Template;
- local ArtifactCost Resources;
- local WeaponSocketStruct WeaponName;
- local name SocketName;
- `CREATE_X2TEMPLATE(class'X2WeaponUpgradeTemplate', Template, 'UBGL_Conv');
- SetUpWeaponUpgrade(Template);
- class'X2Item_DefaultUpgrades'.static.SetUpTier1Upgrade(Template);
- Template.BonusAbilities.AddItem('Fire_UBGL_Conv');
- //
- //Template.BonusAbilities.AddItem('Fire_UBGL_Beam');
- //Template.BonusAbilities.AddItem('Reload_UBGL');
- Template.BonusAbilities.AddItem('UBGL_Passive');
- Template.BonusAbilities.AddItem('VolatileMix_UBGL');
- Template.strImage = "img:///Underbarrel.UI.UBGL_Conv_inv";
- if(default.HIDE_PREVIOUS_TIERS) Template.HideIfResearched = 'AutopsyMuton';
- Template.Requirements.RequiredEngineeringScore = default.CONVENTIONAL_ENGINEERING_SCORE;
- Template.Requirements.bVisibleIfPersonnelGatesNotMet = true;
- Template.CanBeBuilt = true;
- Template.ItemCat = 'weapon';
- Resources.ItemTemplateName = 'Supplies';
- Resources.Quantity = default.CONVENTIONAL_UBGL_SUPPLY_COST;
- Template.Cost.ResourceCosts.AddItem(Resources);
- // Weapon attachment settings
- foreach class'X2DownloadableContentInfo_WOTCUnderbarrelAttachments'.default.WEAPONS_TO_ADD_ATTACHMENTS(WeaponName)
- {
- 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");
- foreach WeaponName.SOCKETS_TO_HIDE(SocketName)
- {
- Template.AddUpgradeAttachment(SocketName, 'UIPawnLocation_WeaponUpgrade_AssaultRifle_Suppressor', "", "", WeaponName.TEMPLATE, , , , );
- }
- }
- return Template;
- }
- static function X2DataTemplate Create_UBGL_Mag()
- {
- local X2WeaponUpgradeTemplate Template;
- local ArtifactCost Resources;
- local WeaponSocketStruct WeaponName;
- local name SocketName;
- `CREATE_X2TEMPLATE(class'X2WeaponUpgradeTemplate', Template, 'UBGL_Mag');
- // Generic settings
- SetUpWeaponUpgrade(Template);
- class'X2Item_DefaultUpgrades'.static.SetUpTier2Upgrade(Template);
- Template.BonusAbilities.AddItem('Fire_UBGL_Mag');
- Template.BonusAbilities.AddItem('UBGL_Passive');
- //Template.BonusAbilities.AddItem('Reload_UBGL');
- Template.BonusAbilities.AddItem('VolatileMix_UBGL');
- Template.strImage = "img:///Underbarrel.UI.UBGL_Mag_inv";
- // Engineering schematic settings
- if(default.HIDE_PREVIOUS_TIERS) Template.HideIfResearched = default.TECH_REQUIRED_FOR_BEAM_UBGL[0];
- //Template.Requirements.RequiredTechs.AddItem('MagnetizedWeapons');
- Template.Requirements.RequiredTechs.AddItem('AutopsyMuton');
- Template.Requirements.RequiredEngineeringScore = default.MAGNETIC_ENGINEERING_SCORE;
- Template.Requirements.bVisibleIfPersonnelGatesNotMet = true;
- Template.BaseItem = 'UBGL_Conv';
- Template.CreatorTemplateName = 'GrenadeLauncher_MG_Schematic';
- Template.CanBeBuilt = true;
- Template.ItemCat = 'weapon';
- Resources.ItemTemplateName = 'Supplies';
- Resources.Quantity = default.MAGNETIC_UBGL_SUPPLY_COST;
- Template.Cost.ResourceCosts.AddItem(Resources);
- Resources.ItemTemplateName = 'AlienAlloy';
- Resources.Quantity = default.MAGNETIC_UBGL_ALLOY_COST;
- Template.Cost.ResourceCosts.AddItem(Resources);
- // Weapon attachment settings
- foreach class'X2DownloadableContentInfo_WOTCUnderbarrelAttachments'.default.WEAPONS_TO_ADD_ATTACHMENTS(WeaponName)
- {
- 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");
- foreach WeaponName.SOCKETS_TO_HIDE(SocketName)
- {
- Template.AddUpgradeAttachment(SocketName, 'UIPawnLocation_WeaponUpgrade_AssaultRifle_Suppressor', "", "", WeaponName.TEMPLATE, , , , );
- }
- }
- return Template;
- }
- static function X2DataTemplate Create_UBGL_Beam()
- {
- local X2WeaponUpgradeTemplate Template;
- local WeaponSocketStruct WeaponName;
- local ArtifactCost Resources;
- local name SocketName;
- `CREATE_X2TEMPLATE(class'X2WeaponUpgradeTemplate', Template, 'UBGL_Beam');
- // Generic settings
- SetUpWeaponUpgrade(Template);
- class'X2Item_DefaultUpgrades'.static.SetUpTier3Upgrade(Template);
- Template.strImage = "img:///Underbarrel.UI.UBGL_Beam_inv";
- Template.BonusAbilities.AddItem('Fire_UBGL_Beam');
- Template.BonusAbilities.AddItem('UBGL_Passive');
- //Template.BonusAbilities.AddItem('Reload_UBGL');
- Template.BonusAbilities.AddItem('VolatileMix_UBGL');
- // Engineering schematic settings
- Template.BaseItem = 'UBGL_Mag';
- foreach default.TECH_REQUIRED_FOR_BEAM_UBGL(SocketName) Template.Requirements.RequiredTechs.AddItem(SocketName);
- Template.Requirements.RequiredEngineeringScore = default.BEAM_ENGINEERING_SCORE;
- Template.Requirements.bVisibleIfPersonnelGatesNotMet = true;
- Template.CreatorTemplateName = 'GrenadeLauncher_BM_Schematic';
- Template.CanBeBuilt = true;
- Template.ItemCat = 'weapon';
- Resources.ItemTemplateName = 'Supplies';
- Resources.Quantity = default.BEAM_UBGL_SUPPLY_COST;
- Template.Cost.ResourceCosts.AddItem(Resources);
- Resources.ItemTemplateName = 'AlienAlloy';
- Resources.Quantity = default.BEAM_UBGL_ALLOY_COST;
- Template.Cost.ResourceCosts.AddItem(Resources);
- Resources.ItemTemplateName = 'EleriumDust';
- Resources.Quantity = default.BEAM_UBGL_ELERIUM_COST;
- Template.Cost.ResourceCosts.AddItem(Resources);
- Resources.ItemTemplateName = 'EleriumCore';
- Resources.Quantity = default.BEAM_UBGL_ELERIUM_CORE_COST;
- Template.Cost.ArtifactCosts.AddItem(Resources);
- // Weapon attachment settings
- foreach class'X2DownloadableContentInfo_WOTCUnderbarrelAttachments'.default.WEAPONS_TO_ADD_ATTACHMENTS(WeaponName)
- {
- 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");
- foreach WeaponName.SOCKETS_TO_HIDE(SocketName)
- {
- Template.AddUpgradeAttachment(SocketName, 'UIPawnLocation_WeaponUpgrade_AssaultRifle_Suppressor', "", "", WeaponName.TEMPLATE, , , , );
- }
- }
- return Template;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement