I've come up with a solution, of sorts. Basically, this is my idea:
Have the "start" effect as a weapon, so that when it fires, we add, via the installdevice command, the beam weapon itself. This weapon should take as less time to charge as possible, I'd recommend something close to 0.5 or 1 second. Well, with a good sync, the fire of that weapon would be in the exact moment as it was in freespace. Once it fired, we disable the weapon and wait till the effect is off and then we delete it, waiting for the cicle to start all over again. The cool thing is that once we add the weapon with the installdevice command it won't show on the manual panel, but I don't know about the panel of enemy ships firing at you, haven't tried that yet.
There's only one problem with this method, but I think that it can be easily corrected with a bit of good harpointing: as the "charge" and "attack" effects are two different weapons, they will initiate in two different harpoints. Well, to counter that, when adding a hardpoint layout to your ship you should put two hardpoints in one location, where the beam cannon will be located, and then work arround with the sets to make sure that everything goes as planned (dunno what would happen with ships that have multiple beam emplacements... that could get a little messy...)
Anyhow, it's a start. So, here's the machine that would handle the weapons. Have in mind that I coded assuming that the beam weapon (the one responsible with the travel and end effect) took about 1 second to charge, and that the "start" one took more than 6 seconds, but that can be changed in the code) :
Machine "Beam"
State Fire
Rule event in
:action
SelectEx(s.this:Devtype=#beam_start,
RequestFiredEvent(s.this,1);
);
:end
END
Rule event Fired
condition IsValid(E.location)&E.location:devtype=#beam_start
:action
Debug("Fired1. The ship is:", e.location:owner, "and the target:", e.location:target);
ownr:=e.location:owner;
targ:=e.location:target;
Timer(Open_Fire, 1.9, e.target:=targ;e.ownr:=ownr);
:end
END
Rule event Open_Fire
condition IsValid(e.target)&IsValid(e.ownr)
:action
Debug("the ship is:", e.ownr, "and the target:", e.target);
InstallDevice(e.ownr, #magma_beam_travel);
SelectDevices(1, e.ownr, s.this:devtype=#beam_travel);
ExecList(1,
RequestFiredEvent(s.this,1);
TargetWeapon(s.this, e.target);
);
:end
END
Rule event Fired
Condition IsValid(E.location)&E.location:devtype=#beam_travel
:action
EnableDevice(e.location,0);
weap:=e.location;
Debug("Fired2. The ship is:", e.location:owner, "and the target:", e.location:target);
Timer(DeleteDevice, 3, e.wep:=weap);
:end
END
Rule event DeleteDevice
:action
DeleteDevice(e.wep);
:end
END
END
END
FYI: I've named in this code the start effect as "beam_start" and the main one as "beam_travel"