Looking into how Oblivion handles expulsion, there could be a few possible problems:
Fighter's Guild expulsion is handled by the quest "Expelled from the Fighter's Guild" (FG00Explusion). This quest runs from the beginning of the game, and the only thing that references it is a script that's not used in game (FGD08Potion). The script on the quest is FGExpulsionScript:
Spoiler scn FGExpulsionScript
short booted
short killer
short thief
short probation
short BWbooted
float fQuestDelayTime
short doonce
Begin GameMode
if ( doonce == 0 )
set fquestdelaytime to 0.5
set doonce to 1
endif
if ( GetPCFactionMurder FightersGuild == 1 ) && ( player.GetFactionRank FightersGuild < 9 )
if ( GetPCExpelled FightersGuild == 0 )
set booted to ( booted + 1 )
set killer to ( killer + 1 )
SetPCExpelled FightersGuild 1
endif
endif
if ( GetPCFactionSteal FightersGuild == 1 ) && ( player.GetFactionRank FightersGuild < 9 )
if ( GetPCExpelled FightersGuild == 0 )
set booted to ( booted + 1 )
set thief to ( thief + 1 )
SetPCExpelled FightersGuild 1
endif
endif
if ( player.GetFactionRank BlackwoodCompanyFaction >= 0 )
if ( GetPCFactionMurder BlackwoodCompanyFaction == 1 )
set BWbooted to 1
SetPCExpelled BlackwoodCompanyFaction 1
Player.SetFactionRank BlackwoodHated 0
elseif ( GetStage FGD08Infiltration >= 70 ) && ( GetPCFactionAttack BlackwoodCompanyFaction == 1 )
set BWbooted to 1
SetPCExpelled BlackwoodCompanyFaction 1
Player.SetFactionRank BlackwoodHated 0
endif
endif
End
and the relevant lines are
if ( GetPCFactionMurder FightersGuild == 1 ) && ( player.GetFactionRank FightersGuild < 9 ) if ( GetPCExpelled FightersGuild == 0 ) set booted to ( booted + 1 ) set killer to ( killer + 1 ) SetPCExpelled FightersGuild 1 endifendif
It uses a function http://cs.elderscrolls.com/constwiki/index.php/GetPCFactionMurder, meaning there's some hard-coded, non-scripted stuff going on. And that I'm going to have to guess how this works - I think every time you kill an NPC, the game checks its faction, whether you're in the faction, and if both are true sets a Murder flag for that guild. (When the Expulsion script runs half a second later it actually handles removing you from the guild.) I'd further guess that something funky is going on when it tests Marlig's factions, and somehow still registers him as Fighter's Guild. There's no way to tell what's really going on there, though, unless someone watches the internals of Oblivion while killing Marlig (which is way above what most everyone here can do).
Try checking in Tes4Edit if the Expulsion quest or script are edited.
Next time you fight him, try
GetFactionRank 2228fGetInFaction 2228fSameFactionAsPC;kill him, or use "Kill 14" - 14 is necessary so the kill is from the playerGetPCFactionMurder 2228f