There does not seem to be a clear-cut way to determine when a paladin's actions have become egregious enough to justify them breaking their oath. Do a lot of minor slights eventually add up and cause an oath to be broken? Do they get some sort of warning like losing their laying on of hands ability? 


Question: " not all code paths return a value" when return enum type
Answer: there's no return if none of those if conditions are met.  You need to either use if...elseif...else
or have a return after all of the if statements that will return a value if nothing has been returned (none of the if conditions were met).