Triggering failures

  • I am currently adding random failures in the sim based on real world data, surprisingly that is the easy part, failures are working correctly in the sim using the A350. What I am finding is that I also have to trigger the correct ECAM/ FWC warning. Not a huge issue, but it adds extra time. Any experienced modders that have tried this before? Shouldn't the logic already be in the sim? if APU Gen fails, surely the APU Gen msg should appear by default?


    Both fascinating and frustrating trying to create mods for FS4, its a bit sad that the modding community is so tiny compared to the other sims.


  • It would be fun to integrate failures into the sim at some point. The goal should be to trigger the actual failure, then the ECAM should show the warning automatically. But I haven't programmed every failure detection yet, so might not work out of the box.

    With a bit of tmd scripting you can totally add failures fully contained to the user folder nowadays. I actually made my own failures for gliders in the past and triggered them from an external application.

  • One more question - I have successfully built several random failures that work, downsteam FWC logic also works now. Before I waste any time, is it possible to use coordinates as a trigger? I can fail the GPS system. I wanted to simulate passing over certain parts of Europe, for example, by blocking or spoofing the GPS signal when near Ukraine during a flight from Doha to a European destination. Currently, I am using altitude, airspeed or time off ground as triggers for airborne failures.



    $Failures = @(
    # CLEAN
    @{ Name = "NORMAL"; File = "system_clean.tmd"; Weight = 80 }

    # SINGLE FAILURES
    @{ Name = "APU_GEN"; File = "system_apu_only.tmd"; Weight = 4 }
    @{ Name = "GEN_1A"; File = "system_gen1a_fail.tmd"; Weight = 4 }
    @{ Name = "AIR_GEN1A_FAIL"; File = "system_air-Gen1a-fail.tmd"; Weight = 5 }
    @{ Name = "GEN_1B"; File = "system_gen1b_fail.tmd"; Weight = 4 }
    @{ Name = "GEN_2A"; File = "system_gen2a_fail.tmd"; Weight = 4 }
    @{ Name = "GEN_2B"; File = "system_gen2b_fail.tmd"; Weight = 4 }

    # DUAL FAILURES (RARE)
    @{ Name = "GEN_1A_2A"; File = "system_gen1a_gen2a_fail.tmd"; Weight = 1 }
    @{ Name = "GEN_1B_2B"; File = "system_gen1b_gen2b_fail.tmd"; Weight = 1 }

    # ENGINE FAILURES RARE– AIRBORNE (ALTITUDE-BASED)

    @{ Name = "ENG_FAIL_5000"; File = "system_eng_fail_5000ft.tmd"; Weight = 1 }
    @{ Name = "ENG_FAIL_14000"; File = "system_eng_fail_14000ft.tmd"; Weight = 1 }
    @{ Name = "ENG_FAIL_19000"; File = "system_eng_fail_19000ft.tmd"; Weight = 1 }

    # HIGH-ALTITUDE (RARE)
    @{ Name = "ENG_FAIL_34000"; File = "system_eng_fail_34000ft.tmd"; Weight = 1 }
    @{ Name = "ENG_FAIL_37000"; File = "system_eng_fail_37000ft.tmd"; Weight = 1 }
    @{ Name = "ENG_FAIL_41000"; File = "system_eng_fail_41000ft.tmd"; Weight = 1 }


    # VERY RARE – V1 engine failure
    @{ Name = "ENG_FAIL_V1"; File = "system_eng_fail.tmd"; Weight = 1 }
    # SLATS
    @{ Name = "SLAT_SYS1"; File = "system_SLAT_SYS1_FAIL.tmd"; Weight = 3 }
    @{ Name = "SLAT_SYS12"; File = "system_SLAT_SYS12_FAIL.tmd"; Weight = 2 }
    # RARE - FLIGHT COMPUTERS
    @{ Name = "SEC1_FAIL"; File = "system_SEC1_FAIL.tmd"; Weight = 2 }
    @{ Name = "SEC1_SEC2_FAIL"; File = "system_SEC1_SEC2_FAIL.tmd"; Weight = 1 }
    # RARE - INS/ADR/GPS
    @{ Name = "NAV_IR1"; File = "system_NAV_IR1_FAIL.tmd"; Weight = 2 }
    @{ Name = "GPS_LOSS"; File = "system_GPS_LOSS.tmd"; Weight = 2 }

  • This is way above my paygrade but the sim does output both GPS plus lat and long data in the tmd file

    GPS.OutputPosition and InertialReferenceSystem.OutputPosition plus InertialReferenceSystem.OutputLatitude and InertialReferenceSystem.OutputLongitude

    Maybe this can help but like I said, mind blowing stuff for me <X

  • This is way above my paygrade but the sim does output both GPS plus lat and long data in the tmd file

    GPS.OutputPosition and InertialReferenceSystem.OutputPosition plus InertialReferenceSystem.OutputLatitude and InertialReferenceSystem.OutputLongitude

    Maybe this can help but like I said, mind blowing stuff for me <X

    Good fun tinkering with this

    What i find tricky is bypassing certain systems, for example, the aircraft has ground air logic for the packs and engine start, but the sim doesn't provide ground air, so I can't fail the APU bleed system on the ground; I would have no way to start the engines. I have to be careful not to break anything.

    Not too sure why they coded the ground air, but never gave us an air cart to use it.

  • ...

    What i find tricky is bypassing certain systems, for example, the aircraft has ground air logic for the packs and engine start, but the sim doesn't provide ground air, so I can't fail the APU bleed system on the ground; I would have no way to start the engines. I have to be careful not to break anything.

    Not too sure why they coded the ground air, but never gave us an air cart to use it.

    From my experience with the aircraft in FS 4 I know that one or the other is already being prepared there, which will be activated later.

    I can also understand that well, because sometimes it is only a small step to activation, but much of it is influenced by it.

    When trying out aircraft in FS 4, I proceed in such a way that I copy the plane completely into my user folder (don't forget to rename) and then try changes step by step. So I was able to make the FS 4 pushback tractor a long time ago into an independent vehicle (everything was already present in the TMD) and the F18 carrier-friendly. In the meantime, the F18 is suitable for carriers on the part of IPACS. Currently I also take over FUEL & LOAD for the C130. It's just a lot of try and error - and you have to like it.

    Tschüss, Michael (🍎🚁)

    Configurations:

    - MacBook Pro (16", 2024); Chip: Apple M4 Max; actual macOS
    - Controllers: | WinWing: URSA MINOR-Fighter-Joystick R, EFIS-L & FCU & EFIS-R | Thrustmaster TCA AIRBUS EDITION: 2x Quadrant, 2x Quadrant Add-On | Pro-Flight-Trainer: PUMA X | Steelseries: Nimbus+

    - iPad (12,9", 4th Generation, RAM: 6 GB); actual iOS | Steelseries: Nimbus+

  • I changed plans and created a full failure program with a GUI and various scenarios built using powershell. Works great on my system, but unfortunately can't be released to the public as part of it backs up and replaces the main system.tmd (for testing purposes)


    It has over 100 failures and combinations now built all with random weights based on the component or system that fails. For example, it could start with just a GEN1 failure, and then slowly progress into a full engine failure with fire and FWS warnings, or just a 30% thrust rollback from a birdstrike

    My question to devs (or any modders), certain warnings like cargo fire triggers, just can't seem to be done outside of the main system.tmd (despite trying multiple times) in fact a lot of the more complex failure combos seem to be impossible from the user folder, am certain it is just a limit to my knowledge, I even asked AI, it too seems to think is is impossible.


    Would going down the Python/ DLL route be the better option? Am happy using this current version for my personal use, but would like to share as a mod at some point in the future, so I need to stay away from the main system.tmd


    Edited once, last by 777Driver (February 3, 2026 at 1:24 PM).

  • I changed plans and created a full failure program with a GUI and various scenarios built using powershell. Works great on my system, but unfortunately can't be released to the public as part of it backs up and replaces the main system.tmd (for testing purposes).

    You can "update" the TMD data in the main folder via subfolders with the files graphics.tmd, parameters.tmd, and system.tmd.

    Tschüss, Michael (🍎🚁)

    Configurations:

    - MacBook Pro (16", 2024); Chip: Apple M4 Max; actual macOS
    - Controllers: | WinWing: URSA MINOR-Fighter-Joystick R, EFIS-L & FCU & EFIS-R | Thrustmaster TCA AIRBUS EDITION: 2x Quadrant, 2x Quadrant Add-On | Pro-Flight-Trainer: PUMA X | Steelseries: Nimbus+

    - iPad (12,9", 4th Generation, RAM: 6 GB); actual iOS | Steelseries: Nimbus+

  • You can "update" the TMD data in the main folder via subfolders with the files graphics.tmd, parameters.tmd, and system.tmd.

    Thanks for the reply. Just so I am clear, I currently have a parameters and system.tmd in the user folder, I have parts of the mod and my other mods operating fine from those files in the user folder.

    I start getting crashes if I add more complex systems outside of the main system.tmd


    For example, 3mins after take off or above 5000ft, left engine rolls back, and fails, engine fire warning displays that require ECM actions. This works perfectly if done inside the main system.tmd, fails if I add it outside of the main folder.


    Are you saying I can create these files inside of the main folder (paste the engine block in there and modify?)


    Sorry for being a bit slow, am newish to this ;)

  • Ok, I decided to ask AI about this, it came back with the following, I don't trust it too much as it does come up with nonsense, I prefer to use it for planning and spotting any mistakes


    (override-based, safe)

    • Uses override system.tmd
    • Only includes:
      • MEL-known items
      • pre-dispatch degradations
      • things that can exist at load time
    • No random logic
    • No timers
    • No latches

    Examples of safe override failures:

    • APU GEN inop
    • Single GEN inop
    • TR inop
    • Reverser inop
    • Pack inop

    These are perfect for MEL simulation.


    WHAT IS SAFE TO OVERRIDE (VERY IMPORTANT)

    ✅ SAFE IN OVERRIDE

    • Constants (<[constant]>)
    • Logic gates (logic_and, logic_or)
    • Availability flags
    • Power source availability
    • Valve positions
    • Limits and clamps
    • Anything that is static from flight start

    ❌ NOT SAFE IN OVERRIDE

    • Integrators
    • Timers
    • Confirm delays
    • Altitude-based triggers
    • Random logic
    • Fire bell logic
    • Anything that expects sequencing

    Rule:

    Quote

    If it needs time or state → variant
    If it’s a fixed condition → override

  • ... I start getting crashes if I add more complex systems outside of the main system.tmd ...

    I know that very well too. My experience is that, with very few exceptions, there were always solutions.

    The basic challenge with your project is that the original data in the FS 4 folder "a350_1000" is not changed. From my point of view, there are now 2 possibilities:

    1. You create a parallel folder "a350_1000" in your user order, in which you overwrite the data in the FS folder via parameters.tmd and system.tmd. In my opinion, this is the better way in the long run, but it's a lot of trial and error.
      Nevertheless, I would always choose this path with my Today's knowledge.
    2. You copy the A350 completely into your user folder, e.g. as "a350_1000_failures" and rename all TMD and TMC accordingly. Then you can do everything in the system. Before a publication, however, I would always get the approval of IPACS.


    My experiences with both ways are:

    I have 2023/2024 my modifications to the Pushback Tractor and the F18 after the 2nd possibility implemented, because I have only familiarized myself there.

    Since 2025, however, I only use the 1. Method, because it suits me more in the meantime. However, I still have to implement this with the pushback tractor, while I have already done this with the F18.

    After IPACS released the new version of the F18 in December 2025, I converted my previous F18 double into an addon. In my user directory there is a parallel folder "f18", which contains further switch operations in the additional controls.tmd, which are then processed in the additional system.tmd. An additional parameters.tmd overrides parameters in the original f18.tmd and I could do without an additional graphics.tmd.

    It is sometimes a (very) tedious business. With the C130, my job is the TMC and TMD. In December we searched there for weeks for the error, why the engines could no longer start after they came to a standstill. In the meantime, the error has been found. And currently I implement FUEL & LOAD in the C130 and yesterday had the problem that the mass of the entire aircraft was calculated incorrectly (also this error is now found).

    I too am still getting to the challenges step by step.:)

    Tschüss, Michael (🍎🚁)

    Configurations:

    - MacBook Pro (16", 2024); Chip: Apple M4 Max; actual macOS
    - Controllers: | WinWing: URSA MINOR-Fighter-Joystick R, EFIS-L & FCU & EFIS-R | Thrustmaster TCA AIRBUS EDITION: 2x Quadrant, 2x Quadrant Add-On | Pro-Flight-Trainer: PUMA X | Steelseries: Nimbus+

    - iPad (12,9", 4th Generation, RAM: 6 GB); actual iOS | Steelseries: Nimbus+

  • Ok, I decided to ask AI about this, it came back with the following, I don't trust it too much as it does come up with nonsense, I prefer to use it for planning and spotting any mistakes

    I have to admit that I don't have my own experience with AI yet.

    But from my experience in programming airports in recent years and now also airplanes, I doubt that AI can help much. Because for this you have to quite often "think around the corners" or jump from one system to another.

    Tschüss, Michael (🍎🚁)

    Configurations:

    - MacBook Pro (16", 2024); Chip: Apple M4 Max; actual macOS
    - Controllers: | WinWing: URSA MINOR-Fighter-Joystick R, EFIS-L & FCU & EFIS-R | Thrustmaster TCA AIRBUS EDITION: 2x Quadrant, 2x Quadrant Add-On | Pro-Flight-Trainer: PUMA X | Steelseries: Nimbus+

    - iPad (12,9", 4th Generation, RAM: 6 GB); actual iOS | Steelseries: Nimbus+

  • So if its possible to do this sort of thing how come IPACS has not implemented it yet. Me thinks its all to do with mobile users, would want to upset the little darlings.

    I agree with my TMD god Michael, option 1 is the best way to go. AI seems pretty useless and just gives you the obvious things you already know. It is also very happy to please you to the point of telling porkies....lies to those who don't know Cockney Rhyming slang.

    Steve

  • Excellent info :thumbup:

    My experience with AI in this scenario is great for dumping huge amounts of data (FCOM/FCTM) and sorting through it all to plan the various failures. Also great for eliminating other tedious tasks, for anything else, not worth the frustration, the actual scripting and tmd editing is not complicated. Keeping on top of everything else is the tricky part, so it makes a great planning tool.

    Overall, it gives me a huge amount of respect for the people creating these TMD files from scratch.

  • So if its possible to do this sort of thing how come IPACS has not implemented it yet. Me thinks its all to do with mobile users, would want to upset the little darlings.

    I agree with my TMD god Michael, option 1 is the best way to go. AI seems pretty useless and just gives you the obvious things you already know. It is also very happy to please you to the point of telling porkies....lies to those who don't know Cockney Rhyming slang.

    Steve

    I think a lot has to do with priorities. The PC user base seems to be tiny, how many actually care about simulating LOFT training, or having realistic failures in the SIM. This is more Fenix PMDG territory.


    I'd rather they focus on rain effects, wet/dry braking. Real-world weather injection, winds aloft, Direct-TO/Missed approach procedures in the sim etc etc. Us modders can focus on the really niche stuff

  • AI has no idea about how Aerofly FS works and will outright lie to you and tell you wrong information.

    You can and you should create mods that purely live in the mod folder and mustn't touch files in the Steam library which can cause permanent damage to user installations. Otherwise Steam may not have writing permission to update the file or the sim crashes for the user, those things we must avoid at all cost.

    Use the system.tmd file in the user folder to add new logic, use the parameter.tmd to change parameters or to change the linking of objects. E.g. you can re-wire the engine's burner fuel input to go through some failure logic first. This way you have full control to add or change things and don't even have to touch files in the installation folder.

    Check the tm.log for errors if you see a red box and also regularly to check for duplicate names. The system.tmd of your mod is added after the default system.tmd so make sure the names there don't conflict. After the two are merged the parameters.tmd is used to override parameters.

  • After spending a few days rebuilding my PC, I am now converting all the aircaft failures to the parameters and user system.tmd folder. (full list of current failures below. This really adds a great dynamic to the sim, on departure from Antaliya, in heavy fog, I had a number Engine2 fire and rollback while climbing through 5000ft, since all the FWC logic is built in by default, it felt very immersive running through the ECAM actions.

    I also noticed as long as you follow the single-engine procedure of 10 degrees or less pitch for a failure after V1, the aircraft will happily climb (perhaps not a MTOW)


    Full list of faults below. I need some clarification on a few things -

    A. No direct law? I had thought it was hidden, but the A350 remains in Normal Law no matter what; that means when simulating pitot or triple air data failures, the aircraft becomes hard to control. It should revert to Alternate law & Direct Law when gear is down


    B. I was aware the hydraulic system wasn't finished due to lack of time for release, but the whole system looks like a placeholder. I cant see anywhere to properly fail the Green or Yellow system the A350 just ignores it.


    • Most flights are normal
    • Some depart with MEL-style defects
    • Rare events simulate serious airborne failures
    • No “mid-air random explosions” unless deliberately designed

    The system supports:

    • Weighted probabilities (common vs rare failures)
    • Airborne-only failures using IRS altitude
    • System-specific degradation (ELEC, HYD, AIR, ENG, etc.)
    • Fully deterministic, repeatable behaviour
    • A simple GUI front-end (compiled EXE) for one-click dispatch

    Implemented Failures (Current Set)

    Normal Dispatch

    • NORMAL – Clean aircraft (no failures)

    Electrical / Power Generation

    • APU_GEN – APU generator failure
    • AIR_APU_GEN_FAIL – APU generator failure with air system interaction
    • GEN_1A – Generator 1A failure
    • GEN_1B – Generator 1B failure
    • GEN_2A – Generator 2A failure
    • GEN_2B – Generator 2B failure
    • AIR_GEN1A_FAIL – GEN 1A with air system implications
    • AIR_GEN1B_FAIL – GEN 1B with air system implications
    • AIR_GEN2A_FAIL – GEN 2A with air system implications
    • AIR_GEN2B_FAIL – GEN 2B with air system implications
    • GEN_1A_2A – Dual generator failure (rare)
    • GEN_1B_2B – Dual generator failure (rare)

    Transformer Rectifiers

    • AIR_TR1_FAIL – TR1 failure (air/electrical interaction)
    • AIR_TR2_FAIL – TR2 failure (air/electrical interaction)

    Hydraulic Systems (Currently in testing)

    • HYD_GREEN – Green hydraulic system failure (airborne, CTD-safe, LOW-pressure logic)

    Pneumatic / Pressurisation

    • CABIN_PRESS_LOSS – Cabin altitude / pressurisation failure
    • CRUISE_EM_DESCENT – Emergency descent profile
    • CRUISE_EMDECENT_SLOW – Slower emergency descent variant

    Fluids, Oils & Leaks

    • APU_OIL_FAIL – APU oil failure
    • ENG1_OIL_SLOW_LEAK – Engine 1 slow oil leak
    • APU_FUEL_1 – APU fuel pressure issue
    • OIL_QTY_1 → OIL_QTY_5 – Progressive engine oil quantity scenarios

    Reversers

    • REV1 – Thrust reverser 1 inoperative
    • REV2 – Thrust reverser 2 inoperative

    Engine Failures (Airborne / Altitude-based)

    • ENG1_PREV1_FAIL – Engine 1 failure prior to V1
    • ENG_FAIL_V1 – V1 engine failure
    • ENG2_FAIL – Engine 2 failure

    Fire & shutdown triggerd at specific altitudes:

    • 500 ft
    • 2000 ft
    • 5000 ft
    • 5500 ft
    • 14,000 ft
    • 19,000 ft
    • 34,000 ft
    • 37,000 ft
    • 41,000 ft
    • 41,500 ft

    Includes both engine failures and engine fires on either side.


    Batteries & AC Buses

    • BAT_1_FAIL_AIRBORNE – Battery 1 failure
    • BAT_EMER_2_FAIL – Emergency battery 2 failure
    • BAT_EMER_2_DC_FAIL – DC side failure
    • BAT_EMER_2_AC_FAIL – AC side failure
    • ACBUS1_AIR_FAIL – AC Bus 1 failure (airborne)

    Air Data & Navigation

    • PITOT_CAPT_ONLY – Captain pitot failure
    • NAV_IR1 – IR1 failure
    • GPS_LOSS – GPS signal loss

    Flight Controls

    • SLAT_SYS1 – Slat system 1 failure
    • SLAT_SYS12 – Dual slat system failure

    Flight Computers

    • SEC1_FAIL – SEC 1 failure
    • SEC1_SEC2_FAIL – Dual SEC failure (rare)

    )

    • No random mid-flight script injections
    • Full system realism without CTDs