Initial commit

This commit is contained in:
winyf 2026-05-29 02:14:22 -04:00
commit 81c95e88ec
6 changed files with 1862 additions and 0 deletions

695
include/mwchar/data.h Normal file
View file

@ -0,0 +1,695 @@
/*
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
enum MW_RACE {
ARGONIAN,
BRETON,
DARK_ELF,
HIGH_ELF,
IMPERIAL,
KHAJIIT,
NORD,
ORC,
REDGUARD,
WOOD_ELF,
RACE_COUNT
};
const char* MW_RACE_STR[] = {
[ARGONIAN] = "Argonian",
[BRETON] = "Breton",
[DARK_ELF] = "Dark Elf",
[HIGH_ELF] = "High Elf",
[IMPERIAL] = "Imperial",
[KHAJIIT] = "Khajiit",
[NORD] = "Nord",
[ORC] = "Orc",
[REDGUARD] = "Redguard",
[WOOD_ELF] = "Wood Elf"
};
enum MW_SEX {
MALE,
FEMALE,
SEX_COUNT
};
const char* MW_SEX_STR[] = {
[MALE] = "Male",
[FEMALE] = "Female"
};
enum MW_ATTRIBUTE {
STRENGTH,
INTELLIGENCE,
WILLPOWER,
AGILITY,
SPEED,
ENDURANCE,
PERSONALITY,
LUCK,
ATTRIBUTE_COUNT
};
const char* MW_ATTRIBUTE_STR[] = {
[STRENGTH] = "Strength",
[INTELLIGENCE] = "Intelligence",
[WILLPOWER] = "Willpower",
[AGILITY] = "Agility",
[SPEED] = "Speed",
[ENDURANCE] = "Endurance",
[PERSONALITY] = "Personality",
[LUCK] = "Luck"
};
enum MW_SKILL {
ARMORER,
ATHLETICS,
AXE,
BLOCK,
BLUNT_WEAPON,
HEAVY_ARMOR,
LONG_BLADE,
MEDIUM_ARMOR,
SPEAR,
ALCHEMY,
ALTERATION,
CONJURATION,
DESTRUCTION,
ENCHANT,
ILLUSION,
MYSTICISM,
RESTORATION,
UNARMORED,
ACROBATICS,
HAND_TO_HAND,
SHORT_BLADE,
LIGHT_ARMOR,
MARKSMAN,
MERCANTILE,
SECURITY,
SNEAK,
SPEECHCRAFT,
SKILL_COUNT
};
const char* MW_SKILL_STR[] = {
[ARMORER] = "Armorer",
[ATHLETICS] = "Athletics",
[AXE] = "Axe",
[BLOCK] = "Block",
[BLUNT_WEAPON] = "Blunt Weapon",
[HEAVY_ARMOR] = "Heavy Armor",
[LONG_BLADE] = "Long Blade",
[MEDIUM_ARMOR] = "Medium Armor",
[SPEAR] = "Spear",
[ALCHEMY] = "Alchemy",
[ALTERATION] = "Alteration",
[CONJURATION] = "Conjuration",
[DESTRUCTION] = "Destruction",
[ENCHANT] = "Enchant",
[ILLUSION] = "Illusion",
[MYSTICISM] = "Mysticism",
[RESTORATION] = "Restoration",
[UNARMORED] = "Unarmored",
[ACROBATICS] = "Acrobatics",
[HAND_TO_HAND] = "Hand-to-hand",
[SHORT_BLADE] = "Short Blade",
[LIGHT_ARMOR] = "Light Armor",
[MARKSMAN] = "Marksman",
[MERCANTILE] = "Mercantile",
[SECURITY] = "Security",
[SNEAK] = "Sneak",
[SPEECHCRAFT] = "Speechcraft"
};
enum MW_SPECIALIZATION {
COMBAT,
MAGIC,
STEALTH,
SPECIALIZATION_COUNT
};
const char* MW_SPECIALIZATION_STR[] = {
[COMBAT] = "Combat",
[MAGIC] = "Magic",
[STEALTH] = "Stealth"
};
enum MW_BIRTHSIGN {
APPRENTICE,
ATRONACH,
LADY,
LORD,
LOVER,
MAGE,
RITUAL,
SERPENT,
SHADOW,
STEED,
THIEF,
TOWER,
WARRIOR,
BIRTHSIGN_COUNT
};
const char* MW_BIRTHSIGN_STR[] = {
[APPRENTICE] = "The Apprentice",
[ATRONACH] = "The Atronach",
[LADY] = "The Lady",
[LORD] = "The Lord",
[LOVER] = "The Lover",
[MAGE] = "The Mage",
[RITUAL] = "The Ritual",
[SERPENT] = "The Serpent",
[SHADOW] = "The Shadow",
[STEED] = "The Steed",
[THIEF] = "The Thief",
[TOWER] = "The Tower",
[WARRIOR] = "The Warrior"
};
const int MW_RACE_SKILLS[RACE_COUNT][SKILL_COUNT] = {
[ARGONIAN] = {
[ALCHEMY] = 5,
[ATHLETICS] = 15,
[ILLUSION] = 5,
[MEDIUM_ARMOR] = 5,
[MYSTICISM] = 5,
[SPEAR] = 5,
[UNARMORED] = 5
},
[BRETON] = {
[ALCHEMY] = 5,
[ALTERATION] = 5,
[CONJURATION] = 10,
[ILLUSION] = 5,
[MYSTICISM] = 10,
[RESTORATION] = 10
},
[DARK_ELF] = {
[ATHLETICS] = 5,
[DESTRUCTION] = 10,
[LIGHT_ARMOR] = 5,
[LONG_BLADE] = 5,
[MARKSMAN] = 5,
[MYSTICISM] = 5,
[SHORT_BLADE] = 10
},
[HIGH_ELF] = {
[ALCHEMY] = 10,
[ALTERATION] = 5,
[CONJURATION] = 5,
[DESTRUCTION] = 10,
[ENCHANT] = 10,
[ILLUSION] = 5
},
[IMPERIAL] = {
[BLUNT_WEAPON] = 5,
[HAND_TO_HAND] = 5,
[LIGHT_ARMOR] = 5,
[LONG_BLADE] = 10,
[MERCANTILE] = 10,
[SPEECHCRAFT] = 10
},
[KHAJIIT] = {
[ACROBATICS] = 15,
[ATHLETICS] = 5,
[HAND_TO_HAND] = 5,
[LIGHT_ARMOR] = 5,
[SECURITY] = 5,
[SHORT_BLADE] = 5,
[SNEAK] = 5
},
[NORD] = {
[AXE] = 10,
[BLUNT_WEAPON] = 10,
[HEAVY_ARMOR] = 5,
[LONG_BLADE] = 5,
[MEDIUM_ARMOR] = 10,
[SPEAR] = 5
},
[ORC] = {
[ARMORER] = 10,
[AXE] = 5,
[BLOCK] = 10,
[HEAVY_ARMOR] = 10,
[MEDIUM_ARMOR] = 10
},
[REDGUARD] = {
[ATHLETICS] = 5,
[AXE] = 5,
[BLUNT_WEAPON] = 5,
[HEAVY_ARMOR] = 5,
[LONG_BLADE] = 15,
[MEDIUM_ARMOR] = 5,
[SHORT_BLADE] = 5
},
[WOOD_ELF] = {
[ACROBATICS] = 5,
[ALCHEMY] = 5,
[LIGHT_ARMOR] = 10,
[MARKSMAN] = 15,
[SNEAK] = 10
}
};
const int MW_RACE_ATTRS[RACE_COUNT][SEX_COUNT][ATTRIBUTE_COUNT] = {
[ARGONIAN] = {
[MALE] = {
[WILLPOWER] = -10,
[AGILITY] = +10,
[SPEED] = +10,
[ENDURANCE] = -10,
[PERSONALITY] = -10
},
[FEMALE] = {
[INTELLIGENCE] = +10,
[ENDURANCE] = -10,
[PERSONALITY] = -10
}
},
[BRETON] = {
[MALE] = {
[INTELLIGENCE] = +10,
[WILLPOWER] = +10,
[AGILITY] = -10,
[SPEED] = -10,
[ENDURANCE] = -10
},
[FEMALE] = {
[STRENGTH] = -10,
[INTELLIGENCE] = +10,
[WILLPOWER] = +10,
[AGILITY] = -10,
[ENDURANCE] = -10
}
},
[DARK_ELF] = {
[MALE] = {
[WILLPOWER] = -10,
[SPEED] = +10,
[PERSONALITY] = -10
},
[FEMALE] = {
[WILLPOWER] = -10,
[SPEED] = +10,
[ENDURANCE] = -10
}
},
[HIGH_ELF] = {
[MALE] = {
[STRENGTH] = -10,
[INTELLIGENCE] = +10,
[SPEED] = -10
},
[FEMALE] = {
[STRENGTH] = -10,
[INTELLIGENCE] = +10,
[ENDURANCE] = -10
}
},
[IMPERIAL] = {
[MALE] = {
[WILLPOWER] = -10,
[AGILITY] = -10,
[PERSONALITY] = +10
},
[FEMALE] = {
[AGILITY] = -10,
[SPEED] = -10,
[PERSONALITY] = +10
}
},
[KHAJIIT] = {
[MALE] = {
[WILLPOWER] = -10,
[AGILITY] = +10,
[ENDURANCE] = -10
},
[FEMALE] = {
[STRENGTH] = -10,
[WILLPOWER] = -10,
[AGILITY] = +10
}
},
[NORD] = {
[MALE] = {
[STRENGTH] = +10,
[INTELLIGENCE] = -10,
[AGILITY] = -10,
[ENDURANCE] = +10,
[PERSONALITY] = -10
},
[FEMALE] = {
[STRENGTH] = +10,
[INTELLIGENCE] = -10,
[WILLPOWER] = +10,
[AGILITY] = -10,
[PERSONALITY] = -10
}
},
[ORC] = {
[MALE] = {
[STRENGTH] = +5,
[INTELLIGENCE] = -10,
[WILLPOWER] = +10,
[AGILITY] = -5,
[SPEED] = -10,
[ENDURANCE] = +10,
[PERSONALITY] = -10
},
[FEMALE] = {
[STRENGTH] = +5,
[WILLPOWER] = +5,
[AGILITY] = -5,
[SPEED] = -10,
[ENDURANCE] = +10,
[PERSONALITY] = -5
}
},
[REDGUARD] = {
[MALE] = {
[STRENGTH] = +10,
[INTELLIGENCE] = -10,
[WILLPOWER] = -10,
[ENDURANCE] = +10,
[PERSONALITY] = -10
},
[FEMALE] = {
[INTELLIGENCE] = -10,
[WILLPOWER] = -10,
[ENDURANCE] = +10
}
},
[WOOD_ELF] = {
[MALE] = {
[STRENGTH] = -10,
[WILLPOWER] = -10,
[AGILITY] = +10,
[SPEED] = +10,
[ENDURANCE] = -10
},
[FEMALE] = {
[STRENGTH] = -10,
[WILLPOWER] = -10,
[AGILITY] = +10,
[SPEED] = +10,
[ENDURANCE] = -10
}
}
};
const float MW_RACE_MAGICKA_BONUS[RACE_COUNT] = {
[BRETON] = 0.5f,
[HIGH_ELF] = 1.5f
};
const float MW_BIRTHSIGN_MAGICKA_BONUS[BIRTHSIGN_COUNT] = {
[MAGE] = 0.5f,
[APPRENTICE] = 1.5f,
[ATRONACH] = 2.0f
};
enum MW_SPELL {
BEGGARS_NOSE,
BLESSED_TOUCH,
BLESSED_WORD,
BLOOD_OF_THE_NORTH,
BOUND_DAGGER,
CHAMELEON,
DETECT_CREATURE,
EYE_OF_NIGHT,
FIRE_BITE,
HEARTH_HEAL,
SANCTUARY,
SHIELD,
STAR_CURSE,
SUMMON_ANCESTRAL_GHOST,
WATER_BREATHING,
WATER_WALKING,
SPELL_COUNT
};
const char* MW_SPELL_STR[] = {
[BEGGARS_NOSE] = "Beggar's Nose",
[BLESSED_TOUCH] = "Blessed Touch",
[BLESSED_WORD] = "Blessed Word",
[BLOOD_OF_THE_NORTH] = "Bld of the North",
[BOUND_DAGGER] = "Bound Dagger",
[CHAMELEON] = "Chameleon",
[DETECT_CREATURE] = "Detect Creature",
[EYE_OF_NIGHT] = "Eye of Night",
[FIRE_BITE] = "Fire Bite",
[HEARTH_HEAL] = "Hearth Heal",
[SANCTUARY] = "Sanctuary",
[SHIELD] = "Shield",
[STAR_CURSE] = "Star-Curse",
[SUMMON_ANCESTRAL_GHOST] = "Summon Ghost",
[WATER_BREATHING] = "Water Breathing",
[WATER_WALKING] = "Water Walking"
};
#define STARTING_SPELL_COUNT 9
const int MW_STARTING_SPELL[][3] = {
{SANCTUARY, ILLUSION, 65},
{CHAMELEON, ILLUSION, 65},
{BOUND_DAGGER, CONJURATION, 56},
{SUMMON_ANCESTRAL_GHOST, CONJURATION, 71},
{WATER_WALKING, ALTERATION, 59},
{SHIELD, ALTERATION, 65},
{FIRE_BITE, DESTRUCTION, 56},
{DETECT_CREATURE, MYSTICISM, 69},
{HEARTH_HEAL, RESTORATION, 63}
};
enum MW_ABILITY {
AKAVIRI_DANGER_SENSE,
CHARIOTEER,
ELFBORN,
FAY,
IMMUNE_TO_FROST,
IMMUNE_TO_POISON,
LADYS_FAVOR,
LADYS_GRACE,
MAGICKA_BONUS,
MOONCALF,
RESIST_DISEASE,
RESIST_FIRE,
RESIST_MAGICKA,
RESIST_POISON,
RESIST_SHOCK,
TROLLKIN,
WARWYRD,
WEAKNESS_TO_FIRE,
WEAKNESS_TO_FROST,
WEAKNESS_TO_MAGICKA,
WEAKNESS_TO_SHOCK,
WOMBBURN,
ABILITY_COUNT
};
const char *MW_ABILITY_STR[] = {
[AKAVIRI_DANGER_SENSE] = "Akaviri Sense",
[CHARIOTEER] = "Charioteer",
[ELFBORN] = "Elfborn",
[FAY] = "Fay",
[IMMUNE_TO_FROST] = "Immune Frost",
[IMMUNE_TO_POISON] = "Immune Poison",
[LADYS_FAVOR] = "Lady's Favor",
[LADYS_GRACE] = "Lady's Grace",
[MAGICKA_BONUS] = "Magicka Bonus",
[MOONCALF] = "Mooncalf",
[RESIST_DISEASE] = "Resist Disease",
[RESIST_FIRE] = "Resist Fire",
[RESIST_MAGICKA] = "Resist Magicka",
[RESIST_POISON] = "Resist Poison",
[RESIST_SHOCK] = "Resist Shock",
[TROLLKIN] = "Trollkin",
[WARWYRD] = "Warwyrd",
[WEAKNESS_TO_FIRE] = "Weakness Fire",
[WEAKNESS_TO_FROST] = "Weakness Frost",
[WEAKNESS_TO_MAGICKA] = "Weakness Magic",
[WEAKNESS_TO_SHOCK] = "Weakness Shock",
[WOMBBURN] = "Wombburn"
};
enum MW_POWER {
ADRENALINE_RUSH,
ANCESTOR_GUARDIAN,
BEAST_TONGUE,
BERSERK,
DRAGON_SKIN,
EYE_OF_FEAR,
LOVERS_KISS,
MARAS_GIFT,
MOONSHADOW,
STAR_OF_THE_WEST,
THUNDER_FIST,
TOWER_KEY,
VOICE_OF_THE_EMPEROR,
WOAD,
POWER_COUNT
};
const char *MW_POWER_STR[] = {
[ADRENALINE_RUSH] = "Adrenaline Rush",
[ANCESTOR_GUARDIAN] = "Ancst. Guardian",
[BEAST_TONGUE] = "Beast Tongue",
[BERSERK] = "Berserk",
[DRAGON_SKIN] = "Dragon Skin",
[EYE_OF_FEAR] = "Eye of Fear",
[LOVERS_KISS] = "Lover's Kiss",
[MARAS_GIFT] = "Mara's Gift",
[MOONSHADOW] = "Moonshadow",
[STAR_OF_THE_WEST] = "Star / West",
[THUNDER_FIST] = "Thunder Fist",
[TOWER_KEY] = "Tower Key",
[VOICE_OF_THE_EMPEROR] = "Voice / Emperor",
[WOAD] = "Woad"
};
const int MW_RACE_ABILITIES[RACE_COUNT][ABILITY_COUNT] = {
[ARGONIAN] = {
[IMMUNE_TO_POISON] = 1,
[RESIST_DISEASE] = 1
},
[BRETON] = {
[RESIST_MAGICKA] = 1,
[MAGICKA_BONUS] = 1
},
[DARK_ELF] = {
[RESIST_FIRE] = 1
},
[HIGH_ELF] = {
[RESIST_DISEASE] = 1,
[WEAKNESS_TO_SHOCK] = 1,
[WEAKNESS_TO_FROST] = 1,
[WEAKNESS_TO_FIRE] = 1,
[WEAKNESS_TO_MAGICKA] = 1,
[MAGICKA_BONUS] = 1
},
[NORD] = {
[RESIST_SHOCK] = 1,
[IMMUNE_TO_FROST] = 1
},
[ORC] = {
[RESIST_MAGICKA] = 1
},
[REDGUARD] = {
[RESIST_POISON] = 1,
[RESIST_DISEASE] = 1
},
[WOOD_ELF] = {
[RESIST_DISEASE] = 1
}
};
const int MW_RACE_POWERS[RACE_COUNT][POWER_COUNT] = {
[BRETON] = {
[DRAGON_SKIN] = 1
},
[DARK_ELF] = {
[ANCESTOR_GUARDIAN] = 1
},
[IMPERIAL] = {
[STAR_OF_THE_WEST] = 1,
[VOICE_OF_THE_EMPEROR] = 1
},
[KHAJIIT] = {
[EYE_OF_FEAR] = 1
},
[NORD] = {
[THUNDER_FIST] = 1,
[WOAD] = 1
},
[ORC] = {
[BERSERK] = 1
},
[REDGUARD] = {
[ADRENALINE_RUSH] = 1
},
[WOOD_ELF] = {
[BEAST_TONGUE] = 1
}
};
const int MW_RACE_SPELLS[RACE_COUNT][SPELL_COUNT] = {
[ARGONIAN] = {
[WATER_BREATHING] = 1
},
[KHAJIIT] = {
[EYE_OF_NIGHT] = 1
}
};
const int MW_BIRTHSIGN_ABILITIES[BIRTHSIGN_COUNT][ABILITY_COUNT] = {
[WARRIOR] = {
[WARWYRD] = 1
},
[MAGE] = {
[FAY] = 1
},
[THIEF] = {
[AKAVIRI_DANGER_SENSE] = 1
},
[LADY] = {
[LADYS_FAVOR] = 1,
[LADYS_GRACE] = 1
},
[STEED] = {
[CHARIOTEER] = 1
},
[LORD] = {
[TROLLKIN] = 1
},
[APPRENTICE] = {
[ELFBORN] = 1
},
[ATRONACH] = {
[WOMBBURN] = 1
},
[LOVER] = {
[MOONCALF] = 1
}
};
const int MW_BIRTHSIGN_POWERS[BIRTHSIGN_COUNT][POWER_COUNT] = {
[RITUAL] = {
[MARAS_GIFT] = 1
},
[LOVER] = {
[LOVERS_KISS] = 1
},
[SHADOW] = {
[MOONSHADOW] = 1
},
[TOWER] = {
[TOWER_KEY] = 1
}
};
const int MW_BIRTHSIGN_SPELLS[BIRTHSIGN_COUNT][SPELL_COUNT] = {
[SERPENT] = {
[STAR_CURSE] = 1
},
[LORD] = {
[BLOOD_OF_THE_NORTH] = 1
},
[RITUAL] = {
[BLESSED_WORD] = 1,
[BLESSED_TOUCH] = 1
},
[TOWER] = {
[BEGGARS_NOSE] = 1
}
};