Advertisement
Guest User

main.lua - SDO - Scissors Difficulty Options

a guest
Oct 19th, 2023
1,457
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 41.58 KB | Gaming | 0 0
  1. SDO = {
  2.     description = "SDO"
  3. }
  4.  
  5. function SDO:new()
  6.    
  7.     --[[ if Disable_Recoil_Recovery then
  8.    
  9.         TweakDB:SetFlat("Items.Base_Weapon_inline10.statType", "BaseStats.RecoilRecoveryTime")
  10.         TweakDB:SetFlat("Items.Base_Weapon_inline10.value", 9999)
  11.        
  12.         TweakDB:SetFlat("Items.Base_Weapon_inline11.modifierType", "Multiplier")
  13.         TweakDB:SetFlat("Items.Base_Weapon_inline11.statType", "BaseStats.RecoilRecoveryMinSpeed")
  14.     else
  15.    
  16.         TweakDB:SetFlat("Items.Base_Weapon_inline10.statType", "BaseStats.ReloadTime")
  17.         TweakDB:SetFlat("Items.Base_Weapon_inline10.value", 0)
  18.        
  19.         TweakDB:SetFlat("Items.Base_Weapon_inline11.modifierType", "Additive")
  20.         TweakDB:SetFlat("Items.Base_Weapon_inline11.statType", "BaseStats.ReloadTimeBase")
  21.     end
  22.     --Removing shooting delay
  23.     Shooting_Types = {"Burst", "Machinegun", "FullAuto", "FullAutoSmart", "FullAutoPistol", "SemiAuto", "ShotgunPistol", "Shotgun"}
  24.     for i, v in ipairs(Shooting_Types) do
  25.         for a=1, 5 do
  26.             for b = 0, 20 do
  27.                 if No_Shooting_Delay then
  28.                     if TweakDB:GetFlat("ShootingPatterns.Close_"..v.."ShootingPattern_"..a.."_inline"..b..".delay") then
  29.                         TweakDB:SetFlat("ShootingPatterns.Close_"..v.."ShootingPattern_"..a.."_inline"..b..".delay",0)
  30.                     end
  31.                     if TweakDB:GetFlat("ShootingPatterns.Long_"..v.."ShootingPattern_"..a.."_inline"..b..".delay") then
  32.                         TweakDB:SetFlat("ShootingPatterns.Long_"..v.."ShootingPattern_"..a.."_inline"..b..".delay", 0)
  33.                     end
  34.                     if TweakDB:GetFlat("ShootingPatterns.Medium_"..v.."ShootingPattern_"..a.."_inline"..b..".delay") then
  35.                         TweakDB:SetFlat("ShootingPatterns.Medium_"..v.."ShootingPattern_"..a.."_inline"..b..".delay",0)
  36.                     end
  37.                 end
  38.                 --TweakDB:SetFlat("ShootingPatterns.Close_"..v.."ShootingPattern_"..a.."_inline"..b..".delay", math.random()/3 + .3)
  39.                 --TweakDB:SetFlat("ShootingPatterns.Long_"..v.."ShootingPattern_"..a.."_inline"..b..".delay", math.random()/3 + .3)
  40.                 --TweakDB:SetFlat("ShootingPatterns.Medium_"..v.."ShootingPattern_"..a.."_inline"..b..".delay", math.random()/3 + .3)
  41.             end
  42.         end
  43.     end ]]
  44.  
  45.     --[[ --Enemies aggro on silenced gunshot
  46.     if Aggro_On_Silenced_Gunshot then
  47.         TweakDB:SetFlat("ReactionPresets.Corpo_Aggressive_inline1.output", "ReactionOutput.Intruder")
  48.         TweakDB:SetFlat("ReactionPresets.Corpo_Aggressive_inline1.workspotOutput", "Anger")
  49.  
  50.         TweakDB:SetFlat("ReactionPresets.Ganger_Aggressive_inline1.output", "ReactionOutput.Intruder")
  51.         TweakDB:SetFlat("ReactionPresets.Ganger_Aggressive_inline1.workspotOutput", "Anger")
  52.  
  53.         TweakDB:SetFlat("ReactionPresets.Mechanical_Aggressive_inline1.output", "ReactionOutput.Intruder")
  54.         TweakDB:SetFlat("ReactionPresets.Mechanical_Aggressive_inline1.workspotOutput", "Anger")
  55.        
  56.         TweakDB:SetFlat("ReactionPresets.Police_Aggressive_inline1.output", "ReactionOutput.Intruder")
  57.         TweakDB:SetFlat("ReactionPresets.Police_Aggressive_inline1.workspotOutput", "Anger")
  58.     end
  59.  ]]
  60.     --Powerful minibosses
  61.     Miniboss_List = {"ma_bls_ina_se1_17_outpost_miniboss",
  62.                     "ma_bls_se5_07_outpost_miniboss",
  63.                     "ma_hey_gle_02_outpost_miniboss",
  64.                     "ma_hey_rey_06_outpost_miniboss",
  65.                     "ma_hey_spr_11_outpost_miniboss",
  66.                     "ma_pac_cvi_12_outpost_miniboss",
  67.                     "ma_pac_wwd_02_outpost_miniboss",
  68.                     "ma_std_arr_03_outpost_miniboss",
  69.                     "ma_std_rcr_08_outpost_miniboss",
  70.                     "ma_std_rcr_18_outpost_miniboss",
  71.                     "ma_wat_lch_01_outpost_miniboss",
  72.                     "ma_wat_lch_08_outpost_miniboss",
  73.                     "ma_wat_nid_01_outpost_miniboss",
  74.                     "ma_wat_nid_06_outpost_miniboss",
  75.                     "ma_wbr_jpn_20_outpost_miniboss"}      
  76.                    
  77.     Miniboss_Rarity = "NPCRarity.Elite"
  78.     if Powerful_Minibosses then
  79.         Miniboss_Rarity = "NPCRarity.Boss"
  80.     end
  81.  
  82.     for i,v in ipairs(Miniboss_List) do
  83.         TweakDB:SetFlat("Character."..v..".rarity", Miniboss_Rarity)
  84.         if Powerful_Minibosses then
  85.             addToList("Character."..v..".statModifiers", "Character.Cyberpsycho_ModGroup_inline8")
  86.             addToList("Character."..v..".statModifiers", "Character.Cyberpsycho_ModGroup_inline9")
  87.         end
  88.     end
  89.  
  90.     --Enemies on minimap option
  91.     TweakDB:SetFlat("Mappins.NPCMappinDefinition.showOnMinimap", not Disable_Enemies_On_Minimap)
  92.  
  93.  
  94.     --Break hold implementation
  95.     --[[
  96.     Break_Hold_Value = 0
  97.     if Implement_Break_Hold then
  98.         Break_Hold_Value = 1
  99.     end
  100.     TweakDB:SetFlat("Ability.CanGuardBreak_inline2.value", Break_Hold_Value)
  101.    
  102.     --Negate it from Animals boss in Red Queen's Race
  103.     Possible_SQ012_List = {"Character.sq012_animal_officer", "Character.sq012_animal_officer_beta_female", "Character.sq012_animal_hammer"}
  104.    
  105.     for i,v in ipairs(Possible_SQ012_List) do
  106.         TweakDB:SetFlat(v..".archetypeData", "ArchetypeData.GenericMeleeT1")
  107.     end ]]
  108.  
  109.  
  110.     --Remove smasher fight hidden modifiers that make extra enemies just for show
  111.     if Harder_Final_Boss_Fight then
  112.         TweakDB:SetFlat("Character.q113_smasher_arasaka_mantis_inline0.value", 1)
  113.         TweakDB:SetFlat("Character.q113_smasher_arasaka_mantis_inline1.value", 1)
  114.         TweakDB:SetFlat("Character.q113_smasher_arasaka_mantis_inline2.value", 1)
  115.  
  116.         TweakDB:SetFlat("Character.q113_smasher_arasaka_masamune_inline0.value", 1)
  117.         TweakDB:SetFlat("Character.q113_smasher_arasaka_masamune_inline1.value", 1)
  118.         TweakDB:SetFlat("Character.q113_smasher_arasaka_masamune_inline2.value", 1)
  119.  
  120.         TweakDB:SetFlat("Character.q113_smasher_arasaka_netrunner_inline0.value", 1)
  121.         TweakDB:SetFlat("Character.q113_smasher_arasaka_netrunner_inline1.value", 1)
  122.         TweakDB:SetFlat("Character.q113_smasher_arasaka_netrunner_inline2.value", 1)
  123.  
  124.         TweakDB:SetFlat("Character.q113_smasher_arasaka_mechs_inline0.value", 1)
  125.         TweakDB:SetFlat("Character.q113_smasher_arasaka_mechs_inline1.value", 1)
  126.        
  127.         TweakDB:SetFlat("Character.q113_smasher_arasaka_sniper_inline0.value", 1)
  128.         TweakDB:SetFlat("Character.q113_smasher_arasaka_sniper_inline1.value", 1)
  129.        
  130.     end
  131.    
  132.     if Cyber_Enemies then
  133.    
  134.         --Lower Heal Cooldown
  135.         TweakDB:SetFlat("SpecialActions.CombatStimCooldown.duration", 60)
  136.        
  137.         --Lower health threshold
  138.         TweakDB:SetFlat("Ability.CanUseCombatStims_inline4.valueToCheck", 50)
  139.        
  140.         --Add new enemy abilities
  141.        
  142.         addToList("ArchetypeData.FastMeleeT2_inline2.abilities", "Ability.CanUseCombatStims")
  143.         addToList("ArchetypeData.FastMeleeT3_inline2.abilities", "Ability.CanUseCombatStims")
  144.        
  145.         addToList("ArchetypeData.GenericMeleeT1_inline4.abilities", "Ability.CanUseCombatStims")
  146.         addToList("ArchetypeData.GenericMeleeT2_inline0.abilities", "Ability.CanUseCombatStims")
  147.        
  148.         addToList("ArchetypeData.GenericRangedT1_inline2.abilities", "Ability.CanUseCombatStims")
  149.         addToList("ArchetypeData.GenericRangedT2_inline2.abilities", "Ability.CanUseCombatStims")
  150.         addToList("ArchetypeData.GenericRangedT3_inline0.abilities", "Ability.CanUseCombatStims")
  151.  
  152.         addToList("ArchetypeData.HeavyMeleeT2_inline6.abilities", "Ability.CanUseCombatStims")
  153.         addToList("ArchetypeData.HeavyMeleeT3_inline6.abilities", "Ability.CanUseCombatStims")
  154.        
  155.         addToList("ArchetypeData.HeavyRangedT2_inline5.abilities", "Ability.CanUseCombatStims")
  156.         addToList("ArchetypeData.HeavyRangedT3_inline5.abilities", "Ability.CanUseCombatStims")
  157.  
  158.         addToList("ArchetypeData.HybridHeavyFastMeleeT3_inline6.abilities", "Ability.CanUseCombatStims")
  159.        
  160.         addToList("ArchetypeData.NetrunnerT1_inline4.abilities", "Ability.CanUseCombatStims")
  161.         addToList("ArchetypeData.NetrunnerT2_inline4.abilities", "Ability.CanUseCombatStims")
  162.         addToList("ArchetypeData.NetrunnerT3_inline4.abilities", "Ability.CanUseCombatStims")
  163.  
  164.         addToList("ArchetypeData.TechieT2_inline2.abilities", "Ability.CanUseCombatStims")
  165.         addToList("ArchetypeData.TechieT3_inline2.abilities", "Ability.CanUseCombatStims")
  166.  
  167.         --Assign all of their new stats and skills
  168.         createConstantStatModifier("Tier2HPIncrease", "Multiplier", "BaseStats.Health", 1.2)
  169.         createConstantStatModifier("Tier3HPIncrease", "Multiplier", "BaseStats.Health", 1.5)
  170.  
  171.         createConstantStatModifier("Tier2DPSIncrease", "Multiplier", "BaseStats.NPCDamage", 1.2)
  172.         createConstantStatModifier("Tier3DPSIncrease", "Multiplier", "BaseStats.NPCDamage", 1.5)
  173.  
  174.         createConstantStatModifier("Tier2AccuracyIncrease", "Multiplier", "BaseStats.Accuracy", 1.2)
  175.         createConstantStatModifier("Tier3AccuracyIncrease", "Multiplier", "BaseStats.Accuracy", 1.5)
  176.  
  177.         createConstantStatModifier("Tier2ArmorIncrease", "Multiplier", "BaseStats.Armor", 2)
  178.         createConstantStatModifier("Tier3ArmorIncrease", "Multiplier", "BaseStats.Armor", 3)
  179.  
  180.         createConstantStatModifier("Tier2ThermalResistanceIncrease", "Additive", "BaseStats.ThermalResistance", 10)
  181.         createConstantStatModifier("Tier2ChemicalResistanceIncrease", "Additive", "BaseStats.ChemicalResistance", 10)
  182.         createConstantStatModifier("Tier2ElectricResistanceIncrease", "Additive", "BaseStats.ElectricResistance", 10)
  183.         createConstantStatModifier("Tier3ThermalResistanceIncrease", "Additive", "BaseStats.ThermalResistance", 30)
  184.         createConstantStatModifier("Tier3ChemicalResistanceIncrease", "Additive", "BaseStats.ChemicalResistance", 30)
  185.         createConstantStatModifier("Tier3ElectricResistanceIncrease", "Additive", "BaseStats.ElectricResistance", 30)
  186.  
  187.         createConstantStatModifier("Tier2HackingResistanceIncrease", "Additive", "BaseStats.HackingResistance", 1)
  188.         createConstantStatModifier("Tier3HackingResistanceIncrease", "Additive", "BaseStats.HackingResistance", 3)
  189.  
  190.         createConstantStatModifier("Tier2ExplosionDamageReduction", "Additive", "BaseStats.DamageReductionExplosion", 0)
  191.         createConstantStatModifier("Tier3ExplosionDamageReduction", "Additive", "BaseStats.DamageReductionExplosion", 0)
  192.  
  193.         createConstantStatModifier("Tier2BlindReduction", "Additive", "BaseStats.BlindImmunity", 0)
  194.         createConstantStatModifier("Tier3BlindReduction", "Additive", "BaseStats.BlindImmunity", 0)
  195.  
  196.         createConstantStatModifier("Tier2StunReduction", "Additive", "BaseStats.StunImmunity", 0)
  197.         createConstantStatModifier("Tier3StunReduction", "Additive", "BaseStats.StunImmunity", 0)
  198.    
  199.         Tier1List = {"Ability.IsTier1Archetype_inline2"}
  200.         Tier2List = {"Ability.IsTier2Archetype_inline2", "Tier2HPIncrease", "Tier2DPSIncrease", "Tier2AccuracyIncrease", "Tier2ArmorIncrease", "Tier2ThermalResistanceIncrease", "Tier2ChemicalResistanceIncrease", "Tier2ElectricResistanceIncrease", "Tier2HackingResistanceIncrease", "Tier2ExplosionDamageReduction", "Tier2BlindReduction", "Tier2StunReduction"}
  201.         Tier3List = {"Ability.IsTier3Archetype_inline2",  "Tier3HPIncrease", "Tier3DPSIncrease", "Tier3AccuracyIncrease", "Tier3ArmorIncrease", "Tier3ThermalResistanceIncrease", "Tier3ChemicalResistanceIncrease", "Tier3ElectricResistanceIncrease", "Tier3HackingResistanceIncrease", "Tier3ExplosionDamageReduction", "Tier3BlindReduction", "Tier3StunReduction"}
  202.  
  203.         TweakDB:SetFlat("Ability.IsTier1Archetype_inline1.stats", Tier1List)
  204.         TweakDB:SetFlat("Ability.IsTier2Archetype_inline1.stats", Tier2List)
  205.         TweakDB:SetFlat("Ability.IsTier3Archetype_inline1.stats", Tier3List)
  206.  
  207.    
  208.         --Give Oda Status Effects
  209.         TweakDB:CreateRecord("OdaStatusAbility", "gamedataGameplayAbility_Record")
  210.         TweakDB:SetFlat("OdaStatusAbility.abilityPackage","OdaStatusAbilityPackage")
  211.        
  212.         TweakDB:CreateRecord("OdaStatusAbilityPackage", "gamedataGameplayLogicPackage_Record")
  213.         TweakDB:SetFlat("OdaStatusAbilityPackage.effectors", {"Ability.CanCauseBurn_inline5", "OdaStatusBurnEffector"})
  214.        
  215.         TweakDB:CloneRecord("OdaStatusBurnEffector", "Ability.CanCauseBurn_inline5")
  216.         TweakDB:SetFlat("OdaStatusBurnEffector.statGroup", "OdaStatusBurnStatGroup")
  217.        
  218.         TweakDB:CloneRecord("OdaStatusBurnStatGroup", "Ability.CanCauseBurn_inline6")
  219.         TweakDB:SetFlat("OdaStatusBurnStatGroup.statModifiers", {"OdaStatusBurnStat"})
  220.        
  221.         createConstantStatModifier("OdaStatusBurnStat", "Additive", "BaseStats.BurningApplicationRate", 25)
  222.        
  223.         addToList("Character.main_boss_oda.abilities", "OdaStatusAbility")
  224.  
  225.        
  226.         --Distribute enemy tiers
  227.                
  228.         --Animals
  229.        
  230.         --Corpo Plaza
  231.         cloneNPCData("Character.animals_elite3_hmelee3_fists_mba_elite", "Character.cpz_animals_grunt1_melee1_baseball_mb")
  232.         cloneNPCData("Character.animals_elite3_shotgun3_carnage_mba_elite", "Character.cpz_animals_grunt1_ranged1_pulsar_mb")
  233.         cloneNPCData("Character.animals_elite2_ranged3_burya_mba_rare", "Character.cpz_animals_grunt2_ranged2_pulsar_mb")
  234.        
  235.         --Coastview
  236.         cloneNPCData("Character.animals_bouncer2_hmelee2_hammer_mba_rare", "Character.cvi_animals_bouncer1_melee1_baton_mb")
  237.         cloneNPCData("Character.animals_bouncer2_ranged2_burya_mb", "Character.cvi_animals_bouncer1_ranged1_omaha_mb")
  238.         cloneNPCData("Character.animals_elite2_hmelee2_hammer_mba_rare", "Character.cvi_animals_grunt1_melee1_baseball_mb")
  239.        
  240.         --Downtown
  241.         cloneNPCData("Character.animals_bouncer3_hmelee3_fists_mba_elite", "Character.dtn_animals_bouncer1_melee1_fists_mb")
  242.         cloneNPCData("Character.animals_bouncer2_ranged2_omaha_mb", "Character.dtn_animals_bouncer1_ranged1_omaha_mb")
  243.         cloneNPCData("Character.animals_bouncer3_hmelee3_fists_mba_elite", "Character.dtn_animals_bouncer2_melee2_fists_mb")
  244.         cloneNPCData("Character.animals_elite2_hmelee2_hammer_mba_rare", "Character.dtn_animals_grunt1_melee1_baseball_mb")
  245.         cloneNPCData("Character.animals_elite3_hmelee3_fists_mba_elite", "Character.dtn_animals_grunt1_melee1_fists_mb")
  246.         cloneNPCData("Character.animals_elite3_shotgun3_carnage_mba_elite", "Character.dtn_animals_grunt1_ranged1_nova_mb")
  247.         cloneNPCData("Character.animals_elite3_shotgun3_carnage_mba_elite", "Character.dtn_animals_grunt1_ranged1_pulsar_mb")
  248.        
  249.         --Wellsprings
  250.         cloneNPCData("Character.animals_elite3_shotgun3_carnage_mba_elite", "Character.spr_animals_bouncer1_ranged1_kenshin_mb")
  251.         cloneNPCData("Character.animals_bouncer2_ranged2_omaha_mb", "Character.spr_animals_bouncer1_ranged1_omaha_mb")
  252.         cloneNPCData("Character.animals_elite2_hmelee2_hammer_mba_rare", "Character.spr_animals_grunt1_melee1_baseball_mb")
  253.         cloneNPCData("Character.animals_grunt2_ranged2_pulsar_mb", "Character.spr_animals_grunt1_ranged1_pulsar_mb")
  254.        
  255.         --West Wind Estate
  256.         cloneNPCData("Character.animals_elite2_hmelee2_hammer_mba_rare", "Character.wwd_animals_grunt1_melee1_baseball_mb")
  257.        
  258.         --GIM
  259.         cloneNPCData("Character.animals_elite3_hmelee3_fists_mba_elite", "Character.q110_mall_animals_grunt1_melee1_fists_mb")
  260.         cloneNPCData("Character.animals_grunt2_ranged2_pulsar_mb", "Character.q110_mall_animals_aftervan_grunt1_ranged1_pulsar_mb")
  261.         cloneNPCData("Character.animals_elite2_ranged3_burya_mba_rare", "Character.q110_mall_animals_grunt1_ranged1_nova_mb")
  262.                
  263.         --Arasaka
  264.        
  265.         --Arroyo
  266.         cloneNPCData("Character.arasaka_ninja_fmelee3_katana_ma_elite", "Character.arr_arasaka_ranger1_melee2_knife_ma")
  267.         cloneNPCData("Character.arasaka_ninja_fmelee3_mantis_wa_elite", "Character.arr_arasaka_ranger1_ranged2_shingen_wa")
  268.         cloneNPCData("Character.arasaka_netrunner_netrunner2_yukimura_ma_rare", "Character.arr_arasaka_soldier2_shotgun2_tactician_mah_rare")
  269.        
  270.         --Corpo Plaza
  271.         cloneNPCData("Character.arasaka_netrunner_netrunner2_yukimura_ma_rare", "Character.cpz_arasaka_agent_fshotgun2_tactician_ma_rare")
  272.         cloneNPCData("Character.arasaka_bodyguard_ranged3_kenshin_mb_rare", "Character.cpz_arasaka_guard2_ranged1_kenshin_ma")
  273.         cloneNPCData("Character.arasaka_ranger1_ranged2_shingen_ma", "Character.cpz_arasaka_guard2_ranged1_shingen_ma")
  274.         cloneNPCData("Character.arasaka_ninja_fmelee3_mantis_ma_elite", "Character.cpz_arasaka_guard2_ranged1_yukimura_ma")
  275.         cloneNPCData("Character.arasaka_cyborg_fshotgun3_zhuo_ma_elite", "Character.cpz_arasaka_guard2_ranged1_shingen_ma")
  276.         cloneNPCData("Character.arasaka_cyborg_grenadier3_yukimura_ma_elite", "Character.cpz_arasaka_guard2_ranged1_yukimura_ma")
  277.        
  278.         --Downtown
  279.         cloneNPCData("Character.arasaka_cyborg_fshotgun3_zhuo_ma_elite", "Character.dtn_arasaka_guard2_melee1_baton_ma")
  280.         cloneNPCData("Character.arasaka_ninja_fmelee3_katana_wa_elite", "Character.dtn_arasaka_guard2_melee1_baton_wa")
  281.         cloneNPCData("Character.arasaka_bodyguard_ranged3_kenshin_mb_rare", "Character.dtn_arasaka_guard2_ranged1_kenshin_ma")
  282.         cloneNPCData("Character.arasaka_cyborg_franged3_shingen_ma_elite", "Character.dtn_arasaka_guard2_ranged1_shingen_ma")
  283.        
  284.         --Charter Hill
  285.         cloneNPCData("Character.arasaka_ranger1_ranged2_shingen_wa", "Character.hil_arasaka_guard2_ranged1_yukimura_wa")
  286.         cloneNPCData("Character.arasaka_bodyguard_ranged3_kenshin_mb_rare", "Character.hil_arasaka_security1_ranged1_kenshin_ma")
  287.         cloneNPCData("Character.arasaka_terminator_shotgun3_zhuo_mah_elite", "Character.hil_arasaka_ranger1_ranged2_shingen_ma")
  288.         cloneNPCData("Character.arasaka_netrunner_netrunner2_yukimura_wa_rare", "Character.hil_arasaka_agent_fshotgun2_tactician_wa_rare")
  289.        
  290.         --Northside
  291.         cloneNPCData("Character.arasaka_sumo_hmelee2_hammer_mb_rare", "Character.nid_arasaka_guard2_ranged1_kenshin_ma")
  292.        
  293.         --North Oak
  294.         cloneNPCData("Character.arasaka_terminator_shotgun3_zhuo_mah_elite", "Character.nok_arasaka_guard2_ranged1_kenshin_ma")
  295.         cloneNPCData("Character.arasaka_netrunner_netrunner2_yukimura_ma_rare", "Character.nok_arasaka_agent_fshotgun2_tactician_ma_rare")
  296.        
  297.         --Rancho Coronado
  298.         cloneNPCData("Character.arasaka_ninja_fmelee3_katana_wa_elite", "Character.rcr_arasaka_guard2_melee1_baton_wa")
  299.         cloneNPCData("Character.arasaka_ninja_fmelee3_katana_ma_elite", "Character.rcr_arasaka_security1_melee1_baton_ma")
  300.        
  301.         --West Wind Estate
  302.         cloneNPCData("Character.arasaka_bodyguard_ranged3_kenshin_mb_rare", "Character.wwd_arasaka_security1_ranged1_kenshin_ma")
  303.        
  304.         --Maelstrom
  305.        
  306.         --Corpo Plaza
  307.         cloneNPCData("Character.maelstrom_fast_franged2_pulsar_ma_rare", "Character.cpz_maelstrom_grunt1_ranged1_copperhead_ma")
  308.         cloneNPCData("Character.maelstrom_netrunner_netrunner2_lexington_ma", "Character.cpz_maelstrom_grunt1_ranged1_lexington_ma")
  309.         cloneNPCData("Character.maelstrom_grunt2_ranged2_copperhead_wa", "Character.cpz_maelstrom_grunt1_ranged1_lexington_wa")
  310.        
  311.         --Downtown
  312.         cloneNPCData("Character.maelstrom_fast_franged2_pulsar_ma_rare", "Character.dtn_maelstrom_grunt1_ranged1_copperhead_ma")
  313.         cloneNPCData("Character.maelstrom_grunt2_ranged2_copperhead_wa", "Character.dtn_maelstrom_grunt1_ranged1_copperhead_wa")
  314.         cloneNPCData("Character.maelstrom_techie_grenadier2_lexington_ma", "Character.dtn_maelstrom_grunt1_ranged1_lexington_ma")
  315.         cloneNPCData("Character.maelstrom_fast_fmelee3_mantis_wa_elite", "Character.dtn_maelstrom_grunt2_melee2_machete_wa")
  316.        
  317.         --Dream On
  318.         cloneNPCData("Character.maelstrom_fast_fmelee3_mantis_wa_elite", "Character.sq006_maelstrom_handgun_easy")
  319.         cloneNPCData("Character.maelstrom_netrunner_netrunner2_lexington_ma", "Character.sq006_maelstrom_shotgun")
  320.         cloneNPCData("Character.maelstrom_strong_gunner2_defender_mb_rare","Character.sq006_maelstrom_rifle_easy")
  321.         cloneNPCData("Character.maelstrom_grunt2_melee2_hammer_wa", "Character.sq031_maelstrom_grunt1_ranged1_lexington_pistol_wa")
  322.        
  323.         --Ebunike
  324.         cloneNPCData("Character.maelstrom_strong_gunner2_defender_mb_rare", "Character.sq031_maelstrom_grunt1_ranged1_copperhead_ma")
  325.         cloneNPCData("Character.maelstrom_grunt2_ranged2_copperhead_wa", "Character.sq031_maelstrom_grunt1_ranged1_copperhead_wa")
  326.         cloneNPCData("Character.maelstrom_techie_grenadier2_lexington_ma", "Character.sq031_maelstrom_grunt1_ranged1_lexington_pistol_ma")
  327.        
  328.         --Militech
  329.        
  330.         --Arroyo
  331.         cloneNPCData("Character.militech_enforcer2_shotgun2_tactician_mah_rare", "Character.arr_militech_ranger1_ranged1_saratoga_ma")
  332.        
  333.         --Badlands
  334.         cloneNPCData("Character.militech_enforcer2_shotgun2_tactician_mah_rare", "Character.bls_se_militech_ranger1_ranged1_saratoga_ma")
  335.        
  336.         --Corpo Plaza
  337.         cloneNPCData("Character.militech_enforcer2_shotgun2_tactician_mah_rare", "Character.cpz_militech_ranger1_ranged1_saratoga_ma")
  338.        
  339.         --Downtown
  340.         cloneNPCData("Character.militech_enforcer2_shotgun2_tactician_mah_rare", "Character.dtn_militech_ranger1_ranged1_saratoga_ma")
  341.        
  342.         --Tyger Claws
  343.        
  344.         --Badlands
  345.         cloneNPCData("Character.tyger_claws_biker3_shotgun2_tactician_wa", "Character.bls_se_tyger_claws_biker1_melee1_baseball_wa")
  346.         cloneNPCData("Character.tyger_claws_biker2_ranged2_copperhead_wa", "Character.bls_se_tyger_claws_biker1_ranged1_nue_wa")
  347.         cloneNPCData("Character.tyger_claws_biker2_ranged2_shingen_wa", "Character.bls_se_tyger_claws_biker1_ranged1_saratoga_wa")
  348.         cloneNPCData("Character.tyger_claws_gangster2_ranged2_sidewinder_wa", "Character.bls_se_tyger_claws_gangster1_ranged1_copperhead_wa")
  349.        
  350.         --Downtown
  351.         cloneNPCData("Character.tyger_claws_ozeki_hmelee3_kanabo_mb", "Character.dtn_tyger_claws_biker1_melee1_baseball_ma")
  352.         cloneNPCData("Character.tyger_claws_ozeki_hmelee3_hammer_mb", "Character.dtn_tyger_claws_biker1_melee1_fists_ma")
  353.         cloneNPCData("Character.tyger_claws_kunoichi_fmelee3_fists_ma_elite", "Character.dtn_tyger_claws_biker1_melee1_tireiron_ma")
  354.         cloneNPCData("Character.tyger_claws_biker3_shotgun3_zhuo_ma_elite", "Character.dtn_tyger_claws_biker1_ranged1_nue_ma")
  355.         cloneNPCData("Character.tyger_claws_kunoichi_fmelee3_katana_wa_elite", "Character.dtn_tyger_claws_biker1_ranged1_nue_wa")
  356.         cloneNPCData("Character.tyger_claws_gangster3_ranged3_sidewinder_ma", "Character.dtn_tyger_claws_biker1_ranged1_saratoga_ma")
  357.         cloneNPCData("Character.tyger_claws_gangster2_ranged2_shingen_wa", "Character.dtn_tyger_claws_biker1_ranged1_saratoga_wa")
  358.         cloneNPCData("Character.tyger_claws_martial_hmelee3_StrongArms_mb", "Character.dtn_tyger_claws_gangster1_melee1_knife_ma")
  359.         cloneNPCData("Character.tyger_claws_kunoichi_fmelee3_katana_wa_elite", "Character.dtn_tyger_claws_gangster1_melee1_knife_wa")
  360.         cloneNPCData("Character.tyger_claws_biker3_shotgun3_zhuo_ma_elite", "Character.dtn_tyger_claws_gangster1_ranged1_copperhead_ma")
  361.         cloneNPCData("Character.tyger_claws_gangster3_ranged3_sidewinder_ma", "Character.dtn_tyger_claws_gangster1_ranged1_nue_ma")
  362.        
  363.         --Charter Hill
  364.         cloneNPCData("Character.tyger_claws_gangster3_ranged3_sidewinder_ma", "Character.hil_tyger_claws_biker1_ranged1_nue_ma")
  365.         cloneNPCData("Character.hil_tyger_claws_gangster1_melee1_knife_wa", "Character.tyger_claws_kunoichi_fmelee3_katana_wa_elite")
  366.         cloneNPCData("Character.tyger_claws_ozeki_hmelee3_kanabo_mb", "Character.nok_tyger_claws_gangster1_melee1_knife_ma")
  367.        
  368.         --Valentinos
  369.        
  370.         --Arroyo
  371.         cloneNPCData("Character.valentinos_machete_hmelee3_machete_mb_elite", "Character.arr_valentinos_grunt2_melee2_knife_ma")
  372.        
  373.         --Downtown
  374.         cloneNPCData("Character.valentinos_machete_hmelee3_machete_mb_elite", "Character.dtn_valentinos_grunt1_melee1_knife_ma")
  375.         cloneNPCData("Character.valentinos_grunt2_melee2_knife_wa", "Character.dtn_valentinos_grunt1_melee1_knife_wa")
  376.         cloneNPCData("Character.valentinos_shotgun3_shotgun3_testera_ma_elite", "Character.arr_valentinos_grunt1_ranged1_nova_ma")
  377.         cloneNPCData("Character.valentinos_elite3_ranged3_dual_ma_elite", "Character.dtn_valentinos_grunt1_ranged1_nue_ma")
  378.         cloneNPCData("Character.valentinos_grunt2_ranged2_nue_wa", "Character.dtn_valentinos_grunt1_ranged1_nue_wa")
  379.         --TweakDB:SetFlat("Character.dtn_valentinos_grunt1_ranged1_nue_wa.statModifiers", {"Character.downtown_base_power_level", "DualWieldNPCDamageIncrease", "DualWieldTBHDecrease"})
  380.        
  381.         --Glen
  382.         cloneNPCData("Character.valentinos_machete_hmelee3_machete_mb_elite", "Character.gle_valentinos_grunt1_melee1_baseball_ma")
  383.         cloneNPCData("Character.valentinos_grunt2_melee2_knife_ma", "Character.gle_valentinos_grunt1_melee1_knife_ma")
  384.         cloneNPCData("Character.valentinos_grunt2_ranged2_overture_wa", "Character.gle_valentinos_grunt1_ranged1_nova_wa")
  385.         cloneNPCData("Character.valentinos_elite3_ranged3_dual_ma_elite", "Character.gle_valentinos_grunt1_ranged1_nue_ma")
  386.         --TweakDB:SetFlat("Character.gle_valentinos_grunt1_ranged1_nue_ma.statModifiers", {"Character.glen_base_power_level", "DualWieldNPCDamageIncrease", "DualWieldTBHDecrease"})
  387.  
  388.         cloneNPCData("Character.valentinos_shotgun3_shotgun3_testera_ma_elite", "Character.gle_valentinos_grunt2_ranged2_nue_ma")
  389.        
  390.         --Vista Del Rey
  391.         cloneNPCData("Character.valentinos_grunt3_fmelee2_machete_ma_rare", "Character.rey_valentinos_grunt1_melee1_baseball_ma")
  392.         cloneNPCData("Character.valentinos_strong2_shotgun2_igla_ma_rare", "Character.rey_valentinos_grunt1_ranged1_nova_ma")
  393.         cloneNPCData("Character.valentinos_shotgun3_shotgun3_testera_ma_elite", "Character.rey_valentinos_grunt2_ranged2_overture_ma")
  394.         cloneNPCData("Character.valentinos_elite3_ranged3_dual_ma_elite", "Character.rey_valentinos_grunt2_ranged2_nue_ma")
  395.        
  396.         --TweakDB:SetFlat("Character.rey_valentinos_grunt2_ranged2_nue_ma.statModifiers", {"Character.vista_del_rey_base_power_level", "DualWieldNPCDamageIncrease", "DualWieldTBHDecrease"})
  397.  
  398.         --Wellsprings
  399.         cloneNPCData("Character.valentinos_grunt3_fmelee2_machete_ma_rare", "Character.spr_valentinos_grunt1_melee1_baseball_ma")
  400.         cloneNPCData("Character.valentinos_elite3_ranged3_dual_ma_elite", "Character.spr_valentinos_grunt1_ranged1_nova_ma")
  401.         cloneNPCData("Character.valentinos_elite2_ranged3_dual_ma_rare", "Character.spr_valentinos_grunt1_ranged1_nue_ma")
  402.        
  403.         --TweakDB:SetFlat("Character.spr_valentinos_grunt1_ranged1_nova_ma.statModifiers", {"Character.wellsprings_base_power_level", "DualWieldNPCDamageIncrease", "DualWieldTBHDecrease"})
  404.         --TweakDB:SetFlat("Character.spr_valentinos_grunt1_ranged1_nue_ma.statModifiers", {"Character.wellsprings_base_power_level", "DualWieldNPCDamageIncrease", "DualWieldTBHDecrease"})
  405.  
  406.         --Wraiths
  407.        
  408.         --Badlands
  409.         cloneNPCData("Character.wraiths_grunt2_melee2_crowbar_wa", "Character.bls_se_wraiths_grunt1_melee1_ironpipe_wa")
  410.         cloneNPCData("Character.wraiths_warrior3_melee3_hammer_wa_rare", "Character.bls_se_wraiths_grunt1_melee1_tireiron_wa")
  411.         cloneNPCData("Character.wraiths_strongarms_hmelee3_fists_mb_elite", "Character.bls_se_wraiths_grunt2_melee2_crowbar_ma")
  412.         cloneNPCData("Character.wraiths_operator3_shotgun2_crusher_ma_rare", "Character.bls_se_wraiths_grunt1_ranged1_pulsar_ma")
  413.         cloneNPCData("Character.wraiths_warrior3_shotgun3_palica_ma_elite", "Character.bls_se_wraiths_grunt2_ranged2_pulsar_ma")
  414.         cloneNPCData("Character.wraiths_warrior3_ranged3_quasar_wa_rare", "Character.bls_se_wraiths_grunt2_melee2_crowbar_wa")
  415.        
  416.         --Northside
  417.         cloneNPCData("Character.wraiths_warrior3_melee3_hammer_wa_rare", "Character.nid_wraiths_grunt1_ranged1_nova_wa")
  418.        
  419.        
  420.     end
  421.  
  422.     --[[ if Immersive_Damage_Effects then
  423.  
  424.         Immersive_Damage_Effects_Stun_Camera_Shake = 1
  425.         Immersive_Damage_Effects_Stun_Duration = 0.5
  426.         Immersive_Damage_Effects_Stun_Knockback= 1
  427.        
  428.         --Immersive_Damage_Effects stun immunity
  429.         createConstantStatModifier("SDO.KnockdownImmunity", "Additive", "BaseStats.KnockdownImmunity", 1)
  430.         createConstantStatModifier("SDO.IDEStunImmunity", "Additive", "BaseStats.IDEStunImmunity", 1)
  431.         addToList("Effectors.VehicleTBHIncrease_inline0.statModifiers", "SDO.IDEStunImmunity")
  432.    
  433.         --Enable stun movement
  434.         TweakDB:SetFlat("PlayerLocomotion.player_locomotion_data_Stunned_inline9.value", 1)
  435.        
  436.         --Lower the stun duration
  437.         TweakDB:SetFlat("BaseStatusEffect.BlockBroken_inline1.value", Immersive_Damage_Effects_Stun_Duration)
  438.        
  439.         --Create our stun immunity
  440.         TweakDB:CloneRecord("BaseStats.IDEStunImmunity", "BaseStats.CanPlayerPiercePoisonImmunity")
  441.  
  442.         --Create player knockdown
  443.         TweakDB:CloneRecord("SDO.PlayerKnockdown", "BaseStatusEffect.Knockdown")
  444.         addToList("SDO.PlayerKnockdown.immunityStats", "BaseStats.NPCDamage")
  445.        
  446.    
  447.        
  448.         --Create Effects
  449.         createNPCStunEffect("SmallCaliberStun", 0.2 * Immersive_Damage_Effects_Stun_Camera_Shake, 0.2* Immersive_Damage_Effects_Stun_Knockback)
  450.         createNPCStunEffect("SmallMeleeStun", 0.3* Immersive_Damage_Effects_Stun_Camera_Shake, 0.3* Immersive_Damage_Effects_Stun_Knockback)
  451.         createNPCStunEffect("LargeMeleeStun", 0.6* Immersive_Damage_Effects_Stun_Camera_Shake, 0.6* Immersive_Damage_Effects_Stun_Knockback)
  452.         createNPCStunEffect("SmasherMeleeStun", 0.5* Immersive_Damage_Effects_Stun_Camera_Shake, 0.5* Immersive_Damage_Effects_Stun_Knockback)
  453.         createNPCStunEffect("HMGStun", 0.5* Immersive_Damage_Effects_Stun_Camera_Shake, 0.5* Immersive_Damage_Effects_Stun_Knockback)
  454.  
  455.         TweakDB:CloneRecord("SniperKnockdown", "Attacks.FragGrenadeKnockdown_inline1")
  456.         createNPCSniperKnockdownEffect("PowerSniperBullet", 1, 1, "Attacks.PowerRounds_Projectile")
  457.         createNPCSniperKnockdownEffect("TechSniperBullet", 1, 1, "Attacks.Bullet_Projectile")
  458.         createNPCSmartSniperKnockdownEffect("SmartSniperBullet", 1, 1)
  459.        
  460.         createNPCStunEffect("ExplosionSmallStun", 0.5* Immersive_Damage_Effects_Stun_Camera_Shake, 0.5* Immersive_Damage_Effects_Stun_Knockback)
  461.        
  462.         createNPCStunEffect("ExplosionMediumStun", 1* Immersive_Damage_Effects_Stun_Camera_Shake, 1* Immersive_Damage_Effects_Stun_Knockback)
  463.         TweakDB:CloneRecord("ExplosionMediumKnockdown", "Attacks.FragGrenadeKnockdown_inline1")
  464.         TweakDB:SetFlat("ExplosionMediumKnockdown.statusEffect", "SDO.PlayerKnockdown")
  465.  
  466.         createNPCStunEffect("ExplosionLargeStun", 2* Immersive_Damage_Effects_Stun_Camera_Shake, 2* Immersive_Damage_Effects_Stun_Knockback)
  467.         TweakDB:CloneRecord("ExplosionLargeKnockdown", "Attacks.FragGrenadeKnockdown_inline1")
  468.         TweakDB:SetFlat("ExplosionLargeKnockdown.statusEffect", "SDO.PlayerKnockdown")
  469.  
  470.         --Small Caliber (Default)
  471.         Small_Caliber_List = {"NPCBulletEffect", "NPCBulletProjectile", "NPCSmartBullet", "OdaSmartRifleBulletProjectile", "SmasherShotgunBulletEffect"}
  472.         for i,v in ipairs(Small_Caliber_List) do
  473.             addToList("Attacks."..v..".statusEffects", "SmallCaliberStun")
  474.         end
  475.  
  476.         --Small melee (Default)
  477.         NPC_IDE_Combo_Attacks_List = {"StrongAttack", "ComboAttackCenter", "ComboAttackUpToDown", "ComboAttackDownToUp", "ComboAttackRightToLeft", "ComboAttackLefToRight", "OdaStrongAttack"}     
  478.         for i,v in ipairs(NPC_IDE_Combo_Attacks_List) do
  479.             addToList("NPCAttacks."..v..".statusEffects", "SmallMeleeStun")
  480.         end
  481.  
  482.         --Large melee (strong attacks)
  483.         NPC_IDE_Strong_Attacks_List = {"Center", "DownToUp", "Knockdown", "LeftDownToRightUp", "LeftToRight", "LeftUpToRightDown", "RightDownToLeftUp", "RightToLeft", "RightUpToLeftDown", "UpToDown",
  484.         "MassiveDamageAttack", "OdaStompAttack", "StompAttack", "SasquatchHammerStrongAttack"}
  485.         for i,v in ipairs(NPC_IDE_Strong_Attacks_List) do
  486.             addToList("NPCAttacks.StrongAttack"..v..".statusEffects", "LargeMeleeStun")
  487.             addToList("NPCAttacks."..v..".statusEffects", "LargeMeleeStun")
  488.         end
  489.  
  490.         --Smashasaurus
  491.         addToList("NPCAttacks.SmasherStrongAttack.statusEffects", "SmasherMeleeStun")
  492.                    
  493.         --Snipers
  494.        
  495.  
  496.         --Explosions
  497.        
  498.         --Small
  499.         Small_Explosion_List = {"ExplosionSmall", "ExplosionSmallKill", "RoyceProjectileExplosion", "RoyceProjectileExplosionWeak", "RoyceSplashExplosion"}
  500.        
  501.         for i,v in ipairs(Small_Explosion_List) do
  502.             addToList("Attacks."..v..".statusEffects", "ExplosionSmallStun")
  503.         end
  504.         addToList("Attacks.FireExtinguisherBlind.statusEffects", "ExplosionSmallStun")
  505.         addToList("Attacks.MinotaurWeakspotLeftExplosion.statusEffects", "ExplosionSmallStun")
  506.         addToList("Attacks.MinotaurWeakspotRightExplosion.statusEffects", "ExplosionSmallStun")
  507.         addToList("Attacks.RoyceWeakspotExplosion.statusEffects", "ExplosionSmallStun")
  508.        
  509.         --Medium
  510.         Medium_Explosion_List = {"ExplosionMedium", "ExplosionMediumKill", "RainMissileBulletEffect", "CarMediumKill", "PlasmaBeam", "PlasmaBeamShot", "RoyceExplosion"}
  511.         for i,v in ipairs(Medium_Explosion_List) do
  512.             addToList("Attacks."..v..".statusEffects", "ExplosionMediumStun")
  513.             addToList("Attacks."..v..".statusEffects", "ExplosionMediumKnockdown")
  514.         end
  515.         addToList("Attacks.AndroidDeathExplosion.statusEffects", "ExplosionMediumStun")
  516.         --addToList("Attacks.AndroidDeathExplosion.statusEffects", "ExplosionMediumKnockdown")
  517.        
  518.         addToList("Attacks.EMPGrenade.statusEffects", "ExplosionMediumStun")
  519.         --addToList("Attacks.EMPGrenade.statusEffects", "ExplosionMediumKnockdown")
  520.  
  521.         addToList("Attacks.FragGrenade.statusEffects", "ExplosionMediumStun")
  522.         addToList("Attacks.FragGrenade.statusEffects", "ExplosionMediumKnockdown")
  523.  
  524.         addToList("Attacks.LightIncendiaryGrenade.statusEffects", "ExplosionMediumStun")
  525.         --addToList("Attacks.LightIncendiaryGrenade.statusEffects", "ExplosionMediumKnockdown")
  526.  
  527.         addToList("Attacks.LightBiotechGrenade.statusEffects", "ExplosionMediumStun")
  528.         --addToList("Attacks.LightBiotechGrenade.statusEffects", "ExplosionMediumKnockdown")
  529.  
  530.         addToList("Attacks.FlashbangGrenadeMinor.statusEffects", "ExplosionMediumStun")
  531.         --addToList("Attacks.FlashbangGrenadeMinor.statusEffects", "ExplosionMediumKnockdown")
  532.  
  533.         addToList("Attacks.OzobGrenade.statusEffects", "ExplosionMediumStun")
  534.         addToList("Attacks.OzobGrenade.statusEffects", "ExplosionMediumKnockdown")
  535.  
  536.         --Large
  537.         Large_Explosion_List = {"ExplosionEnormous", "ExplosionLarge", "ExplosionLargeKill", "MinotaurDeathExplosion"}
  538.        
  539.         for i,v in ipairs(Large_Explosion_List) do
  540.             addToList("Attacks."..v..".statusEffects", "ExplosionLargeStun")
  541.             addToList("Attacks."..v..".statusEffects", "ExplosionLargeKnockdown")
  542.         end
  543.        
  544.         --HMG
  545.         HMG_List = {"ExplodingBulletSmallProjectile", "SmasherMinigunBulletEffect", "SmartBulletMech"}
  546.        
  547.         for i,v in ipairs(HMG_List) do
  548.             addToList("Attacks."..v..".statusEffects", "HMGStun")
  549.         end
  550.  
  551.        
  552.     end ]]
  553.    
  554.     --Immersive movement
  555.     --[[ if Immersive_Movement then
  556.         TweakDB:SetFlat("playerStateMachineLocomotion.stand.imperfectTurn", true)
  557.         TweakDB:SetFlat("playerStateMachineLocomotion.sprint.imperfectTurn", true)
  558.         TweakDB:SetFlat("playerStateMachineLocomotion.crouch.imperfectTurn", true)
  559.     else
  560.         TweakDB:SetFlat("playerStateMachineLocomotion.stand.imperfectTurn", false)
  561.         TweakDB:SetFlat("playerStateMachineLocomotion.sprint.imperfectTurn", false)
  562.         TweakDB:SetFlat("playerStateMachineLocomotion.crouch.imperfectTurn", false)
  563.     end ]]
  564.    
  565.  
  566. end
  567.  
  568. function createCombinedStatModifier(recordName, modifierType, opSymbol, refObject, refStat, statType, value)
  569.  
  570.     TweakDB:CreateRecord(recordName, "gamedataCombinedStatModifier_Record")
  571.     TweakDB:SetFlat(recordName..".modifierType", modifierType)
  572.     TweakDB:SetFlat(recordName..".opSymbol", opSymbol)
  573.     TweakDB:SetFlat(recordName..".refObject", refObject)
  574.     TweakDB:SetFlat(recordName..".refStat", refStat)
  575.     TweakDB:SetFlat(recordName..".statType", statType)
  576.     TweakDB:SetFlat(recordName..".value", value)
  577.    
  578.  
  579. end
  580. function createNPCSmartSniperKnockdownEffect(recordName, cameraShakeStrength, impulseDistance)
  581.  
  582.     --Stun effect
  583.     createNPCStunEffect(recordName.."Stun", cameraShakeStrength, impulseDistance)
  584.        
  585.     --Ranged attack package
  586.     TweakDB:CreateRecord(recordName, "gamedataRangedAttackPackage_Record")
  587.     TweakDB:SetFlat(recordName..".chargeFire", recordName.."RangedAttack")
  588.     TweakDB:SetFlat(recordName..".defaultFire", recordName.."RangedAttack")
  589.  
  590.     --Ranged attacks
  591.     TweakDB:CloneRecord(recordName.."RangedAttack", "Attacks.SmartBulletMedFire")
  592.     TweakDB:SetFlat(recordName.."RangedAttack.NPCAttack", recordName.."BulletEffect")
  593.    
  594.     --Bullet Effect
  595.     TweakDB:CloneRecord(recordName.."BulletEffect", "Attacks.NPCSmartBullet")
  596.     TweakDB:SetFlat(recordName.."BulletEffect.statusEffects", {recordName.."Stun", "SniperKnockdown"})
  597.    
  598.    
  599. end
  600. function createNPCSniperKnockdownEffect(recordName, cameraShakeStrength, impulseDistance, playerTimeDilated)
  601.  
  602.     --Stun effect
  603.     createNPCStunEffect(recordName.."Stun", cameraShakeStrength, impulseDistance)
  604.        
  605.     --Ranged attack package
  606.     TweakDB:CreateRecord(recordName, "gamedataRangedAttackPackage_Record")
  607.     TweakDB:SetFlat(recordName..".chargeFire", recordName.."RangedAttack")
  608.     TweakDB:SetFlat(recordName..".defaultFire", recordName.."RangedAttack")
  609.  
  610.     --Ranged attacks
  611.     TweakDB:CloneRecord(recordName.."RangedAttack", "Attacks.PhysicalBullet")
  612.     TweakDB:SetFlat(recordName.."RangedAttack.NPCAttack", recordName.."BulletEffect")
  613.     TweakDB:SetFlat(recordName.."RangedAttack.playerTimeDilated", playerTimeDilated)
  614.    
  615.     --Bullet Effect
  616.     TweakDB:CloneRecord(recordName.."BulletEffect", "Attacks.NPCBulletEffect")
  617.     TweakDB:SetFlat(recordName.."BulletEffect.statusEffects", {recordName.."Stun", "SniperKnockdown"})
  618.    
  619.    
  620. end
  621. function createNPCStunEffect(recordName, cameraShakeStrength, impulseDistance)
  622.         --Attack Status Effect
  623.         TweakDB:CloneRecord(recordName, "Attacks.LightIncendiaryGrenade_inline0")
  624.         TweakDB:SetFlat(recordName..".statusEffect", recordName.."StatusEffect")
  625.        
  626.         --Status Effect
  627.         TweakDB:CloneRecord(recordName.."StatusEffect", "BaseStatusEffect.BlockBroken")
  628.         TweakDB:SetFlat(recordName.."StatusEffect.playerData", recordName.."StatusEffectplayerData")
  629.         TweakDB:SetFlat(recordName.."StatusEffect.immunityStats", {"BaseStats.NPCDamage"})
  630.    
  631.         --Player Data
  632.         TweakDB:CloneRecord(recordName.."StatusEffectplayerData", "BaseStatusEffect.BlockBroken_inline2")
  633.         TweakDB:SetFlat(recordName.."StatusEffectplayerData.cameraShakeStrength", cameraShakeStrength)
  634.         TweakDB:SetFlat(recordName.."StatusEffectplayerData.impulseDistance", impulseDistance)
  635. end
  636.  
  637. function setArchetypeStats(recordName, statsList, HPMult, DPSMult, Armor, Accuracy, ResistanceBonus, QuickhackResistance)
  638.     createConstantStatModifier(recordName.."HPModifier", "Multiplier", "BaseStats.Health", HPMult)
  639.     createConstantStatModifier(recordName.."DPSModifier", "Multiplier", "BaseStats.NPCDamage", DPSMult)
  640.     createConstantStatModifier(recordName.."ArmorModifier", "Multiplier", "BaseStats.Armor", Armor)
  641.     createConstantStatModifier(recordName.."AccuracyModifier", "Multiplier", "BaseStats.Accuracy", Accuracy)
  642.     createConstantStatModifier(recordName.."ThermalResistance", "Additive", "BaseStats.ThermalResistance", ResistanceBonus)
  643.     createConstantStatModifier(recordName.."ElectricResistance", "Additive", "BaseStats.ElectricResistance", ResistanceBonus)
  644.     createConstantStatModifier(recordName.."ChemicalResistance", "Additive", "BaseStats.ChemicalResistance", ResistanceBonus)
  645.     createConstantStatModifier(recordName.."QuickhackResistance", "Additive", "BaseStats.HackingResistance", QuickhackResistance)
  646.  
  647.     table.insert(statsList, recordName.."HPModifier")
  648.     table.insert(statsList, recordName.."DPSModifier")
  649.     table.insert(statsList, recordName.."ArmorModifier")
  650.     table.insert(statsList, recordName.."AccuracyModifier")
  651.     table.insert(statsList, recordName.."ThermalResistance")
  652.     table.insert(statsList, recordName.."ElectricResistance")
  653.     table.insert(statsList, recordName.."ChemicalResistance")
  654.     table.insert(statsList, recordName.."QuickhackResistance")
  655.  
  656.     TweakDB:SetFlat(recordName..".statModifiers", statsList)
  657.  
  658. end
  659. function cloneNPCData(baseRecordName, newRecordName)
  660.     flats = {"abilities", "archetypeData", "lootDrop","primaryEquipment", "rarity","secondaryEquipment","visualTags","statPools","entityTemplatePath"}
  661.     for i,v in ipairs(flats) do
  662.         TweakDB:SetFlatNoUpdate(newRecordName.."."..v, TweakDB:GetFlat(baseRecordName.."."..v))
  663.     end
  664.     TweakDB:Update(newRecordName)
  665.  
  666.     --[[
  667.     TweakDB:SetFlat(newRecordName..".abilities", TweakDB:GetFlat(baseRecordName..".abilities"))
  668.     TweakDB:SetFlat(newRecordName..".archetypeData", TweakDB:GetFlat(baseRecordName..".archetypeData"))
  669.     TweakDB:SetFlat(newRecordName..".lootDrop", TweakDB:GetFlat(baseRecordName..".lootDrop"))
  670.     TweakDB:SetFlat(newRecordName..".primaryEquipment", TweakDB:GetFlat(baseRecordName..".primaryEquipment"))
  671.     TweakDB:SetFlat(newRecordName..".rarity", TweakDB:GetFlat(baseRecordName..".rarity"))
  672.     TweakDB:SetFlat(newRecordName..".secondaryEquipment", TweakDB:GetFlat(baseRecordName..".secondaryEquipment"))
  673.     TweakDB:SetFlat(newRecordName..".visualTags", TweakDB:GetFlat(baseRecordName..".visualTags"))
  674.     TweakDB:SetFlat(newRecordName..".tags", TweakDB:GetFlat(baseRecordName..".tags"))
  675.     TweakDB:SetFlat(newRecordName..".statPools", TweakDB:GetFlat(baseRecordName..".statPools"))
  676.     TweakDB:SetFlat(newRecordName..".entityTemplatePath", TweakDB:GetFlat(baseRecordName..".entityTemplatePath"))
  677.     ]]--
  678.  
  679. end
  680.  
  681. function insertAbilities(recordName, value, newAbilities)
  682.     Abilities = TweakDB:GetFlat(recordName)
  683.     if table.getn(Abilities) == value then
  684.         for i, v in ipairs(newAbilities) do
  685.             table.insert(Abilities, v)
  686.         end
  687.     end
  688.     TweakDB:SetFlat(recordName, Abilities)
  689. end
  690. function createNPCWeaponData(recordName, statsList, Damage, TBH, LOS)
  691.  
  692.     createConstantStatModifier(recordName.."NPCDamage", "Multiplier", "BaseStats.NPCDamage", Damage)
  693.     createConstantStatModifier(recordName.."TBH", "Additive", "BaseStats.TBHsBaseSourceMultiplierCoefficient", TBH)
  694.     createConstantStatModifier(recordName.."TBHLOS", "Additive", "BaseStats.TBHsMinimumLineOfSightTime", LOS)
  695.     table.insert(statsList, recordName.."NPCDamage")
  696.     table.insert(statsList, recordName.."TBH")
  697.     table.insert(statsList, recordName.."TBHLOS")
  698.  
  699.  
  700.     rebuildNPCWeaponData(recordName, statsList)
  701.    
  702. end
  703. function addToList(list, ability)
  704.     TweakDB:SetFlat("RTDB.ActionTargetPrereq.target", ability)
  705.     abilityhash=TweakDB:GetFlat("RTDB.ActionTargetPrereq.target")
  706.     templist = TweakDB:GetFlat(list)
  707.     if TweakDB:GetFlat(list) == nil then
  708.         return
  709.     end
  710.     if has_value(templist, abilityhash) then
  711.    
  712.     else
  713.  
  714.         table.insert(templist, ability)
  715.         TweakDB:SetFlat(list, templist)
  716.     end
  717. end
  718. function has_value (tab, val)
  719.     for index, value in ipairs(tab) do
  720.         if value == val then
  721.             return true
  722.         end
  723.     end
  724.  
  725.     return false
  726. end
  727. function rebuildNPCWeaponData(recordName, statsList)
  728.  
  729.     baseList = {"Items.Base_NPC_RPG_Data_inline0", "Items.Base_NPC_RPG_Data_inline1", "Items.Base_NPC_RPG_Data_inline2", "Items.Base_NPC_RPG_Data_inline3"}
  730.     for i,v in ipairs(statsList) do
  731.         table.insert(baseList, v)
  732.     end
  733.     TweakDB:SetFlat(recordName..".statModifiers", baseList)
  734. end
  735.    
  736. function buildBaseModifierList(recordName, length, statModifiers)
  737.     statsList = {}
  738.     for i=0, 7 do
  739.         table.insert(statsList, "Character.NPC_Base_Curves_inline"..i)
  740.     end
  741.     for i=0, length do
  742.         table.insert(statsList, recordName.."_inline"..i)
  743.     end
  744.     table.insert(statsList, "Character.BaseAccuracy")
  745.     for i,v in ipairs(statModifiers) do
  746.         table.insert(statsList, v)
  747.     end
  748.     TweakDB:SetFlat(recordName..".statModifiers", statsList)
  749. end
  750. function createConstantStatModifier(recordName, modifierType, statType, value)
  751.     TweakDB:CreateRecord(recordName, "gamedataConstantStatModifier_Record")
  752.     TweakDB:SetFlatNoUpdate(recordName..".modifierType", modifierType)
  753.     TweakDB:SetFlatNoUpdate(recordName..".statType", statType)
  754.     TweakDB:SetFlatNoUpdate(recordName..".value", value)
  755.     TweakDB:Update(recordName)
  756. end
  757.  
  758.  
  759.  
  760.  
  761.  
  762. return SDO:new()
  763.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement