#pragma once

#include "constants/const_feat.hpp"
#include "constants/const_spell.hpp"

#include "../../rules/Class.hpp"
#include "../../rules/Effect.hpp"
#include "../../rules/combat.hpp"
#include "../../rules/items.hpp"

namespace nwn1 {

constexpr nw::Ability ability_strength = nw::Ability::make(0);
constexpr nw::Ability ability_dexterity = nw::Ability::make(1);
constexpr nw::Ability ability_constitution = nw::Ability::make(2);
constexpr nw::Ability ability_intelligence = nw::Ability::make(3);
constexpr nw::Ability ability_wisdom = nw::Ability::make(4);
constexpr nw::Ability ability_charisma = nw::Ability::make(5);

constexpr nw::ArmorClass ac_dodge = nw::ArmorClass::make(0);
constexpr nw::ArmorClass ac_natural = nw::ArmorClass::make(1);
constexpr nw::ArmorClass ac_armor = nw::ArmorClass::make(2);
constexpr nw::ArmorClass ac_shield = nw::ArmorClass::make(3);
constexpr nw::ArmorClass ac_deflection = nw::ArmorClass::make(4);

constexpr nw::AttackType attack_type_any = nw::AttackType::make(0);
constexpr nw::AttackType attack_type_onhand = nw::AttackType::make(1);
constexpr nw::AttackType attack_type_offhand = nw::AttackType::make(2);
constexpr nw::AttackType attack_type_unarmed = nw::AttackType::make(3);
constexpr nw::AttackType attack_type_cweapon1 = nw::AttackType::make(4);
constexpr nw::AttackType attack_type_cweapon2 = nw::AttackType::make(5);
constexpr nw::AttackType attack_type_cweapon3 = nw::AttackType::make(6);

constexpr nw::BaseItem base_item_shortsword = nw::BaseItem::make(0);
constexpr nw::BaseItem base_item_longsword = nw::BaseItem::make(1);
constexpr nw::BaseItem base_item_battleaxe = nw::BaseItem::make(2);
constexpr nw::BaseItem base_item_bastardsword = nw::BaseItem::make(3);
constexpr nw::BaseItem base_item_lightflail = nw::BaseItem::make(4);
constexpr nw::BaseItem base_item_warhammer = nw::BaseItem::make(5);
constexpr nw::BaseItem base_item_heavycrossbow = nw::BaseItem::make(6);
constexpr nw::BaseItem base_item_lightcrossbow = nw::BaseItem::make(7);
constexpr nw::BaseItem base_item_longbow = nw::BaseItem::make(8);
constexpr nw::BaseItem base_item_lightmace = nw::BaseItem::make(9);
constexpr nw::BaseItem base_item_halberd = nw::BaseItem::make(10);
constexpr nw::BaseItem base_item_shortbow = nw::BaseItem::make(11);
constexpr nw::BaseItem base_item_twobladedsword = nw::BaseItem::make(12);
constexpr nw::BaseItem base_item_greatsword = nw::BaseItem::make(13);
constexpr nw::BaseItem base_item_smallshield = nw::BaseItem::make(14);
constexpr nw::BaseItem base_item_torch = nw::BaseItem::make(15);
constexpr nw::BaseItem base_item_armor = nw::BaseItem::make(16);
constexpr nw::BaseItem base_item_helmet = nw::BaseItem::make(17);
constexpr nw::BaseItem base_item_greataxe = nw::BaseItem::make(18);
constexpr nw::BaseItem base_item_amulet = nw::BaseItem::make(19);
constexpr nw::BaseItem base_item_arrow = nw::BaseItem::make(20);
constexpr nw::BaseItem base_item_belt = nw::BaseItem::make(21);
constexpr nw::BaseItem base_item_dagger = nw::BaseItem::make(22);
constexpr nw::BaseItem base_item_miscsmall = nw::BaseItem::make(24);
constexpr nw::BaseItem base_item_bolt = nw::BaseItem::make(25);
constexpr nw::BaseItem base_item_boots = nw::BaseItem::make(26);
constexpr nw::BaseItem base_item_bullet = nw::BaseItem::make(27);
constexpr nw::BaseItem base_item_club = nw::BaseItem::make(28);
constexpr nw::BaseItem base_item_miscmedium = nw::BaseItem::make(29);
constexpr nw::BaseItem base_item_dart = nw::BaseItem::make(31);
constexpr nw::BaseItem base_item_diremace = nw::BaseItem::make(32);
constexpr nw::BaseItem base_item_doubleaxe = nw::BaseItem::make(33);
constexpr nw::BaseItem base_item_misclarge = nw::BaseItem::make(34);
constexpr nw::BaseItem base_item_heavyflail = nw::BaseItem::make(35);
constexpr nw::BaseItem base_item_gloves = nw::BaseItem::make(36);
constexpr nw::BaseItem base_item_lighthammer = nw::BaseItem::make(37);
constexpr nw::BaseItem base_item_handaxe = nw::BaseItem::make(38);
constexpr nw::BaseItem base_item_healerskit = nw::BaseItem::make(39);
constexpr nw::BaseItem base_item_kama = nw::BaseItem::make(40);
constexpr nw::BaseItem base_item_katana = nw::BaseItem::make(41);
constexpr nw::BaseItem base_item_kukri = nw::BaseItem::make(42);
constexpr nw::BaseItem base_item_misctall = nw::BaseItem::make(43);
constexpr nw::BaseItem base_item_magicrod = nw::BaseItem::make(44);
constexpr nw::BaseItem base_item_magicstaff = nw::BaseItem::make(45);
constexpr nw::BaseItem base_item_magicwand = nw::BaseItem::make(46);
constexpr nw::BaseItem base_item_morningstar = nw::BaseItem::make(47);
constexpr nw::BaseItem base_item_potions = nw::BaseItem::make(49);
constexpr nw::BaseItem base_item_quarterstaff = nw::BaseItem::make(50);
constexpr nw::BaseItem base_item_rapier = nw::BaseItem::make(51);
constexpr nw::BaseItem base_item_ring = nw::BaseItem::make(52);
constexpr nw::BaseItem base_item_scimitar = nw::BaseItem::make(53);
constexpr nw::BaseItem base_item_scroll = nw::BaseItem::make(54);
constexpr nw::BaseItem base_item_scythe = nw::BaseItem::make(55);
constexpr nw::BaseItem base_item_largeshield = nw::BaseItem::make(56);
constexpr nw::BaseItem base_item_towershield = nw::BaseItem::make(57);
constexpr nw::BaseItem base_item_shortspear = nw::BaseItem::make(58);
constexpr nw::BaseItem base_item_shuriken = nw::BaseItem::make(59);
constexpr nw::BaseItem base_item_sickle = nw::BaseItem::make(60);
constexpr nw::BaseItem base_item_sling = nw::BaseItem::make(61);
constexpr nw::BaseItem base_item_thievestools = nw::BaseItem::make(62);
constexpr nw::BaseItem base_item_throwingaxe = nw::BaseItem::make(63);
constexpr nw::BaseItem base_item_trapkit = nw::BaseItem::make(64);
constexpr nw::BaseItem base_item_key = nw::BaseItem::make(65);
constexpr nw::BaseItem base_item_largebox = nw::BaseItem::make(66);
constexpr nw::BaseItem base_item_miscwide = nw::BaseItem::make(68);
constexpr nw::BaseItem base_item_cslashweapon = nw::BaseItem::make(69);
constexpr nw::BaseItem base_item_cpiercweapon = nw::BaseItem::make(70);
constexpr nw::BaseItem base_item_cbludgweapon = nw::BaseItem::make(71);
constexpr nw::BaseItem base_item_cslshprcweap = nw::BaseItem::make(72);
constexpr nw::BaseItem base_item_creatureitem = nw::BaseItem::make(73);
constexpr nw::BaseItem base_item_book = nw::BaseItem::make(74);
constexpr nw::BaseItem base_item_spellscroll = nw::BaseItem::make(75);
constexpr nw::BaseItem base_item_gold = nw::BaseItem::make(76);
constexpr nw::BaseItem base_item_gem = nw::BaseItem::make(77);
constexpr nw::BaseItem base_item_bracer = nw::BaseItem::make(78);
constexpr nw::BaseItem base_item_miscthin = nw::BaseItem::make(79);
constexpr nw::BaseItem base_item_cloak = nw::BaseItem::make(80);
constexpr nw::BaseItem base_item_grenade = nw::BaseItem::make(81);
constexpr nw::BaseItem base_item_trident = nw::BaseItem::make(95);
constexpr nw::BaseItem base_item_blank_potion = nw::BaseItem::make(101);
constexpr nw::BaseItem base_item_blank_scroll = nw::BaseItem::make(102);
constexpr nw::BaseItem base_item_blank_wand = nw::BaseItem::make(103);
constexpr nw::BaseItem base_item_enchanted_potion = nw::BaseItem::make(104);
constexpr nw::BaseItem base_item_enchanted_scroll = nw::BaseItem::make(105);
constexpr nw::BaseItem base_item_enchanted_wand = nw::BaseItem::make(106);
constexpr nw::BaseItem base_item_dwarvenwaraxe = nw::BaseItem::make(108);
constexpr nw::BaseItem base_item_craftmaterialmed = nw::BaseItem::make(109);
constexpr nw::BaseItem base_item_craftmaterialsml = nw::BaseItem::make(110);
constexpr nw::BaseItem base_item_whip = nw::BaseItem::make(111);

constexpr nw::Class class_type_barbarian = nw::Class::make(0);
constexpr nw::Class class_type_bard = nw::Class::make(1);
constexpr nw::Class class_type_cleric = nw::Class::make(2);
constexpr nw::Class class_type_druid = nw::Class::make(3);
constexpr nw::Class class_type_fighter = nw::Class::make(4);
constexpr nw::Class class_type_monk = nw::Class::make(5);
constexpr nw::Class class_type_paladin = nw::Class::make(6);
constexpr nw::Class class_type_ranger = nw::Class::make(7);
constexpr nw::Class class_type_rogue = nw::Class::make(8);
constexpr nw::Class class_type_sorcerer = nw::Class::make(9);
constexpr nw::Class class_type_wizard = nw::Class::make(10);
constexpr nw::Class class_type_aberration = nw::Class::make(11);
constexpr nw::Class class_type_animal = nw::Class::make(12);
constexpr nw::Class class_type_construct = nw::Class::make(13);
constexpr nw::Class class_type_humanoid = nw::Class::make(14);
constexpr nw::Class class_type_monstrous = nw::Class::make(15);
constexpr nw::Class class_type_elemental = nw::Class::make(16);
constexpr nw::Class class_type_fey = nw::Class::make(17);
constexpr nw::Class class_type_dragon = nw::Class::make(18);
constexpr nw::Class class_type_undead = nw::Class::make(19);
constexpr nw::Class class_type_commoner = nw::Class::make(20);
constexpr nw::Class class_type_beast = nw::Class::make(21);
constexpr nw::Class class_type_giant = nw::Class::make(22);
constexpr nw::Class class_type_magical_beast = nw::Class::make(23);
constexpr nw::Class class_type_outsider = nw::Class::make(24);
constexpr nw::Class class_type_shapechanger = nw::Class::make(25);
constexpr nw::Class class_type_vermin = nw::Class::make(26);
constexpr nw::Class class_type_shadowdancer = nw::Class::make(27);
constexpr nw::Class class_type_harper = nw::Class::make(28);
constexpr nw::Class class_type_arcane_archer = nw::Class::make(29);
constexpr nw::Class class_type_assassin = nw::Class::make(30);
constexpr nw::Class class_type_blackguard = nw::Class::make(31);
constexpr nw::Class class_type_divinechampion = nw::Class::make(32);
constexpr nw::Class class_type_divine_champion = nw::Class::make(32);
constexpr nw::Class class_type_weapon_master = nw::Class::make(33);
constexpr nw::Class class_type_palemaster = nw::Class::make(34);
constexpr nw::Class class_type_pale_master = nw::Class::make(34);
constexpr nw::Class class_type_shifter = nw::Class::make(35);
constexpr nw::Class class_type_dwarvendefender = nw::Class::make(36);
constexpr nw::Class class_type_dwarven_defender = nw::Class::make(36);
constexpr nw::Class class_type_dragondisciple = nw::Class::make(37);
constexpr nw::Class class_type_dragon_disciple = nw::Class::make(37);
constexpr nw::Class class_type_ooze = nw::Class::make(38);
constexpr nw::Class class_type_eye_of_gruumsh = nw::Class::make(39);
constexpr nw::Class class_type_shou_disciple = nw::Class::make(40);
constexpr nw::Class class_type_purple_dragon_knight = nw::Class::make(41);

constexpr nw::CombatMode combat_mode_parry = nw::CombatMode::make(1);
constexpr nw::CombatMode combat_mode_power_attack = nw::CombatMode::make(2);
constexpr nw::CombatMode combat_mode_improved_power_attack = nw::CombatMode::make(3);
constexpr nw::CombatMode combat_mode_counter_spell = nw::CombatMode::make(4);
constexpr nw::CombatMode combat_mode_flurry_of_blows = nw::CombatMode::make(5);
constexpr nw::CombatMode combat_mode_rapid_shot = nw::CombatMode::make(6);
constexpr nw::CombatMode combat_mode_expertise = nw::CombatMode::make(7);
constexpr nw::CombatMode combat_mode_improved_expertise = nw::CombatMode::make(8);
constexpr nw::CombatMode combat_mode_defensive_casting = nw::CombatMode::make(9);
constexpr nw::CombatMode combat_mode_dirty_fighting = nw::CombatMode::make(10);
constexpr nw::CombatMode combat_mode_defensive_stance = nw::CombatMode::make(11);

constexpr int creature_size_invalid = 0;
constexpr int creature_size_tiny = 1;
constexpr int creature_size_small = 2;
constexpr int creature_size_medium = 3;
constexpr int creature_size_large = 4;
constexpr int creature_size_huge = 5;

constexpr nw::Disease disease_blinding_sickness = nw::Disease::make(0);
constexpr nw::Disease disease_cackle_fever = nw::Disease::make(1);
constexpr nw::Disease disease_devil_chills = nw::Disease::make(2);
constexpr nw::Disease disease_demon_fever = nw::Disease::make(3);
constexpr nw::Disease disease_filth_fever = nw::Disease::make(4);
constexpr nw::Disease disease_mindfire = nw::Disease::make(5);
constexpr nw::Disease disease_mummy_rot = nw::Disease::make(6);
constexpr nw::Disease disease_red_ache = nw::Disease::make(7);
constexpr nw::Disease disease_shakes = nw::Disease::make(8);
constexpr nw::Disease disease_slimy_doom = nw::Disease::make(9);
constexpr nw::Disease disease_red_slaad_eggs = nw::Disease::make(10);
constexpr nw::Disease disease_ghoul_rot = nw::Disease::make(11);
constexpr nw::Disease disease_zombie_creep = nw::Disease::make(12);
constexpr nw::Disease disease_dread_blisters = nw::Disease::make(13);
constexpr nw::Disease disease_burrow_maggots = nw::Disease::make(14);
constexpr nw::Disease disease_soldier_shakes = nw::Disease::make(15);
constexpr nw::Disease disease_vermin_madness = nw::Disease::make(16);

constexpr nw::EffectType effect_type_haste = nw::EffectType::make(1);
constexpr nw::EffectType effect_type_damage_resistance = nw::EffectType::make(2);
constexpr nw::EffectType effect_type_slow = nw::EffectType::make(3);
constexpr nw::EffectType effect_type_resurrection = nw::EffectType::make(4);
constexpr nw::EffectType effect_type_disease = nw::EffectType::make(5);
constexpr nw::EffectType effect_type_summon_creature = nw::EffectType::make(6);
constexpr nw::EffectType effect_type_regenerate = nw::EffectType::make(7);
constexpr nw::EffectType effect_type_setstate = nw::EffectType::make(8);
constexpr nw::EffectType effect_type_setstate_internal = nw::EffectType::make(9);
constexpr nw::EffectType effect_type_attack_increase = nw::EffectType::make(10);
constexpr nw::EffectType effect_type_attack_decrease = nw::EffectType::make(11);
constexpr nw::EffectType effect_type_damage_reduction = nw::EffectType::make(12);
constexpr nw::EffectType effect_type_damage_increase = nw::EffectType::make(13);
constexpr nw::EffectType effect_type_damage_decrease = nw::EffectType::make(14);
constexpr nw::EffectType effect_type_temporary_hitpoints = nw::EffectType::make(15);
constexpr nw::EffectType effect_type_damage_immunity_increase = nw::EffectType::make(16);
constexpr nw::EffectType effect_type_damage_immunity_decrease = nw::EffectType::make(17);
constexpr nw::EffectType effect_type_entangle = nw::EffectType::make(18);
constexpr nw::EffectType effect_type_death = nw::EffectType::make(19);
constexpr nw::EffectType effect_type_knockdown = nw::EffectType::make(20);
constexpr nw::EffectType effect_type_deaf = nw::EffectType::make(21);
constexpr nw::EffectType effect_type_immunity = nw::EffectType::make(22);
constexpr nw::EffectType effect_type_set_ai_state = nw::EffectType::make(23);
constexpr nw::EffectType effect_type_enemy_attack_bonus = nw::EffectType::make(24);
constexpr nw::EffectType effect_type_arcane_spell_failure = nw::EffectType::make(25);
constexpr nw::EffectType effect_type_saving_throw_increase = nw::EffectType::make(26);
constexpr nw::EffectType effect_type_saving_throw_decrease = nw::EffectType::make(27);
constexpr nw::EffectType effect_type_movement_speed_increase = nw::EffectType::make(28);
constexpr nw::EffectType effect_type_movement_speed_decrease = nw::EffectType::make(29);
constexpr nw::EffectType effect_type_visualeffect = nw::EffectType::make(30);
constexpr nw::EffectType effect_type_area_of_effect = nw::EffectType::make(31);
constexpr nw::EffectType effect_type_beam = nw::EffectType::make(32);
constexpr nw::EffectType effect_type_spell_resistance_increase = nw::EffectType::make(33);
constexpr nw::EffectType effect_type_spell_resistance_decrease = nw::EffectType::make(34);
constexpr nw::EffectType effect_type_poison = nw::EffectType::make(35);
constexpr nw::EffectType effect_type_ability_increase = nw::EffectType::make(36);
constexpr nw::EffectType effect_type_ability_decrease = nw::EffectType::make(37);
constexpr nw::EffectType effect_type_damage = nw::EffectType::make(38);
constexpr nw::EffectType effect_type_heal = nw::EffectType::make(39);
constexpr nw::EffectType effect_type_link = nw::EffectType::make(40);
constexpr nw::EffectType effect_type_haste_internal = nw::EffectType::make(41);
constexpr nw::EffectType effect_type_slow_internal = nw::EffectType::make(42);
constexpr nw::EffectType effect_type_modifynumattacks = nw::EffectType::make(44);
constexpr nw::EffectType effect_type_curse = nw::EffectType::make(45);
constexpr nw::EffectType effect_type_silence = nw::EffectType::make(46);
constexpr nw::EffectType effect_type_invisibility = nw::EffectType::make(47);
constexpr nw::EffectType effect_type_ac_increase = nw::EffectType::make(48);
constexpr nw::EffectType effect_type_ac_decrease = nw::EffectType::make(49);
constexpr nw::EffectType effect_type_spell_immunity = nw::EffectType::make(50);
constexpr nw::EffectType effect_type_dispel_all_magic = nw::EffectType::make(51);
constexpr nw::EffectType effect_type_dispel_best_magic = nw::EffectType::make(52);
constexpr nw::EffectType effect_type_taunt = nw::EffectType::make(53);
constexpr nw::EffectType effect_type_light = nw::EffectType::make(54);
constexpr nw::EffectType effect_type_skill_increase = nw::EffectType::make(55);
constexpr nw::EffectType effect_type_skill_decrease = nw::EffectType::make(56);
constexpr nw::EffectType effect_type_hitpointchangewhendying = nw::EffectType::make(57);
constexpr nw::EffectType effect_type_setwalkanimation = nw::EffectType::make(58);
constexpr nw::EffectType effect_type_limit_movement_speed = nw::EffectType::make(59);
constexpr nw::EffectType effect_type_damage_shield = nw::EffectType::make(61);
constexpr nw::EffectType effect_type_polymorph = nw::EffectType::make(62);
constexpr nw::EffectType effect_type_sanctuary = nw::EffectType::make(63);
constexpr nw::EffectType effect_type_timestop = nw::EffectType::make(64);
constexpr nw::EffectType effect_type_spell_level_absorption = nw::EffectType::make(65);
constexpr nw::EffectType effect_type_icon = nw::EffectType::make(67);
constexpr nw::EffectType effect_type_racial_type = nw::EffectType::make(68);
constexpr nw::EffectType effect_type_vision = nw::EffectType::make(69);
constexpr nw::EffectType effect_type_seeinvisible = nw::EffectType::make(70);
constexpr nw::EffectType effect_type_ultravision = nw::EffectType::make(71);
constexpr nw::EffectType effect_type_trueseeing = nw::EffectType::make(72);
constexpr nw::EffectType effect_type_blindness = nw::EffectType::make(73);
constexpr nw::EffectType effect_type_darkness = nw::EffectType::make(74);
constexpr nw::EffectType effect_type_miss_chance = nw::EffectType::make(75);
constexpr nw::EffectType effect_type_concealment = nw::EffectType::make(76);
constexpr nw::EffectType effect_type_turn_resistance_increase = nw::EffectType::make(77);
constexpr nw::EffectType effect_type_bonus_spell_of_level = nw::EffectType::make(78);
constexpr nw::EffectType effect_type_disappearappear = nw::EffectType::make(79);
constexpr nw::EffectType effect_type_disappear = nw::EffectType::make(80);
constexpr nw::EffectType effect_type_appear = nw::EffectType::make(81);
constexpr nw::EffectType effect_type_negative_level = nw::EffectType::make(82);
constexpr nw::EffectType effect_type_bonus_feat = nw::EffectType::make(83);
constexpr nw::EffectType effect_type_wounding = nw::EffectType::make(84);
constexpr nw::EffectType effect_type_swarm = nw::EffectType::make(85);
constexpr nw::EffectType effect_type_vampiric_regeneration = nw::EffectType::make(86);
constexpr nw::EffectType effect_type_disarm = nw::EffectType::make(87);
constexpr nw::EffectType effect_type_turn_resistance_decrease = nw::EffectType::make(88);
constexpr nw::EffectType effect_type_blindness_inactive = nw::EffectType::make(89);
constexpr nw::EffectType effect_type_petrify = nw::EffectType::make(90);
constexpr nw::EffectType effect_type_item_property = nw::EffectType::make(91);
constexpr nw::EffectType effect_type_spell_failure = nw::EffectType::make(92);
constexpr nw::EffectType effect_type_cutscene_ghost = nw::EffectType::make(93);
constexpr nw::EffectType effect_type_cutscene_immobile = nw::EffectType::make(94);
constexpr nw::EffectType effect_type_defensive_stance = nw::EffectType::make(95);

constexpr nw::ItemPropertyType ip_ability_bonus = nw::ItemPropertyType::make(0);
constexpr nw::ItemPropertyType ip_ac_bonus = nw::ItemPropertyType::make(1);
constexpr nw::ItemPropertyType ip_ac_bonus_vs_alignment_group = nw::ItemPropertyType::make(2);
constexpr nw::ItemPropertyType ip_ac_bonus_vs_damage_type = nw::ItemPropertyType::make(3);
constexpr nw::ItemPropertyType ip_ac_bonus_vs_racial_group = nw::ItemPropertyType::make(4);
constexpr nw::ItemPropertyType ip_ac_bonus_vs_specific_alignment = nw::ItemPropertyType::make(5);
constexpr nw::ItemPropertyType ip_enhancement_bonus = nw::ItemPropertyType::make(6);
constexpr nw::ItemPropertyType ip_enhancement_bonus_vs_alignment_group = nw::ItemPropertyType::make(7);
constexpr nw::ItemPropertyType ip_enhancement_bonus_vs_racial_group = nw::ItemPropertyType::make(8);
constexpr nw::ItemPropertyType ip_enhancement_bonus_vs_specific_alignement = nw::ItemPropertyType::make(9);
constexpr nw::ItemPropertyType ip_enhancement_penalty = nw::ItemPropertyType::make(10);
constexpr nw::ItemPropertyType ip_base_item_weight_reduction = nw::ItemPropertyType::make(11);
constexpr nw::ItemPropertyType ip_bonus_feat = nw::ItemPropertyType::make(12);
constexpr nw::ItemPropertyType ip_bonus_spell_slot_of_level_n = nw::ItemPropertyType::make(13);
constexpr nw::ItemPropertyType ip_cast_spell = nw::ItemPropertyType::make(15);
constexpr nw::ItemPropertyType ip_damage_bonus = nw::ItemPropertyType::make(16);
constexpr nw::ItemPropertyType ip_damage_bonus_vs_alignment_group = nw::ItemPropertyType::make(17);
constexpr nw::ItemPropertyType ip_damage_bonus_vs_racial_group = nw::ItemPropertyType::make(18);
constexpr nw::ItemPropertyType ip_damage_bonus_vs_specific_alignment = nw::ItemPropertyType::make(19);
constexpr nw::ItemPropertyType ip_immunity_damage_type = nw::ItemPropertyType::make(20);
constexpr nw::ItemPropertyType ip_decreased_damage = nw::ItemPropertyType::make(21);
constexpr nw::ItemPropertyType ip_damage_reduction = nw::ItemPropertyType::make(22);
constexpr nw::ItemPropertyType ip_damage_resistance = nw::ItemPropertyType::make(23);
constexpr nw::ItemPropertyType ip_damage_vulnerability = nw::ItemPropertyType::make(24);
constexpr nw::ItemPropertyType ip_darkvision = nw::ItemPropertyType::make(26);
constexpr nw::ItemPropertyType ip_decreased_ability_score = nw::ItemPropertyType::make(27);
constexpr nw::ItemPropertyType ip_decreased_ac = nw::ItemPropertyType::make(28);
constexpr nw::ItemPropertyType ip_decreased_skill_modifier = nw::ItemPropertyType::make(29);
constexpr nw::ItemPropertyType ip_enhanced_container_reduced_weight = nw::ItemPropertyType::make(32);
constexpr nw::ItemPropertyType ip_extra_melee_damage_type = nw::ItemPropertyType::make(33);
constexpr nw::ItemPropertyType ip_extra_ranged_damage_type = nw::ItemPropertyType::make(34);
constexpr nw::ItemPropertyType ip_haste = nw::ItemPropertyType::make(35);
constexpr nw::ItemPropertyType ip_holy_avenger = nw::ItemPropertyType::make(36);
constexpr nw::ItemPropertyType ip_immunity_miscellaneous = nw::ItemPropertyType::make(37);
constexpr nw::ItemPropertyType ip_improved_evasion = nw::ItemPropertyType::make(38);
constexpr nw::ItemPropertyType ip_spell_resistance = nw::ItemPropertyType::make(39);
constexpr nw::ItemPropertyType ip_saving_throw_bonus = nw::ItemPropertyType::make(40);
constexpr nw::ItemPropertyType ip_saving_throw_bonus_specific = nw::ItemPropertyType::make(41);
constexpr nw::ItemPropertyType ip_keen = nw::ItemPropertyType::make(43);
constexpr nw::ItemPropertyType ip_light = nw::ItemPropertyType::make(44);
constexpr nw::ItemPropertyType ip_mighty = nw::ItemPropertyType::make(45);
constexpr nw::ItemPropertyType ip_mind_blank = nw::ItemPropertyType::make(46);
constexpr nw::ItemPropertyType ip_no_damage = nw::ItemPropertyType::make(47);
constexpr nw::ItemPropertyType ip_on_hit_properties = nw::ItemPropertyType::make(48);
constexpr nw::ItemPropertyType ip_decreased_saving_throws = nw::ItemPropertyType::make(49);
constexpr nw::ItemPropertyType ip_decreased_saving_throws_specific = nw::ItemPropertyType::make(50);
constexpr nw::ItemPropertyType ip_regeneration = nw::ItemPropertyType::make(51);
constexpr nw::ItemPropertyType ip_skill_bonus = nw::ItemPropertyType::make(52);
constexpr nw::ItemPropertyType ip_immunity_specific_spell = nw::ItemPropertyType::make(53);
constexpr nw::ItemPropertyType ip_immunity_spell_school = nw::ItemPropertyType::make(54);
constexpr nw::ItemPropertyType ip_thieves_tools = nw::ItemPropertyType::make(55);
constexpr nw::ItemPropertyType ip_attack_bonus = nw::ItemPropertyType::make(56);
constexpr nw::ItemPropertyType ip_attack_bonus_vs_alignment_group = nw::ItemPropertyType::make(57);
constexpr nw::ItemPropertyType ip_attack_bonus_vs_racial_group = nw::ItemPropertyType::make(58);
constexpr nw::ItemPropertyType ip_attack_bonus_vs_specific_alignment = nw::ItemPropertyType::make(59);
constexpr nw::ItemPropertyType ip_attack_penalty = nw::ItemPropertyType::make(60);
constexpr nw::ItemPropertyType ip_unlimited_ammunition = nw::ItemPropertyType::make(61);
constexpr nw::ItemPropertyType ip_use_limitation_alignment_group = nw::ItemPropertyType::make(62);
constexpr nw::ItemPropertyType ip_use_limitation_class = nw::ItemPropertyType::make(63);
constexpr nw::ItemPropertyType ip_use_limitation_racial_type = nw::ItemPropertyType::make(64);
constexpr nw::ItemPropertyType ip_use_limitation_specific_alignment = nw::ItemPropertyType::make(65);
constexpr nw::ItemPropertyType ip_use_limitation_tileset = nw::ItemPropertyType::make(66);
constexpr nw::ItemPropertyType ip_regeneration_vampiric = nw::ItemPropertyType::make(67);
constexpr nw::ItemPropertyType ip_trap = nw::ItemPropertyType::make(70);
constexpr nw::ItemPropertyType ip_true_seeing = nw::ItemPropertyType::make(71);
constexpr nw::ItemPropertyType ip_on_monster_hit = nw::ItemPropertyType::make(72);
constexpr nw::ItemPropertyType ip_turn_resistance = nw::ItemPropertyType::make(73);
constexpr nw::ItemPropertyType ip_massive_criticals = nw::ItemPropertyType::make(74);
constexpr nw::ItemPropertyType ip_freedom_of_movement = nw::ItemPropertyType::make(75);
constexpr nw::ItemPropertyType ip_monster_damage = nw::ItemPropertyType::make(77);
constexpr nw::ItemPropertyType ip_immunity_spells_by_level = nw::ItemPropertyType::make(78);
constexpr nw::ItemPropertyType ip_special_walk = nw::ItemPropertyType::make(79);
constexpr nw::ItemPropertyType ip_healers_kit = nw::ItemPropertyType::make(80);
constexpr nw::ItemPropertyType ip_weight_increase = nw::ItemPropertyType::make(81);
constexpr nw::ItemPropertyType ip_onhitcastspell = nw::ItemPropertyType::make(82);
constexpr nw::ItemPropertyType ip_visualeffect = nw::ItemPropertyType::make(83);
constexpr nw::ItemPropertyType ip_arcane_spell_failure = nw::ItemPropertyType::make(84);
constexpr nw::ItemPropertyType ip_material = nw::ItemPropertyType::make(85);
constexpr nw::ItemPropertyType ip_quality = nw::ItemPropertyType::make(86);
constexpr nw::ItemPropertyType ip_additional = nw::ItemPropertyType::make(87);

constexpr nw::Damage damage_type_bludgeoning = nw::Damage::make(0);
constexpr nw::Damage damage_type_piercing = nw::Damage::make(1);
constexpr nw::Damage damage_type_slashing = nw::Damage::make(2);
constexpr nw::Damage damage_type_magical = nw::Damage::make(3);
constexpr nw::Damage damage_type_acid = nw::Damage::make(4);
constexpr nw::Damage damage_type_cold = nw::Damage::make(5);
constexpr nw::Damage damage_type_divine = nw::Damage::make(6);
constexpr nw::Damage damage_type_electrical = nw::Damage::make(7);
constexpr nw::Damage damage_type_fire = nw::Damage::make(8);
constexpr nw::Damage damage_type_negative = nw::Damage::make(9);
constexpr nw::Damage damage_type_positive = nw::Damage::make(10);
constexpr nw::Damage damage_type_sonic = nw::Damage::make(11);
constexpr nw::Damage damage_type_base_weapon = nw::Damage::make(12);

constexpr nw::DamageModType damage_mod_immunity = nw::DamageModType::make(0);
constexpr nw::DamageModType damage_mod_resistance = nw::DamageModType::make(1);
constexpr nw::DamageModType damage_mod_reduction = nw::DamageModType::make(2);

extern const nw::DamageFlag damage_flag_bludgeoning;
extern const nw::DamageFlag damage_flag_piercing;
extern const nw::DamageFlag damage_flag_slashing;
extern const nw::DamageFlag damage_flag_magical;
extern const nw::DamageFlag damage_flag_acid;
extern const nw::DamageFlag damage_flag_cold;
extern const nw::DamageFlag damage_flag_divine;
extern const nw::DamageFlag damage_flag_electrical;
extern const nw::DamageFlag damage_flag_fire;
extern const nw::DamageFlag damage_flag_negative;
extern const nw::DamageFlag damage_flag_positive;
extern const nw::DamageFlag damage_flag_sonic;
extern const nw::DamageFlag damage_flag_base_weapon;

constexpr nw::Poison poison_nightshade = nw::Poison::make(0);
constexpr nw::Poison poison_small_centipede_poison = nw::Poison::make(1);
constexpr nw::Poison poison_blade_bane = nw::Poison::make(2);
constexpr nw::Poison poison_greenblood_oil = nw::Poison::make(3);
constexpr nw::Poison poison_bloodroot = nw::Poison::make(4);
constexpr nw::Poison poison_purple_worm_poison = nw::Poison::make(5);
constexpr nw::Poison poison_large_scorpion_venom = nw::Poison::make(6);
constexpr nw::Poison poison_wyvern_poison = nw::Poison::make(7);
constexpr nw::Poison poison_blue_whinnis = nw::Poison::make(8);
constexpr nw::Poison poison_giant_wasp_poison = nw::Poison::make(9);
constexpr nw::Poison poison_shadow_essence = nw::Poison::make(10);
constexpr nw::Poison poison_black_adder_venom = nw::Poison::make(11);
constexpr nw::Poison poison_deathblade = nw::Poison::make(12);
constexpr nw::Poison poison_malyss_root_paste = nw::Poison::make(13);
constexpr nw::Poison poison_nitharit = nw::Poison::make(14);
constexpr nw::Poison poison_dragon_bile = nw::Poison::make(15);
constexpr nw::Poison poison_sassone_leaf_residue = nw::Poison::make(16);
constexpr nw::Poison poison_terinav_root = nw::Poison::make(17);
constexpr nw::Poison poison_carrion_crawler_brain_juice = nw::Poison::make(18);
constexpr nw::Poison poison_black_lotus_extract = nw::Poison::make(19);
constexpr nw::Poison poison_oil_of_taggit = nw::Poison::make(20);
constexpr nw::Poison poison_id_moss = nw::Poison::make(21);
constexpr nw::Poison poison_striped_toadstool = nw::Poison::make(22);
constexpr nw::Poison poison_arsenic = nw::Poison::make(23);
constexpr nw::Poison poison_lich_dust = nw::Poison::make(24);
constexpr nw::Poison poison_dark_reaver_powder = nw::Poison::make(25);
constexpr nw::Poison poison_ungol_dust = nw::Poison::make(26);
constexpr nw::Poison poison_burnt_othur_fumes = nw::Poison::make(27);
constexpr nw::Poison poison_chaos_mist = nw::Poison::make(28);
constexpr nw::Poison poison_bebilith_venom = nw::Poison::make(29);
constexpr nw::Poison poison_quasit_venom = nw::Poison::make(30);
constexpr nw::Poison poison_pit_fiend_ichor = nw::Poison::make(31);
constexpr nw::Poison poison_ettercap_venom = nw::Poison::make(32);
constexpr nw::Poison poison_aranea_venom = nw::Poison::make(33);
constexpr nw::Poison poison_tiny_spider_venom = nw::Poison::make(34);
constexpr nw::Poison poison_small_spider_venom = nw::Poison::make(35);
constexpr nw::Poison poison_medium_spider_venom = nw::Poison::make(36);
constexpr nw::Poison poison_large_spider_venom = nw::Poison::make(37);
constexpr nw::Poison poison_huge_spider_venom = nw::Poison::make(38);
constexpr nw::Poison poison_gargantuan_spider_venom = nw::Poison::make(39);
constexpr nw::Poison poison_colossal_spider_venom = nw::Poison::make(40);
constexpr nw::Poison poison_phase_spider_venom = nw::Poison::make(41);
constexpr nw::Poison poison_wraith_spider_venom = nw::Poison::make(42);
constexpr nw::Poison poison_iron_golem = nw::Poison::make(43);

constexpr nw::Race racial_type_dwarf = nw::Race::make(0);
constexpr nw::Race racial_type_elf = nw::Race::make(1);
constexpr nw::Race racial_type_gnome = nw::Race::make(2);
constexpr nw::Race racial_type_halfling = nw::Race::make(3);
constexpr nw::Race racial_type_halfelf = nw::Race::make(4);
constexpr nw::Race racial_type_halforc = nw::Race::make(5);
constexpr nw::Race racial_type_human = nw::Race::make(6);
constexpr nw::Race racial_type_aberration = nw::Race::make(7);
constexpr nw::Race racial_type_animal = nw::Race::make(8);
constexpr nw::Race racial_type_beast = nw::Race::make(9);
constexpr nw::Race racial_type_construct = nw::Race::make(10);
constexpr nw::Race racial_type_dragon = nw::Race::make(11);
constexpr nw::Race racial_type_humanoid_goblinoid = nw::Race::make(12);
constexpr nw::Race racial_type_humanoid_monstrous = nw::Race::make(13);
constexpr nw::Race racial_type_humanoid_orc = nw::Race::make(14);
constexpr nw::Race racial_type_humanoid_reptilian = nw::Race::make(15);
constexpr nw::Race racial_type_elemental = nw::Race::make(16);
constexpr nw::Race racial_type_fey = nw::Race::make(17);
constexpr nw::Race racial_type_giant = nw::Race::make(18);
constexpr nw::Race racial_type_magical_beast = nw::Race::make(19);
constexpr nw::Race racial_type_outsider = nw::Race::make(20);
constexpr nw::Race racial_type_shapechanger = nw::Race::make(23);
constexpr nw::Race racial_type_undead = nw::Race::make(24);
constexpr nw::Race racial_type_vermin = nw::Race::make(25);
constexpr nw::Race racial_type_all = nw::Race::make(28);
constexpr nw::Race racial_type_invalid = nw::Race::make(28);
constexpr nw::Race racial_type_ooze = nw::Race::make(29);

constexpr nw::Situation situation_type_blind = nw::Situation::make(0);
constexpr nw::Situation situation_type_coup_de_grace = nw::Situation::make(1);
constexpr nw::Situation situation_type_death_attack = nw::Situation::make(2);
constexpr nw::Situation situation_type_flanked = nw::Situation::make(3);
constexpr nw::Situation situation_type_flat_footed = nw::Situation::make(4);
constexpr nw::Situation situation_type_sneak_attack = nw::Situation::make(5);

extern const nw::SituationFlag situation_flag_blind;
extern const nw::SituationFlag situation_flag_coup_de_grace;
extern const nw::SituationFlag situation_flag_death_attack;
extern const nw::SituationFlag situation_flag_flanked;
extern const nw::SituationFlag situation_flag_flat_footed;
extern const nw::SituationFlag situation_flag_sneak_attack;

constexpr nw::Skill skill_animal_empathy = nw::Skill::make(0);
constexpr nw::Skill skill_concentration = nw::Skill::make(1);
constexpr nw::Skill skill_disable_trap = nw::Skill::make(2);
constexpr nw::Skill skill_discipline = nw::Skill::make(3);
constexpr nw::Skill skill_heal = nw::Skill::make(4);
constexpr nw::Skill skill_hide = nw::Skill::make(5);
constexpr nw::Skill skill_listen = nw::Skill::make(6);
constexpr nw::Skill skill_lore = nw::Skill::make(7);
constexpr nw::Skill skill_move_silently = nw::Skill::make(8);
constexpr nw::Skill skill_open_lock = nw::Skill::make(9);
constexpr nw::Skill skill_parry = nw::Skill::make(10);
constexpr nw::Skill skill_perform = nw::Skill::make(11);
constexpr nw::Skill skill_persuade = nw::Skill::make(12);
constexpr nw::Skill skill_pick_pocket = nw::Skill::make(13);
constexpr nw::Skill skill_search = nw::Skill::make(14);
constexpr nw::Skill skill_set_trap = nw::Skill::make(15);
constexpr nw::Skill skill_spellcraft = nw::Skill::make(16);
constexpr nw::Skill skill_spot = nw::Skill::make(17);
constexpr nw::Skill skill_taunt = nw::Skill::make(18);
constexpr nw::Skill skill_use_magic_device = nw::Skill::make(19);
constexpr nw::Skill skill_appraise = nw::Skill::make(20);
constexpr nw::Skill skill_tumble = nw::Skill::make(21);
constexpr nw::Skill skill_craft_trap = nw::Skill::make(22);
constexpr nw::Skill skill_bluff = nw::Skill::make(23);
constexpr nw::Skill skill_intimidate = nw::Skill::make(24);
constexpr nw::Skill skill_craft_armor = nw::Skill::make(25);
constexpr nw::Skill skill_craft_weapon = nw::Skill::make(26);
constexpr nw::Skill skill_ride = nw::Skill::make(27);

constexpr nw::MissChanceType miss_chance_type_darkness = nw::MissChanceType::make(1);
constexpr nw::MissChanceType miss_chance_type_melee = nw::MissChanceType::make(3);
constexpr nw::MissChanceType miss_chance_type_normal = nw::MissChanceType::make(0);
constexpr nw::MissChanceType miss_chance_type_ranged = nw::MissChanceType::make(2);

constexpr nw::ModifierType mod_type_ability = nw::ModifierType::make(0);
constexpr nw::ModifierType mod_type_armor_class = nw::ModifierType::make(1);
constexpr nw::ModifierType mod_type_attack_bonus = nw::ModifierType::make(2);
constexpr nw::ModifierType mod_type_concealment = nw::ModifierType::make(3);
constexpr nw::ModifierType mod_type_crit_multiplier = nw::ModifierType::make(4);
constexpr nw::ModifierType mod_type_crit_threat = nw::ModifierType::make(5);
constexpr nw::ModifierType mod_type_dmg_immunity = nw::ModifierType::make(6);
constexpr nw::ModifierType mod_type_dmg_reduction = nw::ModifierType::make(7);
constexpr nw::ModifierType mod_type_dmg_resistance = nw::ModifierType::make(8);
constexpr nw::ModifierType mod_type_hitpoints = nw::ModifierType::make(9);
constexpr nw::ModifierType mod_type_immunity = nw::ModifierType::make(10);
constexpr nw::ModifierType mod_type_initiative = nw::ModifierType::make(11);
constexpr nw::ModifierType mod_type_movement_speed = nw::ModifierType::make(12);
constexpr nw::ModifierType mod_type_regeneration = nw::ModifierType::make(13);
constexpr nw::ModifierType mod_type_save = nw::ModifierType::make(14);
constexpr nw::ModifierType mod_type_skill = nw::ModifierType::make(15);
constexpr nw::ModifierType mod_type_spell_immunity = nw::ModifierType::make(16);
constexpr nw::ModifierType mod_type_spell_resistance = nw::ModifierType::make(17);
constexpr nw::ModifierType mod_type_damage = nw::ModifierType::make(18);
constexpr nw::ModifierType mod_type_damage_special_attack = nw::ModifierType::make(19);

constexpr nw::Save saving_throw_fort = nw::Save::make(1);
constexpr nw::Save saving_throw_reflex = nw::Save::make(2);
constexpr nw::Save saving_throw_will = nw::Save::make(3);

constexpr nw::SaveVersus saving_throw_vs_mind_spells = nw::SaveVersus::make(1);
constexpr nw::SaveVersus saving_throw_vs_poison = nw::SaveVersus::make(2);
constexpr nw::SaveVersus saving_throw_vs_disease = nw::SaveVersus::make(3);
constexpr nw::SaveVersus saving_throw_vs_fear = nw::SaveVersus::make(4);
constexpr nw::SaveVersus saving_throw_vs_sonic = nw::SaveVersus::make(5);
constexpr nw::SaveVersus saving_throw_vs_acid = nw::SaveVersus::make(6);
constexpr nw::SaveVersus saving_throw_vs_fire = nw::SaveVersus::make(7);
constexpr nw::SaveVersus saving_throw_vs_electricity = nw::SaveVersus::make(8);
constexpr nw::SaveVersus saving_throw_vs_positive = nw::SaveVersus::make(9);
constexpr nw::SaveVersus saving_throw_vs_negative = nw::SaveVersus::make(10);
constexpr nw::SaveVersus saving_throw_vs_death = nw::SaveVersus::make(11);
constexpr nw::SaveVersus saving_throw_vs_cold = nw::SaveVersus::make(12);
constexpr nw::SaveVersus saving_throw_vs_divine = nw::SaveVersus::make(13);
constexpr nw::SaveVersus saving_throw_vs_trap = nw::SaveVersus::make(14);
constexpr nw::SaveVersus saving_throw_vs_spell = nw::SaveVersus::make(15);
constexpr nw::SaveVersus saving_throw_vs_good = nw::SaveVersus::make(16);
constexpr nw::SaveVersus saving_throw_vs_evil = nw::SaveVersus::make(17);
constexpr nw::SaveVersus saving_throw_vs_law = nw::SaveVersus::make(18);
constexpr nw::SaveVersus saving_throw_vs_chaos = nw::SaveVersus::make(19);

constexpr nw::SpecialAttack special_attack_aoo = nw::SpecialAttack::make(65002);
constexpr nw::SpecialAttack special_attack_called_shot_arm = nw::SpecialAttack::make(65001);
constexpr nw::SpecialAttack special_attack_called_shot_leg = nw::SpecialAttack::make(65000);
constexpr nw::SpecialAttack special_attack_cleave = nw::SpecialAttack::make(6);
constexpr nw::SpecialAttack special_attack_cleave_great = nw::SpecialAttack::make(391);
constexpr nw::SpecialAttack special_attack_disarm = nw::SpecialAttack::make(9);
constexpr nw::SpecialAttack special_attack_disarm_improved = nw::SpecialAttack::make(16);
constexpr nw::SpecialAttack special_attack_ki_damage = nw::SpecialAttack::make(882);
constexpr nw::SpecialAttack special_attack_knockdown = nw::SpecialAttack::make(23);
constexpr nw::SpecialAttack special_attack_knockdown_improved = nw::SpecialAttack::make(17);
constexpr nw::SpecialAttack special_attack_quivering_palm = nw::SpecialAttack::make(296);
constexpr nw::SpecialAttack special_attack_sap = nw::SpecialAttack::make(31);
constexpr nw::SpecialAttack special_attack_smite_evil = nw::SpecialAttack::make(301);
constexpr nw::SpecialAttack special_attack_smite_good = nw::SpecialAttack::make(472);
constexpr nw::SpecialAttack special_attack_stunning_fist = nw::SpecialAttack::make(39);

} // namespace nwn1
