First, check the resistor, it should be around 8 ohms, at least 7 ohms and not more than 9 ohms. Also, make sure the screws and nuts that secure the smoke resistor are tight, they frequently get loose.
If it's the smoke regulator the bad news is, it's frequently the microprocessor. There is no fix for that as it's a programmed part and nobody other than Lionel has the code to program it. It could be the triac, it's the same one that's used on the R2LC, the 2N6075BG or equivalent.
The good news is, with a couple fairly simple mods to the wiring and a smoke resistor change, you can bypass the regulator and restore your smoke since this is a TMCC locomotive. First off, the regulator is removed, clip the wires close to the regulator so you can splice into them. Follow the red wire and the solid brown wire and remove them from where they're connected, making sure they're not going to short to anything. There will be one or two black wires, they are ground wires. One will doubtless be connected to the frame somewhere, the other may connect to the smoke unit. If a black wire goes to the smoke unit, that has to be connected to the frame. You will want to wire the new smoke unit power from the motherboard HOT (see diagram below) to the smoke switch. The other wire from the smoke switch will connect to the brown/black striped wire that goes to the smoke unit.
Change the smoke resistor from the 8 ohm smoke resistor to a value of 20 ohms to 27 ohms. For maximum smoke, don't go lower than 20 ohms.
Job done, enjoy the revived smoke function.
<click graphic to expand>
This is from Rod Stewart's Motherboards document, so thank him for this nice graphic!