I like to play with a group of companions, usually ranging in size from 4 to 6 companions. I got tired of giving orders to one companion at a time. So I started experimenting with companion scripts. I quickly discovered that the Partner's companion scripts are as large as they can be and no additions can be made without removing some functionality from the existing scripts. I then thought I would make my own companions based on Grumpy's 3.1 companion template. But after creating a few companions, I realized I wasn't interested in creating my own companion mod. However the companions I created were enough to allow me to test my ideas. After achieving some success, I decided I needed a bigger group of companions and turned to the MCA companions. After examining their script, I decided that modifying their script was the easiest way for me to proceed and that is how this mod became MCA Companions Enhanced.
Current Functionality
I finished adding Grumpy's 3.1 companion template and dialog to the MCA companions as part of it was already implemented. The only thing I didn't add was Dinkum Thinkum's Potion Saver code. I then added the functions I had working on my original experimental companions. If they become poisoned, they will drink a Cure Poison potion if they have one. If they become diseased, they will cast a Cure Common Disease spell or a Cure Blight Disease spell as needed.
By dropping a miscellaneous item that looks like a silverware bowl, I can make a group of MCA companions remove their armor. When I pick up the bowl, they put their finest armor back on. By dropping another bowl, they remove their clothing. By picking up either bowl, they put on their finest clothing and armor.
I then added the ability to command them as a group to dance, follow, wander, or stand still. By dropping another bowl, a menu pops up with those options. Pick one and the group of companions responds as requested. I put these functions behind a timer so it may take a few seconds before all the companions respond. Picking up the movement controller does nothing to the companions but prepares things for the next movement command. The dance command isn't particularly useful with the MCA companions. So I added a dialog option to individually toggle their dance response on and off. It starts out turned off for all MCA companions. This may not sound useful but I sometimes modify my save game using the Enchanted editor and change the drunk animation to a dance animation.
The next annoyance I addressed was having to constantly supply them with Restore Health potions. I wanted them to purchase their own. I also wanted this to happen wherever the player liked and not just at the potion sellers I set up. I use another silverware bowl to control the potion shopping. When the player is at a distance of 350 units or less from the controller, companion potion shopping is turned on. When the player is more than 350 units from the controller, companion potion shopping is turned off. The companions require gold to buy potions. Currently they get a flat 20% discount off the retail price. They are limited to 3 Cure Poison potions and 5 Restore Health potions of each type. The type of Restore Health potion they buy depends upon their level. At any level they purchase Standard Restore Health potions. At level 10 and above they purchase Quality Restore Health potions. At level 20 and above they purchase Exclusive Restore Health potions. They do not buy Cheap or Bargain potions. The potion shopping controller can be bought from the Outfitter in Balmora. You can then place this controller in any shop you frequent or in your home base.
Further Possibilities
I'm thinking of extending the shopping to include a limited number of constant effect enchanted items. The items would be rings, amulets and belts. They would be enchanted with Restore Health, Shield or Sanctuary. I know the game engine "remembers" or "forgets" about these items while processing the NPC. But they function well enough that they enhance the NPC's survivability. This would use a separate controller placed near enchanters and may be for sale with the other controllers.
Ammo could be another item they shop for. This would include arrows, bolts, throwing stars, etc. I could check their weapon type and marksman ability to determine what ammo they would buy. Again it would be a separate controller placed near munition sellers and may be for sale with the other controllers.
A level up routine would be nice. I don't want to put it in the main companion script because it takes up too much room. Maybe a targeted script would work. But I certainly don't want a separate script for each companion. The other possibility I thought of is having the companion script determine when level up should occur and the actual level up occurring during dialog.
Current Limitations
You can't place shopping controllers near each other or where you expect to use the armor, clothing and movement controllers as unexpected results may occur. The scripts change the same global variable and the companion's response is behind a timer. If I create more shopping controllers, they will have to be used in separate cells, i.e. one controller to a cell.
Because the companion's response is behind a timer, it is possible to drop a controller and then pick it up before all the companions respond.