I can confirm that not pulling the switch will leave Agrippa's neck enjoying a pleasant breeze, as i decided not to save him on my second playthrough. Further confirmation from the scripts below:
From the first nave map:
void ChangeChannelingLever(string &in asEntityName, int alState)
{
if(alState != 1) return;
AddDebugMessage("Turned channeling on chaneling machine!", false);
//Stop any strained talking going on
StopAgrippaStrainedSpeak();
//Lever is now stuck and will not move.
SetLeverStuckState("channeling_machine_lever_1", alState, true);
SetLocalVarInt("AgrippaVoiceMachineOn",1);
SetGlobalVarInt("AgrippaActivatedIn21", 1); //Agrippa is awake in 26 too
AddTimer("AgrippaNormalTalkStart", 2, "TimerAgrippaNormalTalkStart");
//Add effects on machine
CreateParticleSystemAtEntity("ChannelingMachinePS", "ps_channeling_machine_smoke", "AreaChannelingMachine", true);
PlaySoundAtEntity("ChannelingMachineStart","21_cm_reverse_low.snt", "AreaChannelingMachine", 0.05, false);
PlaySoundAtEntity("ChannelingMachineRunning","21_channeling_machine.snt", "AreaChannelingMachine", 2.0, true);
}
Notice the SetGlobalVarInt line. This global variable determines if agrippa has a head in the second nave visit:
void InitAgrippa()
{
// Check if player has awakend agrippa in 21, if not make Agrippa dead.
if(GetGlobalVarInt("AgrippaActivatedIn21") != 1)
{
SetEntityActive("agrippa_2", false);
SetEntityActive("agrippa_headless_1", true);
SetEntityActive("AreaAgrippa", false); //Turn off no item use on corpse is possible.
StopSound("Sound_60", 0.0f); //Channeling machine
DestroyParticleSystem("ParticleSystem_62"); //Channeling machine
SetLocalVarInt("AgrippaDead",1);
SetEntityActive("bone_saw_1", false);
InitWaterLurker();
}
else
InitMissingIngredients();
}
So, going to have to load a save from just before you were captured and save him if you want the Agrippa ending.