This modular weapon system was created by me using inheritance to create individual projectile types and then scriptable objects to individualise each weapon.
I then created multiple fire types (Automatic, Buckshot and a Charge Fire type) which were then applied to different weapons to make the weapons different.
Fire Elemental AI
This AI was created using a Behaviour Tree which was made up of different nodes which ran in order of Throwing Projectile, Attack, Detect, Chase and Patrol. All Nodes were selectors which meant if the conditions were not met, they move onto the next node.