Miscellaneous but steady game updates this week, while still refactoring the active ability system.
- Cone area effects. I wanted to support such effects as they're nice, interesting and commonly found in tactical games. I've added 2 skills that exemplify this so far, one that shoots multiple arrows across an arc (replicating a weapon attack multiple times really) and another one that applies fire in the entire cone area.
- Throw randomisation. When throwing things to a target tile, it might not always land there, depending on the distance and the thrower's agility score.
- Creature swapping and being restrained. When a creature cannot move for some reason, another creature cannot swap its position with it
- Web spinning fix. When spinning a web, a web object is created on the tile and its effect gets triggered when an entity moves into it. So, if that was shot directly at an entity, it wouldn't activate. Now that's fixed, as when the web is created, it also triggers immediately if there's a creature on that tile.
- LINQ allocation reduction. I use LINQ a lot, and I know it allocates quite a bit. I wanted to reduce those allocations, by adding an extension ToTempList() to replace all those ToList() calls, where a temporary list is retrieved from a pool, and it's useful when I'm running LINQ statements to get some results that will be temporary (e.g. lists of 2D positions)