Now that the player is able to buy skills with Terra Shards that effect the player and this progress stays throughout the game – regardless of what scene the player is in. I needed to create new skills to populate the Tree of Sorrow.
There are skills that are outlined in the GDD for Lament, however, for the sake of the vertical slice we decided to change the skills for a few reasons:
- Many of the skills require a Terra Soul, which is only available from bosses
- At this point, due to the rate of development we were unsure if we were able to get the boss done – and if we were to get it done it would be the end of the vertical slice anyway
- Some skills required to develop an entirely new attack, which meant new code, new animations and exceeded our scope for the project
- All the skills were far too expensive, this vertical slice was meant to be a quick experience for the player, and we felt cheaper, less drastic skills were the way to go
These were the discussions we had regarding the development and design of the skills and the skill tree in general:








Programming the skills
Now that we had a set idea on what the skills should do, how many of them there were and what the layout would be – I began development of these skills from left to right.
As the permanent heart upgrades were already implemented in this Development Post, the first skill I began developing at this point was Pathfinder’s Grace (Slight movement increase):
Pathfinder’s Grace

In the PlayerControllerNew script, I added a line that constantly checks the PlayerStatsManger’s moveSpeed int and updates the moveSpeed int in the player controller script with that value.

Then in the PlayerStatsManager script, I created a method that updates the moveSpeed by a float amount called UpdateMoveSpeed().

Lastly, I created a new case in the SkillManager script that calls the UpdateMoveSpeed() method when the Movespeed Boost SkillSO is maxed out.

Shard Seeker and Terrasurge

This process of creating new skills is largely the same, only differing when changing different ints or floats using different methods. Firstly I created two new SkillSO scripts called ‘TerraShard Boost’ and ‘TerraShard Boost 2’ respectively.
Then I created a new method in the PlayerStatsManager called UpdateTerrashardPickup(int amount) which would increase an int called terraShardBoost. This int would be added onto the amount of Terra Shards picked up every time the player collided with a Terra Shard gameobject. Effectively increasing the amount of Terra Shards the player got when they killed an enemy.



Lastly, I created two more cases in the SkillManager script for both skillName strings that would call the UpdateTerrashardPickup() method in the PlayerStatsManager. With a larger int as the input for the second Terra Shard Boost upgrade.

Berserker’s Path and Renewal’s Edge

These two skills increased the damage the player does to the enemies, the first increasing the players damage by 100% and then 200%. Similarly to the other skills, I started by creating two new SkillSO scripts called ‘Damage Boost’ and ‘Damage Boost 2’.
Then I created a new method in the PlayerStatsManager called UpdateDamage(float amount), which would take a float input and increase another float called damageBoost.


This damageBoost float would then be used in the Weapon script to increase the amount of damage the player does to enemies – as it increases the float input of the TakeDamage() method that the player calls in the enemy that it hits.

Lastly, I added two new cases to the SkillManager script that uses the skillName string of the new SkillSO scripts in order to call the UpdateDamage() method in the PlayerStatsManager.

Melancholia’s Key

This was the easiest of all the skills to implement, as all I had to do was:
Create a new SkillSO called ‘Unlock Key’
Create a new method in the PlayerStatsManager called UnlockKey() that sets a hasKey bool to true
Create a new case in the SkillManager script that calls the UnlockKey() method


