int scalar = creature is SpecialCreature ? (creature.IsAwesome ? 700 : 500) : (creature is NotSoNormalCreature ? 
            (creature.IsAwesome ? (creature is IGreatCreature ? 450 : 280) : 240) : 
            (creature.IsAwesome ? (creature is IGreatCreature ? 300 : 200) : 160));
how should I write that code to make it more readable?
I thought of just building the ifs, but then I thought how about making some kind of "ConditionFactory"? Would that make any sense, or is it just too intricate for such a simple task?
int scalar;
if (creature is SpecialCreature)
{
    scalar = creature.IsAwesome ? 700 : 500;
}
else if (creature is NotSoNormalCreature)
{
    if (creature.IsAwesome)
    {
        scalar = creature is IGreatCreature ? 450 : 280;
    }
    else
    {
        scalar = 240;
    }
}
else
{
    if (creature.IsAwesome)
    {
        scalar = creature is IGreatCreature ? 300 : 200;
    }
    else
    {
        scalar = 160;
    }
}
                Not sure entirely what you're going for, but since you are using a base type inheritance chain, you might elect to do something like
interface ICreature
{
    bool IsAwesome { get; set; }
    int GetScalar();
}
abstract class Creature : ICreature
{
    public bool IsAwesome { get; set; }
    public virtual int GetScalar()
    {
        return 160;
    }
}
class SpecialCreature : Creature
{
    public override int GetScalar()
    {
        return this.IsAwesome ? 700 : 500;
    }
}
class NotSoNormalCreature : Creature
{
    public override int GetScalar()
    {
        return this.IsAwesome ? 450 : 280;
    }
}
// more ICreatures...
Which would allow you to have the creature implement its own logic for determining the scalar, and your consuming code can lose the complication of caring.
ICreature creature = GetCreatureFromSomewhere();
int scalar = creature.GetScalar();
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With