Plugin_FLEP

User manual

by ChocolateFan, LoreRaider and Krys

About the plugin

This plugin is the main source of fixes and additions along with FLEP.

The new additions are the following:


Original Bridges

Brings back the original bridges used in TR4, as TRNG bridges have incompatible behaviour.

To assign a slot:

AssignSlot=<MyUsedSlot>,<Bridge>

Where <Bridge> is either OBJ_FLEP_BRIDGE_FLAT, OBJ_FLEP_BRIDGE_TILT1 or OBJ_FLEP_BRIDGE_TILT2.


Lift doors

Implements the lift doors from TR5.

To assign a slot:

AssignSlot=<MyUsedSlot>,<LiftDoor>

Where <LiftDoor> is either OBJ_FLEP_LIFT_DOORS1 or OBJ_FLEP_LIFT_DOORS2.

Additional customization can be done by the command Customize=CUST_FLEP_LIFT_DOORS.

Syntax:

Customize=CUST_FLEP_LIFT_DOORS, LiftDoorsSound

LiftDoorsSound:
The sound that plays when the lift doors open or close.
Type IGNORE to not play any sound.


HK Gun

Replaces Crossbow with HK Gun from TR5.

Important: make sure to enable HK Gun patch inside FLEP or the following settings won't work.

Syntax:

Customize=CUST_FLEP_HK, GunFlashSlot, FireSound, StopSound, SniperOrder, BurstOrder, RapidOrder, FirstModeSlot, SecondModeSlot, ThirdModeSlot, StillHipsFire

GunFlashSlot:
The slot of the gunflash.
Type IGNORE to use the default value (GUN_FLASH).

FireSound, StopSound:
The sounds that play when HK is firing and when it stops firing, respectively.
Type IGNORE to not play any sound.
Note: the FireSound must have L flag set.

SniperOrder, BurstOrder, RapidOrder:
The sequence in which the modes should be selected in the Choose Weapon Mode menu.
Type IGNORE to use the default values (1 for SniperOrder, 2 for BurstOrder and 3 for RapidOrder).

FirstModeSlot, SecondModeSlot, ThirdModeSlot:
The slots that should be used for the modes in the Choose Weapon Mode menu.
Type IGNORE to use the default values (CROSSBOW_AMMO1_ITEM for FirstModeSlot, CROSSBOW_AMMO2_ITEM for SecondModeSlot and CROSSBOW_AMMO3_ITEM for ThirdModeSlot).

StillHipsFire:
ENABLED: if Lara stops moving while shooting from her hips, she does not change the HK to her shoulder.
DISABLED: if Lara stops moving while shooting from her hips, she changes the HK to her shoulder.
Type IGNORE to use the default value (DISABLED).


Sprite objects

Implements objects that always face the camera, as sprites do.

To assign a slot:

AssignSlot=<MyUsedSlot>,<Sprite>

Where <Sprite> is OBJ_FLEP_SPRITE{1..16}.

If the object has more than one mesh, they will be cycled through, like animated sprites.

These objects must be triggered to work as sprites.


Old style rollingballs

Provides the rollingballs from TR1/2/3.

To assign a slot:

AssignSlot=<MyUsedSlot>,<Rollingball>

Where <Rollingball> is OBJ_FLEP_ROLLINGBALL{1..16}.

Use OCB 1 to disable the camera bounce effect. Add 32 to the OCB to produce a splash if the rollingball falls into water.
Note that the rotation of the rollingball determines their rolling direction.

The rollingballs from original levels will not work, use these ones instead: https://www.trsearch.org/item/5823.


Meshswap of Lara meshes

Allows Lara meshes to be swapped.

To do a meshswap, use flipeffect 7 together with the command Parameters=PARAM_FLEP_LARA_MESHSWAP.
And to revert a meshswap, use flipeffect 8.

Syntax:

Parameters=PARAM_FLEP_LARA_MESHSWAP, IdParamList, LaraMesh, SourceSlot, SourceMesh

IdParamList:
The Id to be used in the trigger.
Note: the minimum Id is 1 and the maximum is 255.

LaraMesh:
The mesh to be swapped.
See the LARA_MESH_ constants.

SourceSlot:
The slot that supplies the new mesh.

SourceMesh:
The number of the new mesh.


Exit game

Exits the game in the same moment it is called.

To exit the game, use flipeffect 9.


Grenadegun ammo and animations

Modifies the Grenadegun to shoot different types of grenades or crossbow bolts, and also its animations.

Important: make sure to enable Grenadegun ammo and animations patch inside FLEP or the following settings won't work.

Syntax:

Customize=CUST_FLEP_GRENADEGUN, GrenadegunAnimations, FirstAmmoWeapon, SecondAmmoWeapon, ThirdAmmoWeapon, FirstAmmoType, SecondAmmoType, ThirdAmmoType, FirstAmmoSlot, SecondAmmoSlot, ThirdAmmoSlot, FirstAmmoSound, SecondAmmoSound, ThirdAmmoSound, FirstAmmoSmoke, SecondAmmoSmoke, ThirdAmmoSmoke

GrenadegunAnimations:
ENABLED: allows the usage of Grenadegun animations.
DISABLED: allows the usage of Crossbow, Shotgun or HK animations.
Type IGNORE to use the default value (ENABLED).

FirstAmmoWeapon, SecondAmmoWeapon, ThirdAmmoWeapon:
HOLD_CROSSBOW: the ammo is a bolt.
HOLD_GRENADEGUN: the ammo is a grenade.
Type IGNORE to use the default value (HOLD_GRENADEGUN).

FirstAmmoType, SecondAmmoType, ThirdAmmoType:
1: Normal ammo.
2: Poison/Super ammo.
3: Explosive/Flash ammo.
Type IGNORE to use the default values (1 for FirstAmmoType, 2 for SecondAmmoType and 3 for ThirdAmmoType).

FirstAmmoSlot, SecondAmmoSlot, ThirdAmmoSlot:
The slots containing the meshes of the ammos.
Type IGNORE to use the default value (CROSSBOW_BOLT if the ammo is a bolt/GRENADE if the ammo is a grenade).
Note: CROSSBOW_BOLT is forbidden if the ammo is a grenade and GRENADE is forbidden if the ammo is a bolt.

FirstAmmoSound, SecondAmmoSound, ThirdAmmoSound:
The sounds that play when shooting the ammos.
Type IGNORE to not play any sound.

FirstAmmoSmoke, SecondAmmoSmoke, ThirdAmmoSmoke:
ENABLED: Grenadegun smoke is produced when shooting.
DISABLED: no smoke is produced.
Type IGNORE to use the default value (ENABLED).


Mine Cart

Allows to use the Minecart object like TR3 with some additions.

Important: make sure to enable Classic vehicles patch inside FLEP or the following settings won't work.


Minecart controls

The minecart controls are the following:


Setting the commands

Each script command of the minecart starts with Customize= command, followed by these types of customization: CUST_FLEP_MINE_CART and CUST_FLEP_MINE_CART_TRAPS.


CUST_FLEP_MINE_CART

This is the main command that associates an existing TRNG slot to a required minecart item.

Syntax: Customize=CUST_FLEP_MINE_CART, CartSlot, LaraSlot, ControllerSlot, SwitchSlot, ClunkStartSound, FrontImpactSound, SreechBrakeSound, TrackLoopSound, PullyLoopSound, Alignment

CartSlot: this parameter sets the slot where the minecart object is stored inside your wad.

LaraSlot: this parameter sets the slot where Lara's minecart special animations object is stored inside your wad.

ControllerSlot: this parameter sets the slot where the nullmesh object to manipulate the direction of the minecart is stored inside your wad.

SwitchSlot: this parameter sets the slot where the minecart switch object is stored inside your wad.

ClunkStartSound: this parameter sets the sound ID when the minecart starts moving.

FrontImpactSound: this parameter sets the sound ID when the minecart hits a wall.

SreechBrakeSound: this parameter sets the sound ID when Lara brakes the minecart.

TrackLoopSound: this parameter sets the sound ID when the minecart moves fast.

PullyLoopSound: this parameter sets the sound ID when the minecart moves slowly.

Alignment (ENABLED/DISABLED): this parameter, set as ENABLED, will align the minecart in case the floor is tilted (unlike the original TR3 game).

This is an example script using the given wad slots and TR3 ID sounds inside the package.

Example: Customize=CUST_FLEP_MINE_CART, MINE_CART, MINE_CART_LARA, TRIPWIRE, ANIMATING2, 211, 202, 219, 209, 210, ENABLED

You can also just write the IDs of the slots:

Customize=CUST_FLEP_MINE_CART, 504, 505, 161, 429, 211, 202, 219, 209, 210, ENABLED

Notes:


CUST_FLEP_MINE_CART_TRAPS

This command associates a trap with the minecart.

Syntax: Customize=CUST_FLEP_MINE_CART_TRAPS, TrapSlot, HealthLoss, {TrapSlot, HealthLoss array}

TrapSlot: this parameter sets which slot hurts Lara when using the minecart

HealthLoss: this parameter sets the amount of health loss that Lara receives when the minecart collides with the above slot, by setting this to IGNORE the defeault health loss it's 8.
Lara's health is measured in 1000 units, so setting it to the max amount will make her die.

{TrapSlot, HealthLoss array}: this is the exact operation explained above, it's the pair of slot and health loss that each different trap causes to Lara.

Example: Customize=CUST_FLEP_MINE_CART_TRAPS, TEETH_SPIKES, 200, ROLLINGBALL, 1000

Note: it's possible to set up to 16 different traps slots and health losses, by typing IGNORE on.


Minecart triggers

You can check whether Lara is in the minecart or not by using the following inside your script:

#define @Plugin_FLEP 1
TriggerGroup=<TriggerGroupId>,$018000,0,$2,<ExportedTrigger>
#define @plugins CLEAR

Where <TriggerGroupId> is the ID of your TriggerGroup (for example 1,10,25...) and where <ExportedTrigger> is the trigger or group of triggers that needs to activate when the condition it's true (for example the track that plays in TR3 when you get in the minecart).

You can of course also use this inside a GlobalTrigger, here's an example:

#define @Plugin_FLEP 1
TriggerGroup=1,$018000,0,$2 ;lara is inside the minecart
TriggerGroup=2,$2000,129,$79 ;play track
GlobalTrigger=1,FGT_SINGLE_SHOT,GT_CONDITION_GROUP,IGNORE,1,2,IGNORE
#define @plugins CLEAR

Setting up the minecart

Place the minecart in the direction you want, the front is where you see the brake handle.

Whenever you want the cart to turn use the nullmesh ControllerSlot, the point of the cone is the direction of where the minecart needs to turn.

To stop the minecart, turn the point of the cone against its direction.

You can use statics as obstacles to hurt Lara during the track.

To change the track direction of the minecart, use the SwitchSlot item along with the ControllerSlot nullmesh.
To set it up, place a switch type trigger for the switch itself, then use an Action 11 (A11) or Action 12 (A12) trigger to instantly turn the ControllerSlot nullmesh to the desired rotation.
Note: in this setup it's better to set the switch type trigger as One Shot, or Lara will be able to pull the already activated switch.

In this example the ControllerSlot nullmesh rotates to the left (inverse clockwise) using Action 12 (A12).

You can choose which minecart takes which track using OCB codes.
To do so, MinecartSlot and every instance of the ControllerSlot which need to take a specific track must have the same OCB code.

Additional notes: sometimes it's possible that if the player uses the switch too late, the minecart won't change the track direction in time.
In these situations, there are two options you can look forward to:


Old style trapdoors

Provides the trapdoors from TR1/2/3 and also the drawbridges from TR2.

To assign a slot:

AssignSlot=<MyUsedSlot>,<Trapdoor>

Where <Trapdoor> is OBJ_FLEP_TRAPDOOR{1..16}.

These trapdoors and drawbridges work like bridges, in other words, they need dummy triggers beneath them.


Horizon rotation

Rotates continuously the Horizon.

Important: make sure to enable Horizon rotation patch inside FLEP or the following settings won't work.

Syntax:

Customize=CUST_FLEP_HORIZON_ROTATE, Speed

Speed:
The speed (in rotation units) at which the Horizon rotates. Positive values are clockwise.
Type DISABLED to not rotate the Horizon.
Note: 182 rotation units are equivalent to one degree.


Duckcrawl animation setup

The "duckcrawl" animation states replace the classic "on-all-fours" crawling. They are enabled with the Enable duckcrawl anim states FLEP patch. These animation states behave like a mix between the duck/crouch state (71) and the crawl states (80, 81, 84-86), effectively eliminating the distinction between ducking and crawling. This allows for more fluid transitions between running, ducking and crawling, additionally permitting Lara to draw and shoot weapons or carry torches while in the duckcrawl anim states.

In order to cooperate with the duckcrawl patch, the animations in the LARA object need to be set up in a specific way. The existing animations in LARA will be marked with BLUE, while extra animations you have to add will be marked with RED. StateID numbers will be marked with GREEN.

Here is the list of changes to make to the animations in your LARA. Unless stated otherwise, the listed changes are required:


A set of animations which adhere to the above list has been made by GeckoKid. They can be downloaded from this link.

GeckoKid has kindly given permission to use these animations in your custom levels, but please give credits to him if you do so!


SPEEDUP

This nifty command will double speed of engine timers (except UV Rotate graphical method and certain other visual effects, like gunfire animation).
You can't use two or more such commands in a row, because then engine will hang.

This command is used by means of flipeffect 10.


SPEEDDN

Slows down engine. Can be used to simulate slo-mo effect (like in Max Payne).
You can use two or more commands in a row, and engine will act slower and slower in specified flipeffect sectors.
But note that it will also slow down camera timer, so it won't look smooth.

This command is used by means of flipeffect 11.


Train

Implements the train trap from the TR3 level Aldwych.

To assign a slot:

AssignSlot=<MyUsedSlot>,<Train>

Where <Train> is OBJ_FLEP_TRAIN{1..16}.

Additional customization can be done by the command Customize=CUST_FLEP_TRAIN.

Syntax:

Customize=CUST_FLEP_TRAIN, TubeLoopSound, TrainKillAnimation, DeathCameraDistance

TubeLoopSound:
The sound that plays when the train is moving.
Type IGNORE to not play any sound.
Note: the sound must have L flag set.

TrainKillAnimation:
The animation that Lara does when she is killed by the train.
Type IGNORE to not force any animation.
Note: the animation must have state ID 8.

DeathCameraDistance:
The distance (in units) from the train at which the camera is placed to look at Lara.
Type IGNORE to use the default value (8192).


Bats

Implements the bats that are present in TR3. They just fly away and are not harmful.

The setup is based on TR4 locusts. The OCB of the emitter nullmesh tells how many bats to spawn, up to 64. The bats fly along the direction of the point of the nullmesh.
Also like the locusts, each mesh in the mesh slot should be the whole bat in a different pose.

The customization can be done by the command Customize=CUST_FLEP_BATS.

Syntax:

Customize=CUST_FLEP_BATS, EmitterSlot, MeshSlot, Sound, {Emitter, Mesh, Sound array}

EmitterSlot:
The slot of the bat emitter.

MeshSlot:
The slot that contains the bat meshes.

Sound:
The sound the bats do while they fly.
Type IGNORE to not play any sound.


Springboard

Implements the springboard (bounce pad) from TR2.

To assign a slot:

AssignSlot=<MyUsedSlot>,<Springboard>

Where <Springboard> is OBJ_FLEP_SPRINGBOARD{1..16}.

Additional customization can be done by the command Customize=CUST_FLEP_SPRINGBOARD.

Syntax:

Customize=CUST_FLEP_SPRINGBOARD, ObjType, PeakHeight

ObjType:
The springboard to be customized.
See the OBJ_FLEP_SPRINGBOARD constants.

PeakHeight:
The peak height (in clicks) of the jump given by the springboard.
Type IGNORE to use the default value (19).


Quad Bike

Allows to use the Quad Bike like TR3 with some additions.

Important: make sure to enable Classic vehicles patch inside FLEP or the following settings won't work.

Syntax:

Customize=CUST_FLEP_QUAD_BIKE, Number, QuadSlot, LaraSlot, FrontImpactSound, MoveSound, IdleSound

Number:
The quad bike number.
Note: the minimum Number is 1 and the maximum is 16.

QuadSlot:
The slot of the quad bike.

LaraSlot:
The slot containing Lara's animations.

FrontImpactSound, MoveSound, IdleSound:
The sounds that play when the quad bike collides in the front, moves or idles, respectively.
Type IGNORE to not play any sound.
Note: MoveSound and IdleSound must have L flag set.

Syntax:

Customize=CUST_FLEP_QUAD_BIKE_TRAPS, Number, TrapSlot, HealthLoss, {TrapSlot, HealthLoss array}

Number:
The quad bike number.

TrapSlot:
The slot of the object that can hurt Lara while she is driving.

HealthLoss:
The health loss caused to Lara each frame of contact.
Type IGNORE to use the default value (100).

Syntax:

Customize=CUST_FLEP_QUAD_BIKE_OPTIONS, Number, LeftFrontWheelMesh, RightFrontWheelMesh, LeftRearWheelMesh, RightRearWheelMesh, FatalDropHeight, FatalWaterDepth, FallDetachFrame

Number:
The quad bike number.

LeftFrontWheelMesh, RightFrontWheelMesh, LeftRearWheelMesh, RightRearWheelMesh:
The wheel meshes that should rotate when the quad bike is moving.
Type DISABLED to disable the rotation of a wheel mesh.
Type IGNORE to use the default values (7 for LeftFrontWheelMesh, 6 for RightFrontWheelMesh, 3 for LeftRearWheelMesh and 4 for RightRearWheelMesh).

FatalDropHeight:
The maximum height (in clicks) the quad bike can drop before exploding.
Type IGNORE to use the default value (19).

FatalWaterDepth:
The maximum water depth (in clicks) the quad bike can be in before exploding.
Type IGNORE to use the default value (0).

FallDetachFrame:
The frame of the falling death animation (with state 19) where Lara stops moving with the quad bike.
Type IGNORE to use the default value (58).


Spinning blade

Implements the spinning blade from TR2 and TR3.

To assign a slot:

AssignSlot=<MyUsedSlot>,<SpinningBlade>

Where <SpinningBlade> is OBJ_FLEP_SPINNING_BLADE{1..16}.

Additional customization can be done by the command Customize=CUST_FLEP_SPINNING_BLADE.

Syntax:

Customize=CUST_FLEP_SPINNING_BLADE, ObjType, Sound, HealthLoss, Collision, Gravity, StoppingDistance, FrontBladeAnimation, BackBladeAnimation, FrontSpikeAnimation, BackSpikeAnimation, FrontBladeMeshswap, BackBladeMeshswap, FrontSpikeMeshswap, BackSpikeMeshswap, GeneralMeshswap

ObjType:
The spinning blade to be customized.
See the OBJ_FLEP_SPINNING_BLADE constants.

Sound:
The sound that plays when the spinning blade is moving.
Type IGNORE to not play any sound.
Note: the sound must have L flag set.

HealthLoss:
The health loss caused to Lara each frame of contact.
Type IGNORE to use the default value (100).

Collision:
ENABLED: the spinning blade will stop and reverse before steps and unwalkable slopes.
DISABLED: the spinning blade will snap up any block, pass over unwalkable slopes, and only stop and reverse at walls.
Type IGNORE to use the default value (DISABLED).

Gravity:
ENABLED: the spinning blade will be affected by gravity and fall down to the ground.
DISABLED: the spinning blade will snap to the ground.
Type IGNORE to use the default value (DISABLED).

StoppingDistance:
The distance travelled during stop animations.
Type IGNORE to use the default value (1536).

FrontBladeAnimation, BackBladeAnimation, FrontSpikeAnimation, BackSpikeAnimation:
The animations that Lara should play when she is killed by the blade facing her front, the blade facing her back, the spike facing her front, and the spike facing her back, respectively.
Type IGNORE to not play any animation.

FrontBladeMeshswap, BackBladeMeshswap, FrontSpikeMeshswap, BackSpikeMeshswap:
The slots with the meshswaps for Lara when she is killed by the blade facing her front, the blade facing her back, the spike facing her front, and the spike facing her back, respectively, regardless of whether the animations are played.
Type IGNORE to not meshswap Lara.

GeneralMeshswap:
The slot with the meshswap for Lara when she is killed by the spinning blade in any other way.
Type IGNORE to not meshswap Lara.


Electric Lara

Implements the electricity effect from TR3.

Important: make sure to enable Electric Lara patch inside FLEP or the following settings won't work.

Syntax:

Parameters=PARAM_FLEP_LARA_ELECTRIC, IdParamList, DynamicLight, LaraElectricLoopSound, LaraElectricCracklesSound

IdParamList:
The Id to be used in the trigger.
Note: the minimum Id is 1 and the maximum is 255.

DynamicLight:
ENABLED: The electricity effect emits light.
DISABLED: The electricity effect does not emit light.
Type IGNORE to use the default value (ENABLED).

LaraElectricLoopSound, LaraElectricCracklesSound:
The sounds that play while the electricity effect is enabled.
Type IGNORE to not play any sound.
Note: the sounds must have L flag set.


Change hair type

Shows or hides Lara's hair.

To show or hide Lara's hair, use flipeffect 16.


Sub and Subsuit

Allows the use of the Sub and the Subsuit.

Important: make sure to enable Classic vehicles patch inside FLEP or the following settings won't work.

Controls

Commands

CUST_FLEP_SUB

This is the main command that associates an existing TRNG slot to a required Sub item.

Syntax:

Customize=CUST_FLEP_SUB, Number, SubSlot, LaraSlot, VelocityLimit, SprintVelocityLimit, ResponsiveTurning, SubsuitCollision, Pickup, PickupFrame

Number:
The Sub number.
Note: the minimum Number is 1 and the maximum is 16.

SubSlot:
The slot of the Sub.

LaraSlot:
The slot containing Lara's animations for the Sub.

VelocityLimit, SprintVelocityLimit:
The velocity limits of the Sub when it moves forward with and without the dash input released.
Type IGNORE to use the default values (64 for VelocityLimit and 116 for SprintVelocityLimit).

ResponsiveTurning:
ENABLED: The Sub has less drag and turns faster.
DISABLED: The Sub has more drag and turns slower.
Type IGNORE to use the default value (ENABLED).

SubsuitCollision:
ENABLED: The Sub collision for when Lara turns around herself.
DISABLED: The Sub collision for when Lara turns around the Sub.
Type IGNORE to use the default value (DISABLED).

Pickup:
ENABLED: Lara can pick up items with animation 17 from her defined slot while using the Sub.
DISABLED: Lara cannot pick up items while using the Sub.
Type IGNORE to use the default value (DISABLED).

PickupFrame:
The frame of animation 17 in the defined slot for when the item is picked up.
Type IGNORE to use the default value (18).

CUST_FLEP_SUB_WAKE

This command adds sublime wakes to the Sub.

Syntax:

Customize=CUST_FLEP_SUB_WAKE, Number, LeftMesh, RightMesh, Smoothness, AmbientTint, MistMesh, ExtraMistMesh

Number:
The Sub number.
Note: the minimum Number is 1 and the maximum is 16.

LeftMesh, RightMesh:
The meshes that produce wakes.
Type DISABLED to not produce wake.
Type IGNORE to use the default values (1 for LeftMesh and 2 for RightMesh).

Smoothness:
ENABLED: The wakes do not have rough edges.
DISABLED: The wakes have rough edges.
Type IGNORE to use the default value (ENABLED).

AmbientTint:
ENABLED: The wakes and mist change tint according to the room where the Sub is in.
DISABLED: The wakes and mist do not change tint.
Type IGNORE to use the default value (ENABLED).

MistMesh, ExtraMistMesh:
The meshes that produce mist.
Type DISABLED to not produce mist.
Type IGNORE to use the default values (3 for MistMesh and DISABLED for ExtraMistMesh).

CUST_FLEP_SUB_GEAR

This command defines the functions of the meshes for the Sub.

Syntax:

Customize=CUST_FLEP_SUB_GEAR, Number, HeadlightMesh, GunMesh, LeftWingMesh, RightWingMesh, FanMesh, ExtraFanMesh

Number:
The Sub number.
Note: the minimum Number is 1 and the maximum is 16.

HeadlightMesh:
The mesh that casts light and is showed when the Sub is turned on.
Type DISABLED to not cast any light.
Type IGNORE to use the default value (4).

GunMesh:
The mesh that can shoot crossbow bolts or harpoons.
Type DISABLED to forbid shooting.
Type IGNORE to use the default value (3).

LeftWingMesh, RightWingMesh:
The meshes that rotate when the Sub steers.
Type DISABLED to not rotate the mesh.
Type IGNORE to use the default values (1 for LeftWingMesh and 2 for RightWingMesh).

FanMesh, ExtraFanMesh:
The meshes that rotate while the Sub is turned on, with varying speed.
Type DISABLED to not rotate the mesh.
Type IGNORE to use the default values (3 for FanMesh and DISABLED for ExtraFanMesh).

CUST_FLEP_SUB_MISC

This command adds further refinements to the Sub.

Syntax:

Customize=CUST_FLEP_SUB_MISC, Number, DeathRelease, OnWaterDismount, StartSound, StopSound, StartFrameUnderwater, StartFrameOnWater, OnWaterLevel

Number:
The Sub number.
Note: the minimum Number is 1 and the maximum is 16.

DeathRelease:
ENABLED: Lara gets off the Sub when she dies.
DISABLED: Lara stays on the Sub when she dies.
Type IGNORE to use the default value (ENABLED).

OnWaterDismount:
ENABLED: When the Sub is on water, Lara gets off the Sub and stays on water.
DISABLED: When the Sub is on water, Lara gets off the Sub and dives.
Type IGNORE to use the default value (ENABLED).

StartSound, StopSound:
The sounds that play when Lara gets on and off the Sub, respectively.
Type IGNORE to not play any sound.

StartFrameUnderwater, StartFrameOnWater:
The frames of animation 11 and 13 in the defined slot, respectively, for when the Sub plays the StartSound.
Type IGNORE to use the default values (30 for StartFrameUnderwater and 15 for StartFrameOnWater).
Note: this setting is used only if StartSound is defined.

OnWaterLevel:
The level at which Lara is able to take air.
Type IGNORE to use the default value (338).

CUST_FLEP_SUB_BREATH

This command lets Lara have audible breathing based on her fear level and adds metal clashing.

Syntax:

Customize=CUST_FLEP_SUB_BREATH, Number, BreathSound, MetalClashSound, FearClash, FearNoAir, ClashSpeed

Number:
The Sub number.
Note: the minimum Number is 1 and the maximum is 16.

BreathSound, MetalClashSound:
The sounds that play when Lara breathes or when she clashes, respectively.
Type IGNORE to not play any sound.

FearClash:
ENABLED: When Lara clashes, she breathes faster.
DISABLED: When Lara clashes, she keeps breathing as usual.
Type IGNORE to use the default value (ENABLED).
Note: this setting is used only if BreathSound is defined.

FearNoAir:
ENABLED: When Lara has no air left, she breathes faster.
DISABLED: When Lara has no air left, she keeps breathing as usual.
Type IGNORE to use the default value (ENABLED).
Note: this setting is used only if BreathSound is defined.

ClashSpeed:
The speed at which the Sub will effectively clash with floors, walls, and ceilings.
Type IGNORE to use the default value (100).

CUST_FLEP_SUB_FX

This command adds a few more effects to the Sub.

Syntax:

Customize=CUST_FLEP_SUB_FX, Number, EngineMesh, AirBubblesSprite, EngineBubblesSprite, ClusterBubblesSprite, LoopSound, EngineSound

Number:
The Sub number.
Note: the minimum Number is 1 and the maximum is 16.

EngineMesh:
The mesh that can produce bubbles.
Type DISABLED to not produce bubbles.
Type IGNORE to use the default value (7).

AirBubblesSprite, EngineBubblesSprite, ClusterBubblesSprite:
The sprites that come from the engine. Air bubbles can be enabled using action 2 and disabled using action 3.
Type IGNORE to not produce sprites.
Note: this setting is used only if EngineMesh is defined.

LoopSound, EngineSound:
The sounds that play while the Sub is turned on and when the Sub moves, respectively.
Type IGNORE to not play any sound.
Note: LoopSound and EngineSound must have L flag set.

Action Triggers

A1: Sub. Put Lara on <#> Sub immediately
Allows Lara to be immediately taken and put on the specified Sub located in the level while bypassing her mounting animation.

A2: Sub. Enable air bubbles on <#> Sub
Enables the air bubbles that escape when Lara encounters a puncture with her suit.

A3: Sub. Disable air bubbles on <#> Sub
Disables the air bubbles that escape from the puncture.

A4: Sub. Lock Lara to the <#> Sub
Forbids Lara to dismount the suit, useful for when Lara has left a safe location.

A5: Sub. Free Lara from the <#> Sub
Allows Lara to dismount the suit, useful for when Lara has reached a safe location.

A6: Sub. Take Lara to <#> LSP immediately
Allows Lara to be immediately put off the Sub and to be taken to the specified Lara Start Position located in the level.

Condition Triggers

C4: Sub. Lara is on a Sub
Checks if Lara is on any type of Sub.

C5: Sub. Lara is on the Sub <#> number
Checks if Lara is on a specific type of Sub defined in the script.