diff --git a/docs/game_data/spel2.lua b/docs/game_data/spel2.lua index 7208b1954..9f0409a1e 100644 --- a/docs/game_data/spel2.lua +++ b/docs/game_data/spel2.lua @@ -464,18 +464,18 @@ function move_entity(uid, x, y, vx, vy, layer) end ---@param layer LAYER ---@return nil function move_grid_entity(uid, x, y, layer) end ----Destroy the grid entity, and its item entities, removing them from the grid without dropping particles or gold. +---Destroy the grid entity (by uid or position), and its item entities, removing them from the grid without dropping particles or gold. ---Will also destroy monsters or items that are standing on a linked activefloor or chain, though excludes MASK.PLAYER to prevent crashes ---@param uid integer ---@return nil -function destroy_grid_entity(uid) end ----Destroy the grid entity, and its item entities, removing them from the grid without dropping particles or gold. +function destroy_grid(uid) end +---Destroy the grid entity (by uid or position), and its item entities, removing them from the grid without dropping particles or gold. ---Will also destroy monsters or items that are standing on a linked activefloor or chain, though excludes MASK.PLAYER to prevent crashes ---@param x number ---@param y number ---@param layer LAYER ---@return nil -function destroy_grid_entity(x, y, layer) end +function destroy_grid(x, y, layer) end ---Make an ENT_TYPE.FLOOR_DOOR_EXIT go to world `w`, level `l`, theme `t` ---@param uid integer ---@param w integer diff --git a/docs/src/includes/_globals.md b/docs/src/includes/_globals.md index 7fa5fe884..fccf56f80 100644 --- a/docs/src/includes/_globals.md +++ b/docs/src/includes/_globals.md @@ -459,18 +459,6 @@ Change [ENT_TYPE](#ENT_TYPE)'s spawned when [Waddler](#Waddler) dies, by default Max 255 types. Use empty table as argument to reset to the game default -### destroy_grid_entity - - -> Search script examples for [destroy_grid_entity](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=destroy_grid_entity) - -#### nil destroy_grid_entity(int uid) - -#### nil destroy_grid_entity(float x, float y, [LAYER](#LAYER) layer) - -Destroy the grid entity, and its item entities, removing them from the grid without dropping particles or gold. -Will also destroy monsters or items that are standing on a linked activefloor or chain, though excludes [MASK](#MASK).PLAYER to prevent crashes - ### drop @@ -1216,6 +1204,18 @@ Depending on the image size, this can take a moment, preferably don't create the Create image from file, cropped to the geometry provided. Returns a tuple containing id, width and height. Depending on the image size, this can take a moment, preferably don't create them dynamically, rather create all you need in global scope so it will load them as soon as the game starts +### destroy_grid + + +> Search script examples for [destroy_grid](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=destroy_grid) + +#### nil destroy_grid(int uid) + +#### nil destroy_grid(float x, float y, [LAYER](#LAYER) layer) + +Destroy the grid entity (by uid or position), and its item entities, removing them from the grid without dropping particles or gold. +Will also destroy monsters or items that are standing on a linked activefloor or chain, though excludes [MASK](#MASK).PLAYER to prevent crashes + ### disable_floor_embeds diff --git a/src/game_api/rpc.cpp b/src/game_api/rpc.cpp index eaae42487..2442ce6b3 100644 --- a/src/game_api/rpc.cpp +++ b/src/game_api/rpc.cpp @@ -1673,7 +1673,7 @@ void move_grid_entity(int32_t uid, float x, float y, LAYER layer) } } -void destroy_grid_entity(int32_t uid) +void destroy_grid(int32_t uid) { if (auto entity = get_entity_ptr(uid)) { @@ -1682,7 +1682,7 @@ void destroy_grid_entity(int32_t uid) } } -void destroy_grid_entity(float x, float y, LAYER layer) +void destroy_grid(float x, float y, LAYER layer) { auto state = State::get(); uint8_t actual_layer = enum_to_layer(layer); diff --git a/src/game_api/rpc.hpp b/src/game_api/rpc.hpp index 5013d4cee..4c4c90d04 100644 --- a/src/game_api/rpc.hpp +++ b/src/game_api/rpc.hpp @@ -125,8 +125,8 @@ void change_waddler_drop(std::vector ent_types); void poison_entity(int32_t entity_uid); void modify_ankh_health_gain(uint8_t max_health, uint8_t beat_add_health); void move_grid_entity(int32_t uid, float x, float y, LAYER layer); -void destroy_grid_entity(int32_t uid); -void destroy_grid_entity(float x, float y, LAYER layer); +void destroy_grid(int32_t uid); +void destroy_grid(float x, float y, LAYER layer); void add_item_to_shop(int32_t item_uid, int32_t shop_owner_uid); void change_poison_timer(int16_t frames); void set_adventure_seed(int64_t first, int64_t second); diff --git a/src/game_api/script/lua_vm.cpp b/src/game_api/script/lua_vm.cpp index dfc15b824..73d6725c5 100644 --- a/src/game_api/script/lua_vm.cpp +++ b/src/game_api/script/lua_vm.cpp @@ -966,11 +966,12 @@ end lua["move_entity"] = move_entity_abs; /// Teleport grid entity, the destination should be whole number, this ensures that the collisions will work properly lua["move_grid_entity"] = move_grid_entity; - /// Destroy the grid entity, and its item entities, removing them from the grid without dropping particles or gold. + auto destroy_grid = sol::overload( + static_cast(::destroy_grid), + static_cast(::destroy_grid)); + /// Destroy the grid entity (by uid or position), and its item entities, removing them from the grid without dropping particles or gold. /// Will also destroy monsters or items that are standing on a linked activefloor or chain, though excludes MASK.PLAYER to prevent crashes - lua["destroy_grid_entity"] = sol::overload( - static_cast(::destroy_grid_entity), - static_cast(::destroy_grid_entity)); + lua["destroy_grid"] = destroy_grid; /// Make an ENT_TYPE.FLOOR_DOOR_EXIT go to world `w`, level `l`, theme `t` lua["set_door_target"] = set_door_target; /// Short for [set_door_target](#set_door_target).