I imagine the extra damage to be up to 10-20% damage boost if the towers are doing similar damage. If the towers are significantly different in damage, then the boost would be lower (otherwise you'd have a weak tower just dealing 20% of the strong tower's damage for free).
I currently see about 3 different ways this could be implemented.
The first way I thought of is very complicated, but I feel like it gives a fair, scaling bonus that rewards users of multiple carry towers. Multiple carry towers aren't common now, but with the light deck starting off with Guards(wo)man giving each other bonuses, it seems like a theme the deck could continue.
Anyway, the first method would be to keep a three dimensional array that tracks which item applied the stacks, damage value for the stack, and which of those stacks have been used by which of the other items. For damage value, I imagine an exponential system something like this: damage value = floor(log(damage)). Then when stacks are used, the damage values are compared. If they're equal, a maximum bonus is given (10-20% or so). If they're different, the bonus is reduced significantly (if based on the higher damage dealer) or based on the lower of the two damage values.
The second would be to keep a similar array, but just keep track of the total damage boost available for each sword. So a 2D array and just store the log of the total damage dealt by each sword. x = log(antilog(x) + new_damage). Then when a different sword deals damage, it would check that value and record any amount of the boost that was used and gain ~10% bonus damage for that amount. Again, I'm thinking that if Sword 1 applied 1000 damage, then swords 2 and 3 could each "claim" that 1000 damage and gain a boost from it, 100 damage if using the 10% scaling. So because sword 1 did 100 damage, 200 bonus damage was dealt as a result. That seems decently powerful.
My third method would try to be simple and use a simple 1D array to keep track of relative amounts of damage dealt by each sword. This wouldn't allow for the bonus to be shared by multiple swords. However, with the following implementation, it would be best to have as many swords as possible attacking at once. First the damage is added to the sword's array position using the same x = log(antilog(x) + new_damage) formula, then min(0.4*log(new_damage),0.4*array_position) is subtracted from all other array positions and counted. The total amount subtracted is used to figure a bonus amount and applied to the current attack. For this one, the size of the bonus should depend on the number of swords in play since you are summing logs together. So something like bonus_factor = 1/(#_of_swords - 1) * subtraction_count/log(new_damage). -- With this method, the scaling factor in the min(,) function (0.4 above) is what determines the maximum possible boost. Maybe it should be 0.1*(# of swords equipped).
As long as the method chosen feels good to the player and isn't broken, I think it would be fine to just leave the implementation vague on the card "deals extra damage when attacking creeps damaged by the other swords." Maybe with a second phrase like "the bonus is larger if the damage dealt by the swords is similar."
I like the simplicity of the last method. It is pretty effective at meeting my goals, but weak towers are a bit too strong. Maybe add another scaling factor to make weaker towers weaker...
I guess my main worry is the level of complexity in calculating the log so often. I'm not sure how fast this function is, but maybe java.lang.Math.getExponent(float f) would do the trick more quickly. Ball-park numbers are all that's needed. Only downside is that gives you an int, but that can be cast into a float or double.
Thanks for sharing! Wow, that's a lot of thought you put into this item. I really like the idea to buff/reward the use of multiple carry towers.
Technically, maybe we could add a debuff effect to attacked creeps that wears off after some time.
And I agree, the description should be as simple as possible for the players.
This would perfectly fit to Lucifer, a unique tower that I have in mind for the light deck. I imagined him to be an angel, but he has some precious items in his inventory. That could be the swords! The idea was, if you remove the items from his inventory (aka give the fire to the humans), he turns into a Darkness card.
That tower idea sounds awesome. So many cool ideas in one tower/item set.
I imagine getting new quests with Light as one of the required elements and needing to decide whether to lose the quest and keep the swords with lucifer or release the swords and fail the quest.
Edit: About the simple debuff idea: that could work, but it seems a bit too easy/powerful to give your main carry extra damage by giving the swords to weak towers.
Part of the reason for my complicated ideas is I wanted the swords to reward similar strength towers while not caring about their style. -- By that, I mean that if you give one sword to a Hitman and the other to a Shadow with roughly the same DPS, I'd like them to give each other about the same bonus damage. -- Meanwhile, I'd like to avoid the option of getting the same bonus damage on the carry by giving the swords to a level 1 Dandelion or Spider.
Another idea for calculating bonus damage while using a simple debuff could work like this: have the sword check the DPS of the tower carrying the other sword. E.g. Sword 1 attacks the creep. Then when sword 2 attacks, it checks the DPS of sword 1 and factors that into the bonus damage formula.
In my mind, as long as the card can have a simple descriptions, the behind the scenes bit can be complicated and convoluted, provided it doesn't significantly slow down game simulation.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Second post (it gave me an error when I tried to make a separate post) -- Ah, I needed to use HTML tags to enclose my links.
Some more of my wild ideas below. I'll trust you to decide what level of simplicity is appropriate. I feel like a lot of the crazy ideas could be implemented with a simple description or warning on the card.
I don't know if you want to make the swords generic. But I was thinking it would be interesting if they were each unique. It would take some extra effort, but I think it would be a beautiful result.
There are lots of ways you could do it. They could start as generic "holy swords" while Lucifer has them. But when he drops one, they could become various evil swords, like Tyrfing linked below.
If they all start unique, they could still be transformed when they are dropped, or have their effects change. E.g. A lightbringer sword could enlighten nearby towers each time it is swung. Maybe +1 xp per hit to a random tower in range 3. Once dropped, it could become cursed and instead subtract 1 xp from nearby towers. - The card could read "provides xp to nearby towers" and then it could also say "effects reversed when cursed". And Lucifer could have a warning that dropped swords become cursed and he becomes a fallen angel.
I used the following links as references.
Tyrfing
Mythological Swords
Hindu Weapons