public int GetExpPenalty(int level, ReviveOptions option)
{
float optionMultiplicator;
switch (option)
{
// Check both Nao Stone options for exp, as the exp aren't
// reduced until the second option gets in.
case ReviveOptions.NaoStone: optionMultiplicator = 0.001f; break;
case ReviveOptions.NaoStoneRevive: optionMultiplicator = 0.001f; break;
case ReviveOptions.PhoenixFeather: optionMultiplicator = 0.0025f; break;
case ReviveOptions.DungeonEntrance: optionMultiplicator = 0.005f; break;
case ReviveOptions.StatueOfGoddess: optionMultiplicator = 0.0075f; break;
case ReviveOptions.Here: optionMultiplicator = 0.01f; break;
case ReviveOptions.Town:
var premium = true;
if (premium)
goto default;
optionMultiplicator = 0.005f; break;
default: return 0;
}
float levelMultiplicator;
if (level < 10) levelMultiplicator = 1;
else if (level < 30) levelMultiplicator = 3;
else if (level < 50) levelMultiplicator = 4;
else if (level < 100) levelMultiplicator = 5;
else levelMultiplicator = 6;
var exp = AuraData.ExpDb.GetForLevel(level);
return (int)(exp * optionMultiplicator * levelMultiplicator);
}
}