1) You dont need any triggers to add or remove actions.
The addaction command allows you to add conditions to the action, which defines when it will be available
The following is untested but should work
lets name the object at the 1st Bridge "Bridge_1"
lets name the object at the 2nd Bridge "Bridge_2"
lets name the object at the 3rd Bridge "Bridge_3"
/////////////////////////////////////////////
///// INIT.sqf" /////
/////////////////////////////////////////////
add the actions to reach player and use the condition that they
1) have to be alive
2) have to be within 2 metres of a bridge object
3) The bridge object hasnt yet been destroyed
sleep 5;
_title = "";
_condition = "";
_actionID = 0;
if ! (IsDedicated)then
{
_title = format ["Set Det's at %1",_x];
_condition = format ["(alive _target) && (_target distance %1 < 2 )&&(alive %1)&&(%1 getvariable 'Tx_demsReady') ",_x];
_actionID = Player addAction [_title, "SetDetonators.sqf", _x , -20 , false , false , "" , _condition];
}foreach [Bridge_1,Bridge_2,Bridge_3] ;
/////////////////////////////////////////////
///// SetDetonators.sqf /////
/////////////////////////////////////////////
add the actions to the player that set the detonators
with the condition that
1) he has to be alive
2) The bridge object hasnt yet been destroyed
_player = _this select 0;
_caller = _this select 1;
_id = _this select 2;
_bridge = _this select 3;
if !(_player == _caller)exitwith{};
_bridge setvariable ["Tx_demsReady", true];
_player removeaction _id;
_player sidechat format ["<< DEMS >> %1 set for dems",_bridge];
_title = format ["Blow %1",_bridge];
_condition = format ["(alive _target) && (alive %1) && ((_target distance %1) < 100",_bridge];
_actionID = Player addAction [_title, "BlowBridge.sqf", _bridge , -20 , false , false , "" , _condition];
/////////////////////////////////////////////
///// BlowBridge.sqf /////
/////////////////////////////////////////////
_player = _this select 0;
_caller = _this select 1;
_id = _this select 2;
_bridge = _this select 3;
if !(_player == _caller)exitwith{};
_player sidechat format ["<< DEMS >> Detonating %1 in 10 seconds", _bridge];
_sleep 10;
if! (alive _player)exitwith{};
_player sidechat "<< DEMS >> Fire In the hole";
_bridge setdammage 1;
_player removeaction _id;
/*
add code to:
1) createvehicle bomb, or whatever else you are doing to create the explosion
2) Update your briefing "Tasks"
<< STAGE 1>>
The initial Set Detonators actions will be attached to the players at the start of the mission, (one for each bridge) but they will only be visible and available when the conditions have been met, they will automatically be invisible when these conditions are not true
<< STAGE 2>>
Once the player has selected the "Set Dets" action, that action specific to that bridge will be removed and replaced with another action, to blow the bridge up
This action will only be visible while the player is within 100m and the bridge hasnt yet been blown
<< STAGE 3>>
Once the player has selected the "Blow Bridge" action, that action specific to that bridge will be removed, you will need to add some code , eg createvehicle "Bomb" to creatre the explosion FX and actually blow the bridge itself up