Browse Source

Make affixes data driven

pull/8085/head
Anders Jenbo 8 months ago
parent
commit
88efadfce8
  1. 4
      CMake/Assets.cmake
  2. 6
      CMake/Mods.cmake
  3. 2
      Source/itemdat.cpp
  4. 2
      Source/itemdat.h
  5. 189
      Source/items.cpp
  6. 171
      assets/txtdata/items/item_prefixes.tsv
  7. 195
      assets/txtdata/items/item_suffixes.tsv
  8. 0
      mods/Hellfire/nlevels/cutl5w.clx
  9. 0
      mods/Hellfire/nlevels/cutl6w.clx
  10. 0
      mods/Hellfire/nlevels/l5data/cornerstone.dun
  11. 0
      mods/Hellfire/nlevels/l5data/uberroom.dun
  12. 87
      mods/Hellfire/txtdata/items/item_prefixes.tsv
  13. 99
      mods/Hellfire/txtdata/items/item_suffixes.tsv
  14. 8
      test/drlg_l1_test.cpp
  15. 8
      test/drlg_l3_test.cpp
  16. 9
      test/drlg_test.hpp

4
CMake/Assets.cmake

@ -152,10 +152,6 @@ set(devilutionx_assets
lua/inspect.lua lua/inspect.lua
lua/mods/clock/init.lua lua/mods/clock/init.lua
lua/repl_prelude.lua lua/repl_prelude.lua
nlevels/cutl5w.clx
nlevels/cutl6w.clx
nlevels/l5data/cornerstone.dun
nlevels/l5data/uberroom.dun
plrgfx/warrior/whu/whufm.trn plrgfx/warrior/whu/whufm.trn
plrgfx/warrior/whu/whulm.trn plrgfx/warrior/whu/whulm.trn
plrgfx/warrior/whu/whuqm.trn plrgfx/warrior/whu/whuqm.trn

6
CMake/Mods.cmake

@ -4,6 +4,12 @@ endif()
set(hellfire_mod set(hellfire_mod
lua/mods/Hellfire/init.lua lua/mods/Hellfire/init.lua
nlevels/cutl5w.clx
nlevels/cutl6w.clx
nlevels/l5data/cornerstone.dun
nlevels/l5data/uberroom.dun
txtdata/items/item_prefixes.tsv
txtdata/items/item_suffixes.tsv
txtdata/items/unique_itemdat.tsv txtdata/items/unique_itemdat.tsv
txtdata/missiles/misdat.tsv txtdata/missiles/misdat.tsv
txtdata/missiles/missile_sprites.tsv txtdata/missiles/missile_sprites.tsv

2
Source/itemdat.cpp

@ -602,7 +602,7 @@ void LoadItemAffixesDat(std::string_view filename, std::vector<PLStruct> &out)
reader.readInt("minLevel", item.PLMinLvl); reader.readInt("minLevel", item.PLMinLvl);
reader.readEnumList("itemTypes", item.PLIType, ParseAffixItemType); reader.readEnumList("itemTypes", item.PLIType, ParseAffixItemType);
reader.read("alignment", item.PLGOE, ParseAffixAlignment); reader.read("alignment", item.PLGOE, ParseAffixAlignment);
reader.readBool("doubleChance", item.PLDouble); reader.readInt("chance", item.PLChance);
reader.readBool("useful", item.PLOk); reader.readBool("useful", item.PLOk);
reader.readInt("minVal", item.minVal); reader.readInt("minVal", item.minVal);
reader.readInt("maxVal", item.maxVal); reader.readInt("maxVal", item.maxVal);

2
Source/itemdat.h

@ -622,7 +622,7 @@ struct PLStruct {
int8_t PLMinLvl; int8_t PLMinLvl;
AffixItemType PLIType; // AffixItemType as bit flags AffixItemType PLIType; // AffixItemType as bit flags
enum goodorevil PLGOE; enum goodorevil PLGOE;
bool PLDouble; uint8_t PLChance;
bool PLOk; bool PLOk;
int minVal; int minVal;
int maxVal; int maxVal;

189
Source/items.cpp

@ -359,41 +359,6 @@ int itemLevelAddHf[] = {
// clang-format on // clang-format on
}; };
bool IsPrefixValidForItemType(int i, AffixItemType flgs, bool hellfireItem)
{
AffixItemType itemTypes = ItemPrefixes[i].PLIType;
if (!hellfireItem) {
if (i > 82)
return false;
if (i >= 12 && i <= 20)
itemTypes &= ~AffixItemType::Staff;
}
return HasAnyOf(flgs, itemTypes);
}
bool IsSuffixValidForItemType(int i, AffixItemType flgs, bool hellfireItem)
{
AffixItemType itemTypes = ItemSuffixes[i].PLIType;
if (!hellfireItem) {
if (i > 94)
return false;
if ((i >= 0 && i <= 1)
|| (i >= 14 && i <= 15)
|| (i >= 21 && i <= 22)
|| (i >= 34 && i <= 36)
|| (i >= 41 && i <= 44)
|| (i >= 60 && i <= 63))
itemTypes &= ~AffixItemType::Staff;
}
return HasAnyOf(flgs, itemTypes);
}
int ItemsGetCurrlevel() int ItemsGetCurrlevel()
{ {
if (setlevel) { if (setlevel) {
@ -700,13 +665,6 @@ int CalculateToHitBonus(int level)
int SaveItemPower(const Player &player, Item &item, ItemPower &power) int SaveItemPower(const Player &player, Item &item, ItemPower &power)
{ {
if (!gbIsHellfire) {
if (power.type == IPL_TARGAC) {
power.param1 = 1 << power.param1;
power.param2 = 3 << power.param2;
}
}
int r = RndPL(power.param1, power.param2); int r = RndPL(power.param1, power.param2);
switch (power.type) { switch (power.type) {
@ -1067,29 +1025,46 @@ void SaveItemAffix(const Player &player, Item &item, const PLStruct &affix)
} }
} }
int GetStaffPrefixId(int lvl, bool onlygood, bool hellfireItem) std::optional<const PLStruct *> SelectAffix(
const std::vector<PLStruct> &affixList,
AffixItemType type,
int minlvl, int maxlvl,
bool onlygood,
goodorevil goe,
bool excludeChargesForStaffs)
{ {
int preidx = -1; StaticVector<const PLStruct *, 256> eligibleAffixes;
if (FlipCoin(10) || onlygood) {
int nl = 0; for (const PLStruct &affix : affixList) {
int l[256]; if (!HasAnyOf(type, affix.PLIType))
for (int j = 0, n = static_cast<int>(ItemPrefixes.size()); j < n; ++j) { continue;
if (!IsPrefixValidForItemType(j, AffixItemType::Staff, hellfireItem) || ItemPrefixes[j].PLMinLvl > lvl) if (affix.PLMinLvl < minlvl || affix.PLMinLvl > maxlvl)
continue; continue;
if (onlygood && !ItemPrefixes[j].PLOk) if (onlygood && !affix.PLOk)
continue; continue;
l[nl] = j; if ((goe == GOE_GOOD && affix.PLGOE == GOE_EVIL) || (goe == GOE_EVIL && affix.PLGOE == GOE_GOOD))
nl++; continue;
if (ItemPrefixes[j].PLDouble) { if (excludeChargesForStaffs && type == AffixItemType::Staff && affix.power.type == IPL_CHARGES)
l[nl] = j; continue;
nl++;
} for (int i = 0; i < affix.PLChance; ++i) {
} eligibleAffixes.push_back(&affix);
if (nl != 0) {
preidx = l[GenerateRnd(nl)];
} }
} }
return preidx;
if (eligibleAffixes.empty())
return std::nullopt;
return eligibleAffixes[GenerateRnd(static_cast<int>(eligibleAffixes.size()))];
}
std::optional<const PLStruct *> GetStaffPrefix(int maxlvl, bool onlygood)
{
if (!FlipCoin(10) && !onlygood) {
return std::nullopt;
}
return SelectAffix(ItemPrefixes, AffixItemType::Staff, 0, maxlvl, onlygood, GOE_ANY, false);
} }
std::string GenerateStaffName(const ItemData &baseItemData, SpellID spellId, bool translate) std::string GenerateStaffName(const ItemData &baseItemData, SpellID spellId, bool translate)
@ -1105,12 +1080,12 @@ std::string GenerateStaffName(const ItemData &baseItemData, SpellID spellId, boo
return name; return name;
} }
std::string GenerateStaffNameMagical(const ItemData &baseItemData, SpellID spellId, int preidx, bool translate, std::optional<bool> forceNameLengthCheck) std::string GenerateStaffNameMagical(const ItemData &baseItemData, SpellID spellId, const PLStruct &power, bool translate, std::optional<bool> forceNameLengthCheck)
{ {
std::string_view baseName = translate ? _(baseItemData.iName) : baseItemData.iName; std::string_view baseName = translate ? _(baseItemData.iName) : baseItemData.iName;
std::string_view magicFmt = translate ? pgettext("spell", /* TRANSLATORS: Constructs item names. Format: {Prefix} {Item} of {Spell}. Example: King's War Staff of Firewall */ "{0} {1} of {2}") : "{0} {1} of {2}"; std::string_view magicFmt = translate ? pgettext("spell", /* TRANSLATORS: Constructs item names. Format: {Prefix} {Item} of {Spell}. Example: King's War Staff of Firewall */ "{0} {1} of {2}") : "{0} {1} of {2}";
std::string_view spellName = translate ? pgettext("spell", GetSpellData(spellId).sNameText) : GetSpellData(spellId).sNameText; std::string_view spellName = translate ? pgettext("spell", GetSpellData(spellId).sNameText) : GetSpellData(spellId).sNameText;
std::string_view prefixName = translate ? _(ItemPrefixes[preidx].PLName) : ItemPrefixes[preidx].PLName; std::string_view prefixName = translate ? _(power.PLName) : power.PLName;
std::string identifiedName = fmt::format(fmt::runtime(magicFmt), prefixName, baseName, spellName); std::string identifiedName = fmt::format(fmt::runtime(magicFmt), prefixName, baseName, spellName);
if (forceNameLengthCheck ? *forceNameLengthCheck : !StringInPanel(identifiedName.c_str())) { if (forceNameLengthCheck ? *forceNameLengthCheck : !StringInPanel(identifiedName.c_str())) {
@ -1120,21 +1095,21 @@ std::string GenerateStaffNameMagical(const ItemData &baseItemData, SpellID spell
return identifiedName; return identifiedName;
} }
void GetStaffPower(const Player &player, Item &item, int lvl, SpellID bs, bool onlygood) void GetStaffPower(const Player &player, Item &item, int maxlvl, bool onlygood)
{ {
int preidx = GetStaffPrefixId(lvl, onlygood, gbIsHellfire); std::optional<const PLStruct *> prefix = GetStaffPrefix(maxlvl, onlygood);
if (preidx != -1) { if (prefix.has_value()) {
item._iMagical = ITEM_QUALITY_MAGIC; item._iMagical = ITEM_QUALITY_MAGIC;
SaveItemAffix(player, item, ItemPrefixes[preidx]); SaveItemAffix(player, item, **prefix);
item._iPrePower = ItemPrefixes[preidx].power.type; item._iPrePower = (*prefix)->power.type;
} }
const ItemData &baseItemData = AllItemsList[item.IDidx]; const ItemData &baseItemData = AllItemsList[item.IDidx];
std::string staffName = GenerateStaffName(baseItemData, item._iSpell, false); std::string staffName = GenerateStaffName(baseItemData, item._iSpell, false);
CopyUtf8(item._iName, staffName, ItemNameLength); CopyUtf8(item._iName, staffName, ItemNameLength);
if (preidx != -1) { if (prefix.has_value()) {
std::string staffNameMagical = GenerateStaffNameMagical(baseItemData, item._iSpell, preidx, false, std::nullopt); std::string staffNameMagical = GenerateStaffNameMagical(baseItemData, item._iSpell, **prefix, false, std::nullopt);
CopyUtf8(item._iIName, staffNameMagical, ItemNameLength); CopyUtf8(item._iIName, staffNameMagical, ItemNameLength);
} else { } else {
CopyUtf8(item._iIName, item._iName, ItemNameLength); CopyUtf8(item._iIName, item._iName, ItemNameLength);
@ -1159,14 +1134,13 @@ std::string GenerateMagicItemName(const std::string_view &baseNamel, const PLStr
return std::string(baseNamel); return std::string(baseNamel);
} }
void GetItemPowerPrefixAndSuffix(int minlvl, int maxlvl, AffixItemType flgs, bool onlygood, bool hellfireItem, tl::function_ref<void(const PLStruct &prefix)> prefixFound, tl::function_ref<void(const PLStruct &suffix)> suffixFound) void GetItemPowerPrefixAndSuffix(
int minlvl, int maxlvl,
AffixItemType flgs,
bool onlygood,
tl::function_ref<void(const PLStruct &prefix)> prefixFound,
tl::function_ref<void(const PLStruct &suffix)> suffixFound)
{ {
int preidx = -1;
int sufidx = -1;
int l[256];
goodorevil goe;
bool allocatePrefix = FlipCoin(4); bool allocatePrefix = FlipCoin(4);
bool allocateSuffix = !FlipCoin(3); bool allocateSuffix = !FlipCoin(3);
if (!allocatePrefix && !allocateSuffix) { if (!allocatePrefix && !allocateSuffix) {
@ -1176,47 +1150,22 @@ void GetItemPowerPrefixAndSuffix(int minlvl, int maxlvl, AffixItemType flgs, boo
else else
allocateSuffix = true; allocateSuffix = true;
} }
goe = GOE_ANY; goodorevil goe = GOE_ANY;
if (!onlygood && !FlipCoin(3)) if (!onlygood && !FlipCoin(3))
onlygood = true; onlygood = true;
if (allocatePrefix) { if (allocatePrefix) {
int nt = 0; std::optional<const PLStruct *> prefix = SelectAffix(ItemPrefixes, flgs, minlvl, maxlvl, onlygood, goe, true);
for (int j = 0, n = static_cast<int>(ItemPrefixes.size()); j < n; ++j) { if (prefix.has_value()) {
if (!IsPrefixValidForItemType(j, flgs, hellfireItem)) goe = (*prefix)->PLGOE;
continue; prefixFound(**prefix);
if (ItemPrefixes[j].PLMinLvl < minlvl || ItemPrefixes[j].PLMinLvl > maxlvl)
continue;
if (onlygood && !ItemPrefixes[j].PLOk)
continue;
if (HasAnyOf(flgs, AffixItemType::Staff) && ItemPrefixes[j].power.type == IPL_CHARGES)
continue;
l[nt] = j;
nt++;
if (ItemPrefixes[j].PLDouble) {
l[nt] = j;
nt++;
}
}
if (nt != 0) {
preidx = l[GenerateRnd(nt)];
goe = ItemPrefixes[preidx].PLGOE;
prefixFound(ItemPrefixes[preidx]);
} }
} }
if (allocateSuffix) { if (allocateSuffix) {
int nl = 0; std::optional<const PLStruct *> suffix = SelectAffix(ItemSuffixes, flgs, minlvl, maxlvl, onlygood, goe, true);
for (int j = 0, n = static_cast<int>(ItemSuffixes.size()); j < n; ++j) { if (suffix.has_value()) {
if (IsSuffixValidForItemType(j, flgs, hellfireItem) suffixFound(**suffix);
&& ItemSuffixes[j].PLMinLvl >= minlvl && ItemSuffixes[j].PLMinLvl <= maxlvl
&& !((goe == GOE_GOOD && ItemSuffixes[j].PLGOE == GOE_EVIL) || (goe == GOE_EVIL && ItemSuffixes[j].PLGOE == GOE_GOOD))
&& (!onlygood || ItemSuffixes[j].PLOk)) {
l[nl] = j;
nl++;
}
}
if (nl != 0) {
sufidx = l[GenerateRnd(nl)];
suffixFound(ItemSuffixes[sufidx]);
} }
} }
} }
@ -1226,7 +1175,7 @@ void GetItemPower(const Player &player, Item &item, int minlvl, int maxlvl, Affi
const PLStruct *pPrefix = nullptr; const PLStruct *pPrefix = nullptr;
const PLStruct *pSufix = nullptr; const PLStruct *pSufix = nullptr;
GetItemPowerPrefixAndSuffix( GetItemPowerPrefixAndSuffix(
minlvl, maxlvl, flgs, onlygood, gbIsHellfire, minlvl, maxlvl, flgs, onlygood,
[&item, &player, &pPrefix](const PLStruct &prefix) { [&item, &player, &pPrefix](const PLStruct &prefix) {
item._iMagical = ITEM_QUALITY_MAGIC; item._iMagical = ITEM_QUALITY_MAGIC;
SaveItemAffix(player, item, prefix); SaveItemAffix(player, item, prefix);
@ -1290,7 +1239,7 @@ void GetStaffSpell(const Player &player, Item &item, int lvl, bool onlygood)
int v = item._iCharges * GetSpellData(bs).staffCost() / 5; int v = item._iCharges * GetSpellData(bs).staffCost() / 5;
item._ivalue += v; item._ivalue += v;
item._iIvalue += v; item._iIvalue += v;
GetStaffPower(player, item, lvl, bs, onlygood); GetStaffPower(player, item, lvl, onlygood);
} }
void GetOilType(Item &item, int maxLvl) void GetOilType(Item &item, int maxLvl)
@ -2310,18 +2259,18 @@ std::string GetTranslatedItemNameMagical(const Item &item, bool hellfireItem, bo
} else { } else {
DiscardRandomValues(2); // Spell and Charges DiscardRandomValues(2); // Spell and Charges
int preidx = GetStaffPrefixId(maxlvl, onlygood, hellfireItem); std::optional<const PLStruct *> prefix = GetStaffPrefix(maxlvl, onlygood);
if (preidx == -1 || item._iSpell == SpellID::Null) { if (!prefix.has_value() || item._iSpell == SpellID::Null) {
if (forceNameLengthCheck) { if (forceNameLengthCheck) {
// We generate names to check if it's a diablo or hellfire item. This checks fails => invalid item => don't generate a item name // We generate names to check if it's a diablo or hellfire item. This checks fails => invalid item => don't generate a item name
identifiedName.clear(); identifiedName.clear();
} else { } else {
// This can happen, if the item is hacked or a bug in the logic exists // This can happen, if the item is hacked or a bug in the logic exists
LogWarn("GetTranslatedItemNameMagical failed for item '{}' with preidx '{}' and spellid '{}'", item._iIName, preidx, static_cast<std::underlying_type_t<SpellID>>(item._iSpell)); LogWarn("GetTranslatedItemNameMagical failed for item '{}' with prefix '{}' and spellid '{}'", item._iIName, prefix.has_value() ? (*prefix)->PLName : "NULL", static_cast<std::underlying_type_t<SpellID>>(item._iSpell));
identifiedName = item._iIName; identifiedName = item._iIName;
} }
} else { } else {
identifiedName = GenerateStaffNameMagical(baseItemData, item._iSpell, preidx, translate, forceNameLengthCheck); identifiedName = GenerateStaffNameMagical(baseItemData, item._iSpell, **prefix, translate, forceNameLengthCheck);
} }
} }
break; break;
@ -2340,7 +2289,7 @@ std::string GetTranslatedItemNameMagical(const Item &item, bool hellfireItem, bo
const PLStruct *pPrefix = nullptr; const PLStruct *pPrefix = nullptr;
const PLStruct *pSufix = nullptr; const PLStruct *pSufix = nullptr;
GetItemPowerPrefixAndSuffix( GetItemPowerPrefixAndSuffix(
minlvl, maxlvl, affixItemType, onlygood, hellfireItem, minlvl, maxlvl, affixItemType, onlygood,
[&pPrefix](const PLStruct &prefix) { [&pPrefix](const PLStruct &prefix) {
pPrefix = &prefix; pPrefix = &prefix;
// GenerateRnd(prefix.power.param2 - prefix.power.param2 + 1) // GenerateRnd(prefix.power.param2 - prefix.power.param2 + 1)

171
assets/txtdata/items/item_prefixes.tsv

@ -1,87 +1,84 @@
name power power.value1 power.value2 minLevel itemTypes alignment doubleChance useful minVal maxVal multVal name power power.value1 power.value2 minLevel itemTypes alignment chance useful minVal maxVal multVal
Tin TOHIT_CURSE 6 10 3 Weapon,Bow,Misc Any true false 0 0 -3 Tin TOHIT_CURSE 6 10 3 Weapon,Bow,Misc Any 2 false 0 0 -3
Brass TOHIT_CURSE 1 5 1 Weapon,Bow,Misc Any true false 0 0 -2 Brass TOHIT_CURSE 1 5 1 Weapon,Bow,Misc Any 2 false 0 0 -2
Bronze TOHIT 1 5 1 Weapon,Bow,Misc Any true true 100 500 2 Bronze TOHIT 1 5 1 Weapon,Bow,Misc Any 2 true 100 500 2
Iron TOHIT 6 10 4 Weapon,Bow,Misc Any true true 600 1000 3 Iron TOHIT 6 10 4 Weapon,Bow,Misc Any 2 true 600 1000 3
Steel TOHIT 11 15 6 Weapon,Bow,Misc Any true true 1100 1500 5 Steel TOHIT 11 15 6 Weapon,Bow,Misc Any 2 true 1100 1500 5
Silver TOHIT 16 20 9 Weapon,Bow,Misc Good true true 1600 2000 7 Silver TOHIT 16 20 9 Weapon,Bow,Misc Good 2 true 1600 2000 7
Gold TOHIT 21 30 12 Weapon,Bow,Misc Good true true 2100 3000 9 Gold TOHIT 21 30 12 Weapon,Bow,Misc Good 2 true 2100 3000 9
Platinum TOHIT 31 40 16 Weapon,Bow Good true true 3100 4000 11 Platinum TOHIT 31 40 16 Weapon,Bow Good 2 true 3100 4000 11
Mithril TOHIT 41 60 20 Weapon,Bow Good true true 4100 6000 13 Mithril TOHIT 41 60 20 Weapon,Bow Good 2 true 4100 6000 13
Meteoric TOHIT 61 80 23 Weapon,Bow Any true true 6100 10000 15 Meteoric TOHIT 61 80 23 Weapon,Bow Any 2 true 6100 10000 15
Weird TOHIT 81 100 35 Weapon,Bow Any true true 10100 14000 17 Weird TOHIT 81 100 35 Weapon,Bow Any 2 true 10100 14000 17
Strange TOHIT 101 150 60 Weapon,Bow Any true true 14100 20000 20 Strange TOHIT 101 150 60 Weapon,Bow Any 2 true 14100 20000 20
Useless DAMP_CURSE 100 100 5 Weapon,Staff,Bow Any true false 0 0 -8 Useless DAMP_CURSE 100 100 5 Weapon,Bow Any 2 false 0 0 -8
Bent DAMP_CURSE 50 75 3 Weapon,Staff,Bow Any true false 0 0 -4 Bent DAMP_CURSE 50 75 3 Weapon,Bow Any 2 false 0 0 -4
Weak DAMP_CURSE 25 45 1 Weapon,Staff,Bow Any true false 0 0 -3 Weak DAMP_CURSE 25 45 1 Weapon,Bow Any 2 false 0 0 -3
Jagged DAMP 20 35 4 Weapon,Staff,Bow Any true true 250 450 3 Jagged DAMP 20 35 4 Weapon,Bow Any 2 true 250 450 3
Deadly DAMP 36 50 6 Weapon,Staff,Bow Any true true 500 700 4 Deadly DAMP 36 50 6 Weapon,Bow Any 2 true 500 700 4
Heavy DAMP 51 65 9 Weapon,Staff,Bow Any true true 750 950 5 Heavy DAMP 51 65 9 Weapon,Bow Any 2 true 750 950 5
Vicious DAMP 66 80 12 Weapon,Staff,Bow Evil true true 1000 1450 8 Vicious DAMP 66 80 12 Weapon,Bow Evil 2 true 1000 1450 8
Brutal DAMP 81 95 16 Weapon,Staff,Bow Any true true 1500 1950 10 Brutal DAMP 81 95 16 Weapon,Bow Any 2 true 1500 1950 10
Massive DAMP 96 110 20 Weapon,Staff,Bow Any true true 2000 2450 13 Massive DAMP 96 110 20 Weapon,Bow Any 2 true 2000 2450 13
Savage DAMP 111 125 23 Weapon,Bow Any true true 2500 3000 15 Savage DAMP 111 125 23 Weapon,Bow Any 2 true 2500 3000 15
Ruthless DAMP 126 150 35 Weapon,Bow Any true true 10100 15000 17 Ruthless DAMP 126 150 35 Weapon,Bow Any 2 true 10100 15000 17
Merciless DAMP 151 175 60 Weapon,Bow Any true true 15000 20000 20 Merciless DAMP 151 175 60 Weapon,Bow Any 2 true 15000 20000 20
Clumsy TOHIT_DAMP_CURSE 50 75 5 Weapon,Staff,Bow Any true false 0 0 -7 Clumsy TOHIT_DAMP_CURSE 50 75 5 Weapon,Staff,Bow Any 2 false 0 0 -7
Dull TOHIT_DAMP_CURSE 25 45 1 Weapon,Staff,Bow Any true false 0 0 -5 Dull TOHIT_DAMP_CURSE 25 45 1 Weapon,Staff,Bow Any 2 false 0 0 -5
Sharp TOHIT_DAMP 20 35 1 Weapon,Staff,Bow Any true false 350 950 5 Sharp TOHIT_DAMP 20 35 1 Weapon,Staff,Bow Any 2 false 350 950 5
Fine TOHIT_DAMP 36 50 6 Weapon,Staff,Bow Any true true 1100 1700 7 Fine TOHIT_DAMP 36 50 6 Weapon,Staff,Bow Any 2 true 1100 1700 7
Warrior's TOHIT_DAMP 51 65 10 Weapon,Staff,Bow Any true true 1850 2450 13 Warrior's TOHIT_DAMP 51 65 10 Weapon,Staff,Bow Any 2 true 1850 2450 13
Soldier's TOHIT_DAMP 66 80 15 Weapon,Staff Any true true 2600 3950 17 Soldier's TOHIT_DAMP 66 80 15 Weapon,Staff Any 2 true 2600 3950 17
Lord's TOHIT_DAMP 81 95 19 Weapon,Staff Any true true 4100 5950 21 Lord's TOHIT_DAMP 81 95 19 Weapon,Staff Any 2 true 4100 5950 21
Knight's TOHIT_DAMP 96 110 23 Weapon,Staff Any true true 6100 8450 26 Knight's TOHIT_DAMP 96 110 23 Weapon,Staff Any 2 true 6100 8450 26
Master's TOHIT_DAMP 111 125 28 Weapon,Staff Any true true 8600 13000 30 Master's TOHIT_DAMP 111 125 28 Weapon,Staff Any 2 true 8600 13000 30
Champion's TOHIT_DAMP 126 150 40 Weapon,Staff Any true true 15200 24000 33 Champion's TOHIT_DAMP 126 150 40 Weapon,Staff Any 2 true 15200 24000 33
King's TOHIT_DAMP 151 175 28 Weapon,Staff Any true true 24100 35000 38 King's TOHIT_DAMP 151 175 28 Weapon,Staff Any 2 true 24100 35000 38
Vulnerable ACP_CURSE 51 100 3 Armor,Shield Any true false 0 0 -3 Vulnerable ACP_CURSE 51 100 3 Armor,Shield Any 2 false 0 0 -3
Rusted ACP_CURSE 25 50 1 Armor,Shield Any true false 0 0 -2 Rusted ACP_CURSE 25 50 1 Armor,Shield Any 2 false 0 0 -2
Fine ACP 20 30 1 Armor,Shield Any true true 20 100 2 Fine ACP 20 30 1 Armor,Shield Any 2 true 20 100 2
Strong ACP 31 40 3 Armor,Shield Any true true 120 200 3 Strong ACP 31 40 3 Armor,Shield Any 2 true 120 200 3
Grand ACP 41 55 6 Armor,Shield Any true true 220 300 5 Grand ACP 41 55 6 Armor,Shield Any 2 true 220 300 5
Valiant ACP 56 70 10 Armor,Shield Any true true 320 400 7 Valiant ACP 56 70 10 Armor,Shield Any 2 true 320 400 7
Glorious ACP 71 90 14 Armor,Shield Good true true 420 600 9 Glorious ACP 71 90 14 Armor,Shield Good 2 true 420 600 9
Blessed ACP 91 110 19 Armor,Shield Good true true 620 800 11 Blessed ACP 91 110 19 Armor,Shield Good 2 true 620 800 11
Saintly ACP 111 130 24 Armor,Shield Good true true 820 1200 13 Saintly ACP 111 130 24 Armor,Shield Good 2 true 820 1200 13
Awesome ACP 131 150 28 Armor,Shield Good true true 1220 2000 15 Awesome ACP 131 150 28 Armor,Shield Good 2 true 1220 2000 15
Holy ACP 151 170 35 Armor,Shield Good true true 5200 6000 17 Holy ACP 151 170 35 Armor,Shield Good 2 true 5200 6000 17
Godly ACP 171 200 60 Armor,Shield Good true true 6200 7000 20 Godly ACP 171 200 60 Armor,Shield Good 2 true 6200 7000 20
Red FIRERES 10 20 4 Armor,Shield,Weapon,Staff,Bow,Misc Any false true 500 1500 2 Red FIRERES 10 20 4 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 500 1500 2
Crimson FIRERES 21 30 10 Armor,Shield,Weapon,Staff,Bow,Misc Any false true 2100 3000 2 Crimson FIRERES 21 30 10 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 2100 3000 2
Crimson FIRERES 31 40 16 Armor,Shield,Weapon,Staff,Bow,Misc Any false true 3100 4000 2 Crimson FIRERES 31 40 16 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 3100 4000 2
Garnet FIRERES 41 50 20 Armor,Shield,Weapon,Staff,Bow,Misc Any false true 8200 12000 3 Garnet FIRERES 41 50 20 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 8200 12000 3
Ruby FIRERES 51 60 26 Armor,Shield,Weapon,Staff,Bow,Misc Any false true 17100 20000 5 Ruby FIRERES 51 60 26 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 17100 20000 5
Blue LIGHTRES 10 20 4 Armor,Shield,Weapon,Staff,Bow,Misc Any false true 500 1500 2 Blue LIGHTRES 10 20 4 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 500 1500 2
Azure LIGHTRES 21 30 10 Armor,Shield,Weapon,Staff,Bow,Misc Any false true 2100 3000 2 Azure LIGHTRES 21 30 10 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 2100 3000 2
Lapis LIGHTRES 31 40 16 Armor,Shield,Weapon,Staff,Bow,Misc Any false true 3100 4000 2 Lapis LIGHTRES 31 40 16 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 3100 4000 2
Cobalt LIGHTRES 41 50 20 Armor,Shield,Weapon,Staff,Bow,Misc Any false true 8200 12000 3 Cobalt LIGHTRES 41 50 20 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 8200 12000 3
Sapphire LIGHTRES 51 60 26 Armor,Shield,Weapon,Staff,Bow,Misc Any false true 17100 20000 5 Sapphire LIGHTRES 51 60 26 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 17100 20000 5
White MAGICRES 10 20 4 Armor,Shield,Weapon,Staff,Bow,Misc Any false true 500 1500 2 White MAGICRES 10 20 4 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 500 1500 2
Pearl MAGICRES 21 30 10 Armor,Shield,Weapon,Staff,Bow,Misc Any false true 2100 3000 2 Pearl MAGICRES 21 30 10 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 2100 3000 2
Ivory MAGICRES 31 40 16 Armor,Shield,Weapon,Staff,Bow,Misc Any false true 3100 4000 2 Ivory MAGICRES 31 40 16 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 3100 4000 2
Crystal MAGICRES 41 50 20 Armor,Shield,Weapon,Staff,Bow,Misc Any false true 8200 12000 3 Crystal MAGICRES 41 50 20 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 8200 12000 3
Diamond MAGICRES 51 60 26 Armor,Shield,Weapon,Staff,Bow,Misc Any false true 17100 20000 5 Diamond MAGICRES 51 60 26 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 17100 20000 5
Topaz ALLRES 10 15 8 Armor,Shield,Weapon,Staff,Bow,Misc Any false true 2000 5000 3 Topaz ALLRES 10 15 8 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 2000 5000 3
Amber ALLRES 16 20 12 Armor,Shield,Weapon,Staff,Bow,Misc Any false true 7400 10000 3 Amber ALLRES 16 20 12 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 7400 10000 3
Jade ALLRES 21 30 18 Armor,Shield,Weapon,Staff,Bow,Misc Any false true 11000 15000 3 Jade ALLRES 21 30 18 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 11000 15000 3
Obsidian ALLRES 31 40 24 Armor,Shield,Weapon,Staff,Bow,Misc Any false true 24000 40000 4 Obsidian ALLRES 31 40 24 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 24000 40000 4
Emerald ALLRES 41 50 31 Shield,Weapon,Staff,Bow Any false true 61000 75000 7 Emerald ALLRES 41 50 31 Shield,Weapon,Staff,Bow Any 1 true 61000 75000 7
Hyena's MANA_CURSE 11 25 4 Staff,Misc Any false false 100 1000 -2 Hyena's MANA_CURSE 11 25 4 Staff,Misc Any 1 false 100 1000 -2
Frog's MANA_CURSE 1 10 1 Staff,Misc Evil false false 0 0 -2 Frog's MANA_CURSE 1 10 1 Staff,Misc Evil 1 false 0 0 -2
Spider's MANA 10 15 1 Staff,Misc Evil false true 500 1000 2 Spider's MANA 10 15 1 Staff,Misc Evil 1 true 500 1000 2
Raven's MANA 15 20 5 Staff,Misc Any false true 1100 2000 3 Raven's MANA 15 20 5 Staff,Misc Any 1 true 1100 2000 3
Snake's MANA 21 30 9 Staff,Misc Any false true 2100 4000 5 Snake's MANA 21 30 9 Staff,Misc Any 1 true 2100 4000 5
Serpent's MANA 30 40 15 Staff,Misc Any false true 4100 6000 7 Serpent's MANA 30 40 15 Staff,Misc Any 1 true 4100 6000 7
Drake's MANA 41 50 21 Staff,Misc Any false true 6100 10000 9 Drake's MANA 41 50 21 Staff,Misc Any 1 true 6100 10000 9
Dragon's MANA 51 60 27 Staff,Misc Any false true 10100 15000 11 Dragon's MANA 51 60 27 Staff,Misc Any 1 true 10100 15000 11
Wyrm's MANA 61 80 35 Staff Any false true 15100 19000 12 Wyrm's MANA 61 80 35 Staff Any 1 true 15100 19000 12
Hydra's MANA 81 100 60 Staff Any false true 19100 30000 13 Hydra's MANA 81 100 60 Staff Any 1 true 19100 30000 13
Angel's SPLLVLADD 1 1 15 Staff Good false true 25000 25000 2 Angel's SPLLVLADD 1 1 15 Staff Good 1 true 25000 25000 2
Arch-Angel's SPLLVLADD 2 2 25 Staff Good false true 50000 50000 3 Arch-Angel's SPLLVLADD 2 2 25 Staff Good 1 true 50000 50000 3
Plentiful CHARGES 2 2 4 Staff Any false true 2000 2000 2 Plentiful CHARGES 2 2 4 Staff Any 1 true 2000 2000 2
Bountiful CHARGES 3 3 9 Staff Any false true 3000 3000 3 Bountiful CHARGES 3 3 9 Staff Any 1 true 3000 3000 3
Flaming FIREDAM 1 10 7 Weapon,Staff Any false true 5000 5000 2 Flaming FIREDAM 1 10 7 Weapon,Staff Any 1 true 5000 5000 2
Lightning LIGHTDAM 2 20 18 Weapon,Staff Any false true 10000 10000 2 Lightning LIGHTDAM 2 20 18 Weapon,Staff Any 1 true 10000 10000 2
Jester's JESTERS 1 1 7 Weapon Any false true 1200 1200 3
Crystalline CRYSTALLINE 30 70 5 Weapon Any false true 1000 3000 3
Doppelganger's DOPPELGANGER 81 95 11 Weapon,Staff Any false true 2000 2400 10

1 name power power.value1 power.value2 minLevel itemTypes alignment doubleChance chance useful minVal maxVal multVal
2 Tin TOHIT_CURSE 6 10 3 Weapon,Bow,Misc Any true 2 false 0 0 -3
3 Brass TOHIT_CURSE 1 5 1 Weapon,Bow,Misc Any true 2 false 0 0 -2
4 Bronze TOHIT 1 5 1 Weapon,Bow,Misc Any true 2 true 100 500 2
5 Iron TOHIT 6 10 4 Weapon,Bow,Misc Any true 2 true 600 1000 3
6 Steel TOHIT 11 15 6 Weapon,Bow,Misc Any true 2 true 1100 1500 5
7 Silver TOHIT 16 20 9 Weapon,Bow,Misc Good true 2 true 1600 2000 7
8 Gold TOHIT 21 30 12 Weapon,Bow,Misc Good true 2 true 2100 3000 9
9 Platinum TOHIT 31 40 16 Weapon,Bow Good true 2 true 3100 4000 11
10 Mithril TOHIT 41 60 20 Weapon,Bow Good true 2 true 4100 6000 13
11 Meteoric TOHIT 61 80 23 Weapon,Bow Any true 2 true 6100 10000 15
12 Weird TOHIT 81 100 35 Weapon,Bow Any true 2 true 10100 14000 17
13 Strange TOHIT 101 150 60 Weapon,Bow Any true 2 true 14100 20000 20
14 Useless DAMP_CURSE 100 100 5 Weapon,Staff,Bow Weapon,Bow Any true 2 false 0 0 -8
15 Bent DAMP_CURSE 50 75 3 Weapon,Staff,Bow Weapon,Bow Any true 2 false 0 0 -4
16 Weak DAMP_CURSE 25 45 1 Weapon,Staff,Bow Weapon,Bow Any true 2 false 0 0 -3
17 Jagged DAMP 20 35 4 Weapon,Staff,Bow Weapon,Bow Any true 2 true 250 450 3
18 Deadly DAMP 36 50 6 Weapon,Staff,Bow Weapon,Bow Any true 2 true 500 700 4
19 Heavy DAMP 51 65 9 Weapon,Staff,Bow Weapon,Bow Any true 2 true 750 950 5
20 Vicious DAMP 66 80 12 Weapon,Staff,Bow Weapon,Bow Evil true 2 true 1000 1450 8
21 Brutal DAMP 81 95 16 Weapon,Staff,Bow Weapon,Bow Any true 2 true 1500 1950 10
22 Massive DAMP 96 110 20 Weapon,Staff,Bow Weapon,Bow Any true 2 true 2000 2450 13
23 Savage DAMP 111 125 23 Weapon,Bow Any true 2 true 2500 3000 15
24 Ruthless DAMP 126 150 35 Weapon,Bow Any true 2 true 10100 15000 17
25 Merciless DAMP 151 175 60 Weapon,Bow Any true 2 true 15000 20000 20
26 Clumsy TOHIT_DAMP_CURSE 50 75 5 Weapon,Staff,Bow Any true 2 false 0 0 -7
27 Dull TOHIT_DAMP_CURSE 25 45 1 Weapon,Staff,Bow Any true 2 false 0 0 -5
28 Sharp TOHIT_DAMP 20 35 1 Weapon,Staff,Bow Any true 2 false 350 950 5
29 Fine TOHIT_DAMP 36 50 6 Weapon,Staff,Bow Any true 2 true 1100 1700 7
30 Warrior's TOHIT_DAMP 51 65 10 Weapon,Staff,Bow Any true 2 true 1850 2450 13
31 Soldier's TOHIT_DAMP 66 80 15 Weapon,Staff Any true 2 true 2600 3950 17
32 Lord's TOHIT_DAMP 81 95 19 Weapon,Staff Any true 2 true 4100 5950 21
33 Knight's TOHIT_DAMP 96 110 23 Weapon,Staff Any true 2 true 6100 8450 26
34 Master's TOHIT_DAMP 111 125 28 Weapon,Staff Any true 2 true 8600 13000 30
35 Champion's TOHIT_DAMP 126 150 40 Weapon,Staff Any true 2 true 15200 24000 33
36 King's TOHIT_DAMP 151 175 28 Weapon,Staff Any true 2 true 24100 35000 38
37 Vulnerable ACP_CURSE 51 100 3 Armor,Shield Any true 2 false 0 0 -3
38 Rusted ACP_CURSE 25 50 1 Armor,Shield Any true 2 false 0 0 -2
39 Fine ACP 20 30 1 Armor,Shield Any true 2 true 20 100 2
40 Strong ACP 31 40 3 Armor,Shield Any true 2 true 120 200 3
41 Grand ACP 41 55 6 Armor,Shield Any true 2 true 220 300 5
42 Valiant ACP 56 70 10 Armor,Shield Any true 2 true 320 400 7
43 Glorious ACP 71 90 14 Armor,Shield Good true 2 true 420 600 9
44 Blessed ACP 91 110 19 Armor,Shield Good true 2 true 620 800 11
45 Saintly ACP 111 130 24 Armor,Shield Good true 2 true 820 1200 13
46 Awesome ACP 131 150 28 Armor,Shield Good true 2 true 1220 2000 15
47 Holy ACP 151 170 35 Armor,Shield Good true 2 true 5200 6000 17
48 Godly ACP 171 200 60 Armor,Shield Good true 2 true 6200 7000 20
49 Red FIRERES 10 20 4 Armor,Shield,Weapon,Staff,Bow,Misc Any false 1 true 500 1500 2
50 Crimson FIRERES 21 30 10 Armor,Shield,Weapon,Staff,Bow,Misc Any false 1 true 2100 3000 2
51 Crimson FIRERES 31 40 16 Armor,Shield,Weapon,Staff,Bow,Misc Any false 1 true 3100 4000 2
52 Garnet FIRERES 41 50 20 Armor,Shield,Weapon,Staff,Bow,Misc Any false 1 true 8200 12000 3
53 Ruby FIRERES 51 60 26 Armor,Shield,Weapon,Staff,Bow,Misc Any false 1 true 17100 20000 5
54 Blue LIGHTRES 10 20 4 Armor,Shield,Weapon,Staff,Bow,Misc Any false 1 true 500 1500 2
55 Azure LIGHTRES 21 30 10 Armor,Shield,Weapon,Staff,Bow,Misc Any false 1 true 2100 3000 2
56 Lapis LIGHTRES 31 40 16 Armor,Shield,Weapon,Staff,Bow,Misc Any false 1 true 3100 4000 2
57 Cobalt LIGHTRES 41 50 20 Armor,Shield,Weapon,Staff,Bow,Misc Any false 1 true 8200 12000 3
58 Sapphire LIGHTRES 51 60 26 Armor,Shield,Weapon,Staff,Bow,Misc Any false 1 true 17100 20000 5
59 White MAGICRES 10 20 4 Armor,Shield,Weapon,Staff,Bow,Misc Any false 1 true 500 1500 2
60 Pearl MAGICRES 21 30 10 Armor,Shield,Weapon,Staff,Bow,Misc Any false 1 true 2100 3000 2
61 Ivory MAGICRES 31 40 16 Armor,Shield,Weapon,Staff,Bow,Misc Any false 1 true 3100 4000 2
62 Crystal MAGICRES 41 50 20 Armor,Shield,Weapon,Staff,Bow,Misc Any false 1 true 8200 12000 3
63 Diamond MAGICRES 51 60 26 Armor,Shield,Weapon,Staff,Bow,Misc Any false 1 true 17100 20000 5
64 Topaz ALLRES 10 15 8 Armor,Shield,Weapon,Staff,Bow,Misc Any false 1 true 2000 5000 3
65 Amber ALLRES 16 20 12 Armor,Shield,Weapon,Staff,Bow,Misc Any false 1 true 7400 10000 3
66 Jade ALLRES 21 30 18 Armor,Shield,Weapon,Staff,Bow,Misc Any false 1 true 11000 15000 3
67 Obsidian ALLRES 31 40 24 Armor,Shield,Weapon,Staff,Bow,Misc Any false 1 true 24000 40000 4
68 Emerald ALLRES 41 50 31 Shield,Weapon,Staff,Bow Any false 1 true 61000 75000 7
69 Hyena's MANA_CURSE 11 25 4 Staff,Misc Any false 1 false 100 1000 -2
70 Frog's MANA_CURSE 1 10 1 Staff,Misc Evil false 1 false 0 0 -2
71 Spider's MANA 10 15 1 Staff,Misc Evil false 1 true 500 1000 2
72 Raven's MANA 15 20 5 Staff,Misc Any false 1 true 1100 2000 3
73 Snake's MANA 21 30 9 Staff,Misc Any false 1 true 2100 4000 5
74 Serpent's MANA 30 40 15 Staff,Misc Any false 1 true 4100 6000 7
75 Drake's MANA 41 50 21 Staff,Misc Any false 1 true 6100 10000 9
76 Dragon's MANA 51 60 27 Staff,Misc Any false 1 true 10100 15000 11
77 Wyrm's MANA 61 80 35 Staff Any false 1 true 15100 19000 12
78 Hydra's MANA 81 100 60 Staff Any false 1 true 19100 30000 13
79 Angel's SPLLVLADD 1 1 15 Staff Good false 1 true 25000 25000 2
80 Arch-Angel's SPLLVLADD 2 2 25 Staff Good false 1 true 50000 50000 3
81 Plentiful CHARGES 2 2 4 Staff Any false 1 true 2000 2000 2
82 Bountiful CHARGES 3 3 9 Staff Any false 1 true 3000 3000 3
83 Flaming FIREDAM 1 10 7 Weapon,Staff Any false 1 true 5000 5000 2
84 Lightning LIGHTDAM 2 20 18 Weapon,Staff Any false 1 true 10000 10000 2
Jester's JESTERS 1 1 7 Weapon Any false true 1200 1200 3
Crystalline CRYSTALLINE 30 70 5 Weapon Any false true 1000 3000 3
Doppelganger's DOPPELGANGER 81 95 11 Weapon,Staff Any false true 2000 2400 10

195
assets/txtdata/items/item_suffixes.tsv

@ -1,99 +1,96 @@
name power power.value1 power.value2 minLevel itemTypes alignment doubleChance useful minVal maxVal multVal name power power.value1 power.value2 minLevel itemTypes alignment chance useful minVal maxVal multVal
quality DAMMOD 1 2 2 Weapon,Staff,Bow Any false true 100 200 2 quality DAMMOD 1 2 2 Weapon,Bow Any 1 true 100 200 2
maiming DAMMOD 3 5 7 Weapon,Staff,Bow Any false true 1300 1500 3 maiming DAMMOD 3 5 7 Weapon,Bow Any 1 true 1300 1500 3
slaying DAMMOD 6 8 15 Weapon Any false true 2600 3000 5 slaying DAMMOD 6 8 15 Weapon Any 1 true 2600 3000 5
gore DAMMOD 9 12 25 Weapon Any false true 4100 5000 8 gore DAMMOD 9 12 25 Weapon Any 1 true 4100 5000 8
carnage DAMMOD 13 16 35 Weapon Any false true 5100 10000 10 carnage DAMMOD 13 16 35 Weapon Any 1 true 5100 10000 10
slaughter DAMMOD 17 20 60 Weapon Any false true 10100 15000 13 slaughter DAMMOD 17 20 60 Weapon Any 1 true 10100 15000 13
pain GETHIT_CURSE 2 4 4 Armor,Shield,Misc Evil false false 0 0 -4 pain GETHIT_CURSE 2 4 4 Armor,Shield,Misc Evil 1 false 0 0 -4
tears GETHIT_CURSE 1 1 2 Armor,Shield,Misc Evil false false 0 0 -2 tears GETHIT_CURSE 1 1 2 Armor,Shield,Misc Evil 1 false 0 0 -2
health GETHIT 1 1 2 Armor,Shield,Misc Good false true 200 200 2 health GETHIT 1 1 2 Armor,Shield,Misc Good 1 true 200 200 2
protection GETHIT 2 2 6 Armor,Shield Good false true 400 800 4 protection GETHIT 2 2 6 Armor,Shield Good 1 true 400 800 4
absorption GETHIT 3 3 12 Armor,Shield Good false true 1001 2500 10 absorption GETHIT 3 3 12 Armor,Shield Good 1 true 1001 2500 10
deflection GETHIT 4 4 20 Armor Good false true 2500 6500 15 deflection GETHIT 4 4 20 Armor Good 1 true 2500 6500 15
osmosis GETHIT 5 6 50 Armor Good false true 7500 10000 20 osmosis GETHIT 5 6 50 Armor Good 1 true 7500 10000 20
frailty STR_CURSE 6 10 3 Armor,Shield,Weapon,Bow,Misc Evil false false 0 0 -3 frailty STR_CURSE 6 10 3 Armor,Shield,Weapon,Bow,Misc Evil 1 false 0 0 -3
weakness STR_CURSE 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Evil false false 0 0 -2 weakness STR_CURSE 1 5 1 Armor,Shield,Weapon,Bow,Misc Evil 1 false 0 0 -2
strength STR 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Any false true 200 1000 2 strength STR 1 5 1 Armor,Shield,Weapon,Bow,Misc Any 1 true 200 1000 2
might STR 6 10 5 Armor,Shield,Weapon,Bow,Misc Any false true 1200 2000 3 might STR 6 10 5 Armor,Shield,Weapon,Bow,Misc Any 1 true 1200 2000 3
power STR 11 15 11 Armor,Shield,Weapon,Bow,Misc Any false true 2200 3000 4 power STR 11 15 11 Armor,Shield,Weapon,Bow,Misc Any 1 true 2200 3000 4
giants STR 16 20 17 Armor,Weapon,Bow,Misc Any false true 3200 5000 7 giants STR 16 20 17 Armor,Weapon,Bow,Misc Any 1 true 3200 5000 7
titans STR 21 30 23 Weapon,Misc Any false true 5200 10000 10 titans STR 21 30 23 Weapon,Misc Any 1 true 5200 10000 10
paralysis DEX_CURSE 6 10 3 Armor,Shield,Weapon,Bow,Misc Evil false false 0 0 -3 paralysis DEX_CURSE 6 10 3 Armor,Shield,Weapon,Bow,Misc Evil 1 false 0 0 -3
atrophy DEX_CURSE 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Evil false false 0 0 -2 atrophy DEX_CURSE 1 5 1 Armor,Shield,Weapon,Bow,Misc Evil 1 false 0 0 -2
dexterity DEX 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Any false true 200 1000 2 dexterity DEX 1 5 1 Armor,Shield,Weapon,Bow,Misc Any 1 true 200 1000 2
skill DEX 6 10 5 Armor,Shield,Weapon,Bow,Misc Any false true 1200 2000 3 skill DEX 6 10 5 Armor,Shield,Weapon,Bow,Misc Any 1 true 1200 2000 3
accuracy DEX 11 15 11 Armor,Shield,Weapon,Bow,Misc Any false true 2200 3000 4 accuracy DEX 11 15 11 Armor,Shield,Weapon,Bow,Misc Any 1 true 2200 3000 4
precision DEX 16 20 17 Armor,Weapon,Bow,Misc Any false true 3200 5000 7 precision DEX 16 20 17 Armor,Weapon,Bow,Misc Any 1 true 3200 5000 7
perfection DEX 21 30 23 Bow,Misc Any false true 5200 10000 10 perfection DEX 21 30 23 Bow,Misc Any 1 true 5200 10000 10
the fool MAG_CURSE 6 10 3 Armor,Shield,Weapon,Staff,Bow,Misc Evil false false 0 0 -3 the fool MAG_CURSE 6 10 3 Armor,Shield,Weapon,Staff,Bow,Misc Evil 1 false 0 0 -3
dyslexia MAG_CURSE 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Evil false false 0 0 -2 dyslexia MAG_CURSE 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Evil 1 false 0 0 -2
magic MAG 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Any false true 200 1000 2 magic MAG 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 200 1000 2
the mind MAG 6 10 5 Armor,Shield,Weapon,Staff,Bow,Misc Any false true 1200 2000 3 the mind MAG 6 10 5 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 1200 2000 3
brilliance MAG 11 15 11 Armor,Shield,Weapon,Staff,Bow,Misc Any false true 2200 3000 4 brilliance MAG 11 15 11 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 2200 3000 4
sorcery MAG 16 20 17 Armor,Weapon,Staff,Bow,Misc Any false true 3200 5000 7 sorcery MAG 16 20 17 Armor,Weapon,Staff,Bow,Misc Any 1 true 3200 5000 7
wizardry MAG 21 30 23 Staff,Misc Any false true 5200 10000 10 wizardry MAG 21 30 23 Staff,Misc Any 1 true 5200 10000 10
illness VIT_CURSE 6 10 3 Armor,Shield,Weapon,Staff,Bow,Misc Evil false false 0 0 -3 illness VIT_CURSE 6 10 3 Armor,Shield,Weapon,Bow,Misc Evil 1 false 0 0 -3
disease VIT_CURSE 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Evil false false 0 0 -2 disease VIT_CURSE 1 5 1 Armor,Shield,Weapon,Bow,Misc Evil 1 false 0 0 -2
vitality VIT 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Good false true 200 1000 2 vitality VIT 1 5 1 Armor,Shield,Weapon,Bow,Misc Good 1 true 200 1000 2
zest VIT 6 10 5 Armor,Shield,Weapon,Bow,Misc Good false true 1200 2000 3 zest VIT 6 10 5 Armor,Shield,Weapon,Bow,Misc Good 1 true 1200 2000 3
vim VIT 11 15 11 Armor,Shield,Weapon,Bow,Misc Good false true 2200 3000 4 vim VIT 11 15 11 Armor,Shield,Weapon,Bow,Misc Good 1 true 2200 3000 4
vigor VIT 16 20 17 Armor,Weapon,Bow,Misc Good false true 3200 5000 7 vigor VIT 16 20 17 Armor,Weapon,Bow,Misc Good 1 true 3200 5000 7
life VIT 21 30 23 Misc Good false true 5200 10000 10 life VIT 21 30 23 Misc Good 1 true 5200 10000 10
trouble ATTRIBS_CURSE 6 10 12 Armor,Shield,Weapon,Staff,Bow,Misc Evil false false 0 0 -10 trouble ATTRIBS_CURSE 6 10 12 Armor,Shield,Weapon,Bow,Misc Evil 1 false 0 0 -10
the pit ATTRIBS_CURSE 1 5 5 Armor,Shield,Weapon,Staff,Bow,Misc Evil false false 0 0 -5 the pit ATTRIBS_CURSE 1 5 5 Armor,Shield,Weapon,Bow,Misc Evil 1 false 0 0 -5
the sky ATTRIBS 1 3 5 Armor,Shield,Weapon,Staff,Bow,Misc Any false true 800 4000 5 the sky ATTRIBS 1 3 5 Armor,Shield,Weapon,Bow,Misc Any 1 true 800 4000 5
the moon ATTRIBS 4 7 11 Armor,Shield,Weapon,Staff,Bow,Misc Any false true 4800 8000 10 the moon ATTRIBS 4 7 11 Armor,Shield,Weapon,Bow,Misc Any 1 true 4800 8000 10
the stars ATTRIBS 8 11 17 Armor,Weapon,Bow,Misc Any false true 8800 12000 15 the stars ATTRIBS 8 11 17 Armor,Weapon,Bow,Misc Any 1 true 8800 12000 15
the heavens ATTRIBS 12 15 25 Weapon,Bow,Misc Any false true 12800 20000 20 the heavens ATTRIBS 12 15 25 Weapon,Bow,Misc Any 1 true 12800 20000 20
the zodiac ATTRIBS 16 20 30 Misc Any false true 20800 40000 30 the zodiac ATTRIBS 16 20 30 Misc Any 1 true 20800 40000 30
the vulture LIFE_CURSE 11 25 4 Armor,Shield,Misc Evil false false 0 0 -4 the vulture LIFE_CURSE 11 25 4 Armor,Shield,Misc Evil 1 false 0 0 -4
the jackal LIFE_CURSE 1 10 1 Armor,Shield,Misc Evil false false 0 0 -2 the jackal LIFE_CURSE 1 10 1 Armor,Shield,Misc Evil 1 false 0 0 -2
the fox LIFE 10 15 1 Armor,Shield,Misc Any false true 100 1000 2 the fox LIFE 10 15 1 Armor,Shield,Misc Any 1 true 100 1000 2
the jaguar LIFE 16 20 5 Armor,Shield,Misc Any false true 1100 2000 3 the jaguar LIFE 16 20 5 Armor,Shield,Misc Any 1 true 1100 2000 3
the eagle LIFE 21 30 9 Armor,Shield,Misc Any false true 2100 4000 5 the eagle LIFE 21 30 9 Armor,Shield,Misc Any 1 true 2100 4000 5
the wolf LIFE 30 40 15 Armor,Shield,Misc Any false true 4100 6000 7 the wolf LIFE 30 40 15 Armor,Shield,Misc Any 1 true 4100 6000 7
the tiger LIFE 41 50 21 Armor,Shield,Misc Any false true 6100 10000 9 the tiger LIFE 41 50 21 Armor,Shield,Misc Any 1 true 6100 10000 9
the lion LIFE 51 60 27 Armor,Misc Any false true 10100 15000 11 the lion LIFE 51 60 27 Armor,Misc Any 1 true 10100 15000 11
the mammoth LIFE 61 80 35 Armor Any false true 15100 19000 12 the mammoth LIFE 61 80 35 Armor Any 1 true 15100 19000 12
the whale LIFE 81 100 60 Armor Any false true 19100 30000 13 the whale LIFE 81 100 60 Armor Any 1 true 19100 30000 13
fragility DUR_CURSE 100 100 3 Armor,Shield,Weapon Evil false false 0 0 -4 fragility DUR_CURSE 100 100 3 Armor,Shield,Weapon Evil 1 false 0 0 -4
brittleness DUR_CURSE 26 75 1 Armor,Shield,Weapon Evil false false 0 0 -2 brittleness DUR_CURSE 26 75 1 Armor,Shield,Weapon Evil 1 false 0 0 -2
sturdiness DUR 26 75 1 Armor,Shield,Weapon,Staff Any false true 100 100 2 sturdiness DUR 26 75 1 Armor,Shield,Weapon Any 1 true 100 100 2
craftsmanship DUR 51 100 6 Armor,Shield,Weapon,Staff Any false true 200 200 2 craftsmanship DUR 51 100 6 Armor,Shield,Weapon Any 1 true 200 200 2
structure DUR 101 200 12 Armor,Shield,Weapon,Staff Any false true 300 300 2 structure DUR 101 200 12 Armor,Shield,Weapon Any 1 true 300 300 2
the ages INDESTRUCTIBLE 25 Armor,Shield,Weapon,Staff Any false true 600 600 5 the ages INDESTRUCTIBLE 25 Armor,Shield,Weapon Any 1 true 600 600 5
the dark LIGHT_CURSE 4 4 6 Armor,Weapon,Misc Evil false false 0 0 -3 the dark LIGHT_CURSE 4 4 6 Armor,Weapon,Misc Evil 1 false 0 0 -3
the night LIGHT_CURSE 2 2 3 Armor,Weapon,Misc Evil false false 0 0 -2 the night LIGHT_CURSE 2 2 3 Armor,Weapon,Misc Evil 1 false 0 0 -2
light LIGHT 2 2 4 Armor,Weapon,Misc Good false true 750 750 2 light LIGHT 2 2 4 Armor,Weapon,Misc Good 1 true 750 750 2
radiance LIGHT 4 4 8 Armor,Weapon,Misc Good false true 1500 1500 3 radiance LIGHT 4 4 8 Armor,Weapon,Misc Good 1 true 1500 1500 3
flame FIRE_ARROWS 1 3 1 Bow Any false true 2000 2000 2 flame FIRE_ARROWS 1 3 1 Bow Any 1 true 2000 2000 2
fire FIRE_ARROWS 1 6 11 Bow Any false true 4000 4000 4 fire FIRE_ARROWS 1 6 11 Bow Any 1 true 4000 4000 4
burning FIRE_ARROWS 1 16 35 Bow Any false true 6000 6000 6 burning FIRE_ARROWS 1 16 35 Bow Any 1 true 6000 6000 6
shock LIGHT_ARROWS 1 6 13 Bow Any false true 6000 6000 2 shock LIGHT_ARROWS 1 6 13 Bow Any 1 true 6000 6000 2
lightning LIGHT_ARROWS 1 10 21 Bow Any false true 8000 8000 4 lightning LIGHT_ARROWS 1 10 21 Bow Any 1 true 8000 8000 4
thunder LIGHT_ARROWS 1 20 60 Bow Any false true 12000 12000 6 thunder LIGHT_ARROWS 1 20 60 Bow Any 1 true 12000 12000 6
many DUR 100 100 3 Bow Any false true 750 750 2 many DUR 100 100 3 Bow Any 1 true 750 750 2
plenty DUR 200 200 7 Bow Any false true 1500 1500 3 plenty DUR 200 200 7 Bow Any 1 true 1500 1500 3
thorns THORNS 1 3 1 Armor,Shield Any false true 500 500 2 thorns THORNS 1 3 1 Armor,Shield Any 1 true 500 500 2
corruption NOMANA 5 Armor,Shield,Weapon Evil false false -1000 -1000 2 corruption NOMANA 5 Armor,Shield,Weapon Evil 1 false -1000 -1000 2
thieves ABSHALFTRAP 11 Armor,Shield,Misc Any false true 1500 1500 2 thieves ABSHALFTRAP 11 Armor,Shield,Misc Any 1 true 1500 1500 2
the bear KNOCKBACK 5 Weapon,Staff,Bow Evil false true 750 750 2 the bear KNOCKBACK 5 Weapon,Staff,Bow Evil 1 true 750 750 2
the bat STEALMANA 3 3 8 Weapon Any false true 7500 7500 3 the bat STEALMANA 3 3 8 Weapon Any 1 true 7500 7500 3
vampires STEALMANA 5 5 19 Weapon Any false true 15000 15000 3 vampires STEALMANA 5 5 19 Weapon Any 1 true 15000 15000 3
the leech STEALLIFE 3 3 8 Weapon Any false true 7500 7500 3 the leech STEALLIFE 3 3 8 Weapon Any 1 true 7500 7500 3
blood STEALLIFE 5 5 19 Weapon Any false true 15000 15000 3 blood STEALLIFE 5 5 19 Weapon Any 1 true 15000 15000 3
piercing TARGAC 1 1 1 Weapon,Bow Any false true 1000 1000 3 piercing TARGAC 2 6 1 Weapon,Bow Any 1 true 1000 1000 3
puncturing TARGAC 2 2 9 Weapon,Bow Any false true 2000 2000 6 puncturing TARGAC 4 12 9 Weapon,Bow Any 1 true 2000 2000 6
bashing TARGAC 3 3 17 Weapon Any false true 4000 4000 12 bashing TARGAC 8 24 17 Weapon Any 1 true 4000 4000 12
readiness FASTATTACK 1 1 1 Weapon,Staff,Bow Any false true 2000 2000 2 readiness FASTATTACK 1 1 1 Weapon,Staff,Bow Any 1 true 2000 2000 2
swiftness FASTATTACK 2 2 10 Weapon,Staff,Bow Any false true 4000 4000 4 swiftness FASTATTACK 2 2 10 Weapon,Staff,Bow Any 1 true 4000 4000 4
speed FASTATTACK 3 3 19 Weapon,Staff Any false true 8000 8000 8 speed FASTATTACK 3 3 19 Weapon,Staff Any 1 true 8000 8000 8
haste FASTATTACK 4 4 27 Weapon,Staff Any false true 16000 16000 16 haste FASTATTACK 4 4 27 Weapon,Staff Any 1 true 16000 16000 16
balance FASTRECOVER 1 1 1 Armor,Misc Any false true 2000 2000 2 balance FASTRECOVER 1 1 1 Armor,Misc Any 1 true 2000 2000 2
stability FASTRECOVER 2 2 10 Armor,Misc Any false true 4000 4000 4 stability FASTRECOVER 2 2 10 Armor,Misc Any 1 true 4000 4000 4
harmony FASTRECOVER 3 3 20 Armor,Misc Any false true 8000 8000 8 harmony FASTRECOVER 3 3 20 Armor,Misc Any 1 true 8000 8000 8
blocking FASTBLOCK 1 1 5 Shield Any false true 4000 4000 4 blocking FASTBLOCK 1 1 5 Shield Any 1 true 4000 4000 4
devastation DEVASTATION 1 1 1 Weapon,Staff,Bow Any false true 1200 1200 3
decay DECAY 150 250 1 Weapon,Staff,Bow Any false true 200 200 2
peril PERIL 1 1 5 Weapon,Staff,Bow Any false true 500 500 1

1 name power power.value1 power.value2 minLevel itemTypes alignment doubleChance chance useful minVal maxVal multVal
2 quality DAMMOD 1 2 2 Weapon,Staff,Bow Weapon,Bow Any false 1 true 100 200 2
3 maiming DAMMOD 3 5 7 Weapon,Staff,Bow Weapon,Bow Any false 1 true 1300 1500 3
4 slaying DAMMOD 6 8 15 Weapon Any false 1 true 2600 3000 5
5 gore DAMMOD 9 12 25 Weapon Any false 1 true 4100 5000 8
6 carnage DAMMOD 13 16 35 Weapon Any false 1 true 5100 10000 10
7 slaughter DAMMOD 17 20 60 Weapon Any false 1 true 10100 15000 13
8 pain GETHIT_CURSE 2 4 4 Armor,Shield,Misc Evil false 1 false 0 0 -4
9 tears GETHIT_CURSE 1 1 2 Armor,Shield,Misc Evil false 1 false 0 0 -2
10 health GETHIT 1 1 2 Armor,Shield,Misc Good false 1 true 200 200 2
11 protection GETHIT 2 2 6 Armor,Shield Good false 1 true 400 800 4
12 absorption GETHIT 3 3 12 Armor,Shield Good false 1 true 1001 2500 10
13 deflection GETHIT 4 4 20 Armor Good false 1 true 2500 6500 15
14 osmosis GETHIT 5 6 50 Armor Good false 1 true 7500 10000 20
15 frailty STR_CURSE 6 10 3 Armor,Shield,Weapon,Bow,Misc Evil false 1 false 0 0 -3
16 weakness STR_CURSE 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Armor,Shield,Weapon,Bow,Misc Evil false 1 false 0 0 -2
17 strength STR 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Armor,Shield,Weapon,Bow,Misc Any false 1 true 200 1000 2
18 might STR 6 10 5 Armor,Shield,Weapon,Bow,Misc Any false 1 true 1200 2000 3
19 power STR 11 15 11 Armor,Shield,Weapon,Bow,Misc Any false 1 true 2200 3000 4
20 giants STR 16 20 17 Armor,Weapon,Bow,Misc Any false 1 true 3200 5000 7
21 titans STR 21 30 23 Weapon,Misc Any false 1 true 5200 10000 10
22 paralysis DEX_CURSE 6 10 3 Armor,Shield,Weapon,Bow,Misc Evil false 1 false 0 0 -3
23 atrophy DEX_CURSE 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Armor,Shield,Weapon,Bow,Misc Evil false 1 false 0 0 -2
24 dexterity DEX 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Armor,Shield,Weapon,Bow,Misc Any false 1 true 200 1000 2
25 skill DEX 6 10 5 Armor,Shield,Weapon,Bow,Misc Any false 1 true 1200 2000 3
26 accuracy DEX 11 15 11 Armor,Shield,Weapon,Bow,Misc Any false 1 true 2200 3000 4
27 precision DEX 16 20 17 Armor,Weapon,Bow,Misc Any false 1 true 3200 5000 7
28 perfection DEX 21 30 23 Bow,Misc Any false 1 true 5200 10000 10
29 the fool MAG_CURSE 6 10 3 Armor,Shield,Weapon,Staff,Bow,Misc Evil false 1 false 0 0 -3
30 dyslexia MAG_CURSE 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Evil false 1 false 0 0 -2
31 magic MAG 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Any false 1 true 200 1000 2
32 the mind MAG 6 10 5 Armor,Shield,Weapon,Staff,Bow,Misc Any false 1 true 1200 2000 3
33 brilliance MAG 11 15 11 Armor,Shield,Weapon,Staff,Bow,Misc Any false 1 true 2200 3000 4
34 sorcery MAG 16 20 17 Armor,Weapon,Staff,Bow,Misc Any false 1 true 3200 5000 7
35 wizardry MAG 21 30 23 Staff,Misc Any false 1 true 5200 10000 10
36 illness VIT_CURSE 6 10 3 Armor,Shield,Weapon,Staff,Bow,Misc Armor,Shield,Weapon,Bow,Misc Evil false 1 false 0 0 -3
37 disease VIT_CURSE 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Armor,Shield,Weapon,Bow,Misc Evil false 1 false 0 0 -2
38 vitality VIT 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Armor,Shield,Weapon,Bow,Misc Good false 1 true 200 1000 2
39 zest VIT 6 10 5 Armor,Shield,Weapon,Bow,Misc Good false 1 true 1200 2000 3
40 vim VIT 11 15 11 Armor,Shield,Weapon,Bow,Misc Good false 1 true 2200 3000 4
41 vigor VIT 16 20 17 Armor,Weapon,Bow,Misc Good false 1 true 3200 5000 7
42 life VIT 21 30 23 Misc Good false 1 true 5200 10000 10
43 trouble ATTRIBS_CURSE 6 10 12 Armor,Shield,Weapon,Staff,Bow,Misc Armor,Shield,Weapon,Bow,Misc Evil false 1 false 0 0 -10
44 the pit ATTRIBS_CURSE 1 5 5 Armor,Shield,Weapon,Staff,Bow,Misc Armor,Shield,Weapon,Bow,Misc Evil false 1 false 0 0 -5
45 the sky ATTRIBS 1 3 5 Armor,Shield,Weapon,Staff,Bow,Misc Armor,Shield,Weapon,Bow,Misc Any false 1 true 800 4000 5
46 the moon ATTRIBS 4 7 11 Armor,Shield,Weapon,Staff,Bow,Misc Armor,Shield,Weapon,Bow,Misc Any false 1 true 4800 8000 10
47 the stars ATTRIBS 8 11 17 Armor,Weapon,Bow,Misc Any false 1 true 8800 12000 15
48 the heavens ATTRIBS 12 15 25 Weapon,Bow,Misc Any false 1 true 12800 20000 20
49 the zodiac ATTRIBS 16 20 30 Misc Any false 1 true 20800 40000 30
50 the vulture LIFE_CURSE 11 25 4 Armor,Shield,Misc Evil false 1 false 0 0 -4
51 the jackal LIFE_CURSE 1 10 1 Armor,Shield,Misc Evil false 1 false 0 0 -2
52 the fox LIFE 10 15 1 Armor,Shield,Misc Any false 1 true 100 1000 2
53 the jaguar LIFE 16 20 5 Armor,Shield,Misc Any false 1 true 1100 2000 3
54 the eagle LIFE 21 30 9 Armor,Shield,Misc Any false 1 true 2100 4000 5
55 the wolf LIFE 30 40 15 Armor,Shield,Misc Any false 1 true 4100 6000 7
56 the tiger LIFE 41 50 21 Armor,Shield,Misc Any false 1 true 6100 10000 9
57 the lion LIFE 51 60 27 Armor,Misc Any false 1 true 10100 15000 11
58 the mammoth LIFE 61 80 35 Armor Any false 1 true 15100 19000 12
59 the whale LIFE 81 100 60 Armor Any false 1 true 19100 30000 13
60 fragility DUR_CURSE 100 100 3 Armor,Shield,Weapon Evil false 1 false 0 0 -4
61 brittleness DUR_CURSE 26 75 1 Armor,Shield,Weapon Evil false 1 false 0 0 -2
62 sturdiness DUR 26 75 1 Armor,Shield,Weapon,Staff Armor,Shield,Weapon Any false 1 true 100 100 2
63 craftsmanship DUR 51 100 6 Armor,Shield,Weapon,Staff Armor,Shield,Weapon Any false 1 true 200 200 2
64 structure DUR 101 200 12 Armor,Shield,Weapon,Staff Armor,Shield,Weapon Any false 1 true 300 300 2
65 the ages INDESTRUCTIBLE 25 Armor,Shield,Weapon,Staff Armor,Shield,Weapon Any false 1 true 600 600 5
66 the dark LIGHT_CURSE 4 4 6 Armor,Weapon,Misc Evil false 1 false 0 0 -3
67 the night LIGHT_CURSE 2 2 3 Armor,Weapon,Misc Evil false 1 false 0 0 -2
68 light LIGHT 2 2 4 Armor,Weapon,Misc Good false 1 true 750 750 2
69 radiance LIGHT 4 4 8 Armor,Weapon,Misc Good false 1 true 1500 1500 3
70 flame FIRE_ARROWS 1 3 1 Bow Any false 1 true 2000 2000 2
71 fire FIRE_ARROWS 1 6 11 Bow Any false 1 true 4000 4000 4
72 burning FIRE_ARROWS 1 16 35 Bow Any false 1 true 6000 6000 6
73 shock LIGHT_ARROWS 1 6 13 Bow Any false 1 true 6000 6000 2
74 lightning LIGHT_ARROWS 1 10 21 Bow Any false 1 true 8000 8000 4
75 thunder LIGHT_ARROWS 1 20 60 Bow Any false 1 true 12000 12000 6
76 many DUR 100 100 3 Bow Any false 1 true 750 750 2
77 plenty DUR 200 200 7 Bow Any false 1 true 1500 1500 3
78 thorns THORNS 1 3 1 Armor,Shield Any false 1 true 500 500 2
79 corruption NOMANA 5 Armor,Shield,Weapon Evil false 1 false -1000 -1000 2
80 thieves ABSHALFTRAP 11 Armor,Shield,Misc Any false 1 true 1500 1500 2
81 the bear KNOCKBACK 5 Weapon,Staff,Bow Evil false 1 true 750 750 2
82 the bat STEALMANA 3 3 8 Weapon Any false 1 true 7500 7500 3
83 vampires STEALMANA 5 5 19 Weapon Any false 1 true 15000 15000 3
84 the leech STEALLIFE 3 3 8 Weapon Any false 1 true 7500 7500 3
85 blood STEALLIFE 5 5 19 Weapon Any false 1 true 15000 15000 3
86 piercing TARGAC 1 2 1 6 1 Weapon,Bow Any false 1 true 1000 1000 3
87 puncturing TARGAC 2 4 2 12 9 Weapon,Bow Any false 1 true 2000 2000 6
88 bashing TARGAC 3 8 3 24 17 Weapon Any false 1 true 4000 4000 12
89 readiness FASTATTACK 1 1 1 Weapon,Staff,Bow Any false 1 true 2000 2000 2
90 swiftness FASTATTACK 2 2 10 Weapon,Staff,Bow Any false 1 true 4000 4000 4
91 speed FASTATTACK 3 3 19 Weapon,Staff Any false 1 true 8000 8000 8
92 haste FASTATTACK 4 4 27 Weapon,Staff Any false 1 true 16000 16000 16
93 balance FASTRECOVER 1 1 1 Armor,Misc Any false 1 true 2000 2000 2
94 stability FASTRECOVER 2 2 10 Armor,Misc Any false 1 true 4000 4000 4
95 harmony FASTRECOVER 3 3 20 Armor,Misc Any false 1 true 8000 8000 8
96 blocking FASTBLOCK 1 1 5 Shield Any false 1 true 4000 4000 4
devastation DEVASTATION 1 1 1 Weapon,Staff,Bow Any false true 1200 1200 3
decay DECAY 150 250 1 Weapon,Staff,Bow Any false true 200 200 2
peril PERIL 1 1 5 Weapon,Staff,Bow Any false true 500 500 1

0
assets/nlevels/cutl5w.clx → mods/Hellfire/nlevels/cutl5w.clx

0
assets/nlevels/cutl6w.clx → mods/Hellfire/nlevels/cutl6w.clx

0
assets/nlevels/l5data/cornerstone.dun → mods/Hellfire/nlevels/l5data/cornerstone.dun

0
assets/nlevels/l5data/uberroom.dun → mods/Hellfire/nlevels/l5data/uberroom.dun

87
mods/Hellfire/txtdata/items/item_prefixes.tsv

@ -0,0 +1,87 @@
name power power.value1 power.value2 minLevel itemTypes alignment chance useful minVal maxVal multVal
Tin TOHIT_CURSE 6 10 3 Weapon,Bow,Misc Any 2 false 0 0 -3
Brass TOHIT_CURSE 1 5 1 Weapon,Bow,Misc Any 2 false 0 0 -2
Bronze TOHIT 1 5 1 Weapon,Bow,Misc Any 2 true 100 500 2
Iron TOHIT 6 10 4 Weapon,Bow,Misc Any 2 true 600 1000 3
Steel TOHIT 11 15 6 Weapon,Bow,Misc Any 2 true 1100 1500 5
Silver TOHIT 16 20 9 Weapon,Bow,Misc Good 2 true 1600 2000 7
Gold TOHIT 21 30 12 Weapon,Bow,Misc Good 2 true 2100 3000 9
Platinum TOHIT 31 40 16 Weapon,Bow Good 2 true 3100 4000 11
Mithril TOHIT 41 60 20 Weapon,Bow Good 2 true 4100 6000 13
Meteoric TOHIT 61 80 23 Weapon,Bow Any 2 true 6100 10000 15
Weird TOHIT 81 100 35 Weapon,Bow Any 2 true 10100 14000 17
Strange TOHIT 101 150 60 Weapon,Bow Any 2 true 14100 20000 20
Useless DAMP_CURSE 100 100 5 Weapon,Staff,Bow Any 2 false 0 0 -8
Bent DAMP_CURSE 50 75 3 Weapon,Staff,Bow Any 2 false 0 0 -4
Weak DAMP_CURSE 25 45 1 Weapon,Staff,Bow Any 2 false 0 0 -3
Jagged DAMP 20 35 4 Weapon,Staff,Bow Any 2 true 250 450 3
Deadly DAMP 36 50 6 Weapon,Staff,Bow Any 2 true 500 700 4
Heavy DAMP 51 65 9 Weapon,Staff,Bow Any 2 true 750 950 5
Vicious DAMP 66 80 12 Weapon,Staff,Bow Evil 2 true 1000 1450 8
Brutal DAMP 81 95 16 Weapon,Staff,Bow Any 2 true 1500 1950 10
Massive DAMP 96 110 20 Weapon,Staff,Bow Any 2 true 2000 2450 13
Savage DAMP 111 125 23 Weapon,Bow Any 2 true 2500 3000 15
Ruthless DAMP 126 150 35 Weapon,Bow Any 2 true 10100 15000 17
Merciless DAMP 151 175 60 Weapon,Bow Any 2 true 15000 20000 20
Clumsy TOHIT_DAMP_CURSE 50 75 5 Weapon,Staff,Bow Any 2 false 0 0 -7
Dull TOHIT_DAMP_CURSE 25 45 1 Weapon,Staff,Bow Any 2 false 0 0 -5
Sharp TOHIT_DAMP 20 35 1 Weapon,Staff,Bow Any 2 false 350 950 5
Fine TOHIT_DAMP 36 50 6 Weapon,Staff,Bow Any 2 true 1100 1700 7
Warrior's TOHIT_DAMP 51 65 10 Weapon,Staff,Bow Any 2 true 1850 2450 13
Soldier's TOHIT_DAMP 66 80 15 Weapon,Staff Any 2 true 2600 3950 17
Lord's TOHIT_DAMP 81 95 19 Weapon,Staff Any 2 true 4100 5950 21
Knight's TOHIT_DAMP 96 110 23 Weapon,Staff Any 2 true 6100 8450 26
Master's TOHIT_DAMP 111 125 28 Weapon,Staff Any 2 true 8600 13000 30
Champion's TOHIT_DAMP 126 150 40 Weapon,Staff Any 2 true 15200 24000 33
King's TOHIT_DAMP 151 175 28 Weapon,Staff Any 2 true 24100 35000 38
Vulnerable ACP_CURSE 51 100 3 Armor,Shield Any 2 false 0 0 -3
Rusted ACP_CURSE 25 50 1 Armor,Shield Any 2 false 0 0 -2
Fine ACP 20 30 1 Armor,Shield Any 2 true 20 100 2
Strong ACP 31 40 3 Armor,Shield Any 2 true 120 200 3
Grand ACP 41 55 6 Armor,Shield Any 2 true 220 300 5
Valiant ACP 56 70 10 Armor,Shield Any 2 true 320 400 7
Glorious ACP 71 90 14 Armor,Shield Good 2 true 420 600 9
Blessed ACP 91 110 19 Armor,Shield Good 2 true 620 800 11
Saintly ACP 111 130 24 Armor,Shield Good 2 true 820 1200 13
Awesome ACP 131 150 28 Armor,Shield Good 2 true 1220 2000 15
Holy ACP 151 170 35 Armor,Shield Good 2 true 5200 6000 17
Godly ACP 171 200 60 Armor,Shield Good 2 true 6200 7000 20
Red FIRERES 10 20 4 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 500 1500 2
Crimson FIRERES 21 30 10 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 2100 3000 2
Crimson FIRERES 31 40 16 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 3100 4000 2
Garnet FIRERES 41 50 20 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 8200 12000 3
Ruby FIRERES 51 60 26 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 17100 20000 5
Blue LIGHTRES 10 20 4 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 500 1500 2
Azure LIGHTRES 21 30 10 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 2100 3000 2
Lapis LIGHTRES 31 40 16 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 3100 4000 2
Cobalt LIGHTRES 41 50 20 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 8200 12000 3
Sapphire LIGHTRES 51 60 26 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 17100 20000 5
White MAGICRES 10 20 4 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 500 1500 2
Pearl MAGICRES 21 30 10 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 2100 3000 2
Ivory MAGICRES 31 40 16 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 3100 4000 2
Crystal MAGICRES 41 50 20 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 8200 12000 3
Diamond MAGICRES 51 60 26 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 17100 20000 5
Topaz ALLRES 10 15 8 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 2000 5000 3
Amber ALLRES 16 20 12 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 7400 10000 3
Jade ALLRES 21 30 18 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 11000 15000 3
Obsidian ALLRES 31 40 24 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 24000 40000 4
Emerald ALLRES 41 50 31 Shield,Weapon,Staff,Bow Any 1 true 61000 75000 7
Hyena's MANA_CURSE 11 25 4 Staff,Misc Any 1 false 100 1000 -2
Frog's MANA_CURSE 1 10 1 Staff,Misc Evil 1 false 0 0 -2
Spider's MANA 10 15 1 Staff,Misc Evil 1 true 500 1000 2
Raven's MANA 15 20 5 Staff,Misc Any 1 true 1100 2000 3
Snake's MANA 21 30 9 Staff,Misc Any 1 true 2100 4000 5
Serpent's MANA 30 40 15 Staff,Misc Any 1 true 4100 6000 7
Drake's MANA 41 50 21 Staff,Misc Any 1 true 6100 10000 9
Dragon's MANA 51 60 27 Staff,Misc Any 1 true 10100 15000 11
Wyrm's MANA 61 80 35 Staff Any 1 true 15100 19000 12
Hydra's MANA 81 100 60 Staff Any 1 true 19100 30000 13
Angel's SPLLVLADD 1 1 15 Staff Good 1 true 25000 25000 2
Arch-Angel's SPLLVLADD 2 2 25 Staff Good 1 true 50000 50000 3
Plentiful CHARGES 2 2 4 Staff Any 1 true 2000 2000 2
Bountiful CHARGES 3 3 9 Staff Any 1 true 3000 3000 3
Flaming FIREDAM 1 10 7 Weapon,Staff Any 1 true 5000 5000 2
Lightning LIGHTDAM 2 20 18 Weapon,Staff Any 1 true 10000 10000 2
Jester's JESTERS 1 1 7 Weapon Any 1 true 1200 1200 3
Crystalline CRYSTALLINE 30 70 5 Weapon Any 1 true 1000 3000 3
Doppelganger's DOPPELGANGER 81 95 11 Weapon,Staff Any 1 true 2000 2400 10
1 name power power.value1 power.value2 minLevel itemTypes alignment chance useful minVal maxVal multVal
2 Tin TOHIT_CURSE 6 10 3 Weapon,Bow,Misc Any 2 false 0 0 -3
3 Brass TOHIT_CURSE 1 5 1 Weapon,Bow,Misc Any 2 false 0 0 -2
4 Bronze TOHIT 1 5 1 Weapon,Bow,Misc Any 2 true 100 500 2
5 Iron TOHIT 6 10 4 Weapon,Bow,Misc Any 2 true 600 1000 3
6 Steel TOHIT 11 15 6 Weapon,Bow,Misc Any 2 true 1100 1500 5
7 Silver TOHIT 16 20 9 Weapon,Bow,Misc Good 2 true 1600 2000 7
8 Gold TOHIT 21 30 12 Weapon,Bow,Misc Good 2 true 2100 3000 9
9 Platinum TOHIT 31 40 16 Weapon,Bow Good 2 true 3100 4000 11
10 Mithril TOHIT 41 60 20 Weapon,Bow Good 2 true 4100 6000 13
11 Meteoric TOHIT 61 80 23 Weapon,Bow Any 2 true 6100 10000 15
12 Weird TOHIT 81 100 35 Weapon,Bow Any 2 true 10100 14000 17
13 Strange TOHIT 101 150 60 Weapon,Bow Any 2 true 14100 20000 20
14 Useless DAMP_CURSE 100 100 5 Weapon,Staff,Bow Any 2 false 0 0 -8
15 Bent DAMP_CURSE 50 75 3 Weapon,Staff,Bow Any 2 false 0 0 -4
16 Weak DAMP_CURSE 25 45 1 Weapon,Staff,Bow Any 2 false 0 0 -3
17 Jagged DAMP 20 35 4 Weapon,Staff,Bow Any 2 true 250 450 3
18 Deadly DAMP 36 50 6 Weapon,Staff,Bow Any 2 true 500 700 4
19 Heavy DAMP 51 65 9 Weapon,Staff,Bow Any 2 true 750 950 5
20 Vicious DAMP 66 80 12 Weapon,Staff,Bow Evil 2 true 1000 1450 8
21 Brutal DAMP 81 95 16 Weapon,Staff,Bow Any 2 true 1500 1950 10
22 Massive DAMP 96 110 20 Weapon,Staff,Bow Any 2 true 2000 2450 13
23 Savage DAMP 111 125 23 Weapon,Bow Any 2 true 2500 3000 15
24 Ruthless DAMP 126 150 35 Weapon,Bow Any 2 true 10100 15000 17
25 Merciless DAMP 151 175 60 Weapon,Bow Any 2 true 15000 20000 20
26 Clumsy TOHIT_DAMP_CURSE 50 75 5 Weapon,Staff,Bow Any 2 false 0 0 -7
27 Dull TOHIT_DAMP_CURSE 25 45 1 Weapon,Staff,Bow Any 2 false 0 0 -5
28 Sharp TOHIT_DAMP 20 35 1 Weapon,Staff,Bow Any 2 false 350 950 5
29 Fine TOHIT_DAMP 36 50 6 Weapon,Staff,Bow Any 2 true 1100 1700 7
30 Warrior's TOHIT_DAMP 51 65 10 Weapon,Staff,Bow Any 2 true 1850 2450 13
31 Soldier's TOHIT_DAMP 66 80 15 Weapon,Staff Any 2 true 2600 3950 17
32 Lord's TOHIT_DAMP 81 95 19 Weapon,Staff Any 2 true 4100 5950 21
33 Knight's TOHIT_DAMP 96 110 23 Weapon,Staff Any 2 true 6100 8450 26
34 Master's TOHIT_DAMP 111 125 28 Weapon,Staff Any 2 true 8600 13000 30
35 Champion's TOHIT_DAMP 126 150 40 Weapon,Staff Any 2 true 15200 24000 33
36 King's TOHIT_DAMP 151 175 28 Weapon,Staff Any 2 true 24100 35000 38
37 Vulnerable ACP_CURSE 51 100 3 Armor,Shield Any 2 false 0 0 -3
38 Rusted ACP_CURSE 25 50 1 Armor,Shield Any 2 false 0 0 -2
39 Fine ACP 20 30 1 Armor,Shield Any 2 true 20 100 2
40 Strong ACP 31 40 3 Armor,Shield Any 2 true 120 200 3
41 Grand ACP 41 55 6 Armor,Shield Any 2 true 220 300 5
42 Valiant ACP 56 70 10 Armor,Shield Any 2 true 320 400 7
43 Glorious ACP 71 90 14 Armor,Shield Good 2 true 420 600 9
44 Blessed ACP 91 110 19 Armor,Shield Good 2 true 620 800 11
45 Saintly ACP 111 130 24 Armor,Shield Good 2 true 820 1200 13
46 Awesome ACP 131 150 28 Armor,Shield Good 2 true 1220 2000 15
47 Holy ACP 151 170 35 Armor,Shield Good 2 true 5200 6000 17
48 Godly ACP 171 200 60 Armor,Shield Good 2 true 6200 7000 20
49 Red FIRERES 10 20 4 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 500 1500 2
50 Crimson FIRERES 21 30 10 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 2100 3000 2
51 Crimson FIRERES 31 40 16 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 3100 4000 2
52 Garnet FIRERES 41 50 20 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 8200 12000 3
53 Ruby FIRERES 51 60 26 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 17100 20000 5
54 Blue LIGHTRES 10 20 4 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 500 1500 2
55 Azure LIGHTRES 21 30 10 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 2100 3000 2
56 Lapis LIGHTRES 31 40 16 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 3100 4000 2
57 Cobalt LIGHTRES 41 50 20 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 8200 12000 3
58 Sapphire LIGHTRES 51 60 26 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 17100 20000 5
59 White MAGICRES 10 20 4 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 500 1500 2
60 Pearl MAGICRES 21 30 10 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 2100 3000 2
61 Ivory MAGICRES 31 40 16 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 3100 4000 2
62 Crystal MAGICRES 41 50 20 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 8200 12000 3
63 Diamond MAGICRES 51 60 26 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 17100 20000 5
64 Topaz ALLRES 10 15 8 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 2000 5000 3
65 Amber ALLRES 16 20 12 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 7400 10000 3
66 Jade ALLRES 21 30 18 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 11000 15000 3
67 Obsidian ALLRES 31 40 24 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 24000 40000 4
68 Emerald ALLRES 41 50 31 Shield,Weapon,Staff,Bow Any 1 true 61000 75000 7
69 Hyena's MANA_CURSE 11 25 4 Staff,Misc Any 1 false 100 1000 -2
70 Frog's MANA_CURSE 1 10 1 Staff,Misc Evil 1 false 0 0 -2
71 Spider's MANA 10 15 1 Staff,Misc Evil 1 true 500 1000 2
72 Raven's MANA 15 20 5 Staff,Misc Any 1 true 1100 2000 3
73 Snake's MANA 21 30 9 Staff,Misc Any 1 true 2100 4000 5
74 Serpent's MANA 30 40 15 Staff,Misc Any 1 true 4100 6000 7
75 Drake's MANA 41 50 21 Staff,Misc Any 1 true 6100 10000 9
76 Dragon's MANA 51 60 27 Staff,Misc Any 1 true 10100 15000 11
77 Wyrm's MANA 61 80 35 Staff Any 1 true 15100 19000 12
78 Hydra's MANA 81 100 60 Staff Any 1 true 19100 30000 13
79 Angel's SPLLVLADD 1 1 15 Staff Good 1 true 25000 25000 2
80 Arch-Angel's SPLLVLADD 2 2 25 Staff Good 1 true 50000 50000 3
81 Plentiful CHARGES 2 2 4 Staff Any 1 true 2000 2000 2
82 Bountiful CHARGES 3 3 9 Staff Any 1 true 3000 3000 3
83 Flaming FIREDAM 1 10 7 Weapon,Staff Any 1 true 5000 5000 2
84 Lightning LIGHTDAM 2 20 18 Weapon,Staff Any 1 true 10000 10000 2
85 Jester's JESTERS 1 1 7 Weapon Any 1 true 1200 1200 3
86 Crystalline CRYSTALLINE 30 70 5 Weapon Any 1 true 1000 3000 3
87 Doppelganger's DOPPELGANGER 81 95 11 Weapon,Staff Any 1 true 2000 2400 10

99
mods/Hellfire/txtdata/items/item_suffixes.tsv

@ -0,0 +1,99 @@
name power power.value1 power.value2 minLevel itemTypes alignment chance useful minVal maxVal multVal
quality DAMMOD 1 2 2 Weapon,Staff,Bow Any 1 true 100 200 2
maiming DAMMOD 3 5 7 Weapon,Staff,Bow Any 1 true 1300 1500 3
slaying DAMMOD 6 8 15 Weapon Any 1 true 2600 3000 5
gore DAMMOD 9 12 25 Weapon Any 1 true 4100 5000 8
carnage DAMMOD 13 16 35 Weapon Any 1 true 5100 10000 10
slaughter DAMMOD 17 20 60 Weapon Any 1 true 10100 15000 13
pain GETHIT_CURSE 2 4 4 Armor,Shield,Misc Evil 1 false 0 0 -4
tears GETHIT_CURSE 1 1 2 Armor,Shield,Misc Evil 1 false 0 0 -2
health GETHIT 1 1 2 Armor,Shield,Misc Good 1 true 200 200 2
protection GETHIT 2 2 6 Armor,Shield Good 1 true 400 800 4
absorption GETHIT 3 3 12 Armor,Shield Good 1 true 1001 2500 10
deflection GETHIT 4 4 20 Armor Good 1 true 2500 6500 15
osmosis GETHIT 5 6 50 Armor Good 1 true 7500 10000 20
frailty STR_CURSE 6 10 3 Armor,Shield,Weapon,Bow,Misc Evil 1 false 0 0 -3
weakness STR_CURSE 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Evil 1 false 0 0 -2
strength STR 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 200 1000 2
might STR 6 10 5 Armor,Shield,Weapon,Bow,Misc Any 1 true 1200 2000 3
power STR 11 15 11 Armor,Shield,Weapon,Bow,Misc Any 1 true 2200 3000 4
giants STR 16 20 17 Armor,Weapon,Bow,Misc Any 1 true 3200 5000 7
titans STR 21 30 23 Weapon,Misc Any 1 true 5200 10000 10
paralysis DEX_CURSE 6 10 3 Armor,Shield,Weapon,Bow,Misc Evil 1 false 0 0 -3
atrophy DEX_CURSE 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Evil 1 false 0 0 -2
dexterity DEX 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 200 1000 2
skill DEX 6 10 5 Armor,Shield,Weapon,Bow,Misc Any 1 true 1200 2000 3
accuracy DEX 11 15 11 Armor,Shield,Weapon,Bow,Misc Any 1 true 2200 3000 4
precision DEX 16 20 17 Armor,Weapon,Bow,Misc Any 1 true 3200 5000 7
perfection DEX 21 30 23 Bow,Misc Any 1 true 5200 10000 10
the fool MAG_CURSE 6 10 3 Armor,Shield,Weapon,Staff,Bow,Misc Evil 1 false 0 0 -3
dyslexia MAG_CURSE 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Evil 1 false 0 0 -2
magic MAG 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 200 1000 2
the mind MAG 6 10 5 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 1200 2000 3
brilliance MAG 11 15 11 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 2200 3000 4
sorcery MAG 16 20 17 Armor,Weapon,Staff,Bow,Misc Any 1 true 3200 5000 7
wizardry MAG 21 30 23 Staff,Misc Any 1 true 5200 10000 10
illness VIT_CURSE 6 10 3 Armor,Shield,Weapon,Staff,Bow,Misc Evil 1 false 0 0 -3
disease VIT_CURSE 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Evil 1 false 0 0 -2
vitality VIT 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Good 1 true 200 1000 2
zest VIT 6 10 5 Armor,Shield,Weapon,Bow,Misc Good 1 true 1200 2000 3
vim VIT 11 15 11 Armor,Shield,Weapon,Bow,Misc Good 1 true 2200 3000 4
vigor VIT 16 20 17 Armor,Weapon,Bow,Misc Good 1 true 3200 5000 7
life VIT 21 30 23 Misc Good 1 true 5200 10000 10
trouble ATTRIBS_CURSE 6 10 12 Armor,Shield,Weapon,Staff,Bow,Misc Evil 1 false 0 0 -10
the pit ATTRIBS_CURSE 1 5 5 Armor,Shield,Weapon,Staff,Bow,Misc Evil 1 false 0 0 -5
the sky ATTRIBS 1 3 5 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 800 4000 5
the moon ATTRIBS 4 7 11 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 4800 8000 10
the stars ATTRIBS 8 11 17 Armor,Weapon,Bow,Misc Any 1 true 8800 12000 15
the heavens ATTRIBS 12 15 25 Weapon,Bow,Misc Any 1 true 12800 20000 20
the zodiac ATTRIBS 16 20 30 Misc Any 1 true 20800 40000 30
the vulture LIFE_CURSE 11 25 4 Armor,Shield,Misc Evil 1 false 0 0 -4
the jackal LIFE_CURSE 1 10 1 Armor,Shield,Misc Evil 1 false 0 0 -2
the fox LIFE 10 15 1 Armor,Shield,Misc Any 1 true 100 1000 2
the jaguar LIFE 16 20 5 Armor,Shield,Misc Any 1 true 1100 2000 3
the eagle LIFE 21 30 9 Armor,Shield,Misc Any 1 true 2100 4000 5
the wolf LIFE 30 40 15 Armor,Shield,Misc Any 1 true 4100 6000 7
the tiger LIFE 41 50 21 Armor,Shield,Misc Any 1 true 6100 10000 9
the lion LIFE 51 60 27 Armor,Misc Any 1 true 10100 15000 11
the mammoth LIFE 61 80 35 Armor Any 1 true 15100 19000 12
the whale LIFE 81 100 60 Armor Any 1 true 19100 30000 13
fragility DUR_CURSE 100 100 3 Armor,Shield,Weapon Evil 1 false 0 0 -4
brittleness DUR_CURSE 26 75 1 Armor,Shield,Weapon Evil 1 false 0 0 -2
sturdiness DUR 26 75 1 Armor,Shield,Weapon,Staff Any 1 true 100 100 2
craftsmanship DUR 51 100 6 Armor,Shield,Weapon,Staff Any 1 true 200 200 2
structure DUR 101 200 12 Armor,Shield,Weapon,Staff Any 1 true 300 300 2
the ages INDESTRUCTIBLE 25 Armor,Shield,Weapon,Staff Any 1 true 600 600 5
the dark LIGHT_CURSE 4 4 6 Armor,Weapon,Misc Evil 1 false 0 0 -3
the night LIGHT_CURSE 2 2 3 Armor,Weapon,Misc Evil 1 false 0 0 -2
light LIGHT 2 2 4 Armor,Weapon,Misc Good 1 true 750 750 2
radiance LIGHT 4 4 8 Armor,Weapon,Misc Good 1 true 1500 1500 3
flame FIRE_ARROWS 1 3 1 Bow Any 1 true 2000 2000 2
fire FIRE_ARROWS 1 6 11 Bow Any 1 true 4000 4000 4
burning FIRE_ARROWS 1 16 35 Bow Any 1 true 6000 6000 6
shock LIGHT_ARROWS 1 6 13 Bow Any 1 true 6000 6000 2
lightning LIGHT_ARROWS 1 10 21 Bow Any 1 true 8000 8000 4
thunder LIGHT_ARROWS 1 20 60 Bow Any 1 true 12000 12000 6
many DUR 100 100 3 Bow Any 1 true 750 750 2
plenty DUR 200 200 7 Bow Any 1 true 1500 1500 3
thorns THORNS 1 3 1 Armor,Shield Any 1 true 500 500 2
corruption NOMANA 5 Armor,Shield,Weapon Evil 1 false -1000 -1000 2
thieves ABSHALFTRAP 11 Armor,Shield,Misc Any 1 true 1500 1500 2
the bear KNOCKBACK 5 Weapon,Staff,Bow Evil 1 true 750 750 2
the bat STEALMANA 3 3 8 Weapon Any 1 true 7500 7500 3
vampires STEALMANA 5 5 19 Weapon Any 1 true 15000 15000 3
the leech STEALLIFE 3 3 8 Weapon Any 1 true 7500 7500 3
blood STEALLIFE 5 5 19 Weapon Any 1 true 15000 15000 3
piercing TARGAC 1 1 1 Weapon,Bow Any 1 true 1000 1000 3
puncturing TARGAC 2 2 9 Weapon,Bow Any 1 true 2000 2000 6
bashing TARGAC 3 3 17 Weapon Any 1 true 4000 4000 12
readiness FASTATTACK 1 1 1 Weapon,Staff,Bow Any 1 true 2000 2000 2
swiftness FASTATTACK 2 2 10 Weapon,Staff,Bow Any 1 true 4000 4000 4
speed FASTATTACK 3 3 19 Weapon,Staff Any 1 true 8000 8000 8
haste FASTATTACK 4 4 27 Weapon,Staff Any 1 true 16000 16000 16
balance FASTRECOVER 1 1 1 Armor,Misc Any 1 true 2000 2000 2
stability FASTRECOVER 2 2 10 Armor,Misc Any 1 true 4000 4000 4
harmony FASTRECOVER 3 3 20 Armor,Misc Any 1 true 8000 8000 8
blocking FASTBLOCK 1 1 5 Shield Any 1 true 4000 4000 4
devastation DEVASTATION 1 1 1 Weapon,Staff,Bow Any 1 true 1200 1200 3
decay DECAY 150 250 1 Weapon,Staff,Bow Any 1 true 200 200 2
peril PERIL 1 1 5 Weapon,Staff,Bow Any 1 true 500 500 1
1 name power power.value1 power.value2 minLevel itemTypes alignment chance useful minVal maxVal multVal
2 quality DAMMOD 1 2 2 Weapon,Staff,Bow Any 1 true 100 200 2
3 maiming DAMMOD 3 5 7 Weapon,Staff,Bow Any 1 true 1300 1500 3
4 slaying DAMMOD 6 8 15 Weapon Any 1 true 2600 3000 5
5 gore DAMMOD 9 12 25 Weapon Any 1 true 4100 5000 8
6 carnage DAMMOD 13 16 35 Weapon Any 1 true 5100 10000 10
7 slaughter DAMMOD 17 20 60 Weapon Any 1 true 10100 15000 13
8 pain GETHIT_CURSE 2 4 4 Armor,Shield,Misc Evil 1 false 0 0 -4
9 tears GETHIT_CURSE 1 1 2 Armor,Shield,Misc Evil 1 false 0 0 -2
10 health GETHIT 1 1 2 Armor,Shield,Misc Good 1 true 200 200 2
11 protection GETHIT 2 2 6 Armor,Shield Good 1 true 400 800 4
12 absorption GETHIT 3 3 12 Armor,Shield Good 1 true 1001 2500 10
13 deflection GETHIT 4 4 20 Armor Good 1 true 2500 6500 15
14 osmosis GETHIT 5 6 50 Armor Good 1 true 7500 10000 20
15 frailty STR_CURSE 6 10 3 Armor,Shield,Weapon,Bow,Misc Evil 1 false 0 0 -3
16 weakness STR_CURSE 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Evil 1 false 0 0 -2
17 strength STR 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 200 1000 2
18 might STR 6 10 5 Armor,Shield,Weapon,Bow,Misc Any 1 true 1200 2000 3
19 power STR 11 15 11 Armor,Shield,Weapon,Bow,Misc Any 1 true 2200 3000 4
20 giants STR 16 20 17 Armor,Weapon,Bow,Misc Any 1 true 3200 5000 7
21 titans STR 21 30 23 Weapon,Misc Any 1 true 5200 10000 10
22 paralysis DEX_CURSE 6 10 3 Armor,Shield,Weapon,Bow,Misc Evil 1 false 0 0 -3
23 atrophy DEX_CURSE 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Evil 1 false 0 0 -2
24 dexterity DEX 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 200 1000 2
25 skill DEX 6 10 5 Armor,Shield,Weapon,Bow,Misc Any 1 true 1200 2000 3
26 accuracy DEX 11 15 11 Armor,Shield,Weapon,Bow,Misc Any 1 true 2200 3000 4
27 precision DEX 16 20 17 Armor,Weapon,Bow,Misc Any 1 true 3200 5000 7
28 perfection DEX 21 30 23 Bow,Misc Any 1 true 5200 10000 10
29 the fool MAG_CURSE 6 10 3 Armor,Shield,Weapon,Staff,Bow,Misc Evil 1 false 0 0 -3
30 dyslexia MAG_CURSE 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Evil 1 false 0 0 -2
31 magic MAG 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 200 1000 2
32 the mind MAG 6 10 5 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 1200 2000 3
33 brilliance MAG 11 15 11 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 2200 3000 4
34 sorcery MAG 16 20 17 Armor,Weapon,Staff,Bow,Misc Any 1 true 3200 5000 7
35 wizardry MAG 21 30 23 Staff,Misc Any 1 true 5200 10000 10
36 illness VIT_CURSE 6 10 3 Armor,Shield,Weapon,Staff,Bow,Misc Evil 1 false 0 0 -3
37 disease VIT_CURSE 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Evil 1 false 0 0 -2
38 vitality VIT 1 5 1 Armor,Shield,Weapon,Staff,Bow,Misc Good 1 true 200 1000 2
39 zest VIT 6 10 5 Armor,Shield,Weapon,Bow,Misc Good 1 true 1200 2000 3
40 vim VIT 11 15 11 Armor,Shield,Weapon,Bow,Misc Good 1 true 2200 3000 4
41 vigor VIT 16 20 17 Armor,Weapon,Bow,Misc Good 1 true 3200 5000 7
42 life VIT 21 30 23 Misc Good 1 true 5200 10000 10
43 trouble ATTRIBS_CURSE 6 10 12 Armor,Shield,Weapon,Staff,Bow,Misc Evil 1 false 0 0 -10
44 the pit ATTRIBS_CURSE 1 5 5 Armor,Shield,Weapon,Staff,Bow,Misc Evil 1 false 0 0 -5
45 the sky ATTRIBS 1 3 5 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 800 4000 5
46 the moon ATTRIBS 4 7 11 Armor,Shield,Weapon,Staff,Bow,Misc Any 1 true 4800 8000 10
47 the stars ATTRIBS 8 11 17 Armor,Weapon,Bow,Misc Any 1 true 8800 12000 15
48 the heavens ATTRIBS 12 15 25 Weapon,Bow,Misc Any 1 true 12800 20000 20
49 the zodiac ATTRIBS 16 20 30 Misc Any 1 true 20800 40000 30
50 the vulture LIFE_CURSE 11 25 4 Armor,Shield,Misc Evil 1 false 0 0 -4
51 the jackal LIFE_CURSE 1 10 1 Armor,Shield,Misc Evil 1 false 0 0 -2
52 the fox LIFE 10 15 1 Armor,Shield,Misc Any 1 true 100 1000 2
53 the jaguar LIFE 16 20 5 Armor,Shield,Misc Any 1 true 1100 2000 3
54 the eagle LIFE 21 30 9 Armor,Shield,Misc Any 1 true 2100 4000 5
55 the wolf LIFE 30 40 15 Armor,Shield,Misc Any 1 true 4100 6000 7
56 the tiger LIFE 41 50 21 Armor,Shield,Misc Any 1 true 6100 10000 9
57 the lion LIFE 51 60 27 Armor,Misc Any 1 true 10100 15000 11
58 the mammoth LIFE 61 80 35 Armor Any 1 true 15100 19000 12
59 the whale LIFE 81 100 60 Armor Any 1 true 19100 30000 13
60 fragility DUR_CURSE 100 100 3 Armor,Shield,Weapon Evil 1 false 0 0 -4
61 brittleness DUR_CURSE 26 75 1 Armor,Shield,Weapon Evil 1 false 0 0 -2
62 sturdiness DUR 26 75 1 Armor,Shield,Weapon,Staff Any 1 true 100 100 2
63 craftsmanship DUR 51 100 6 Armor,Shield,Weapon,Staff Any 1 true 200 200 2
64 structure DUR 101 200 12 Armor,Shield,Weapon,Staff Any 1 true 300 300 2
65 the ages INDESTRUCTIBLE 25 Armor,Shield,Weapon,Staff Any 1 true 600 600 5
66 the dark LIGHT_CURSE 4 4 6 Armor,Weapon,Misc Evil 1 false 0 0 -3
67 the night LIGHT_CURSE 2 2 3 Armor,Weapon,Misc Evil 1 false 0 0 -2
68 light LIGHT 2 2 4 Armor,Weapon,Misc Good 1 true 750 750 2
69 radiance LIGHT 4 4 8 Armor,Weapon,Misc Good 1 true 1500 1500 3
70 flame FIRE_ARROWS 1 3 1 Bow Any 1 true 2000 2000 2
71 fire FIRE_ARROWS 1 6 11 Bow Any 1 true 4000 4000 4
72 burning FIRE_ARROWS 1 16 35 Bow Any 1 true 6000 6000 6
73 shock LIGHT_ARROWS 1 6 13 Bow Any 1 true 6000 6000 2
74 lightning LIGHT_ARROWS 1 10 21 Bow Any 1 true 8000 8000 4
75 thunder LIGHT_ARROWS 1 20 60 Bow Any 1 true 12000 12000 6
76 many DUR 100 100 3 Bow Any 1 true 750 750 2
77 plenty DUR 200 200 7 Bow Any 1 true 1500 1500 3
78 thorns THORNS 1 3 1 Armor,Shield Any 1 true 500 500 2
79 corruption NOMANA 5 Armor,Shield,Weapon Evil 1 false -1000 -1000 2
80 thieves ABSHALFTRAP 11 Armor,Shield,Misc Any 1 true 1500 1500 2
81 the bear KNOCKBACK 5 Weapon,Staff,Bow Evil 1 true 750 750 2
82 the bat STEALMANA 3 3 8 Weapon Any 1 true 7500 7500 3
83 vampires STEALMANA 5 5 19 Weapon Any 1 true 15000 15000 3
84 the leech STEALLIFE 3 3 8 Weapon Any 1 true 7500 7500 3
85 blood STEALLIFE 5 5 19 Weapon Any 1 true 15000 15000 3
86 piercing TARGAC 1 1 1 Weapon,Bow Any 1 true 1000 1000 3
87 puncturing TARGAC 2 2 9 Weapon,Bow Any 1 true 2000 2000 6
88 bashing TARGAC 3 3 17 Weapon Any 1 true 4000 4000 12
89 readiness FASTATTACK 1 1 1 Weapon,Staff,Bow Any 1 true 2000 2000 2
90 swiftness FASTATTACK 2 2 10 Weapon,Staff,Bow Any 1 true 4000 4000 4
91 speed FASTATTACK 3 3 19 Weapon,Staff Any 1 true 8000 8000 8
92 haste FASTATTACK 4 4 27 Weapon,Staff Any 1 true 16000 16000 16
93 balance FASTRECOVER 1 1 1 Armor,Misc Any 1 true 2000 2000 2
94 stability FASTRECOVER 2 2 10 Armor,Misc Any 1 true 4000 4000 4
95 harmony FASTRECOVER 3 3 20 Armor,Misc Any 1 true 8000 8000 8
96 blocking FASTBLOCK 1 1 5 Shield Any 1 true 4000 4000 4
97 devastation DEVASTATION 1 1 1 Weapon,Staff,Bow Any 1 true 1200 1200 3
98 decay DECAY 150 250 1 Weapon,Staff,Bow Any 1 true 200 200 2
99 peril PERIL 1 1 5 Weapon,Staff,Bow Any 1 true 500 500 1

8
test/drlg_l1_test.cpp

@ -205,7 +205,7 @@ TEST(Drlg_l1, CreateL5Dungeon_crypt_1_2122696790)
{ {
LoadExpectedLevelData("hellfire/21-2122696790.dun"); LoadExpectedLevelData("hellfire/21-2122696790.dun");
TestInitGame(); TestInitGame(true, true, true);
TestCreateDungeon(21, 2122696790, ENTRY_TWARPDN); TestCreateDungeon(21, 2122696790, ENTRY_TWARPDN);
EXPECT_EQ(ViewPosition, Point(61, 81)); EXPECT_EQ(ViewPosition, Point(61, 81));
@ -217,7 +217,7 @@ TEST(Drlg_l1, CreateL5Dungeon_crypt_2_1191662129)
{ {
LoadExpectedLevelData("hellfire/22-1191662129.dun"); LoadExpectedLevelData("hellfire/22-1191662129.dun");
TestInitGame(); TestInitGame(true, true, true);
Quests[Q_PWATER]._qactive = QUEST_NOTAVAIL; Quests[Q_PWATER]._qactive = QUEST_NOTAVAIL;
Quests[Q_BUTCHER]._qactive = QUEST_NOTAVAIL; Quests[Q_BUTCHER]._qactive = QUEST_NOTAVAIL;
@ -231,7 +231,7 @@ TEST(Drlg_l1, CreateL5Dungeon_crypt_3_97055268)
{ {
LoadExpectedLevelData("hellfire/23-97055268.dun"); LoadExpectedLevelData("hellfire/23-97055268.dun");
TestInitGame(); TestInitGame(true, true, true);
TestCreateDungeon(23, 97055268, ENTRY_MAIN); TestCreateDungeon(23, 97055268, ENTRY_MAIN);
EXPECT_EQ(ViewPosition, Point(71, 57)); EXPECT_EQ(ViewPosition, Point(71, 57));
@ -243,7 +243,7 @@ TEST(Drlg_l1, CreateL5Dungeon_crypt_4_1324803725)
{ {
LoadExpectedLevelData("hellfire/24-1324803725.dun"); LoadExpectedLevelData("hellfire/24-1324803725.dun");
TestInitGame(); TestInitGame(true, true, true);
TestCreateDungeon(24, 1324803725, ENTRY_MAIN); TestCreateDungeon(24, 1324803725, ENTRY_MAIN);
EXPECT_EQ(ViewPosition, Point(79, 47)); EXPECT_EQ(ViewPosition, Point(79, 47));

8
test/drlg_l3_test.cpp

@ -77,7 +77,7 @@ TEST(Drlg_l3, CreateL3Dungeon_hive_1_19770182)
{ {
LoadExpectedLevelData("hellfire/17-19770182.dun"); LoadExpectedLevelData("hellfire/17-19770182.dun");
TestInitGame(); TestInitGame(true, true, true);
TestCreateDungeon(17, 19770182, ENTRY_TWARPDN); TestCreateDungeon(17, 19770182, ENTRY_TWARPDN);
EXPECT_EQ(ViewPosition, Point(75, 81)); EXPECT_EQ(ViewPosition, Point(75, 81));
@ -89,7 +89,7 @@ TEST(Drlg_l3, CreateL3Dungeon_hive_2_1522546307)
{ {
LoadExpectedLevelData("hellfire/18-1522546307.dun"); LoadExpectedLevelData("hellfire/18-1522546307.dun");
TestInitGame(); TestInitGame(true, true, true);
TestCreateDungeon(18, 1522546307, ENTRY_MAIN); TestCreateDungeon(18, 1522546307, ENTRY_MAIN);
EXPECT_EQ(ViewPosition, Point(47, 19)); EXPECT_EQ(ViewPosition, Point(47, 19));
@ -101,7 +101,7 @@ TEST(Drlg_l3, CreateL3Dungeon_hive_3_125121312)
{ {
LoadExpectedLevelData("hellfire/19-125121312.dun"); LoadExpectedLevelData("hellfire/19-125121312.dun");
TestInitGame(); TestInitGame(true, true, true);
TestCreateDungeon(19, 125121312, ENTRY_MAIN); TestCreateDungeon(19, 125121312, ENTRY_MAIN);
EXPECT_EQ(ViewPosition, Point(61, 25)); EXPECT_EQ(ViewPosition, Point(61, 25));
@ -113,7 +113,7 @@ TEST(Drlg_l3, CreateL3Dungeon_hive_4_1511478689)
{ {
LoadExpectedLevelData("hellfire/20-1511478689.dun"); LoadExpectedLevelData("hellfire/20-1511478689.dun");
TestInitGame(); TestInitGame(true, true, true);
TestCreateDungeon(20, 1511478689, ENTRY_MAIN); TestCreateDungeon(20, 1511478689, ENTRY_MAIN);
EXPECT_EQ(ViewPosition, Point(65, 41)); EXPECT_EQ(ViewPosition, Point(65, 41));

9
test/drlg_test.hpp

@ -51,7 +51,7 @@ void LoadExpectedLevelData(const char *fixture)
ASSERT_EQ(WorldTileSize(DMAXX, DMAXY), GetDunSize(DunData.get())); ASSERT_EQ(WorldTileSize(DMAXX, DMAXY), GetDunSize(DunData.get()));
} }
void TestInitGame(bool fullQuests = true, bool originalCathedral = true) void TestInitGame(bool fullQuests = true, bool originalCathedral = true, bool hellfire = false)
{ {
Players.resize(1); Players.resize(1);
MyPlayer = &Players[0]; MyPlayer = &Players[0];
@ -60,6 +60,13 @@ void TestInitGame(bool fullQuests = true, bool originalCathedral = true)
sgGameInitInfo.fullQuests = fullQuests ? 1 : 0; sgGameInitInfo.fullQuests = fullQuests ? 1 : 0;
gbIsMultiplayer = !fullQuests; gbIsMultiplayer = !fullQuests;
UnloadModArchives();
if (hellfire) {
LoadModArchives({ { "Hellfire" } });
} else {
LoadModArchives({});
}
InitQuests(); InitQuests();
} }

Loading…
Cancel
Save