The Bird Programs

After the clouds in my head cleared and I gained a bit of focus, I decided on starting work on new consumables. This makes item drops more diverse and gameplay a bit more varied as well.

There were more hurdles than I expected to get these items working correctly.

The first item that I made was easy. Hummingbird. It's a single use item that refreshes the cooldown on your Soul (active item). One and done. All I had to do is create a variable and visual for when you have the item, and make it go away when you use it. EZ-PZ.

Adding extra bird programs added lots of complexity.

First, if you have a program in your inventory and you walk over another program, they needed to swap. This means that the new program is destroyed, and the one that was in your inventory is created. The newly created program had to also have a buffer to not allow the player to pick it up for a brief period so they don't infinitely swap.

With that finished, I had to figure out a system to apply temporary stat changes to the player. A few extra variables to hold values before the change and a few timers to keep track of when the effect ends and to change it back and we're good to go.

Now, the player needs to know which effects are active. This was the interesting part that I over-complicated. I wanted to display an icon with a timer beneath it corresponding to the active ability. (ie. when you use "Eagle", it shows an eagle icon with a decreasing number beneath it) This would be easy with only a single effect being available at a time. There are multiple different cooldown effects which the player can have simultaneously. This meant that I needed to make an adaptive system to move icons as cooldowns expired.

A ds_list and a few "for" loops later, I managed to make it work. Now, when you use a program, it shows the icon in the first available space to the right of the last used program. If a cooldown expires, the remaining cooldowns shift to the left. Pretty neat.

In other news, I'm going to have to crack into Spriter soon to work on a couple fire animations. The code that I'm currently using for fire is way too taxing. It looks sweet, but can be done substantially more efficiently. It just takes some fine tailored sprites. I'll post more fire when I have the animations finished.

I feel like I need a fresh set of eyes on the game soon. I'll probably invite over a friend to toy around with the first 2 levels and get some feedback. It's still not feeling very challenging, but it could just be because I've played it so much and I know it so well.


Until next time.