Author Topic: What changed in 1.5.3?  (Read 297 times)

Starlock

  • Jr. Member
  • **
  • Posts: 96
    • View Profile
What changed in 1.5.3?
« on: June 01, 2018, 06:13:51 pm »
Hey, I created a custom grass entity in 1.5.0. Everything worked fine until I downloaded 1.5.3, and now there'es a problem. The code creates grass beneath the hero that normally disappears when the hero leaves the grass or cuts the grass down, but in 1.5.3 the grass doesn't disappear anymore.

This is the code:

Code: Lua
  1. local entity = ...
  2. local game = entity:get_game()
  3. local map = entity:get_map()
  4. local hero = map:get_hero()
  5. local grass = false
  6.  
  7. local function resetherospeed()
  8. local hero = map:get_hero()
  9.   hero:set_walking_speed(88)
  10. end
  11.  
  12.  
  13.  
  14.  
  15.  
  16. local function on_collision(torch, other, torch_sprite, other_sprite)
  17.  
  18.   if other:get_type() == "custom_entity" then
  19.  
  20.     local other_model = other:get_model()
  21.     if other_model == "fire" or other_model == "bluefire" then
  22.  
  23.     local x, y, layer = entity:get_position()
  24.     map:create_pickable({layer = layer, x=x, y=y, treasure_name="random"})
  25.  
  26.   if map:has_entity("grassprite") then
  27.     map:get_entity("grassprite"):remove()
  28.   end
  29.  
  30. map:create_custom_entity({direction=0,
  31.     layer=layer,x=x,y=y, width = 40, height = 56, model="ground_effects/falling_leaves", name = "leaves"})
  32.  
  33.     entity:remove()
  34.  
  35. sol.timer.start(350, function()
  36.   local x,y, layer = entity:get_position()
  37.  
  38. if other_model == "fire" then
  39.  
  40. map:create_custom_entity({direction=0,
  41.     layer=layer,x=x,y=y + 16, width = 16, height = 16, model="fire"})
  42.  
  43. map:create_custom_entity({direction=0,
  44.     layer=layer,x=x,y=y - 16, width = 16, height = 16, model="fire"})
  45.  
  46. map:create_custom_entity({direction=0,
  47.     layer=layer,x=x + 16,y=y, width = 16, height = 16, model="fire"})
  48.  
  49. map:create_custom_entity({direction=0,
  50.     layer=layer,x=x - 16,y=y, width = 16, height = 16, model="fire"})
  51.  
  52. elseif other_model == "bluefire" then
  53.  
  54. map:create_custom_entity({direction=0,
  55.     layer=layer,x=x,y=y + 16, width = 16, height = 16, model="bluefire"})
  56.  
  57. map:create_custom_entity({direction=0,
  58.     layer=layer,x=x,y=y - 16, width = 16, height = 16, model="bluefire"})
  59.  
  60. map:create_custom_entity({direction=0,
  61.     layer=layer,x=x + 16,y=y, width = 16, height = 16, model="bluefire"})
  62.  
  63. map:create_custom_entity({direction=0,
  64.     layer=layer,x=x - 16,y=y, width = 16, height = 16, model="bluefire"})
  65.  
  66. end
  67.  
  68.   end)
  69.     end
  70.  
  71.   end
  72. end
  73.  
  74.  
  75.  
  76.  
  77. -- Event called when the custom entity is initialized.
  78. function entity:on_created()
  79.  
  80.   self:set_size(16, 16)
  81.   self:set_modified_ground("traversable")
  82.   self:set_traversable_by("hero", true)
  83.   self:create_sprite("entities/grass")
  84.  
  85.   self:add_collision_test("center", function(entity, hero)
  86.  
  87.  
  88.  
  89.     if not grass then
  90.      
  91.       if hero:get_animation() == "walking" or hero:get_animation() == "walking_with_shield" or hero:get_animation() == "rolling" or hero:get_animation() == "carrying_walking" and not grass then
  92. grass = true
  93.  
  94.     print(hero:get_walking_speed())
  95.  
  96. grass = false
  97.         local x, y, layer = hero:get_position()
  98.  
  99. if not map:get_entity("leaves") then
  100.  
  101. map:create_custom_entity({direction=0,
  102.     layer=layer,x=x,y=y, width = 40, height = 56, model="ground_effects/falling_leaves", name = "leaves"})
  103.  
  104. end
  105.  
  106.       sol.timer.start(300, function()
  107.   return true
  108.  
  109.  
  110.  
  111.       end)
  112.  
  113.       end
  114.     end
  115.  
  116.         local x, y, layer = hero:get_position()
  117.  
  118. if not map:get_entity("grassprite") then
  119.  
  120. map:create_custom_entity({direction=0,
  121.     layer=layer + 1,x=x,y=y, width = 16, height = 16, model="ground_effects/grass", name = "grassprite"})
  122.  
  123. end
  124.  
  125.   end)
  126.  
  127.  
  128.   sol.timer.start(entity, 30, function()
  129.  
  130.     -- Save or clear solid ground position on this platform.
  131.     if self:is_on_platform(hero) and (hero:get_state() == "free" or hero:get_state() == "carrying") then
  132.  
  133. hero:set_walking_speed(70)
  134.  
  135.    elseif self:is_on_platform(hero) and hero:get_state() == "sword_loading" then
  136.  
  137. hero:set_walking_speed(29)
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.     elseif (not self:is_on_platform(hero)) and (hero:get_state() == "free" or hero:get_state() == "carrying") then
  145.  
  146.     hero:set_walking_speed(88)
  147.  
  148.   if map:has_entity("grassprite") then
  149.     map:get_entity("grassprite"):remove()
  150.   end
  151.  
  152.     elseif (not self:is_on_platform(hero)) and hero:get_state() == "sword_loading" then
  153.  
  154.     hero:set_walking_speed(29)
  155.  
  156.   if map:has_entity("grassprite") then
  157.     map:get_entity("grassprite"):remove()
  158.   end
  159.  
  160. ------------------------------------------
  161.  
  162.   else
  163.  
  164.  
  165.   if map:has_entity("grassprite") then
  166.     map:get_entity("grassprite"):remove()
  167.   end
  168.  
  169. -------------------------------------------
  170.  
  171.     end
  172.  
  173.  
  174.  
  175.     return true
  176.   end)
  177.  
  178.   entity:add_collision_test("sprite", function(entity, other_entity, sprite, other_sprite)
  179.     -- Do nothing if the animation set is not of the sword, or if the sword is not close enough.
  180.     if other_sprite == nil then return end
  181.     local animation_set = other_sprite:get_animation_set()
  182.     local sword_id = map:get_hero():get_sword_sprite_id()
  183.     if animation_set ~= sword_id then return end
  184.     if entity:get_distance(other_entity) > 28 then return end -- Set a max distance to cut.
  185.  
  186.     local x, y, layer = entity:get_position()
  187.     map:create_pickable({layer = layer, x=x, y=y, treasure_name="random"})
  188.  
  189.   if map:has_entity("grassprite") then
  190.     map:get_entity("grassprite"):remove()
  191.   end
  192.  
  193. map:create_custom_entity({direction=0,
  194.     layer=layer,x=x,y=y, width = 40, height = 56, model="ground_effects/falling_leaves", name = "leaves"})
  195.  
  196.     entity:remove()
  197.  
  198.   end)
  199.  
  200.  
  201.  
  202.  
  203.   entity:add_collision_test("center", function(entity, hookshot)
  204.  
  205.   if hookshot:get_sprite():get_animation() == "hook" then
  206.  
  207.     local x, y, layer = entity:get_position()
  208.     map:create_pickable({layer = layer, x=x, y=y, treasure_name="random"})
  209.  
  210.   if map:has_entity("grassprite") then
  211.     map:get_entity("grassprite"):remove()
  212.   end
  213.  
  214. map:create_custom_entity({direction=0,
  215.     layer=layer,x=x,y=y, width = 40, height = 56, model="ground_effects/falling_leaves", name = "leaves"})
  216.  
  217.     entity:remove()
  218.     end
  219.  
  220.   end)
  221.  
  222.  
  223.  
  224.  
  225. end
  226.  
  227.  
  228. function entity:is_on_platform(other)
  229.   local x, y, layer = hero:get_position()
  230.   return entity:overlaps(x, y)
  231. end
  232.  
  233. entity:add_collision_test("sprite", on_collision)
  234. entity:add_collision_test("overlapping", on_collision)
  235.  
  236.  
  237.  
  238.  

MetalZelda

  • Hero Member
  • *****
  • Posts: 551
    • View Profile
Re: What changed in 1.5.3?
« Reply #1 on: June 03, 2018, 10:04:25 pm »
You should try a recent development build, there were some issues with entities:remove()

Backup your data before
http://www.solarus-games.org/downloads/solarus/win32/

Starlock

  • Jr. Member
  • **
  • Posts: 96
    • View Profile
Re: What changed in 1.5.3?
« Reply #2 on: June 04, 2018, 01:01:18 am »
I used the most recent snapshot and it still causes the same issue.