Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - wizard_wizzle (aka ZeldaHistorian)

Your projects / Re: Zelda: Book of Mudora
June 09, 2015, 02:56:14 AM
Christopho, I watched your Twitch! It was cool watching someone else play my game, knowing they're in an entirely different country :) Unfortunately, I don't speak French, so most of your commentary was lost on me.

I noticed some issues while you were playing, some of which I was able to fix already. Others I couldn't quite tell if there was something wrong, or what the exact error was. Feel free to send me your error.txt or just log bugs in the github tracker.

List of things I've already fixed:

  • Camera pans to Ordona's lit torch during speech after torch race
  • Crista's position after coming out of the sword dungeon has been corrected. She will now appear surrounded by chuchus as intended :)
  • Sacred Grove dungeon map has been corrected, with the exit moved to the correct location
  • Instructions (hint stones) have been added for the torch lighting and eye switch puzzle rooms
  • Several other small fixes and additions to make things clearer
Your projects / Re: Zelda: Book of Mudora
May 25, 2015, 12:15:31 AM
Yes, I have created quite a few new scripts for this game, including enemies. I believe all of the sprites are ripped or edited from other Zelda games, but I had to code any behavior that Christopho hadn't made for one of his games. A lot of these scripts are not complete.
Your projects / Re: Zelda: Book of Mudora
May 22, 2015, 07:58:04 AM
That's cool, I have never done anything on Twitch. I have a new version set to release - I try to update in accordance with the engine. If you wouldn't mind, please use version 0.42:
Development / Re: Collision tests and movement
April 11, 2015, 05:24:01 PM
Thanks again! That general approach worked. Once I get some final issues worked out, I'll be done!
Development / Re: Collision tests and movement
April 10, 2015, 09:03:27 PM
I can activate it easily by adding this to the code above:

    elseif other:get_type() == "switch" then

But I can't figure out how to inactive it on leaving. How do you detect when something's not colliding? (I'm sure it's obvious and I haven't thought of it!)
Development / Re: Collision tests and movement
April 10, 2015, 07:14:33 PM
Adding a boolean worked perfectly - thanks Christopho!

One more question. Is it possible to make my custom entity block act like a block for the purpose of activating switches? It appears that when I push my block onto a switch that requires a block to activate, my block knows it's on a switch, but it does not activate the switch.
Development / Collision tests and movement
April 10, 2015, 05:01:22 PM
I have the snippet of code below where I'm essentially trying to re-create block pushing in a custom entity (in order to additional functionality for the block). The problem I'm having having is that the block doesn't start moving until after the hero has stopped pushing and has moved away from the block - rather than actually pushing the block. Is this the expected behavior and I'm doing something wrong? Is there a way to have the movement start as the hero is pushing?

  self:add_collision_test("touching", function(self, other)

    if other:get_type() == "hero" then
      local m = sol.movement.create("path")

      if other:get_direction() == 0 then m:set_path({0,0})
      elseif other:get_direction() == 1 then m:set_path({2,2})
      elseif other:get_direction() == 2 then m:set_path({4,4})
      elseif other:get_direction() == 3 then m:set_path({6,6}) end
Much improved - thank you! An addition you need is local hero = entity:get_map():get_entity("hero") for the "hero" call in on_position_changed.

One issue I'm having... I'm adding walls that affect only NPCs in order to limit the path of the platform. I've found that with "containing" as the collision test, it doesn't cause the platform to reverse direction at all, like the wall isn't there. I can get it to work with "touching" as the collision test. Not sure if you saw the same thing, or if it works okay for you.

There are also issues with the platform moving correctly after the first bounce. The first one is perfect - it hits the obstacle, pauses for a second, and reverses direction. On the second wall, it moves past the wall, finally switched direction a little bit later then bounces back only a little bit and kind of "juggles" around the wall. Did you encounter anything like this?
Development / Re: Hookshot
February 17, 2015, 04:36:38 AM
I used the trick of creating a "destructible" entity with an empty sprite and no properties, and overlaid that on top of the tile I needed to be hookshot-able.
Development / Hookshot
February 17, 2015, 04:20:07 AM
Is it defined in the API what entities the hookshot attaches to? What's the best way to force the hookshot to attach to a tile or entity, or is this even possible?
Your projects / Re: Zelda: Book of Mudora
February 04, 2015, 02:32:24 PM
Interesting... That was definitely a bug that has now been corrected. You should have no problem continuing on your current game though if you go back to village and continue with the race.
Your projects / Re: Zelda: Book of Mudora
February 03, 2015, 11:54:15 PM
Haha, no. What route did you take to get up there? Until the race is completed, anything north of town should be blocked by those yellow banner signs.
Your projects / Re: Zelda: Book of Mudora
February 03, 2015, 02:33:21 AM
No new archive yet, but probably soon. For now, the github version will be the most up to date.

I believe I found your path, and have patched it as well (sneaking between the trees south of the ranch gate, right?). The intent was that you wouldn't be able to leave the initial Ordon Village area during the intro, basically until you get the sword. At that point, you can go pretty much anywhere on the map.
Development / Re: Moving platform
February 01, 2015, 09:48:54 PM
I finally got moving platforms working! They still won't traverse water if it's on the same layer, but I placed the water on low layer, with the platform and hero on intermediate, and it worked fine. Code, for anyone who's interested:

local entity = ...
local map = entity:get_map()
local hero = map:get_entity("hero")

local ex, ey, el, hx, hy, hl
local recent_obstacle = 0
local timer

-- Platform: entity which moves in either horizontally or
-- vertically (depending on direction) and carries the hero on it.

function entity:on_created()
  self:set_size(32, 32)
  self:set_origin(20, 20)
  self:set_can_traverse("jumper", true)
  self:set_can_traverse_ground("hole", true)
  self:set_can_traverse_ground("deep_water", true)
  self:set_can_traverse_ground("traversable", false)
  self:set_can_traverse_ground("shallow_water", false)
  self:set_can_traverse_ground("wall", false)

  self:add_collision_test("overlapping", function(platform, other)
    -- This callback will be repeatedly called while other is overlapping the platform
    if other:get_type() ~= "hero" then
    local hero = other

    -- Only do this in some specific states (in particular, don't do it while jumping, flying with the hookshot, etc.)
    if hero:get_state() ~= "free" and hero:get_state() ~= "sword loading" then
    -- Keep the hero on the platform as it moves
    if timer == nil then
      timer = sol.timer.start(self, 50, function()
        timer = nil  -- This variable "timer" ensures that only one timer is running.

  local direction4 = self:get_sprite():get_direction()
  local m = sol.movement.create("path")
  m:set_path{direction4 * 2}

  self:add_collision_test("containing", function(platform, other)
    if other:get_type() == "wall" and other:get_type() ~= "jumper" then


function entity:on_obstacle_reached(movement)

  local direction4 = self:get_sprite():get_direction()
  if direction4 == 0 then
    direction4 = 2
  elseif direction4 == 2 then
    direction4 = 0
  elseif direction4 == 1 then
    direction4 = 3
  elseif direction4 == 3 then
    direction4 = 1

  movement:set_path{direction4 * 2}

  local x, y = self:get_position()
  recent_obstacle = 8

function entity:on_position_changed()
  if timer ~= nil then
    hx, hy, hl = hero:get_position()
    ex, ey, el = entity:get_position()
    local ox = hx - ex
    local oy = hy - ey
    hero:set_position(hx-(ox/10), hy-(oy/10))

  if recent_obstacle > 0 then
    recent_obstacle = recent_obstacle - 1

function entity:on_movement_changed(movement)
  local direction4 = movement:get_direction4()
Your projects / Re: Zelda: Book of Mudora
February 01, 2015, 06:48:19 PM
Hey Christopho,

Thanks for playing, and thanks for the compliments!

When you could no longer go back to the minigame, was that after you left the map for the huge forest in the west? If so, I've fixed that issue - you can no longer go west as long as the race is going on (although if you got there from using control, I'd recommend deleting the debug file anyway because that could cause all kinds of other issues!). You'll definitely get to explore the forest and talk to Gerudos, but not until after the intro section :)

I'm slowly working on all of those scrolling issues, unfortunately there are several of them. That's the main reason I left debug mode on in the demo so control could be used to traverse these if needed. I'd recommend starting a new game though...