diff options
author | paramat <mat.gregory@virginmedia.com> | 2015-10-13 05:17:33 +0100 |
---|---|---|
committer | paramat <mat.gregory@virginmedia.com> | 2015-10-18 16:42:59 +0100 |
commit | 3b9f99e0d61957c571ba857301d58ad29fb44527 (patch) | |
tree | e42aca267416df268d0e971b73c1db4a7e6358fe /src/script | |
parent | 2364449d7a173086c2681eae267b32e5c1596b00 (diff) | |
download | minetest-3b9f99e0d61957c571ba857301d58ad29fb44527.tar.gz minetest-3b9f99e0d61957c571ba857301d58ad29fb44527.tar.bz2 minetest-3b9f99e0d61957c571ba857301d58ad29fb44527.zip |
ABMs: Make catch-up behaviour optional
Default is true for backwards compatibility
Update lua_api.txt
Diffstat (limited to 'src/script')
-rw-r--r-- | src/script/cpp_api/s_env.cpp | 7 | ||||
-rw-r--r-- | src/script/lua_api/l_env.h | 10 |
2 files changed, 13 insertions, 4 deletions
diff --git a/src/script/cpp_api/s_env.cpp b/src/script/cpp_api/s_env.cpp index 9c733773a..b8717597a 100644 --- a/src/script/cpp_api/s_env.cpp +++ b/src/script/cpp_api/s_env.cpp @@ -143,8 +143,11 @@ void ScriptApiEnv::initializeEnvironment(ServerEnvironment *env) int trigger_chance = 50; getintfield(L, current_abm, "chance", trigger_chance); - LuaABM *abm = new LuaABM(L, id, trigger_contents, - required_neighbors, trigger_interval, trigger_chance); + bool simple_catch_up = true; + getboolfield(L, current_abm, "catch_up", simple_catch_up); + + LuaABM *abm = new LuaABM(L, id, trigger_contents, required_neighbors, + trigger_interval, trigger_chance, simple_catch_up); env->addActiveBlockModifier(abm); diff --git a/src/script/lua_api/l_env.h b/src/script/lua_api/l_env.h index 2e9fab777..4f204da81 100644 --- a/src/script/lua_api/l_env.h +++ b/src/script/lua_api/l_env.h @@ -184,16 +184,18 @@ private: std::set<std::string> m_required_neighbors; float m_trigger_interval; u32 m_trigger_chance; + bool m_simple_catch_up; public: LuaABM(lua_State *L, int id, const std::set<std::string> &trigger_contents, const std::set<std::string> &required_neighbors, - float trigger_interval, u32 trigger_chance): + float trigger_interval, u32 trigger_chance, bool simple_catch_up): m_id(id), m_trigger_contents(trigger_contents), m_required_neighbors(required_neighbors), m_trigger_interval(trigger_interval), - m_trigger_chance(trigger_chance) + m_trigger_chance(trigger_chance), + m_simple_catch_up(simple_catch_up) { } virtual std::set<std::string> getTriggerContents() @@ -212,6 +214,10 @@ public: { return m_trigger_chance; } + virtual bool getSimpleCatchUp() + { + return m_simple_catch_up; + } virtual void trigger(ServerEnvironment *env, v3s16 p, MapNode n, u32 active_object_count, u32 active_object_count_wider); }; |