if (!GetLevelByClass(CLASS_TYPE_WIZARD, oRespawner)==0 && GetSubRace(oRespawner)!="Demonologist")
{
return;
}
effect eFail = SupernaturalEffect(EffectSpellFailure());
ApplyEffectToObject(DURATION_TYPE_PERMANENT,eFail, oRespawner);
boolean expressions get evaluated from left to right. The first thing that will get evaluated will be the GetLevelByClass and then the GetSubRace. This is important because it can also be used for short circuiting. If you ask me you do not need the !GetLevelByClass(Class_Type_Wizard,oRespawner)==0, just replace it with GetLevelByClass(Class_Type_Wizard) because if it evaluted to either 0 or any number other than 0 than it can be used to evaluate boolean expressions. A boolean expression in C++/C will either return 1 or 0 so you could skip that part and evaluate it with
if (!GetLevelByClass(CLASS_TYPE_WIZARD, oRespawner) && GetSubRace(oRespawner)!="Demonologist")
{
return;
}
effect eFail = SupernaturalEffect(EffectSpellFailure());
ApplyEffectToObject(DURATION_TYPE_PERMANENT,eFail, oRespawner);
the ==0 is a bit redundant.
Concerning the braces, I add them because they make the code easier to read. A double brace even for one statement could help a lot in a huge codebase.
Your naming conventions are fine actually.