- int i = 0, j = 0;
-
- /* Reset */
- for (i = 0; i < 8; i++)
- {
- p_ptr->virtues[i]=0;
- p_ptr->vir_types[i]=0;
- }
-
- i = 0;
-
- /* Get pre-defined types */
- /* 1 or more virtues based on class */
- switch (p_ptr->pclass)
- {
- case CLASS_WARRIOR:
- case CLASS_SAMURAI:
- p_ptr->vir_types[i++] = V_VALOUR;
- p_ptr->vir_types[i++] = V_HONOUR;
- break;
- case CLASS_MAGE:
- p_ptr->vir_types[i++] = V_KNOWLEDGE;
- p_ptr->vir_types[i++] = V_ENCHANT;
- break;
- case CLASS_PRIEST:
- p_ptr->vir_types[i++] = V_FAITH;
- p_ptr->vir_types[i++] = V_TEMPERANCE;
- break;
- case CLASS_ROGUE:
- p_ptr->vir_types[i++] = V_HONOUR;
- break;
- case CLASS_RANGER:
- case CLASS_ARCHER:
- p_ptr->vir_types[i++] = V_NATURE;
- p_ptr->vir_types[i++] = V_TEMPERANCE;
- break;
- case CLASS_PALADIN:
- p_ptr->vir_types[i++] = V_JUSTICE;
- p_ptr->vir_types[i++] = V_VALOUR;
- p_ptr->vir_types[i++] = V_HONOUR;
- p_ptr->vir_types[i++] = V_FAITH;
- break;
- case CLASS_WARRIOR_MAGE:
- case CLASS_RED_MAGE:
- p_ptr->vir_types[i++] = V_ENCHANT;
- p_ptr->vir_types[i++] = V_VALOUR;
- break;
- case CLASS_CHAOS_WARRIOR:
- p_ptr->vir_types[i++] = V_CHANCE;
- p_ptr->vir_types[i++] = V_INDIVIDUALISM;
- break;
- case CLASS_MONK:
- case CLASS_FORCETRAINER:
- p_ptr->vir_types[i++] = V_FAITH;
- p_ptr->vir_types[i++] = V_HARMONY;
- p_ptr->vir_types[i++] = V_TEMPERANCE;
- p_ptr->vir_types[i++] = V_PATIENCE;
- break;
- case CLASS_MINDCRAFTER:
- case CLASS_MIRROR_MASTER:
- p_ptr->vir_types[i++] = V_HARMONY;
- p_ptr->vir_types[i++] = V_ENLIGHTEN;
- p_ptr->vir_types[i++] = V_PATIENCE;
- break;
- case CLASS_HIGH_MAGE:
- case CLASS_SORCERER:
- p_ptr->vir_types[i++] = V_ENLIGHTEN;
- p_ptr->vir_types[i++] = V_ENCHANT;
- p_ptr->vir_types[i++] = V_KNOWLEDGE;
- break;
- case CLASS_TOURIST:
- p_ptr->vir_types[i++] = V_ENLIGHTEN;
- p_ptr->vir_types[i++] = V_CHANCE;
- break;
- case CLASS_IMITATOR:
- p_ptr->vir_types[i++] = V_CHANCE;
- break;
- case CLASS_BLUE_MAGE:
- p_ptr->vir_types[i++] = V_CHANCE;
- p_ptr->vir_types[i++] = V_KNOWLEDGE;
- break;
- case CLASS_BEASTMASTER:
- p_ptr->vir_types[i++] = V_NATURE;
- p_ptr->vir_types[i++] = V_CHANCE;
- p_ptr->vir_types[i++] = V_VITALITY;
- break;
- case CLASS_MAGIC_EATER:
- p_ptr->vir_types[i++] = V_ENCHANT;
- p_ptr->vir_types[i++] = V_KNOWLEDGE;
- break;
- case CLASS_BARD:
- p_ptr->vir_types[i++] = V_HARMONY;
- p_ptr->vir_types[i++] = V_COMPASSION;
- break;
- case CLASS_CAVALRY:
- p_ptr->vir_types[i++] = V_VALOUR;
- p_ptr->vir_types[i++] = V_HARMONY;
- break;
- case CLASS_BERSERKER:
- p_ptr->vir_types[i++] = V_VALOUR;
- p_ptr->vir_types[i++] = V_INDIVIDUALISM;
- break;
- case CLASS_SMITH:
- p_ptr->vir_types[i++] = V_HONOUR;
- p_ptr->vir_types[i++] = V_KNOWLEDGE;
- break;
- case CLASS_NINJA:
- p_ptr->vir_types[i++] = V_PATIENCE;
- p_ptr->vir_types[i++] = V_KNOWLEDGE;
- p_ptr->vir_types[i++] = V_FAITH;
- p_ptr->vir_types[i++] = V_UNLIFE;
- break;
-
- };
-
-
- /* Get one virtue based on race */
- switch (p_ptr->prace)
- {
- case RACE_HUMAN: case RACE_HALF_ELF: case RACE_DUNADAN:
- p_ptr->vir_types[i++] = V_INDIVIDUALISM;
- break;
- case RACE_ELF: case RACE_SPRITE: case RACE_ENT:
- p_ptr->vir_types[i++] = V_NATURE;
- break;
- case RACE_HOBBIT: case RACE_HALF_OGRE:
- p_ptr->vir_types[i++] = V_TEMPERANCE;
- break;
- case RACE_DWARF: case RACE_KLACKON: case RACE_ANDROID:
- p_ptr->vir_types[i++] = V_DILIGENCE;
- break;
- case RACE_GNOME: case RACE_CYCLOPS:
- p_ptr->vir_types[i++] = V_KNOWLEDGE;
- break;
- case RACE_HALF_ORC: case RACE_AMBERITE: case RACE_KOBOLD:
- p_ptr->vir_types[i++] = V_HONOUR;
- break;
- case RACE_HALF_TROLL: case RACE_BARBARIAN:
- p_ptr->vir_types[i++] = V_VALOUR;
- break;
- case RACE_HIGH_ELF: case RACE_KUTA:
- p_ptr->vir_types[i++] = V_VITALITY;
- break;
- case RACE_HALF_GIANT: case RACE_GOLEM: case RACE_ANGEL: case RACE_DEMON:
- p_ptr->vir_types[i++] = V_JUSTICE;
- break;
- case RACE_HALF_TITAN:
- p_ptr->vir_types[i++] = V_HARMONY;
- break;
- case RACE_YEEK:
- p_ptr->vir_types[i++] = V_SACRIFICE;
- break;
- case RACE_MIND_FLAYER:
- p_ptr->vir_types[i++] = V_ENLIGHTEN;
- break;
- case RACE_DARK_ELF: case RACE_DRACONIAN: case RACE_S_FAIRY:
- p_ptr->vir_types[i++] = V_ENCHANT;
- break;
- case RACE_NIBELUNG:
- p_ptr->vir_types[i++] = V_PATIENCE;
- break;
- case RACE_IMP:
- p_ptr->vir_types[i++] = V_FAITH;
- break;
- case RACE_ZOMBIE: case RACE_SKELETON:
- case RACE_VAMPIRE: case RACE_SPECTRE:
- p_ptr->vir_types[i++] = V_UNLIFE;
- break;
- case RACE_BEASTMAN:
- p_ptr->vir_types[i++] = V_CHANCE;
- break;
- }
-
- /* Get a virtue for realm1 */
- if (p_ptr->realm1)
- {
- switch(p_ptr->realm1)
- {
- case REALM_LIFE:
- if (virtue_number(V_VITALITY))
- p_ptr->vir_types[i++] = V_TEMPERANCE;
- else p_ptr->vir_types[i++] = V_VITALITY;
- break;
- case REALM_SORCERY:
- if (virtue_number(V_KNOWLEDGE))
- p_ptr->vir_types[i++] = V_ENCHANT;
- else p_ptr->vir_types[i++] = V_KNOWLEDGE;
- break;
- case REALM_NATURE:
- if (virtue_number(V_NATURE))
- p_ptr->vir_types[i++] = V_HARMONY;
- else p_ptr->vir_types[i++] = V_NATURE;
- break;
- case REALM_CHAOS:
- if (virtue_number(V_CHANCE))
- p_ptr->vir_types[i++] = V_INDIVIDUALISM;
- else p_ptr->vir_types[i++] = V_CHANCE;
- break;
- case REALM_DEATH:
- p_ptr->vir_types[i++] = V_UNLIFE;
- break;
- case REALM_TRUMP:
- p_ptr->vir_types[i++] = V_KNOWLEDGE;
- break;
- case REALM_ARCANE:
- break;
- case REALM_ENCHANT:
- if (virtue_number(V_ENCHANT))
- p_ptr->vir_types[i++] = V_INDIVIDUALISM;
- else p_ptr->vir_types[i++] = V_ENCHANT;
- break;
- case REALM_DAEMON:
- if (virtue_number(V_JUSTICE))
- p_ptr->vir_types[i++] = V_FAITH;
- else p_ptr->vir_types[i++] = V_JUSTICE;
- break;
- case REALM_CRUSADE:
- if (virtue_number(V_JUSTICE))
- p_ptr->vir_types[i++] = V_HONOUR;
- else p_ptr->vir_types[i++] = V_JUSTICE;
- break;
- };
- }
-
- /* Get a virtue for realm2 */
-
- if (p_ptr->realm2)
- {
- switch(p_ptr->realm2)
- {