#include "lua/modules/player.hpp" #include #include #include "engine/point.hpp" #include "lua/metadoc.hpp" #include "player.h" namespace devilution { namespace { void InitPlayerUserType(sol::state_view &lua) { sol::usertype playerType = lua.new_usertype(sol::no_constructor); SetDocumented(playerType, "name", "", "Player's name (readonly)", sol::readonly_property(&Player::name)); SetDocumented(playerType, "addExperience", "(experience: integer, monsterLevel: integer = nil)", "Adds experience to this player based on the current game mode", [](Player &player, uint32_t experience, std::optional monsterLevel) { if (monsterLevel.has_value()) { player.addExperience(experience, *monsterLevel); } else { player.addExperience(experience); } }); SetDocumented(playerType, "characterLevel", "", "Character level (writeable)", sol::property(&Player::getCharacterLevel, &Player::setCharacterLevel)); } } // namespace sol::table LuaPlayerModule(sol::state_view &lua) { InitPlayerUserType(lua); sol::table table = lua.create_table(); SetDocumented(table, "self", "()", "The current player", []() { return MyPlayer; }); SetDocumented(table, "walk_to", "(x: integer, y: integer)", "Walk to the given coordinates", [](int x, int y) { NetSendCmdLoc(MyPlayerId, true, CMD_WALKXY, Point { x, y }); }); return table; } } // namespace devilution