Adds armorClassDescription to Monster.
This commit is contained in:
@@ -165,10 +165,109 @@
|
|||||||
return [Monster abilityModifierForScore:self.charismaScore];
|
return [Monster abilityModifierForScore:self.charismaScore];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const int kArmorClassUnarmored = 10;
|
||||||
|
const int kArmorClassMageArmor = kArmorClassUnarmored + 3;
|
||||||
|
const int kArmorClassPadded = kArmorClassUnarmored + 1;
|
||||||
|
const int kArmorClassLeather = kArmorClassUnarmored + 1;
|
||||||
|
const int kArmorClassStudded = kArmorClassUnarmored + 2;
|
||||||
|
const int kArmorClassHide = kArmorClassUnarmored + 2;
|
||||||
|
const int kArmorClassChainShirt = kArmorClassUnarmored + 3;
|
||||||
|
const int kArmorClassScaleMail = kArmorClassUnarmored + 4;
|
||||||
|
const int kArmorClassBreastplate = kArmorClassUnarmored + 4;
|
||||||
|
const int kArmorClassHalfPlate = kArmorClassUnarmored + 5;
|
||||||
|
const int kArmorClassRingMail = kArmorClassUnarmored + 4;
|
||||||
|
const int kArmorClassChainMail = kArmorClassUnarmored + 6;
|
||||||
|
const int kArmorClassSplintMail = kArmorClassUnarmored + 7;
|
||||||
|
const int kArmorClassPlate = kArmorClassUnarmored + 8;
|
||||||
|
|
||||||
|
NSString const *kArmorNameNone = @"none";
|
||||||
|
NSString const *kArmorNameNaturalArmor = @"natural armor";
|
||||||
|
NSString const *kArmorNameMageArmor = @"mage armor";
|
||||||
|
NSString const *kArmorNamePadded = @"padded";
|
||||||
|
NSString const *kArmorNameLeather = @"leather";
|
||||||
|
NSString const *kArmorNameStuddedLeather = @"studded";
|
||||||
|
NSString const *kArmorNameHide = @"hide";
|
||||||
|
NSString const *kArmorNameChainShirt = @"chain shirt";
|
||||||
|
NSString const *kArmorNameScaleMail = @"scale mail";
|
||||||
|
NSString const *kArmorNameBreastplate = @"breastplate";
|
||||||
|
NSString const *kArmorNameHalfPlate = @"half plate";
|
||||||
|
NSString const *kArmorNameRingMail = @"ring mail";
|
||||||
|
NSString const *kArmorNameChainMail = @"chain mail";
|
||||||
|
NSString const *kArmorNameSplintMail = @"splint";
|
||||||
|
NSString const *kArmorNamePlateMail = @"plate";
|
||||||
|
NSString const *kArmorNameOther = @"other";
|
||||||
|
|
||||||
//getArmorClass
|
//getArmorClass
|
||||||
-(NSString*)armorClassDescription {
|
-(NSString*)armorClassDescription {
|
||||||
@throw [[NSException alloc] initWithName:@"unimplemented" reason:@"Method not implemented." userInfo:nil];
|
BOOL hasShield = [self shieldBonus] != 0;
|
||||||
|
NSString *armorName = [self armorName];
|
||||||
|
if ([StringHelper isStringNilOrEmpty:armorName] || [kArmorNameNone isEqualToString:armorName]) {
|
||||||
|
// 10 + dexMod + 2 for shieldBonus "15" or "17 (shield)"
|
||||||
|
int armorClass = kArmorClassUnarmored + self.dexterityModifier + self.shieldBonus;
|
||||||
|
return [NSString stringWithFormat:@"%d%@", armorClass, (hasShield ? @" (shield)" : @"")];
|
||||||
|
} else if ([kArmorNameNaturalArmor isEqualToString:armorName]) {
|
||||||
|
// 10 + dexMod + naturalArmorBonus + 2 for shieldBonus "16 (natural armor)" or "18 (natural armor, shield)"
|
||||||
|
int armorClass = kArmorClassUnarmored + self.dexterityModifier + self.naturalArmorBonus + self.shieldBonus;
|
||||||
|
return [NSString stringWithFormat:@"%d (natural armor%@)", armorClass, (hasShield ? @" (shield)" : @"")];
|
||||||
|
} else if ([kArmorNameMageArmor isEqualToString:armorName]) {
|
||||||
|
// 10 + dexMod + 2 for shield + 3 for mage armor "15 (18 with mage armor)" or 17 (shield, 20 with mage armor)
|
||||||
|
int armorClass = kArmorClassUnarmored + self.dexterityModifier + self.shieldBonus;
|
||||||
|
int armorClassWithMageArmor = kArmorClassMageArmor + self.dexterityModifier + self.shieldBonus;
|
||||||
|
return [NSString stringWithFormat:@"%d (%@%d with mage armor)", armorClass, (hasShield ? @"shield, " : @""), armorClassWithMageArmor];
|
||||||
|
} else if ([kArmorNamePadded isEqualToString:armorName]) {
|
||||||
|
// 11 + dexMod + 2 for shield "18 (padded armor, shield)"
|
||||||
|
int armorClass = kArmorClassPadded + self.dexterityModifier + self.shieldBonus;
|
||||||
|
return [NSString stringWithFormat:@"%d (padded%@)", armorClass, (hasShield ? @"shield, " : @"")];
|
||||||
|
} else if ([kArmorNameLeather isEqualToString:armorName]) {
|
||||||
|
// 11 + dexMod + 2 for shield "18 (leather, shield)"
|
||||||
|
int armorClass = kArmorClassLeather + self.dexterityModifier + self.shieldBonus;
|
||||||
|
return [NSString stringWithFormat:@"%d (leather%@)", armorClass, (hasShield ? @"shield, " : @"")];
|
||||||
|
} else if ([kArmorNameStuddedLeather isEqualToString:armorName]) {
|
||||||
|
// 12 + dexMod +2 for shield "17 (studded leather)"
|
||||||
|
int armorClass = kArmorClassStudded + self.dexterityModifier + self.shieldBonus;
|
||||||
|
return [NSString stringWithFormat:@"%d (studded leather%@)", armorClass, (hasShield ? @"shield, " : @"")];
|
||||||
|
} else if ([kArmorNameHide isEqualToString:armorName]) {
|
||||||
|
// 12 + Min(2, dexMod) + 2 for shield "12 (hide armor)"
|
||||||
|
int armorClass = kArmorClassHide + MIN(2, self.dexterityModifier) + self.shieldBonus;
|
||||||
|
return [NSString stringWithFormat:@"%d (hide%@)", armorClass, (hasShield ? @", shield" : @"")];
|
||||||
|
} else if ([kArmorNameChainShirt isEqualToString:armorName]) {
|
||||||
|
// 13 + Min(2, dexMod) + 2 for shield "12 (chain shirt)"
|
||||||
|
int armorClass = kArmorClassChainShirt + MIN(2, self.dexterityModifier) + self.shieldBonus;
|
||||||
|
return [NSString stringWithFormat:@"%d (chain shirt%@)", armorClass, (hasShield ? @", shield" : @"")];
|
||||||
|
} else if ([kArmorNameScaleMail isEqualToString:armorName]) {
|
||||||
|
// 14 + Min(2, dexMod) + 2 for shield "14 (scale mail)"
|
||||||
|
int armorClass = kArmorClassScaleMail + MIN(2, self.dexterityModifier) + self.shieldBonus;
|
||||||
|
return [NSString stringWithFormat:@"%d (scale mail%@)", armorClass, (hasShield ? @", shield" : @"")];
|
||||||
|
} else if ([kArmorNameBreastplate isEqualToString:armorName]) {
|
||||||
|
// 14 + Min(2, dexMod) + 2 for shield "16 (breastplate)"
|
||||||
|
int armorClass = kArmorClassBreastplate + MIN(2, self.dexterityModifier) + self.shieldBonus;
|
||||||
|
return [NSString stringWithFormat:@"%d (breastplate%@)", armorClass, (hasShield ? @", shield" : @"")];
|
||||||
|
} else if ([kArmorNameHalfPlate isEqualToString:armorName]) {
|
||||||
|
// 15 + Min(2, dexMod) + 2 for shield "17 (half plate)"
|
||||||
|
int armorClass = kArmorClassHalfPlate + MIN(2, self.dexterityModifier) + self.shieldBonus;
|
||||||
|
return [NSString stringWithFormat:@"%d (half plate%@)", armorClass, (hasShield ? @", shield" : @"")];
|
||||||
|
} else if ([kArmorNameRingMail isEqualToString:armorName]) {
|
||||||
|
// 14 + 2 for shield "14 (ring mail)
|
||||||
|
int armorClass = kArmorClassRingMail + self.shieldBonus;
|
||||||
|
return [NSString stringWithFormat:@"%d (ring mail%@)", armorClass, (hasShield ? @", shield" : @"")];
|
||||||
|
} else if ([kArmorNameChainMail isEqualToString:armorName]) {
|
||||||
|
// 16 + 2 for shield "16 (chain mail)"
|
||||||
|
int armorClass = kArmorClassChainMail + self.shieldBonus;
|
||||||
|
return [NSString stringWithFormat:@"%d (chain mail%@)", armorClass, (hasShield ? @", shield" : @"")];
|
||||||
|
} else if ([kArmorNameSplintMail isEqualToString:armorName]) {
|
||||||
|
// 17 + 2 for shield "17 (splint)"
|
||||||
|
int armorClass = kArmorClassSplintMail + self.shieldBonus;
|
||||||
|
return [NSString stringWithFormat:@"%d (splint%@)", armorClass, (hasShield ? @", shield" : @"")];
|
||||||
|
} else if ([kArmorNamePlateMail isEqualToString:armorName]) {
|
||||||
|
// 18 + 2 for shield "18 (plate)"
|
||||||
|
int armorClass = kArmorClassPlate + self.shieldBonus;
|
||||||
|
return [NSString stringWithFormat:@"%d (plate%@)", armorClass, (hasShield ? @", shield" : @"")];
|
||||||
|
} else if ([kArmorNameOther isEqualToString:armorName]) {
|
||||||
|
// pure string value shield check does nothing just copies the string from otherArmorDesc
|
||||||
|
return self.otherArmorDescription;
|
||||||
|
} else {
|
||||||
|
return @"";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//getHitPoints
|
//getHitPoints
|
||||||
|
|||||||
Reference in New Issue
Block a user