public static function registerSelf() { parent::registerSelf(); // ARMAMENTS static::registerCodeAsSubType(ArrowCode::getIt(ArrowCode::BASIC_ARROW)); static::registerCodeAsSubType(BodyArmorCode::getIt(BodyArmorCode::CHAINMAIL_ARMOR)); static::registerCodeAsSubType(DartCode::getIt(DartCode::BASIC_DART)); static::registerCodeAsSubType(HelmCode::getIt(HelmCode::BARREL_HELM)); static::registerCodeAsSubType(MeleeWeaponCode::getIt(MeleeWeaponCode::HAND)); static::registerCodeAsSubType(RangedWeaponCode::getIt(RangedWeaponCode::HEAVY_CROSSBOW)); static::registerCodeAsSubType(ShieldCode::getIt(ShieldCode::BUCKLER)); static::registerCodeAsSubType(SlingStoneCode::getIt(SlingStoneCode::SLING_STONE_HEAVIER)); static::registerCodeAsSubType(WeaponCategoryCode::getIt(WeaponCategoryCode::ARROW)); // BODY static::registerCodeAsSubType(ActivityAffectingHealingCode::getIt(ActivityAffectingHealingCode::LIGHT_ACTIVITY)); static::registerCodeAsSubType(AfflictionByWoundDomainCode::getIt(AfflictionByWoundDomainCode::PHYSICAL)); static::registerCodeAsSubType(ConditionsAffectingHealingCode::getIt(ConditionsAffectingHealingCode::BAD_CONDITIONS)); static::registerCodeAsSubType(RestConditionsCode::getIt(RestConditionsCode::FOUL_CONDITIONS)); static::registerCodeAsSubType(WoundsOriginCode::getIt(WoundsOriginCode::ELEMENTAL)); static::registerCodeAsSubType(WoundTypeCode::getIt(WoundTypeCode::CRUSH)); // COMBAT ACTIONS static::registerCodeAsSubType(CombatActionCode::getIt(CombatActionCode::ATTACKED_FROM_BEHIND)); static::registerCodeAsSubType(MeleeCombatActionCode::getIt(MeleeCombatActionCode::COVER_OF_ALLY)); static::registerCodeAsSubType(RangedCombatActionCode::getIt(RangedCombatActionCode::AIMED_SHOT)); // ENVIRONMENT static::registerCodeAsSubType(LightConditionsCode::getIt(LightConditionsCode::STRONG_DAYLIGHT)); static::registerCodeAsSubType(LightSourceCode::getIt(LightSourceCode::BALEFIRE)); static::registerCodeAsSubType(LightSourceEnvironmentCode::getIt(LightSourceEnvironmentCode::MIRROR_BEHIND_LIGHT_SOURCE)); static::registerCodeAsSubType(TerrainCode::getIt(TerrainCode::DESERT)); // SKILLS static::registerCodeAsSubType(CombinedSkillCode::getIt(CombinedSkillCode::BIG_HANDWORK)); static::registerCodeAsSubType(PhysicalSkillCode::getIt(PhysicalSkillCode::ATHLETICS)); static::registerCodeAsSubType(PsychicalSkillCode::getIt(PsychicalSkillCode::ASTRONOMY)); static::registerCodeAsSubType(SkillTypeCode::getIt(SkillTypeCode::COMBINED)); // OTHERS static::registerCodeAsSubType(ElementCode::getIt(ElementCode::AIR)); static::registerCodeAsSubType(GenderCode::getIt(GenderCode::FEMALE)); static::registerCodeAsSubType(ItemHoldingCode::getIt(ItemHoldingCode::MAIN_HAND)); static::registerCodeAsSubType(MovementTypeCode::getIt(MovementTypeCode::RUN)); static::registerCodeAsSubType(ProfessionCode::getIt(ProfessionCode::COMMONER)); static::registerCodeAsSubType(PropertyCode::getIt(PropertyCode::AGE)); static::registerCodeAsSubType(RaceCode::getIt(RaceCode::DWARF)); static::registerCodeAsSubType(RidingAnimalCode::getIt(RidingAnimalCode::BULL)); static::registerCodeAsSubType(RidingAnimalMovementCode::getIt(RidingAnimalMovementCode::CANTER)); static::registerCodeAsSubType(RidingAnimalPropertyCode::getIt(RidingAnimalPropertyCode::DEFIANCE)); static::registerCodeAsSubType(SubRaceCode::getIt(SubRaceCode::COMMON)); static::registerCodeAsSubType(TimeCode::getIt(TimeCode::DAY)); }
/** * @return array|string[] */ private function getNonBaseNonDerivedPropertyCodes() { return array_diff(PropertyCode::getPossibleValues(), PropertyCode::getBasePropertyPossibleValues(), PropertyCode::getDerivedPropertyPossibleValues(), PropertyCode::getRemarkableSensePropertyPossibleValues()); }
private function setUpBaseProperties(Race $race, GenderCode $genderCode, ExceptionalityProperties $exceptionalityProperties, ProfessionLevels $professionLevels, Tables $tables) { $propertyValues = []; foreach (PropertyCode::getBasePropertyPossibleValues() as $basePropertyCode) { $propertyValues[$basePropertyCode] = $this->calculateFirstLevelBaseProperty($basePropertyCode, $race, $genderCode, $tables, $exceptionalityProperties, $professionLevels); } $this->firstLevelUnlimitedStrength = Strength::getIt($propertyValues[Strength::STRENGTH]); $this->firstLevelStrength = $this->getLimitedProperty($race, $genderCode, $tables, $this->firstLevelUnlimitedStrength); $this->firstLevelUnlimitedAgility = Agility::getIt($propertyValues[Agility::AGILITY]); $this->firstLevelAgility = $this->getLimitedProperty($race, $genderCode, $tables, $this->firstLevelUnlimitedAgility); $this->firstLevelUnlimitedKnack = Knack::getIt($propertyValues[Knack::KNACK]); $this->firstLevelKnack = $this->getLimitedProperty($race, $genderCode, $tables, $this->firstLevelUnlimitedKnack); $this->firstLevelUnlimitedWill = Will::getIt($propertyValues[Will::WILL]); $this->firstLevelWill = $this->getLimitedProperty($race, $genderCode, $tables, $this->firstLevelUnlimitedWill); $this->firstLevelUnlimitedIntelligence = Intelligence::getIt($propertyValues[Intelligence::INTELLIGENCE]); $this->firstLevelIntelligence = $this->getLimitedProperty($race, $genderCode, $tables, $this->firstLevelUnlimitedIntelligence); $this->firstLevelUnlimitedCharisma = Charisma::getIt($propertyValues[Charisma::CHARISMA]); $this->firstLevelCharisma = $this->getLimitedProperty($race, $genderCode, $tables, $this->firstLevelUnlimitedCharisma); }
/** * @param string $basePropertyCode * @param GenderCode $genderCode * @param Tables $tables * @return int * @throws \DrdPlus\Races\Exceptions\UnknownBasePropertyCode * @throws \DrdPlus\Races\Exceptions\UnknownPropertyCode */ public function getBaseProperty($basePropertyCode, GenderCode $genderCode, Tables $tables) { if (in_array($basePropertyCode, PropertyCode::getBasePropertyPossibleValues(), true)) { return $this->getProperty($basePropertyCode, $genderCode, $tables); } throw new Exceptions\UnknownBasePropertyCode('Unknown base property ' . ValueDescriber::describe($basePropertyCode)); }
/** * @test */ public function I_can_get_restriction_property_codes() { self::assertEquals($expectedCodes = ['requires_dm_agreement'], PropertyCode::getRestrictionPropertyPossibleValues()); }