Howto:Adding Bombable to FlightGear Aircraft: Difference between revisions

Jump to navigation Jump to search
(Undo revision 36504 by Flug (talk))
Line 192: Line 192:
When done, we end up with a file like this:
When done, we end up with a file like this:


<?xml version="1.0"?>
  <?xml version="1.0"?>
 
<PropertyList>
  <PropertyList>
        <!-- Nasal code -->
        <!-- Nasal code -->
<nasal>
  <nasal>
            <load>
   
            <![CDATA[
 
              print("Loading F-15E ", cmdarg().getPath());
  <load>
  <![CDATA[
      var nodeName = cmdarg().getPath();  
  print("Loading F-15E ", cmdarg().getPath());
 
      ##checks whether it has been initialized already; if so, just return
        var nodeName = cmdarg().getPath();  
      if ( bombable.check_overall_initialized (nodeName) ) return;
 
        ##checks whether it has been initialized already; if so, just return
        if ( bombable.check_overall_initialized (nodeName) ) return;
 
 
############################################
 
#A-10 INITIALIZER
 
  var object_init = func() {
  ############################################
  # Datas of this object are under: cmdarg().getPath()
  #FUNCTION object_init, INITIALIZER
  var thisNodeName = cmdarg().getPath();
  var object_init = func() {
  var thisNode = props.globals.getNode(thisNodeName);
  # Datas of this object are under: cmdarg().getPath()
    ########################################################################
  var thisNodeName = cmdarg().getPath();
    ########################################################################
  var thisNode = props.globals.getNode(thisNodeName);
        # INITIALIZE BOMBABLE
  # Add some useful nodes
        #  
 
        # Initialize constants and main routines for maintaining altitude
 
        # relative to ground-level, relocating after file/reset, and  
 
        # creating bombable/shootable objects.
          ########################################################################
        #
          ########################################################################
        # These routines are found in FG/nasal/bombable.nas
          # INITIALIZE BOMBABLE
        # 
          #  
          ########################################################################             
          # Initialize constants and main routines for maintaining altitude
        # INITIALIZE BOMBABLE Object
          # relative to ground-level, relocating after file/reset, and  
        # This object will be slurped in the object's node as a child
          # creating bombable/shootable objects.
        # node named "bombable".               
        # All distances are specified in meters.
        # All altitudes are relative to current ground level at the object's
        # location
        #
         
        thisNodeName = cmdarg().getPath();
        var bombableObject = { 
         
         
          objectNodeName : thisNodeName,
          objectNode : props.globals.getNode(thisNodeName),
          updateTime_s : 1/3, #time, in seconds, between the updates that
          #keep the object at its AGL. Tradeoff is high-speed updates look more
          #realistic but slow down the framerate/cause jerkiness.  Faster-moving
          #objects will need more frequent updates to look realistic.
          #update time faster than about 1/3 seems to have a noticeable effect
          #on frame rate                   
                       
          #########################################                             
          # ALTITUDE DEFINITIONS
          #       
          altitudes : {
            wheelsOnGroundAGL_m : 1 , #altitude correction to add to your aircraft or ship that is needed to put wheels on ground (or, for a ship, make it float in the water at the correct level).  For most objects this is 0 but some models need a small correction to place them exactly at ground level
           
            minimumAGL_m : 100, #minimum altitude above ground level this object is allowed to fly
            maximumAGL_m : 3000, #maximum altitude AGL this object is allowed to fly, ie, operational ceiling    
            crashedAGL_m : 0.6, #altitude AGL when crashed.  Ships will sink to this level, aircraft or vehicles will sink into the ground as landing gear collapses or tires deflate. Should be negative, even just -0.001.
          },
          # 
          #########################################
          # VELOCITIES DEFINITIONS
           #  
           #  
           velocities : {             
           # These routines are found in FG/nasal/bombable.nas
            maxSpeedReduce_percent : 0.5, #max % to reduce speed, per step, when damaged
            minSpeed_kt : 112, #minimum speed to reduce to when damaged.  Ground vehicles and ships might stop completely when damaged but aircraft will need a minimum speed so they keep moving until they hit the ground.
   
            damagedAltitudeChangeMaxRate_meterspersecond : 30, #max rate to sink or fly downwards when damaged, in meters/second
          },
           #   
           #   
           #########################################
           ########################################################################             
           # EVASION DEFINITIONS
          # INITIALIZE BOMBABLE Object
          # This object will be slurped in the object's node as a child
          # node named "bombable".               
          # All distances are specified in meters.
          # All altitudes are relative to current ground level at the object's
           # location
           #  
           #  
           # The evasion system makes the AI aircraft dodge when they come under
         
          # fire.
           thisNodeName = cmdarg().getPath();
          evasions : {               
 
            dodgeDelayMax_sec : 15, #max time to delay/wait between dodges
          var bombableObject = { 
            dodgeDelayMin_sec : 5, #minimum time to delay/wait between dodges
           
            dodgeMax_deg : 75, #Max amount to turn when dodging
           
                              #90 degrees = instant turn, unrealistic
            objectNodeName : thisNodeName,
                              #up to 80 is usually OK, somewhere in 80-85 starts to be unrealistically fast
            objectNode : props.globals.getNode(thisNodeName),
                              #>85 is usually very unrealistic. You must test this in your scenario, however.
            updateTime_s : 1/3, #time, in seconds, between the updates that
            #keep the object at its AGL. Tradeoff is high-speed updates look more
            #realistic but slow down the framerate/cause jerkiness.  Faster-moving
            #objects will need more frequent updates to look realistic.
            #update time faster than about 1/3 seems to have a noticeable effect
            #on frame rate                   
 
                         
            #########################################                             
            # ALTITUDE DEFINITIONS
            #       
            altitudes : {
              wheelsOnGroundAGL_m : 1 , #altitude correction to add to your aircraft or ship that is needed to put wheels on ground (or, for a ship, make it float in the water at the correct level).  For most objects this is 0 but some models need a small correction to place them exactly at ground level
             
              minimumAGL_m : 300, #minimum altitude above ground level this object is allowed to fly
              maximumAGL_m : 50000, #maximum altitude AGL this object is allowed to fly, ie, operational ceiling    
              crashedAGL_m : 0.6, #altitude AGL when crashed.  Ships will sink to this level, aircraft or vehicles will sink into the ground as landing gear collapses or tires deflate. Should be negative, even just -0.001.
            },
            # 
            #########################################
            # VELOCITIES DEFINITIONS
            #  
            velocities : {               
              maxSpeedReduce_percent : 0.5, #max % to reduce speed, per step, when damaged
              minSpeed_kt : 112, #minimum speed to reduce to when damaged.  Ground vehicles and ships might stop completely when damaged but aircraft will need a minimum speed so they keep moving until they hit the ground.
              cruiseSpeed_kt : 550, #cruising speed, typical/optimal cruising speed, V C for aircraft
             
              attackSpeed_kt : 900, #typical/optimal speed when aggressively attacking or evading, in
                                  #level flight for aircraft
             
              maxSpeed_kt : 1400 , #Maximum possible speed under dive or downhill conditions, V NE for aircraft
     
              damagedAltitudeChangeMaxRate_meterspersecond : 30, #max rate to sink or fly downwards when damaged, in meters/second
 
              #The terminal velocities are calculated by opening the 'real' AC
              #in FG, level flight, full throttle, then putting
              #the AC at different angles of attack with the autopilot,
              #and noting the terminal airspeed & vertical speed velocities.
              #For best results, do it near sea level, under 5000 feet altitude.
              #One or two each of climb & dive velocities are probably sufficient.
              #However if you do more we may be able to use the more precise
              #data in the future.
              #
              #Note that these are intended to be true airspeed whereas FG's
              #/velocities/airspeed-kt reports indicated airspeed, so some
              #conversion or reference to groundspeed-kt is needed.
              #
              #In FG /velocities/groundspeed-kt is equal (or close
              #to equal, except for wind . . .) true airspeed when pitch=0
              #but as pitch increases or decreases that will change.
              #                         
              diveTerminalVelocities: {
                  point1: { airspeed_kt : 1060, vertical_speed_fps : - 337},
                  point2: { airspeed_kt : 1230, vertical_speed_fps : - 755},
                 
              },
 
              climbTerminalVelocities: {
                point1: { airspeed_kt : 468, vertical_speed_fps : 236},
                point2: { airspeed_kt : 843, vertical_speed_fps : 251},
                #point3: { airspeed_kt : 1100, vertical_speed_fps : 161},
              
              
             dodgeMin_deg : 57, #minimum amount to turn when dodging
              },
            dodgeROverLPreference_percent : 50, # Preference for right turns vs. left when dodging.  90% means 90% right turns, 50% means 50% right turns.
             
            dodgeAltMin_m : -6000, #Aircraft will begin to move up or down  
            },
            dodgeAltMax_m : 6000, #Max & Min are relative to current alt  
            
            dodgeVertSpeedClimb_mps : 500, #Max speed to climb when evading
            #########################################
            dodgeVertSpeedDive_mps : 1000, #Max speed to dive when evading  
            # EVASION DEFINITIONS
          },
            #
          #   
            # The evasion system makes the AI aircraft dodge when they come under
          #########################################
            # fire.
          # ATTACK DEFINITIONS
            evasions : {             
          #  
              dodgeDelayMax_sec : 15, #max time to delay/wait between dodges
          # The attack system makes the AI aircraft turn and fly towards  
              dodgeDelayMin_sec : 5, #minimum time to delay/wait between dodges
          # other aircraft  
              dodgeMax_deg : 88, #Max amount to turn when dodging
          attacks : {               
                                #90 degrees = instant turn, unrealistic
            maxDistance_m : 14000, #max distance to turn & attack main aircraft
                                #up to 80 is usually OK, somewhere in 80-85 starts to be unrealistically fast
            minDistance_m : 500, #min distance to turn & attack main aircraft, ie, fly away this far before turning to attack again
                                #>85 is usually very unrealistic.  You must test this in your scenario, however.
            continueAttackAngle_deg : 40, #when within minDistance_m, the aircraft will continue to turn towards the main aircraft and attack *if* if the angle is less than this amount from dead ahead
             
            altitudeHigherCutoff_m : 20000, # will attack the main aircraft unless this amount higher than it or more
              dodgeMin_deg : 83, #minimum amount to turn when dodging          
            altitudeLowerCutoff_m : 15000, # will attack the main aircraft unless this amount lower than it or more
              rollRateMax_degpersec : 300, #you can figure this out by rolling the corresponding FG aircraft and timing a 180 or 360 deg roll           
            climbPower : 11000, # How powerful the aircraft is when climbing during an attack; 4000 would be typical for, say a Zero--scale accordingly for others; higher is stronger
              dodgeROverLPreference_percent : 50, # Preference for right turns vs. left when dodging.  90% means 90% right turns, 50% means 50% right turns.
            divePower : 15000, # How powerful the aircraft is when diving during and attack; 6000 typical of a Zero--could be much more than climbPower if the aircraft is a weak climber but a strong diver               
              dodgeAltMin_m : -8000, #Aircraft will begin to move up or down  
            rollMin_deg : 58, #when turning on attack, roll to this angle min
              dodgeAltMax_m : 8000, #Max & Min are relative to current alt  
            rollMax_deg : 74, #when turning on attack, roll to this angle max
              dodgeVertSpeedClimb_mps : 1500, #Max speed to climb when evading
                              #90 degrees = instant turn, unrealistic
              dodgeVertSpeedDive_mps : 1500, #Max speed to dive when evading  
                              #up to 80 might be OK, depending on aircraft & speed; somewhere in 80-85 starts to be unrealistically fast
            },
                              #>85 is usually very unrealistic.  You must test this in your scenario, however.
            #   
            #########################################
            # ATTACK DEFINITIONS
            #  
            # The attack system makes the AI aircraft turn and fly towards  
            # other aircraft  
            attacks : {               
              maxDistance_m : 30000, #max distance to turn & attack main aircraft
              minDistance_m : 4000, #min distance to turn & attack main aircraft, ie, fly away this far before turning to attack again
              continueAttackAngle_deg : 80, #when within minDistance_m, the aircraft will continue to turn towards the main aircraft and attack *if* if the angle is less than this amount from dead ahead
              altitudeHigherCutoff_m : 30000, # will attack the main aircraft unless this amount higher than it or more
              altitudeLowerCutoff_m : 30000, # will attack the main aircraft unless this amount lower than it or more
              climbPower : 8000, # How powerful the aircraft is when climbing during an attack; 4000 would be typical for, say a Zero--scale accordingly for others; higher is stronger
              divePower : 10000, # How powerful the aircraft is when diving during and attack; 6000 typical of a Zero--could be much more than climbPower if the aircraft is a weak climber but a strong diver               
              rollMin_deg : 82, #when turning on attack, roll to this angle min
                                #for sedate, Cessna-like manuevers make rollMin low.  If you want an aggressive,
                                #attacking, aiming fighter keep it close to rollMax, or even almost equal to rollMax
              rollMax_deg : 87, #when turning on attack, roll to this angle max
                                #90 degrees = instant turn, unrealistic
                                #up to 80 might be OK, depending on aircraft & speed; somewhere in 80-85 starts to be unrealistically fast
                                #>85 is usually very unrealistic.  You must test this in your scenario, however.
              rollRateMax_degpersec : 120, #you can figure this out by rolling the corresponding FG aircraft and timing a 180 or 360 deg roll           
              attackCheckTime_sec : 10, # check for need to attack/correct course this often 
              attackCheckTimeEngaged_sec : 0.5, # once engaged with enemy, check/update course this frequently
                 
            },
           
            # 
            #########################################
            # WEAPONS DEFINITIONS
            #
            # The weapons system makes the AI aircraft fire on the main aircraft
            # You can define any number of weapons--just enclose each in curly brackets
            # and separate with commas (,).         
            weapons : {
              front_gun :  #internal name - this can be any name you want; must be a valid nasal variable name
                {             
                  name : "Machine Gun", # name presented to users, ie in on-screen messages
                  maxDamage_percent : 5, # maximum percentage damage one hit from the aircraft's main weapon/machine guns will do to an opponent
                  maxDamageDistance_m : 2000, # maximum distance at which the aircrafts main weapon/maching guns will be able to damage an opponent
                  weaponAngle_deg  :  { heading: 0, elevation: 0 }, # direction the aircraft's main weapon is aimed. 
                                                                    # 0,0 = straight ahead, 90,0=directly right, 0,90=directly up, 0,180=directly back, etc.
                  weaponOffset_m : {x:2, y:0, z:0}, # Offset of the weapon from the main aircraft center
                  weaponSize_m : {start:.1, end:.1}, # Visual size of the weapon's projectile, in meters, at start & end of its path
 
                },   
              sidewinder_missile :  #internal name - this can be any name you want; must be a valid nasal variable name
                {             
                  name : "Sidewinder guided missile", # name presented to users, ie in on-screen messages
                  maxDamage_percent : 40, # maximum percentage damage one hit from the aircraft's main weapon/machine guns will do to an opponent
                  maxDamageDistance_m : 6000, # maximum distance at which the aircrafts main weapon/machine guns will be able to damage an opponent
                  weaponAngle_deg  :  { heading: 0, elevation: 0 }, # direction the aircraft's main weapon is aimed. 
                                                                    # 0,0 = straight ahead, 90,0=directly right, 0,90=directly up, 0,180=directly back, etc.
                  weaponOffset_m : {x:2, y:0, z:0}, # Offset of the weapon from the main aircraft center
                  weaponSize_m : {start:1, end:1}, # Visual size of the weapon's projectile, in meters, at start & end of its path
 
                },   
 
 
            }, 
              
              
             attackCheckTime_sec : 10, # check for need to attack/correct course this often  
            
             attackCheckTimeEngaged_sec : 0.5, # once engaged with enemy, check/update course this frequently
            #########################################
               
            # DIMENSION DEFINITIONS
          },
            #
         
            # All dimensions are in meters
          #   
            #         
            #         
            dimensions : {                 
              width_m : 17.53,  #width of your object, ie, for aircraft, wingspan
              length_m : 16.26, #length of your object, ie, for aircraft, distance nose to tail
              height_m : 4.47, #height of your object, ie, for aircraft ground to highest point when sitting on runway
             
              damageRadius_m : 8, #typically 1/2 the longest dimension of the object. Hits within this distance of the
                                  #center of object have some possibility of damage
              vitalDamageRadius_m : 2, #typically the radius of the fuselage or cockpit or other most
                                      # vital area at the center of the object. Always smaller than damageRadius_m
                                     
              crashRadius_m : 6, #It's a crash if the main aircraft hits in this area.
                                 
            },
             #
            #########################################
            # VULNERABILITIES DEFINITIONS       
            #
            vulnerabilities : {                 
              damageVulnerability : 9, #Vulnerability to damage from armament, 1=normal M1 tank; higher to make objects easier to kill and lower to make them more difficult.  This is a multiplier, so 5 means 5X easier to kill than an M1, 1/5 means 5X harder to kill.
             
              engineDamageVulnerability_percent : 6, #Chance that a small-caliber machine-gun round will damage the engine.     
             
              fireVulnerability_percent : 5, #Vulnerability to catching on fire. 100% means even the slightest impact will set it on fire; 20% means quite difficult to set on fire; 0% means set on fire only when completely damaged; -1% means never set on fire.                         
             
              fireDamageRate_percentpersecond : .1, #Amount of damage to add, per second, when on fire. 100%=completely damaged. Warthog is relatively damage-resistant.
             
              fireExtinguishMaxTime_seconds : 80, #Once a fire starts, for this many seconds there is a chance to put out the fire; fires lasting longer than this won't be put out until the object burns out.
             
              fireExtinguishSuccess_percentage : 45, #Chance of the crew putting out the fire within the MaxTime above. Warthoge is relatively damage-resistant.
             
              explosiveMass_kg : 27772 , #mass of the object in KG, but give at least a 2-10X bonus to anything carrying flammables or high explosives.
            },
            #
            #########################################
            # LIVERY DEFINITIONS
            #
            # Path to livery files to use at different damage levels.
            # Path is relative to the AI aircraft's directory.
            # The object will start with the first livery listed and
            # change to succeeding liveries as the damage
            # level increases. The final livery should indicate full damage/
            # object destroyed.       
            #
            # If you don't want to specify any special liveries simply set
            # damageLivery : nil and the object's normal livery will be used.  
            #                                                           
            damageLiveries : {
              damageLivery : [  ]                       
            },
                             
          };
 
           #########################################
           #########################################
           # WEAPONS DEFINITIONS
           # INITIALIZE ROUTINES
           #  
           #  
           # The weapons system makes the AI aircraft fire on the main aircraft
           # OVERALL INITIALIZER: Needed to make all the others work
           # You can define any number of weapons--just enclose each in curly brackets
           bombable.initialize ( bombableObject );
          # and separate with commas (,).         
           #
           weapons : {
          # LOCATION: Relocate object to maintain its position after file/reset     
            front_gun :  #internal name - this can be any name you want; must be a valid nasal variable name
          # (best not used for airplanes)
              {             
          # bombable.location_init ( thisNodeName );
                name : "Machine Gun", # name presented to users, ie in on-screen messages
           #
                maxDamage_percent : 5, # maximum percentage damage one hit from the aircraft's main weapon/machine guns will do to an opponent
           # GROUND: Keep object at altitude relative to ground level
                maxDamageDistance_m : 400, # maximum distance at which the aircrafts main weapon/maching guns will be able to damage an opponent
           bombable.ground_init ( thisNodeName );
                weaponAngle_deg  :  { heading: 0, elevation: 0 }, # direction the aircraft's main weapon is aimed. 
                                                                  # 0,0 = straight ahead, 90,0=directly right, 0,90=directly up, 0,180=directly back, etc.
                weaponOffset_m : {x:2, y:0, z:0}, # Offset of the weapon from the main aircraft center
                weaponSize_m : {start:.1, end:.1}, # Visual size of the weapon's projectile, in meters, at start & end of its path
              },   
          }, 
         
           #
           #########################################
           # DIMENSION DEFINITIONS
           #
           #
           # All dimensions are in meters
           # ATTACK: Make the object attack the main aircraft      
          # source: http://en.wikipedia.org/wiki/Fairchild_Republic_A-10_Thunderbolt_II         
           bombable.attack_init ( thisNodeName );
          #         
          dimensions : {                 
            width_m : 17.53,  #width of your object, ie, for aircraft, wingspan
            length_m : 16.26, #length of your object, ie, for aircraft, distance nose to tail
            height_m : 4.47, #height of your object, ie, for aircraft ground to highest point when sitting on runway
           
            damageRadius_m : 8, #typically 1/2 the longest dimension of the object. Hits within this distance of the
                                #center of object have some possibility of damage
            vitalDamageRadius_m : 2, #typically the radius of the fuselage or cockpit or other most
                                    # vital area at the center of the object.  Always smaller than damageRadius_m
                                   
            crashRadius_m : 6, #It's a crash if the main aircraft hits in this area.
                               
           },
           #
           #
           #########################################
           # WEAPONS: Make the object shoot the main aircraft       
           # VULNERABILITIES DEFINITIONS       
           bombable.weapons_init ( thisNodeName );               
           #
           #
           vulnerabilities : {                 
           # BOMBABLE: Make the object bombable/damageable       
            damageVulnerability : 9, #Vulnerability to damage from armament, 1=normal M1 tank; higher to make objects easier to kill and lower to make them more difficult.  This is a multiplier, so 5 means 5X easier to kill than an M1, 1/5 means 5X harder to kill.
          bombable.bombable_init ( thisNodeName );
           
            engineDamageVulnerability_percent : 6, #Chance that a small-caliber machine-gun round will damage the engine.     
           
            fireVulnerability_percent : 5, #Vulnerability to catching on fire. 100% means even the slightest impact will set it on fire; 20% means quite difficult to set on fire; 0% means set on fire only when completely damaged; -1% means never set on fire.                         
           
            fireDamageRate_percentpersecond : .1, #Amount of damage to add, per second, when on fire.  100%=completely damaged. Warthog is relatively damage-resistant.
           
            fireExtinguishMaxTime_seconds : 80, #Once a fire starts, for this many seconds there is a chance to put out the fire; fires lasting longer than this won't be put out until the object burns out.
           
            fireExtinguishSuccess_percentage : 45, #Chance of the crew putting out the fire within the MaxTime above. Warthoge is relatively damage-resistant.
           
            explosiveMass_kg : 27772 , #mass of the object in KG, but give at least a 2-10X bonus to anything carrying flammables or high explosives.
          },
           #
           #
           #########################################
           # SMOKE/CONTRAIL: Start a flare, contrail, smoke trail, or exhaust
           # LIVERY DEFINITIONS
          # trail for the object.
          # Smoke types available: flare, jetcontrail, pistonexhaust, smoketrail,
          # damagedengine                       
          bombable.startSmoke("jetcontrail", thisNodeName );
           #F-15E already has contrails, we're leaving this out
           #
           #
           # Path to livery files to use at different damage levels.
           # END INITIALIZE BOMBABLE
          # Path is relative to the AI aircraft's directory.
          ########################################################################
          # The object will start with the first livery listed and
          ########################################################################                 
          # change to succeeding liveries as the damage
       
          # level increases. The final livery should indicate full damage/
 
          # object destroyed.       
 
          #
  }
          # If you don't want to specify any special liveries simply set
 
          # damageLivery : nil and the object's normal livery will be used. 
  object_init();
          #                                                           
  ]]>
          damageLiveries : {
  </load>
            damageLivery : [  ]                       
  <unload>
          },
  <![CDATA[
                           
  print("Unload F-15E.");
        };
        #########################################
        # INITIALIZE ROUTINES
        #
        # OVERALL INITIALIZER: Needed to make all the others work
        bombable.initialize ( bombableObject );
        #
        # LOCATION: Relocate object to maintain its position after file/reset     
        # (best not used for airplanes)
        # bombable.location_init ( thisNodeName );
        #
        # GROUND: Keep object at altitude relative to ground level
        bombable.ground_init ( thisNodeName );
        #
        # ATTACK: Make the object attack the main aircraft       
        bombable.attack_init ( thisNodeName );
        #
        # WEAPONS: Make the object shoot the main aircraft       
        bombable.weapons_init ( thisNodeName );               
        #
        # BOMBABLE: Make the object bombable/damageable       
        bombable.bombable_init ( thisNodeName );
        #
        # SMOKE/CONTRAIL: Start a flare, contrail, smoke trail, or exhaust
        # trail for the object.
        # Smoke types available: flare, jetcontrail, pistonexhaust, smoketrail,
        # damagedengine                       
        bombable.startSmoke("jetcontrail", thisNodeName );
        #
        # END INITIALIZE BOMBABLE
        ########################################################################
        ########################################################################                 
     
      }
      object_init();
      ]]>
      </load>
      <unload>
      <![CDATA[
        print("Unload F-15E.");
         var nodeName= cmdarg().getPath();   
         var nodeName= cmdarg().getPath();   
         bombable.de_overall_initialize( nodeName );
         bombable.de_overall_initialize( nodeName );
Line 445: Line 505:
         bombable.attack_del( nodeName );
         bombable.attack_del( nodeName );
         bombable.weapons_del (nodeName);       
         bombable.weapons_del (nodeName);       
   
  # </unload>
    ]]>
 
    </unload>
  ]]>
  </nasal>   
  </unload>
  </nasal>   
</PropertyList>
 
  </PropertyList>


Save this file with the name you have chosen ( FGDATA\Aircraft\F-15E\Models\F-15E_StrikeEagle-bombableinclude.xml).
Save this file with the name you have chosen ( FGDATA\Aircraft\F-15E\Models\F-15E_StrikeEagle-bombableinclude.xml).
482

edits

Navigation menu