
Systems Design
Traits System
Using an asset from the Unity asset store to gain the general functionality of an autochess game I created my own set of traits.
Terrier: When units with this trait attack, they heal for a percentage of the damage they deal
Working: Units with this trait gain a health bonus at the start of combat as well as dealing more damage based on the amount of health they have
Toy: Units with this trait will randomly select and heal an ally
Pastoral: Units with this trait will take less damage the more units that target it as well as periodically taunting random enemies to target them
Hound: Units with this trait will target the enemy with the lowest health
Gun: Applies a bleed effect every time they attack

Traits System
Since the framework for implimenting traits was already there I was able to really focus on how the traits should work.
I used this ApplyOnAttack method to apply most of the bonus' however there were some traits where I wanted more niche or specialized effects to occur so I had to create custom methods to be able to do this including:
- OnTauntEnemies
- OnGotBleed
- OnHealAllies
Then there were also some effects where I had to think about the math involved. I wanted to maintain the abstractness of the bonus class so I wasn't creating loads of different public float variables to apply effects in different ways so I had to think about how I could manipulate the bonusValue with different operations to achieve different effects.
For example with the Pastoral trait I needed the bonus value to represent both a percentage chance of the stun happening as well as a scaler for how much damage the champion should face when surrounded by other champs.
For the percentage chance I can just divide by 100. Then for the scaler value I would multiply it by how many attackers were targeting this unit. Then took that value from 100 and divided by 100 to turn it into a percentage scaler. Finally I multiplied that value by the incoming damage to scale the incoming damage.
.png)
Combo System
As part of this project I'm imagining that I have to develop the next set for TFT which includes an overall theme with a unique set mechanic and some traits that would work for it. The overall theme I'm going with is a theme of dogs.
The mechanic I went with is this combo system since a common trait of dogs is that they cross breed to take on different traits from parents.
For it I took the data from champion A and champion B and mixed it together in a new serializable Champion object. For data that can be averaged i.e. health and damage I'm averaging it across both champs. This means that you can't just keep combining champs to make endlessly strong superpowered champs.
To improve this I'd like to try to create ranges the system can choose from. This will make the system less deterministic since crossbreeding in dogsis unpredicatable. The autochess genre is about intoducing randomness to test players strategy so this also fits into the core design of the autochess genre.
Then for data that can't be averaged i.e. character model / projectile type and attack range the system will randomly select data from either A or B.
To improve this I'd like to have a dictionary inside of each champ that has mixed versions of each trait it can refer to since players can forget which champions have already been combined.



%20(1).png)

