1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-07-03 00:11:34 +00:00

Address feedback

This commit is contained in:
Evil Eye 2023-06-11 21:13:34 +02:00
parent 66d9d7e585
commit 9772845f7b
2 changed files with 20 additions and 11 deletions

View file

@ -22,27 +22,36 @@ namespace MWLua
{
void addLevelledCreatureBindings(sol::table list, const Context& context)
{
auto item = context.mLua->sol().new_usertype<ESM::LevelledListBase::LevelItem>("ESM3_LevelledListItem");
auto& state = context.mLua->sol();
auto item = state.new_usertype<ESM::LevelledListBase::LevelItem>("ESM3_LevelledListItem");
item["id"] = sol::readonly_property(
[](const ESM::LevelledListBase::LevelItem& rec) { return rec.mId.serializeText(); });
item["level"] = sol::readonly_property([](const ESM::LevelledListBase::LevelItem& rec) { return rec.mLevel; });
item[sol::meta_function::to_string] = [](const ESM::LevelledListBase::LevelItem& rec) {
[](const ESM::LevelledListBase::LevelItem& rec) -> std::string { return rec.mId.serializeText(); });
item["level"]
= sol::readonly_property([](const ESM::LevelledListBase::LevelItem& rec) -> int { return rec.mLevel; });
item[sol::meta_function::to_string] = [](const ESM::LevelledListBase::LevelItem& rec) -> std::string {
return "ESM3_LevelledListItem[" + rec.mId.toDebugString() + ", " + std::to_string(rec.mLevel) + "]";
};
addRecordFunctionBinding<ESM::CreatureLevList>(list, context);
auto record = context.mLua->sol().new_usertype<ESM::CreatureLevList>("ESM3_CreatureLevelledList");
record[sol::meta_function::to_string] = [](const ESM::CreatureLevList& rec) {
auto record = state.new_usertype<ESM::CreatureLevList>("ESM3_CreatureLevelledList");
record[sol::meta_function::to_string] = [](const ESM::CreatureLevList& rec) -> std::string {
return "ESM3_CreatureLevelledList[" + rec.mId.toDebugString() + "]";
};
record["id"] = sol::readonly_property([](const ESM::CreatureLevList& rec) { return rec.mId.serializeText(); });
record["chanceNone"] = sol::readonly_property([](const ESM::CreatureLevList& rec) { return rec.mChanceNone; });
record["creatures"] = sol::readonly_property([](const ESM::CreatureLevList& rec) { return rec.mList; });
record["id"] = sol::readonly_property(
[](const ESM::CreatureLevList& rec) -> std::string { return rec.mId.serializeText(); });
record["chanceNone"] = sol::readonly_property(
[](const ESM::CreatureLevList& rec) -> float { return std::clamp(rec.mChanceNone / 100.f, 0.f, 1.f); });
record["creatures"] = sol::readonly_property([&](const ESM::CreatureLevList& rec) -> sol::table {
sol::table res(state, sol::create);
for (size_t i = 0; i < rec.mList.size(); ++i)
res[i + 1] = rec.mList[i];
return res;
});
record["calculateFromAllLevels"] = sol::readonly_property(
[](const ESM::CreatureLevList& rec) -> bool { return rec.mFlags & ESM::CreatureLevList::AllLevels; });
record["getRandomId"] = [](const ESM::CreatureLevList& rec, int level) {
record["getRandomId"] = [](const ESM::CreatureLevList& rec, int level) -> std::string {
auto& prng = MWBase::Environment::get().getWorld()->getPrng();
return MWMechanics::getLevelledItem(&rec, true, prng, level).serializeText();
};

View file

@ -1405,7 +1405,7 @@
---
-- @type CreatureLevelledListRecord
-- @field #string id Record id
-- @field #number chanceNone Chance this list won't spawn anything [0-100]
-- @field #number chanceNone Chance this list won't spawn anything [0-1]
-- @field #boolean calculateFromAllLevels Calculate from all levels <= player level, not just the closest below player
-- @field #list<#LevelledListItem> creatures