AdjustAlignment(object, int, int, int)
Adjusts the alignment of a creature.
void AdjustAlignment( object oSubject, int nAlignment, int nShift, int bAllPartyMembers = TRUE );
Parameters
oSubject
Target to have alignment adjusted.
nAlignment
nShift
The desired amount to shift the alignment (numeric range from -100 to 100).
bAllPartyMembers
TRUE (whole party) or FALSE (oSubject only) (Default: TRUE)
Description
Adjust the alignment of a oSubject.
ALIGNMENT_LAWFUL, ALIGNMENT_CHAOTIC, ALIGNMENT_GOOD, ALIGNMENT_EVIL: alignment
will be shifted in the direction specified.
ALIGNMENT_ALL: nShift will be added to oSubject's law/chaos and good/evil
alignment values (thus adding/subtracting the same amount to both).
ALIGNMENT_NEUTRAL: nShift is applied to oSubject's law/chaos and good/evil
alignment values in the direction which is towards neutrality.
Remarks
Alignment is not treated as a continuous scale running from 0 to 100,
but in three bands running from 0 to 30, 31 to 69 and 70 to 100.
Whenever a call to AdjustAlignment takes you over one of these boundaries, your
characters alignment is automatically placed at the middle of the new band, ie
15, 50 or 85.
If we look at a character (oSubject) with a good/evil alignment value of 71 who
performs an act that moves their alignment towards evil we get the following
behaviour... If the adjustment was a single point, their new alignment value
would be 70, if the adjustment is more, two or even ten points, the new
alignment would be 50.
However, if the alignment shift is sufficiently large, then the characters
alignment will 'skip' a band. In the case given here, an alignment shift of 41
points or more would be sufficient to give the character an evil alignment,
with a good/evil value of 15.
Example for ALIGNMENT_NEUTRAL: if oSubject has a law/chaos value of 10 (i.e.
chaotic) and a good/evil value of 85 (i.e. good) then if nShift is 15, the
law/chaos value will become (10+15)=25 and the good/evil value will become
(85-15)=70.
The ALIGNMENT_NEUTRAL shift will at most take the alignment value to 50 and not
beyond (above or below).
If bAllPartyMembers is TRUE, characters in a party with a PC who is the target
of AdjustAlignment will also have their alignments adjusted. The
specifed PC (oSubject) receives the full adjustment to their alignment, while
members of the PC's party receive a 20% adjustment to their
alignment, rounded up (hence a minimum of 1 point). If you wish to avoid this
and ONLY change oSubject's alignment, set bAllPartyMembers (added in version
1.69) to FALSE.
Adjust alignment does not affect DMs.
Known Bugs
An alignment adjustment for the PC does not affect the PC's associates even when bAllPartyMembers is TRUE. However an alignment adjustment specified for an associate does affect it's PC master.
Version
1.69
See Also
functions: | AdjustAlignmentOnAll | AdjustReputation | GetAlignmentGoodEvil | GetAlignmentLawChaos | GetReputation |
categories: | Alignment Functions |
constants: | ALIGNMENT_* Constants |
author: Charles Feduke, editor: Grimlar, Mistress additional contributors: Jemoney, Tom Cassiotis, Xachaffery Vermillion, Martin Jorgensen, Mikel Rice, Grimlar, Lilac Soul, Cereborn