From a3f091b34d7d0661b4a9755cc3583b3bee5c454e Mon Sep 17 00:00:00 2001 From: Gubihe Date: Mon, 25 Mar 2019 23:10:17 +0100 Subject: [PATCH 1/8] lua & game functions --- src/creature.cpp | 5 +++++ src/creature.h | 9 +++++++++ src/game.cpp | 10 ++++++++++ src/luascript.cpp | 27 +++++++++++++++++++++++++++ src/luascript.h | 2 ++ 5 files changed, 53 insertions(+) diff --git a/src/creature.cpp b/src/creature.cpp index 521ee27573..a90998e2dd 100644 --- a/src/creature.cpp +++ b/src/creature.cpp @@ -249,6 +249,11 @@ bool Creature::getNextStep(Direction& dir, uint32_t&) void Creature::startAutoWalk(const std::forward_list& listDir) { + if (getPlayer() && getPlayer()->isNoMove()) { + getPlayer()->sendCancelWalk(); + return; + } + listWalkDir = listDir; size_t size = 0; diff --git a/src/creature.h b/src/creature.h index 7d587c48a4..3f8ca21b04 100644 --- a/src/creature.h +++ b/src/creature.h @@ -408,6 +408,14 @@ class Creature : virtual public Thing void setUseDefense(bool useDefense) { canUseDefense = useDefense; } + void setNoMove(bool _cannotMove) + { + cannotMove = _cannotMove; + cancelNextWalk = true; + } + bool isNoMove() const { + return cannotMove; + } //creature script events bool registerCreatureEvent(const std::string& name); @@ -526,6 +534,7 @@ class Creature : virtual public Thing bool forceUpdateFollowPath = false; bool hiddenHealth = false; bool canUseDefense = true; + bool cannotMove = false; //creature script events bool hasEventRegistered(CreatureEventType_t event) const { diff --git a/src/game.cpp b/src/game.cpp index 7ba01e2084..d4b98b9e10 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -691,6 +691,11 @@ void Game::playerMoveCreature(Player* player, Creature* movingCreature, const Po return; } + if (movingCreature->isNoMove()) { + player->sendCancelMessage(RETURNVALUE_NOTMOVEABLE); + return; + } + player->setNextActionTask(nullptr); if (!Position::areInRange<1, 1, 0>(movingCreatureOrigPos, player->getPosition())) { @@ -1770,6 +1775,11 @@ void Game::playerMove(uint32_t playerId, Direction direction) return; } + if (player->isNoMove()) { + player->sendCancelWalk(); + return; + } + player->resetIdleTime(); player->setNextWalkActionTask(nullptr); diff --git a/src/luascript.cpp b/src/luascript.cpp index b6c007174f..6c04cb39a9 100644 --- a/src/luascript.cpp +++ b/src/luascript.cpp @@ -2115,6 +2115,7 @@ void LuaScriptInterface::registerFunctions() registerMethod("Creature", "isCreature", LuaScriptInterface::luaCreatureIsCreature); registerMethod("Creature", "isInGhostMode", LuaScriptInterface::luaCreatureIsInGhostMode); registerMethod("Creature", "isHealthHidden", LuaScriptInterface::luaCreatureIsHealthHidden); + registerMethod("Creature", "isNoMove", LuaScriptInterface::luaCreatureIsNoMove); registerMethod("Creature", "isImmune", LuaScriptInterface::luaCreatureIsImmune); registerMethod("Creature", "canSee", LuaScriptInterface::luaCreatureCanSee); @@ -2155,6 +2156,7 @@ void LuaScriptInterface::registerFunctions() registerMethod("Creature", "getMaxHealth", LuaScriptInterface::luaCreatureGetMaxHealth); registerMethod("Creature", "setMaxHealth", LuaScriptInterface::luaCreatureSetMaxHealth); registerMethod("Creature", "setHiddenHealth", LuaScriptInterface::luaCreatureSetHiddenHealth); + registerMethod("Creature", "setNoMove", LuaScriptInterface::luaCreatureSetNoMove); registerMethod("Creature", "getSkull", LuaScriptInterface::luaCreatureGetSkull); registerMethod("Creature", "setSkull", LuaScriptInterface::luaCreatureSetSkull); @@ -6748,6 +6750,18 @@ int LuaScriptInterface::luaCreatureIsHealthHidden(lua_State* L) return 1; } +int LuaScriptInterface::luaCreatureIsNoMove(lua_State* L) +{ + // creature:isNoMove() + const Creature* creature = getUserdata(L, 1); + if (creature) { + pushBoolean(L, creature->isNoMove()); + } else { + lua_pushnil(L); + } + return 1; +} + int LuaScriptInterface::luaCreatureCanSee(lua_State* L) { // creature:canSee(position) @@ -7168,6 +7182,19 @@ int LuaScriptInterface::luaCreatureSetHiddenHealth(lua_State* L) return 1; } +int LuaScriptInterface::luaCreatureSetNoMove(lua_State* L) +{ + // creature:setNoMove(move) + Creature* creature = getUserdata(L, 1); + if (creature) { + creature->setNoMove(getBoolean(L, 2)); + pushBoolean(L, true); + } else { + lua_pushnil(L); + } + return 1; +} + int LuaScriptInterface::luaCreatureGetSkull(lua_State* L) { // creature:getSkull() diff --git a/src/luascript.h b/src/luascript.h index 26e73e5acb..47a8970735 100644 --- a/src/luascript.h +++ b/src/luascript.h @@ -750,6 +750,7 @@ class LuaScriptInterface static int luaCreatureIsCreature(lua_State* L); static int luaCreatureIsInGhostMode(lua_State* L); static int luaCreatureIsHealthHidden(lua_State* L); + static int luaCreatureIsNoMove(lua_State* L); static int luaCreatureIsImmune(lua_State* L); static int luaCreatureCanSee(lua_State* L); @@ -790,6 +791,7 @@ class LuaScriptInterface static int luaCreatureGetMaxHealth(lua_State* L); static int luaCreatureSetMaxHealth(lua_State* L); static int luaCreatureSetHiddenHealth(lua_State* L); + static int luaCreatureSetNoMove(lua_State* L); static int luaCreatureGetSkull(lua_State* L); static int luaCreatureSetSkull(lua_State* L); From 30d33c37ed02ae92864a81f5b528fe0b09de434a Mon Sep 17 00:00:00 2001 From: Gubihe Date: Tue, 26 Mar 2019 08:21:38 +0100 Subject: [PATCH 2/8] code review changes --- src/creature.cpp | 2 +- src/creature.h | 6 +++--- src/game.cpp | 4 ++-- src/luascript.cpp | 8 ++++---- src/luascript.h | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/creature.cpp b/src/creature.cpp index a90998e2dd..53727aa4e6 100644 --- a/src/creature.cpp +++ b/src/creature.cpp @@ -249,7 +249,7 @@ bool Creature::getNextStep(Direction& dir, uint32_t&) void Creature::startAutoWalk(const std::forward_list& listDir) { - if (getPlayer() && getPlayer()->isNoMove()) { + if (getPlayer() && getPlayer()->canNotMove()) { getPlayer()->sendCancelWalk(); return; } diff --git a/src/creature.h b/src/creature.h index 3f8ca21b04..f5f82f9f1f 100644 --- a/src/creature.h +++ b/src/creature.h @@ -408,12 +408,12 @@ class Creature : virtual public Thing void setUseDefense(bool useDefense) { canUseDefense = useDefense; } - void setNoMove(bool _cannotMove) + void setNoMove(bool cannotMove) { - cannotMove = _cannotMove; + cannotMove = cannotMove; cancelNextWalk = true; } - bool isNoMove() const { + bool canNotMove() const { return cannotMove; } diff --git a/src/game.cpp b/src/game.cpp index d4b98b9e10..9162c900ef 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -691,7 +691,7 @@ void Game::playerMoveCreature(Player* player, Creature* movingCreature, const Po return; } - if (movingCreature->isNoMove()) { + if (movingCreature->canNotMove()) { player->sendCancelMessage(RETURNVALUE_NOTMOVEABLE); return; } @@ -1775,7 +1775,7 @@ void Game::playerMove(uint32_t playerId, Direction direction) return; } - if (player->isNoMove()) { + if (player->canNotMove()) { player->sendCancelWalk(); return; } diff --git a/src/luascript.cpp b/src/luascript.cpp index 6c04cb39a9..8718349ffa 100644 --- a/src/luascript.cpp +++ b/src/luascript.cpp @@ -2115,7 +2115,7 @@ void LuaScriptInterface::registerFunctions() registerMethod("Creature", "isCreature", LuaScriptInterface::luaCreatureIsCreature); registerMethod("Creature", "isInGhostMode", LuaScriptInterface::luaCreatureIsInGhostMode); registerMethod("Creature", "isHealthHidden", LuaScriptInterface::luaCreatureIsHealthHidden); - registerMethod("Creature", "isNoMove", LuaScriptInterface::luaCreatureIsNoMove); + registerMethod("Creature", "cannotMove", LuaScriptInterface::luaCreatureCannotMove); registerMethod("Creature", "isImmune", LuaScriptInterface::luaCreatureIsImmune); registerMethod("Creature", "canSee", LuaScriptInterface::luaCreatureCanSee); @@ -6750,12 +6750,12 @@ int LuaScriptInterface::luaCreatureIsHealthHidden(lua_State* L) return 1; } -int LuaScriptInterface::luaCreatureIsNoMove(lua_State* L) +int LuaScriptInterface::luaCreatureCannotMove(lua_State* L) { - // creature:isNoMove() + // creature:cannotMove() const Creature* creature = getUserdata(L, 1); if (creature) { - pushBoolean(L, creature->isNoMove()); + pushBoolean(L, creature->canNotMove()); } else { lua_pushnil(L); } diff --git a/src/luascript.h b/src/luascript.h index 47a8970735..958680ed13 100644 --- a/src/luascript.h +++ b/src/luascript.h @@ -750,7 +750,7 @@ class LuaScriptInterface static int luaCreatureIsCreature(lua_State* L); static int luaCreatureIsInGhostMode(lua_State* L); static int luaCreatureIsHealthHidden(lua_State* L); - static int luaCreatureIsNoMove(lua_State* L); + static int luaCreatureCannotMove(lua_State* L); static int luaCreatureIsImmune(lua_State* L); static int luaCreatureCanSee(lua_State* L); From e7cb0baee3f1a754d199c02775e7bbd8af451f7b Mon Sep 17 00:00:00 2001 From: Gubihe Date: Tue, 26 Mar 2019 08:29:55 +0100 Subject: [PATCH 3/8] compiler fix --- src/creature.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/creature.h b/src/creature.h index f5f82f9f1f..baebba73af 100644 --- a/src/creature.h +++ b/src/creature.h @@ -408,9 +408,9 @@ class Creature : virtual public Thing void setUseDefense(bool useDefense) { canUseDefense = useDefense; } - void setNoMove(bool cannotMove) + void setNoMove(bool canNotMove) { - cannotMove = cannotMove; + cannotMove = canNotMove; cancelNextWalk = true; } bool canNotMove() const { From 7af516afc9590179dc705dc27e3c7019950cd867 Mon Sep 17 00:00:00 2001 From: Gubihe Date: Thu, 28 Mar 2019 16:49:26 +0100 Subject: [PATCH 4/8] changed function name --- src/creature.cpp | 2 +- src/creature.h | 10 +++++----- src/game.cpp | 4 ++-- src/luascript.cpp | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/creature.cpp b/src/creature.cpp index 53727aa4e6..3c99093ac9 100644 --- a/src/creature.cpp +++ b/src/creature.cpp @@ -249,7 +249,7 @@ bool Creature::getNextStep(Direction& dir, uint32_t&) void Creature::startAutoWalk(const std::forward_list& listDir) { - if (getPlayer() && getPlayer()->canNotMove()) { + if (getPlayer() && getPlayer()->cannotMove()) { getPlayer()->sendCancelWalk(); return; } diff --git a/src/creature.h b/src/creature.h index baebba73af..a9954f1fa0 100644 --- a/src/creature.h +++ b/src/creature.h @@ -408,13 +408,13 @@ class Creature : virtual public Thing void setUseDefense(bool useDefense) { canUseDefense = useDefense; } - void setNoMove(bool canNotMove) + void setNoMove(bool movingDisabled) { - cannotMove = canNotMove; + isMovingDisabled = movingDisabled; cancelNextWalk = true; } - bool canNotMove() const { - return cannotMove; + bool cannotMove() const { + return isMovingDisabled; } //creature script events @@ -534,7 +534,7 @@ class Creature : virtual public Thing bool forceUpdateFollowPath = false; bool hiddenHealth = false; bool canUseDefense = true; - bool cannotMove = false; + bool isMovingDisabled = false; //creature script events bool hasEventRegistered(CreatureEventType_t event) const { diff --git a/src/game.cpp b/src/game.cpp index 9162c900ef..7972d5b8a2 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -691,7 +691,7 @@ void Game::playerMoveCreature(Player* player, Creature* movingCreature, const Po return; } - if (movingCreature->canNotMove()) { + if (movingCreature->cannotMove()) { player->sendCancelMessage(RETURNVALUE_NOTMOVEABLE); return; } @@ -1775,7 +1775,7 @@ void Game::playerMove(uint32_t playerId, Direction direction) return; } - if (player->canNotMove()) { + if (player->cannotMove()) { player->sendCancelWalk(); return; } diff --git a/src/luascript.cpp b/src/luascript.cpp index 8718349ffa..0319f738ef 100644 --- a/src/luascript.cpp +++ b/src/luascript.cpp @@ -6755,7 +6755,7 @@ int LuaScriptInterface::luaCreatureCannotMove(lua_State* L) // creature:cannotMove() const Creature* creature = getUserdata(L, 1); if (creature) { - pushBoolean(L, creature->canNotMove()); + pushBoolean(L, creature->cannotMove()); } else { lua_pushnil(L); } From 507b871a15977aa3f32f5262f083a71ec146083c Mon Sep 17 00:00:00 2001 From: Gubihe Date: Tue, 2 Apr 2019 21:49:48 +0200 Subject: [PATCH 5/8] another renaming --- src/creature.cpp | 2 +- src/creature.h | 10 +++++----- src/game.cpp | 4 ++-- src/luascript.cpp | 16 ++++++++-------- src/luascript.h | 4 ++-- 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/creature.cpp b/src/creature.cpp index 3c99093ac9..fbd93c9e77 100644 --- a/src/creature.cpp +++ b/src/creature.cpp @@ -249,7 +249,7 @@ bool Creature::getNextStep(Direction& dir, uint32_t&) void Creature::startAutoWalk(const std::forward_list& listDir) { - if (getPlayer() && getPlayer()->cannotMove()) { + if (getPlayer() && !getPlayer()->getCanMove()) { getPlayer()->sendCancelWalk(); return; } diff --git a/src/creature.h b/src/creature.h index a9954f1fa0..bcb7eee94a 100644 --- a/src/creature.h +++ b/src/creature.h @@ -408,13 +408,13 @@ class Creature : virtual public Thing void setUseDefense(bool useDefense) { canUseDefense = useDefense; } - void setNoMove(bool movingDisabled) + void setCanMove(bool move) { - isMovingDisabled = movingDisabled; + canMove = move; cancelNextWalk = true; } - bool cannotMove() const { - return isMovingDisabled; + bool getCanMove() const { + return canMove; } //creature script events @@ -534,7 +534,7 @@ class Creature : virtual public Thing bool forceUpdateFollowPath = false; bool hiddenHealth = false; bool canUseDefense = true; - bool isMovingDisabled = false; + bool canMove = true; //creature script events bool hasEventRegistered(CreatureEventType_t event) const { diff --git a/src/game.cpp b/src/game.cpp index 7972d5b8a2..85461494cc 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -691,7 +691,7 @@ void Game::playerMoveCreature(Player* player, Creature* movingCreature, const Po return; } - if (movingCreature->cannotMove()) { + if (!movingCreature->getCanMove()) { player->sendCancelMessage(RETURNVALUE_NOTMOVEABLE); return; } @@ -1775,7 +1775,7 @@ void Game::playerMove(uint32_t playerId, Direction direction) return; } - if (player->cannotMove()) { + if (!player->getCanMove()) { player->sendCancelWalk(); return; } diff --git a/src/luascript.cpp b/src/luascript.cpp index 0319f738ef..9a055ee751 100644 --- a/src/luascript.cpp +++ b/src/luascript.cpp @@ -2115,7 +2115,7 @@ void LuaScriptInterface::registerFunctions() registerMethod("Creature", "isCreature", LuaScriptInterface::luaCreatureIsCreature); registerMethod("Creature", "isInGhostMode", LuaScriptInterface::luaCreatureIsInGhostMode); registerMethod("Creature", "isHealthHidden", LuaScriptInterface::luaCreatureIsHealthHidden); - registerMethod("Creature", "cannotMove", LuaScriptInterface::luaCreatureCannotMove); + registerMethod("Creature", "canMove", LuaScriptInterface::luaCreatureCanMove); registerMethod("Creature", "isImmune", LuaScriptInterface::luaCreatureIsImmune); registerMethod("Creature", "canSee", LuaScriptInterface::luaCreatureCanSee); @@ -2156,7 +2156,7 @@ void LuaScriptInterface::registerFunctions() registerMethod("Creature", "getMaxHealth", LuaScriptInterface::luaCreatureGetMaxHealth); registerMethod("Creature", "setMaxHealth", LuaScriptInterface::luaCreatureSetMaxHealth); registerMethod("Creature", "setHiddenHealth", LuaScriptInterface::luaCreatureSetHiddenHealth); - registerMethod("Creature", "setNoMove", LuaScriptInterface::luaCreatureSetNoMove); + registerMethod("Creature", "setMove", LuaScriptInterface::luaCreatureSetMove); registerMethod("Creature", "getSkull", LuaScriptInterface::luaCreatureGetSkull); registerMethod("Creature", "setSkull", LuaScriptInterface::luaCreatureSetSkull); @@ -6750,12 +6750,12 @@ int LuaScriptInterface::luaCreatureIsHealthHidden(lua_State* L) return 1; } -int LuaScriptInterface::luaCreatureCannotMove(lua_State* L) +int LuaScriptInterface::luaCreatureCanMove(lua_State* L) { - // creature:cannotMove() + // creature:canMove() const Creature* creature = getUserdata(L, 1); if (creature) { - pushBoolean(L, creature->cannotMove()); + pushBoolean(L, creature->getCanMove()); } else { lua_pushnil(L); } @@ -7182,12 +7182,12 @@ int LuaScriptInterface::luaCreatureSetHiddenHealth(lua_State* L) return 1; } -int LuaScriptInterface::luaCreatureSetNoMove(lua_State* L) +int LuaScriptInterface::luaCreatureSetMove(lua_State* L) { - // creature:setNoMove(move) + // creature:setMove(move) Creature* creature = getUserdata(L, 1); if (creature) { - creature->setNoMove(getBoolean(L, 2)); + creature->setCanMove(getBoolean(L, 2)); pushBoolean(L, true); } else { lua_pushnil(L); diff --git a/src/luascript.h b/src/luascript.h index 958680ed13..907b755cb6 100644 --- a/src/luascript.h +++ b/src/luascript.h @@ -750,7 +750,7 @@ class LuaScriptInterface static int luaCreatureIsCreature(lua_State* L); static int luaCreatureIsInGhostMode(lua_State* L); static int luaCreatureIsHealthHidden(lua_State* L); - static int luaCreatureCannotMove(lua_State* L); + static int luaCreatureCanMove(lua_State* L); static int luaCreatureIsImmune(lua_State* L); static int luaCreatureCanSee(lua_State* L); @@ -791,7 +791,7 @@ class LuaScriptInterface static int luaCreatureGetMaxHealth(lua_State* L); static int luaCreatureSetMaxHealth(lua_State* L); static int luaCreatureSetHiddenHealth(lua_State* L); - static int luaCreatureSetNoMove(lua_State* L); + static int luaCreatureSetMove(lua_State* L); static int luaCreatureGetSkull(lua_State* L); static int luaCreatureSetSkull(lua_State* L); From 15cc06fb484df9e510f738430602e8bb979896af Mon Sep 17 00:00:00 2001 From: Gubihe Date: Mon, 8 Jun 2020 01:05:29 +0200 Subject: [PATCH 6/8] CR changes --- src/creature.cpp | 5 +++-- src/creature.h | 10 +++++----- src/game.cpp | 4 ++-- src/luascript.cpp | 20 ++++++++------------ src/luascript.h | 4 ++-- 5 files changed, 20 insertions(+), 23 deletions(-) diff --git a/src/creature.cpp b/src/creature.cpp index 53314f343d..cbaa982892 100644 --- a/src/creature.cpp +++ b/src/creature.cpp @@ -249,8 +249,9 @@ bool Creature::getNextStep(Direction& dir, uint32_t&) void Creature::startAutoWalk(const std::forward_list& listDir) { - if (getPlayer() && !getPlayer()->getCanMove()) { - getPlayer()->sendCancelWalk(); + Player* player = getPlayer(); + if (player && player->isMovementBlocked()) { + player->sendCancelWalk(); return; } diff --git a/src/creature.h b/src/creature.h index 7894cd06e9..d89060f9ae 100644 --- a/src/creature.h +++ b/src/creature.h @@ -408,13 +408,13 @@ class Creature : virtual public Thing void setUseDefense(bool useDefense) { canUseDefense = useDefense; } - void setCanMove(bool move) + void setMovementBlocked(bool state) { - canMove = move; + movementBlocked = state; cancelNextWalk = true; } - bool getCanMove() const { - return canMove; + bool isMovementBlocked() const { + return movementBlocked; } //creature script events @@ -533,7 +533,7 @@ class Creature : virtual public Thing bool forceUpdateFollowPath = false; bool hiddenHealth = false; bool canUseDefense = true; - bool canMove = true; + bool movementBlocked = false; //creature script events bool hasEventRegistered(CreatureEventType_t event) const { diff --git a/src/game.cpp b/src/game.cpp index 94d4bef35b..b6d8ac3d40 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -691,7 +691,7 @@ void Game::playerMoveCreature(Player* player, Creature* movingCreature, const Po return; } - if (!movingCreature->getCanMove()) { + if (movingCreature->isMovementBlocked()) { player->sendCancelMessage(RETURNVALUE_NOTMOVEABLE); return; } @@ -1805,7 +1805,7 @@ void Game::playerMove(uint32_t playerId, Direction direction) return; } - if (!player->getCanMove()) { + if (player->isMovementBlocked()) { player->sendCancelWalk(); return; } diff --git a/src/luascript.cpp b/src/luascript.cpp index 75ecc0dd9c..8cd33d70f7 100644 --- a/src/luascript.cpp +++ b/src/luascript.cpp @@ -2191,7 +2191,7 @@ void LuaScriptInterface::registerFunctions() registerMethod("Creature", "isCreature", LuaScriptInterface::luaCreatureIsCreature); registerMethod("Creature", "isInGhostMode", LuaScriptInterface::luaCreatureIsInGhostMode); registerMethod("Creature", "isHealthHidden", LuaScriptInterface::luaCreatureIsHealthHidden); - registerMethod("Creature", "canMove", LuaScriptInterface::luaCreatureCanMove); + registerMethod("Creature", "isMovementBlocked", LuaScriptInterface::luaCreatureIsMovementBlocked); registerMethod("Creature", "isImmune", LuaScriptInterface::luaCreatureIsImmune); registerMethod("Creature", "canSee", LuaScriptInterface::luaCreatureCanSee); @@ -2232,7 +2232,7 @@ void LuaScriptInterface::registerFunctions() registerMethod("Creature", "getMaxHealth", LuaScriptInterface::luaCreatureGetMaxHealth); registerMethod("Creature", "setMaxHealth", LuaScriptInterface::luaCreatureSetMaxHealth); registerMethod("Creature", "setHiddenHealth", LuaScriptInterface::luaCreatureSetHiddenHealth); - registerMethod("Creature", "setMove", LuaScriptInterface::luaCreatureSetMove); + registerMethod("Creature", "setMovementBlocked", LuaScriptInterface::luaCreatureSetMovementBlocked); registerMethod("Creature", "getSkull", LuaScriptInterface::luaCreatureGetSkull); registerMethod("Creature", "setSkull", LuaScriptInterface::luaCreatureSetSkull); @@ -6925,15 +6925,11 @@ int LuaScriptInterface::luaCreatureIsHealthHidden(lua_State* L) return 1; } -int LuaScriptInterface::luaCreatureCanMove(lua_State* L) +int LuaScriptInterface::luaCreatureIsMovementBlocked(lua_State* L) { - // creature:canMove() + // creature:isMovementBlocked() const Creature* creature = getUserdata(L, 1); - if (creature) { - pushBoolean(L, creature->getCanMove()); - } else { - lua_pushnil(L); - } + creature ? pushBoolean(L, creature->isMovementBlocked()) : lua_pushnil(L); return 1; } @@ -7357,12 +7353,12 @@ int LuaScriptInterface::luaCreatureSetHiddenHealth(lua_State* L) return 1; } -int LuaScriptInterface::luaCreatureSetMove(lua_State* L) +int LuaScriptInterface::luaCreatureSetMovementBlocked(lua_State* L) { - // creature:setMove(move) + // creature:setMovementBlocked(state) Creature* creature = getUserdata(L, 1); if (creature) { - creature->setCanMove(getBoolean(L, 2)); + creature->setMovementBlocked(getBoolean(L, 2)); pushBoolean(L, true); } else { lua_pushnil(L); diff --git a/src/luascript.h b/src/luascript.h index c12e971a99..33f8c4edde 100644 --- a/src/luascript.h +++ b/src/luascript.h @@ -747,7 +747,7 @@ class LuaScriptInterface static int luaCreatureIsCreature(lua_State* L); static int luaCreatureIsInGhostMode(lua_State* L); static int luaCreatureIsHealthHidden(lua_State* L); - static int luaCreatureCanMove(lua_State* L); + static int luaCreatureIsMovementBlocked(lua_State* L); static int luaCreatureIsImmune(lua_State* L); static int luaCreatureCanSee(lua_State* L); @@ -788,7 +788,7 @@ class LuaScriptInterface static int luaCreatureGetMaxHealth(lua_State* L); static int luaCreatureSetMaxHealth(lua_State* L); static int luaCreatureSetHiddenHealth(lua_State* L); - static int luaCreatureSetMove(lua_State* L); + static int luaCreatureSetMovementBlocked(lua_State* L); static int luaCreatureGetSkull(lua_State* L); static int luaCreatureSetSkull(lua_State* L); From ec1be5fa3fad32b4c2b4a5a362ecf587bb3fdc27 Mon Sep 17 00:00:00 2001 From: Znote Date: Thu, 5 Nov 2020 18:58:05 +0000 Subject: [PATCH 7/8] Code style formatting fixes --- src/creature.h | 3 +-- src/luascript.cpp | 6 +++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/creature.h b/src/creature.h index d89060f9ae..1b7674c922 100644 --- a/src/creature.h +++ b/src/creature.h @@ -408,8 +408,7 @@ class Creature : virtual public Thing void setUseDefense(bool useDefense) { canUseDefense = useDefense; } - void setMovementBlocked(bool state) - { + void setMovementBlocked(bool state) { movementBlocked = state; cancelNextWalk = true; } diff --git a/src/luascript.cpp b/src/luascript.cpp index 8cd33d70f7..24d8f76675 100644 --- a/src/luascript.cpp +++ b/src/luascript.cpp @@ -6929,7 +6929,11 @@ int LuaScriptInterface::luaCreatureIsMovementBlocked(lua_State* L) { // creature:isMovementBlocked() const Creature* creature = getUserdata(L, 1); - creature ? pushBoolean(L, creature->isMovementBlocked()) : lua_pushnil(L); + if (creature) { + pushBoolean(L, creature->isMovementBlocked()); + } else { + lua_pushnil(L); + } return 1; } From c77efb588c0744a77d2d7d4d8d99e7770749dbc3 Mon Sep 17 00:00:00 2001 From: Gubihe Date: Sun, 29 Nov 2020 23:27:08 +0100 Subject: [PATCH 8/8] added compat functions --- data/lib/compat/compat.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/data/lib/compat/compat.lua b/data/lib/compat/compat.lua index d5d53b5478..96a781b638 100644 --- a/data/lib/compat/compat.lua +++ b/data/lib/compat/compat.lua @@ -347,6 +347,7 @@ function getCreatureBaseSpeed(cid) local c = Creature(cid) return c and c:getBas function getCreatureLookDirection(cid) local c = Creature(cid) return c and c:getDirection() or false end function getCreatureHideHealth(cid) local c = Creature(cid) return c and c:isHealthHidden() or false end function getCreatureSkullType(cid) local c = Creature(cid) return c and c:getSkull() or false end +function getCreatureNoMove(cid) local c = Creature(cid) return c and c:isMovementBlocked() or false end function getCreatureTarget(cid) local c = Creature(cid) @@ -390,6 +391,7 @@ function doCreatureSetSkullType(cid, skull) local c = Creature(cid) return c and function setCreatureMaxHealth(cid, health) local c = Creature(cid) return c and c:setMaxHealth(health) or false end function setCreatureMaxMana(cid, mana) local c = Creature(cid) return c and c:setMaxMana(mana) or false end function doCreatureSetHideHealth(cid, hide) local c = Creature(cid) return c and c:setHiddenHealth(hide) or false end +function doCreatureSetNoMove(cid, block) local c = Creature(cid) return c and c:setMovementBlocked(block) or false end function doCreatureSay(cid, text, type, ...) local c = Creature(cid) return c and c:say(text, type, ...) or false end function doCreatureChangeOutfit(cid, outfit) local c = Creature(cid) return c and c:setOutfit(outfit) or false end function doSetCreatureDropLoot(cid, doDrop) local c = Creature(cid) return c and c:setDropLoot(doDrop) or false end