Forged Alliance Forever Forged Alliance Forever Forums 2014-02-27T14:28:03+02:00 /feed.php?f=45&t=6749 2014-02-27T14:28:03+02:00 2014-02-27T14:28:03+02:00 /viewtopic.php?t=6749&p=67169#p67169 <![CDATA[Re: (Completed) SAM OKC mod for FAF w/ download link]]> Statistics: Posted by Resin_Smoker — 27 Feb 2014, 14:28


]]>
2014-02-27T14:00:33+02:00 2014-02-27T14:00:33+02:00 /viewtopic.php?t=6749&p=67166#p67166 <![CDATA[Re: (Completed) SAM OKC mod for FAF w/ download link]]>
ZLO_RD wrote:
what of enemy unit is in fog of war? and you can't know it hp, or what if that is cybran gunship jammer

K
ZLO... Missile as its name implies has the means to seek, otherwise it be just another dumb rocket now wouldn't it?

However ever their are a few major differences between anti-air and TML's.
- Anti-Air missiles do not share intl back to the firing unit and filter their targets solely based on range.
- TML's can share intel about what's at their current location and filter their targets based on the targeting priorities of the firing weapon.

Please keep in mind that this isn't part of this mod yet but could easily be if I had a day to sit down and script it. Overall though, I think this would realistically and accurately model the tracking behavior of real missiles and TML's.

Comments suggestions to help balance and prevent abuse are welcome.

Resin

Statistics: Posted by Resin_Smoker — 27 Feb 2014, 14:00


]]>
2014-02-27T13:50:51+02:00 2014-02-27T13:50:51+02:00 /viewtopic.php?t=6749&p=67163#p67163 <![CDATA[Re: (Completed) SAM OKC mod for FAF w/ download link]]>
Krapougnak wrote:
The Daredevils Coding Team back in the same thread... good old memories... ;)

Back to topic : Resin if memory serves there already was a retargetting TML in 4DC for Cybran wasn't it ? If yes what is the difference between the old and the new one ?


That TML was for the seraphim and basically pulled every dirty trick in the book to get a kill.

The FAF TML's will be toned down somewhat having not modifications to damage or spec.

Resin

Statistics: Posted by Resin_Smoker — 27 Feb 2014, 13:50


]]>
2014-02-27T11:38:22+02:00 2014-02-27T11:38:22+02:00 /viewtopic.php?t=6749&p=67147#p67147 <![CDATA[Re: (Completed) SAM OKC mod for FAF w/ download link]]> Statistics: Posted by ZLO_RD — 27 Feb 2014, 11:38


]]>
2014-02-27T11:05:55+02:00 2014-02-27T11:05:55+02:00 /viewtopic.php?t=6749&p=67146#p67146 <![CDATA[Re: (Completed) SAM OKC mod for FAF w/ download link]]>

Back to topic : Resin if memory serves there already was a retargetting TML in 4DC for Cybran wasn't it ? If yes what is the difference between the old and the new one ?

Statistics: Posted by Krapougnak — 27 Feb 2014, 11:05


]]>
2014-02-27T09:53:42+02:00 2014-02-27T09:53:42+02:00 /viewtopic.php?t=6749&p=67138#p67138 <![CDATA[Re: (Completed) SAM OKC mod for FAF w/ download link]]>
Good work pal.. well done ;)

auto targeting TML's, sounds good.

Statistics: Posted by Domino — 27 Feb 2014, 09:53


]]>
2014-02-26T04:30:41+02:00 2014-02-26T04:30:41+02:00 /viewtopic.php?t=6749&p=66988#p66988 <![CDATA[Re: (Completed) SAM OKC mod for FAF w/ download link]]>
Just think, swarms of smart re-targeting TML's that are fired at nothing in particular will streak across the map in search of a victim!

Resin

Statistics: Posted by Resin_Smoker — 26 Feb 2014, 04:30


]]>
2014-02-23T05:19:06+02:00 2014-02-23T05:19:06+02:00 /viewtopic.php?t=6749&p=66544#p66544 <![CDATA[Re: (Completed) SAM OKC mod for FAF w/ download link]]>
Nombringer wrote:
Sweet, Ill test this out as soon as I can



Awesome!

After more play testing I've discovered that some SAM's are much better then others.

Here are my rankings:

UEF: Tracking weapon. Low damage, 6 projectiles, fast firing rate, OKC effect is profound, totally shredds masses of small fighters.

CYBRAN: tracking weapon, med damage, 4 projectiles, med firing rate, OKC effect is very noticeable, very good vs small / med fighters.

AEON: Tracking weapon, med damage, 2 projectiles, med firing rate, OKC effects is good, strong vs med / large fighters.

SERAPHIM: Direct fire weapon that's high damage, slow firing, with slow projectile speed. Updating the firing priorities could help as would allowing the projectile to detonate like a flack weapon.

Resin

Statistics: Posted by Resin_Smoker — 23 Feb 2014, 05:19


]]>
2014-02-23T04:30:29+02:00 2014-02-23T04:30:29+02:00 /viewtopic.php?t=6749&p=66542#p66542 <![CDATA[Re: (Completed) SAM OKC mod for FAF w/ download link]]> Statistics: Posted by Nombringer — 23 Feb 2014, 04:30


]]>
2014-02-22T07:15:20+02:00 2014-02-22T07:15:20+02:00 /viewtopic.php?t=6749&p=66450#p66450 <![CDATA[Re: SAM OKC mod for FAF]]>
FAF OKC, Public Release (v0.1) download link http://www.mediafire.com/download/bh3df ... AF_OKC.rar

I've also uploaded this to the mod vault!

Only play tested this lightly and just so you know this doesn't work for the Sera as their T3 launcher is direct fire and does not use tracking missiles. Instead I gave them a 0.25 damage radius so they can hit multiple units that are stacked in a small location.

Resin

Statistics: Posted by Resin_Smoker — 22 Feb 2014, 07:15


]]>
2014-02-22T05:50:37+02:00 2014-02-22T05:50:37+02:00 /viewtopic.php?t=6749&p=66446#p66446 <![CDATA[Re: SAM OKC mod for FAF]]>
Code:
INFO: *** FAF_OKC projectile.lua, OKC_HeartBeat ***
INFO:         Projectile ID: \000268435457
INFO:         Game time is: \00033.5
INFO: *************************************
INFO:         "OKC_HeartBeat, while-loop-do"
INFO:         Projectile ID: \000268435457
INFO:         Game time is: \00033.5
INFO:         Tracking a target
INFO:         Game time is: \00033.5
INFO:         target.IncommingDamage NOT set, creating it now, including amount of incomming damage
INFO:         self.DamageData.Damage amount is: \000200
INFO:         Game time is: \00033.5
INFO:         self.LifeCounter = \0001
INFO:         Game time is: \00033.5
INFO: *** FAF_OKC projectile.lua, OKC_HeartBeat ***
INFO:         Projectile ID: \000268435458
INFO:         Game time is: \00033.600002288818
INFO: *************************************
INFO:         "OKC_HeartBeat, while-loop-do"
INFO:         Projectile ID: \000268435458
INFO:         Game time is: \00033.600002288818
INFO:         Tracking a target
INFO:         Game time is: \00033.600002288818
INFO:         target.IncommingDamage set, target.IncommingDamage >= target:GetHealth(), self.RetargetFlag is: \000false\000     calling self.OKC_Retargeting
INFO:         self.DamageData.Damage amount is:\000200
INFO:         Game time is: \00033.600002288818
INFO:         self.LifeCounter = \0001
INFO:         Game time is: \00033.600002288818
INFO: *** FAF_OKC projectile.lua, OKC_HeartBeat ***
INFO:         Projectile ID: \000268435459
INFO:         Game time is: \00033.700000762939
INFO: *************************************
INFO:         "OKC_HeartBeat, while-loop-do"
INFO:         Projectile ID: \000268435459
INFO:         Game time is: \00033.700000762939
INFO:         Tracking a target
INFO:         Game time is: \00033.700000762939
INFO:         target.IncommingDamage set, target.IncommingDamage >= target:GetHealth(), self.RetargetFlag is: \000false\000     calling self.OKC_Retargeting
INFO:         self.DamageData.Damage amount is:\000200
INFO:         Game time is: \00033.700000762939
INFO:         self.LifeCounter = \0001
INFO:         Game time is: \00033.700000762939
INFO: *** FAF_OKC projectile.lua, OKC_HeartBeat ***
INFO:         Projectile ID: \000268435460
INFO:         Game time is: \00033.799999237061
INFO: *************************************
INFO:         "OKC_HeartBeat, while-loop-do"
INFO:         Projectile ID: \000268435460
INFO:         Game time is: \00033.799999237061
INFO:         Tracking a target
INFO:         Game time is: \00033.799999237061
INFO:         target.IncommingDamage set, target.IncommingDamage >= target:GetHealth(), self.RetargetFlag is: \000false\000     calling self.OKC_Retargeting
INFO:         self.DamageData.Damage amount is:\000200
INFO:         Game time is: \00033.799999237061
INFO:         self.LifeCounter = \0001
INFO:         Game time is: \00033.799999237061
INFO: *** FAF_OKC projectile.lua, OKC_HeartBeat ***
INFO:         Projectile ID: \000268435461
INFO:         Game time is: \00033.900001525879
INFO: *************************************
INFO:         "OKC_HeartBeat, while-loop-do"
INFO:         Projectile ID: \000268435461
INFO:         Game time is: \00033.900001525879
INFO:         Tracking a target
INFO:         Game time is: \00033.900001525879
INFO:         target.IncommingDamage set, target.IncommingDamage >= target:GetHealth(), self.RetargetFlag is: \000false\000     calling self.OKC_Retargeting
INFO:         self.DamageData.Damage amount is:\000200
INFO:         Game time is: \00033.900001525879
INFO:         self.LifeCounter = \0001
INFO:         Game time is: \00033.900001525879
INFO: *** FAF_OKC projectile.lua, OKC_HeartBeat ***
INFO:         Projectile ID: \000268435462
INFO:         Game time is: \00034
INFO: *************************************
INFO:         "OKC_HeartBeat, while-loop-do"
INFO:         Projectile ID: \000268435462
INFO:         Game time is: \00034
INFO:         Tracking a target
INFO:         Game time is: \00034
INFO:         target.IncommingDamage set, target.IncommingDamage >= target:GetHealth(), self.RetargetFlag is: \000false\000     calling self.OKC_Retargeting
INFO:         self.DamageData.Damage amount is:\000200
INFO:         Game time is: \00034
INFO:         self.LifeCounter = \0001
INFO:         Game time is: \00034
INFO:         "OKC_HeartBeat, while-loop-do"
INFO:         Projectile ID: \000268435457
INFO:         Game time is: \00034.400001525879
INFO:         Tracking a target
INFO:         Game time is: \00034.400001525879
INFO:         self.LifeCounter = \0002
INFO:         Game time is: \00034.400001525879
INFO:         "OKC_HeartBeat, while-loop-do"
INFO:         Projectile ID: \000268435458
INFO:         Game time is: \00034.5
INFO:         self.LifeCounter = \0002
INFO:         Game time is: \00034.5
INFO:         "OKC_HeartBeat, while-loop-do"
INFO:         Projectile ID: \000268435459
INFO:         Game time is: \00034.600002288818
INFO:         self.LifeCounter = \0002
INFO:         Game time is: \00034.600002288818
INFO:         "OKC_HeartBeat, while-loop-do"
INFO:         Projectile ID: \000268435460
INFO:         Game time is: \00034.700000762939
INFO:         self.LifeCounter = \0002
INFO:         Game time is: \00034.700000762939
INFO:         "OKC_HeartBeat, while-loop-do"
INFO:         Projectile ID: \000268435461
INFO:         Game time is: \00034.799999237061
INFO:         self.LifeCounter = \0002
INFO:         Game time is: \00034.799999237061
INFO: *** FAF_OKC projectile.lua, OnImpact ***
INFO:         Projectile ID: \000268435457
INFO:         Game time is: \00034.799999237061
INFO:         targetType: \000UnitAir
INFO:         targetEntity: \000table: 31CCD5A0
INFO: *************************************
INFO:         "OKC_HeartBeat, while-loop-do"
INFO:         Projectile ID: \000268435462
INFO:         Game time is: \00034.900001525879
INFO:         self.LifeCounter = \0002
INFO:         Game time is: \00034.900001525879
INFO: *** FAF_OKC projectile.lua, OnImpact ***
INFO:         Projectile ID: \000268435456
INFO:         Game time is: \00035.100002288818
INFO:         targetType: \000Air
INFO:         targetEntity: \000nil
INFO: *************************************
INFO:         "OKC_HeartBeat, while-loop-do"
INFO:         Projectile ID: \000268435458
INFO:         Game time is: \00035.400001525879
INFO:         self.LifeCounter = \0003
INFO:         Game time is: \00035.400001525879
INFO:         "OKC_HeartBeat, while-loop-do"
INFO:         Projectile ID: \000268435459
INFO:         Game time is: \00035.5
INFO:         self.LifeCounter = \0003
INFO:         Game time is: \00035.5
INFO:         "OKC_HeartBeat, while-loop-do"
INFO:         Projectile ID: \000268435460
INFO:         Game time is: \00035.600002288818
INFO:         self.LifeCounter = \0003
INFO:         Game time is: \00035.600002288818
INFO: *** FAF_OKC projectile.lua, OnImpact ***
INFO:         Projectile ID: \000268435458
INFO:         Game time is: \00035.600002288818
INFO:         targetType: \000Air
INFO:         targetEntity: \000nil
INFO: *************************************
INFO: *** FAF_OKC projectile.lua, OnImpact ***
INFO:         Projectile ID: \000268435459
INFO:         Game time is: \00035.600002288818
INFO:         targetType: \000Air
INFO:         targetEntity: \000nil
INFO: *************************************
INFO: *** FAF_OKC projectile.lua, OnImpact ***
INFO:         Projectile ID: \000268435460
INFO:         Game time is: \00035.600002288818
INFO:         targetType: \000Air
INFO:         targetEntity: \000nil
INFO: *************************************
INFO: *** FAF_OKC projectile.lua, OnImpact ***
INFO:         Projectile ID: \000268435461
INFO:         Game time is: \00035.600002288818
INFO:         targetType: \000Air
INFO:         targetEntity: \000nil
INFO: *************************************
INFO: *** FAF_OKC projectile.lua, OnImpact ***
INFO:         Projectile ID: \000268435462
INFO:         Game time is: \00035.600002288818
INFO:         targetType: \000Air
INFO:         targetEntity: \000nil
INFO: *************************************
INFO: *** FAF_OKC projectile.lua, OnImpact ***
INFO:         Projectile ID: \000269484033
INFO:         Game time is: \00043.799999237061
INFO:         targetType: \000Terrain
INFO:         targetEntity: \000nil
INFO: *************************************
INFO: *** FAF_OKC projectile.lua, OnImpact ***
INFO:         Projectile ID: \000269484032
INFO:         Game time is: \00045.100002288818
INFO:         targetType: \000Terrain
INFO:         targetEntity: \000nil
INFO: *************************************

Statistics: Posted by Resin_Smoker — 22 Feb 2014, 05:50


]]>
2014-02-21T03:12:44+02:00 2014-02-21T03:12:44+02:00 /viewtopic.php?t=6749&p=66314#p66314 <![CDATA[Re: SAM OKC mod for FAF]]>
IceDreamer wrote:
What does the data from the AI Brain mean/change/do?


I can use AI functions to search all enemies in range of a particular type. This is very fast and easier to script than other methods.

Resin

Statistics: Posted by Resin_Smoker — 21 Feb 2014, 03:12


]]>
2014-02-21T01:41:37+02:00 2014-02-21T01:41:37+02:00 /viewtopic.php?t=6749&p=66307#p66307 <![CDATA[Re: SAM OKC mod for FAF]]> Statistics: Posted by IceDreamer — 21 Feb 2014, 01:41


]]>
2014-02-20T21:59:26+02:00 2014-02-20T21:59:26+02:00 /viewtopic.php?t=6749&p=66270#p66270 <![CDATA[Re: OKC mod for FAF]]>
Here is what the Projectile.lua PassDamageData outputs...

Code:
INFO: *** projectile.lua, PassDamageData ***
INFO:         Game time is: \00030.300001144409
INFO:         Passing extra data
INFO:         Adjusting for ProjectileLifetimeUsesMultiplier
INFO:         OKC_Retargeting: \000true
INFO:         OKC Projectile found, forking to "self.ProjHeartBeat"
INFO:         self.DamageData: \000{
INFO:   Buffs={ },
INFO:   CollideFriendly=false,
INFO:   DamageAmount=600,
INFO:   DamageFriendly=true,
INFO:   DamageRadius=0,
INFO:   DamageType="Normal",
INFO:   Instigator={
INFO:     Army=1,
INFO:     Brain={ <metatable=table: 28580DC0>
INFO:       AIPlansList={
INFO:         { "/lua/AI/aiarchetype-managerloader.lua" },
INFO:         { "/lua/AI/aiarchetype-managerloader.lua" },
INFO:         { "/lua/AI/aiarchetype-managerloader.lua" },
INFO:         { "/lua/AI/aiarchetype-managerloader.lua" }
INFO:       },
INFO:       AttackData={
INFO:         AMPlatoonCount={
INFO:           DefaultGroupAir=0,
INFO:           DefaultGroupLand=0,
INFO:           DefaultGroupSea=0
INFO:         },
INFO:         NeedSort=false
INFO:       },
INFO:       BrainType="Human",
INFO:       ConstantEval=true,
INFO:       DefaultPlan=true,
INFO:       EconStateUnits={ EnergyStorage={ }, MassStorage={ } },
INFO:       EconStorageTrigs={ },
INFO:       IgnoreArmyCaps=false,
INFO:       IntelTriggerList={ },
INFO:       Name="ARMY_1",
INFO:       Nickname="Resin_Smoker",
INFO:       PingCallbackList={ },
INFO:       RepeatExecution=false,
INFO:       Trash={ },
INFO:       TriggerList={ },
INFO:       UnitBuiltTriggerList={ },
INFO:       VOTable={ },
INFO:       VeterancyTriggerList={ },
INFO:       _c_object=userdata: CScriptObject* at 2E631588 = [CScriptObject at 0x2BDED6C0]
INFO:     },
INFO:     Categories={
INFO:       "PRODUCTFA",
INFO:       "SELECTABLE",
INFO:       "BUILTBYTIER3ENGINEER",
INFO:       "BUILTBYTIER3COMMANDER",
INFO:       "SERAPHIM",
INFO:       "STRUCTURE",
INFO:       "DEFENSE",
INFO:       "TECH3",
INFO:       "ANTIAIR",
INFO:       "DRAGBUILD",
INFO:       "SIZE4",
INFO:       "VISIBLETORECON",
INFO:       "RECLAIMABLE",
INFO:       "OVERLAYANTIAIR",
INFO:       "SORTDEFENSE"
INFO:     },
INFO:     Description="<LOC xsb2304_desc>Anti-Air Defense",
INFO:     EntityId="1",
INFO:     GameTime=30.300001144409,
INFO:     Location={ <metatable=table: 318DBA78> 197.5, 20.578125, 372.5 },
INFO:     UnitName="<LOC xsb2304_name>Iathu-ioz"
INFO:   },
INFO:   Target={
INFO:     Army=2,
INFO:     Categories={
INFO:       "PRODUCTFA",
INFO:       "SELECTABLE",
INFO:       "BUILTBYTIER1FACTORY",
INFO:       "BUILTBYTIER2FACTORY",
INFO:       "BUILTBYTIER3FACTORY",
INFO:       "SERAPHIM",
INFO:       "MOBILE",
INFO:       "AIR",
INFO:       "HIGHALTAIR",
INFO:       "TECH1",
INFO:       "INTELLIGENCE",
INFO:       "SCOUT",
INFO:       "VISIBLETORECON",
INFO:       "RECLAIMABLE"
INFO:     },
INFO:     Description="<LOC xsa0101_desc>Air Scout",
INFO:     EntityId="1048584",
INFO:     Location={ <metatable=table: 318DBA78> 203.5, 40.603515625, 373.5 },
INFO:     UnitName="<LOC xsa0101_name>Sele-istle"
INFO:   },
INFO:   Weapon={
INFO:     DisplayName="Losaare AA Autocannon",
INFO:     Label="AntiAirMissiles",
INFO:     MaxRadius=60,
INFO:     MinRadius=0,
INFO:     MuzzleVelocity=60,
INFO:     NukeWeapon=false,
INFO:     OKC_Retargeting=true,
INFO:     ProjectileId="/projectiles/saalosaareautocannon04/saalosaareautocannon04_proj.bp",
INFO:     ProjectileLifetime=5,
INFO:     ProjectileLifetimeUsesMultiplier=1.25,
INFO:     TargetPriorities={
INFO:       "SPECIALHIGHPRI",
INFO:       "AIR MOBILE HIGHPRIAIR",
INFO:       "AIR MOBILE TECH3 BOMBER",
INFO:       "AIR MOBILE BOMBER",
INFO:       "AIR MOBILE GROUNDATTACK",
INFO:       "AIR MOBILE TRANSPORTATION",
INFO:       "AIR MOBILE",
INFO:       "SPECIALLOWPRI",
INFO:       "ALLUNITS"
INFO:     }
INFO:   }
INFO: }


One thing I've done here is use the ProjectileLifetimeUsesMultiplier if it's present in the unit blueprint. What this does is act as a multi for what ever LifeTime is set within the projectiles blueprint. Hence if this is available it will override the standard ProjectileLifetime held in the unit blueprint weapons section.

In the above our sam has a weapon lifetime multi of "1.25" while the projectile blueprint shows "4"... (1.25 * 4 = 5)

This way i can use either the standard LifeTime of the weapon or the multi'd LifeTime of the projectile if it's available.

Here is the script:
Code:
PassDamageData = function( self, damageData )
      local myDebug = true
      if myDebug or masterDebug then
         LOG('*** projectile.lua, PassDamageData ***')
         LOG('   Game time is: ', GetGameTimeSeconds() )         
      end      
      --> Run old first to ensure that data from weapon.lua is being passed into projectile DamageData
      oldProjectile.PassDamageData( self, damageData )
      --> Ensure that projectiles used as props or nukes dont trigger the passing of extra data
      if self.DamageData.DamageAmount > 1 and not self.damageData.Weapon.NukeWeapon then
         if myDebug or masterDebug then
            LOG('   Passing extra data')      
         end
         --> Pass extra data into self.DamageData      
         self.DamageData.Instigator = damageData.Instigator
         self.DamageData.Target = damageData.Target
         self.DamageData.Weapon = damageData.Weapon
           --> Use lifetime multiplier if avalible
           if self.DamageData.Weapon.ProjectileLifetimeUsesMultiplier > 0 then
            if myDebug or masterDebug then
               LOG('   Adjusting for ProjectileLifetimeUsesMultiplier')
            end            
              self.DamageData.Weapon.ProjectileLifetime = ( self.MyBP.Physics.Lifetime or self.DamageData.Weapon.ProjectileLifetime or 1 ) * ( self.DamageData.Weapon.ProjectileLifetimeUsesMultiplier or 1 )
           else
            if myDebug or masterDebug then
               LOG('   Using default self.DamageData.Weapon.ProjectileLifetime')
            end               
           end           
           --> Run OKC threads or bypass if its a normal projectile
           if self.DamageData and self.DamageData.Weapon.OKC_Retargeting then
            if myDebug or masterDebug then       
                 LOG('   OKC_Retargeting: ', repr( self.DamageData.Weapon.OKC_Retargeting ) )
                 LOG('   OKC Projectile found, forking to "self.ProjHeartBeat" ')
              end               
             --> Kick off main OKC thread
             --self:ForkThread( self.ProjHeartBeat )
           else
            if myDebug or masterDebug then       
                 LOG('   OKC_Retargeting: ', repr( self.DamageData.Weapon.OKC_Retargeting ) )
                 LOG('   Normal projectile, bypassing fork')              
              end
           end                                 
      else
         if myDebug or masterDebug then
            LOG('   Prop or nuke projectile detected, aborting extra data pass')   
         end         
      end            
      if myDebug or masterDebug then
         LOG('   self.DamageData: ', repr( self.DamageData ) )   
      end
   end,


One last thing... Notice how I've also included the data from the AI brain !!!!

Resin

Statistics: Posted by Resin_Smoker — 20 Feb 2014, 21:59


]]>
2014-02-20T05:56:40+02:00 2014-02-20T05:56:40+02:00 /viewtopic.php?t=6749&p=66136#p66136 <![CDATA[Re: OKC mod for FAF]]>
Nombringer wrote:
......

<3


This would fix a lot of issues with T3 air, out of curiosity, how are you planning to do it?



Have a look at General chat.

Statistics: Posted by Resin_Smoker — 20 Feb 2014, 05:56


]]>