On Fri, 26 Apr 1996, Marcelo Valle Moreira wrote:
> if (GET_ALIGNMENT(ch) >= 10000)
> strcpy(alinhamento, "You are a Saint.\r\n");
> else if (GET_ALIGNMENT(ch) >= 9000)
> strcpy(alinhamento, "You are a Sacred Angel.\r\n");
> else if (GET_ALIGNMENT(ch) >= 7500)
> strcpy(alinhamento, "You are an Angel.\r\n");
> else if (GET_ALIGNMENT(ch) >= 5000)
> strcpy(alinhamento, "You are totally Good.\r\n");
> else if (GET_ALIGNMENT(ch) >= 3000)
> strcpy(alinhamento, "You are Very Good.\r\n");
> else if (GET_ALIGNMENT(ch) >= 351)
> strcpy(alinhamento, "You are Good.\r\n");
> else if (GET_ALIGNMENT(ch) == 350)
> strcpy(alinhamento, "You are getting Good.\r\n");
> else if (GET_ALIGNMENT(ch) >= -349)
> strcpy(alinhamento, "You are Neutral.\r\n");
> else if (GET_ALIGNMENT(ch) == -350)
> strcpy(alinhamento, "You are getting Evil.\r\n");
> else if (GET_ALIGNMENT(ch) >= -351)
> strcpy(alinhamento, "You are Evil.\r\n");
> else if (GET_ALIGNMENT(ch) >= -3000)
> strcpy(alinhamento, "You are Very Evil.\r\n");
> else if (GET_ALIGNMENT(ch) >= -5000)
> strcpy(alinhamento, "You are a Devil.\r\n");
> else if (GET_ALIGNMENT(ch) >= -7500)
> strcpy(alinhamento, "You are a Damned Devil.\r\n");
> else if (GET_ALIGNMENT(ch) >= -9000)
> strcpy(alinhamento, "You are totally Evil.\r\n");
> else
> strcpy(alinhamento, "You are Damned Evil like Lucifer.\r\n");
Ehm, unless you've changed it, alignment is between -1000 and 1000
with -350 through 350 being neutral, -351 through -1000 being evil, and
351 through 1000 being good.
Next, I might suggest using an array (I'm array happy, so sue me
:)). I guess since you already wrote the above it doesn't make much of a
difference, so you needn't bother with this, but, it's much nicer to just
be able to do:
int align_index(int align)
{
return (align >= 1000 ? 0 :
align >= 750 ? 1 :
align >= 500 ? 2 :
align >= 350 ? 3 : 4);
}
and in do_score, simply do:
[at the top of the function]
int align = GET_ALIGNMENT(ch);
int align_index(int align);
static char *align[6][2] = {
{ "Angelic Good", "Satanic Evil" },
{ "Saintly Good", "Demonic Evil" },
{ "Lawful Good" , "Chaotic Evil" },
{ "Good" , "Evil" },
{ "Neutral Good", "Neutral Evil" }
};
[where ever the alignment thing is]
/* make negative aligns positive temporarily */
if (align < 0) align += (align*2);
sprintf(buf, "%sYou have %d/10 AC and are %s.\r\n", buf,
GET_AC(ch),
align[align_index(align)][GET_ALIGNMENT(ch) >= 0 ? 0 : 1]);
------------------------------------------------------------------------
It's not the easiest way, but, IMHO, it's quicker to add in and it
probably works :) I didn't try it, I actually wrote it right here in my
newsreader, so I might have screwed up a bit. I made the align variable
make negative alignments positive for a purpose. Ooops, I guess "0"
should return "Negative" not "Neutral Good"? Simple fix... you can do it
:)
This archive was generated by hypermail 2b30 : 12/18/00 PST