Runed Halo protection ability is wrongly implemented
- Dominant language
- Java
- Stars
- 2.4k
- Forks
- 940
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 160
Description
[[Runed Halo]] protection is currently implemented as a `OneShotEffect` after the name choice. This works on simple usage, but is wrong if the Halo changes controller, or if the Halo loses abilities.
Ideally, we would add the protection part with something like for Absolute Virtue:
```
this.addAbility(new SimpleStaticAbility(new GainAbilityControllerEffect(new RunedHaloProtectionAbility()));
class RunedHaloProtectionAbility extend ProtectionAbility { ... }
```
However the engine needs tweaks as this can not work currently, the player gained ability lose track of the source of the ability that granted the protection, hence it is not possible to retrieve the stored card name.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by tracing Runed Halo's current OneShotEffect implementation and compare it with the Absolute Virtue approach described in the issue. Investigate how granted abilities track their source when control changes or abilities are lost; done means protection still retrieves the stored card name in those cases.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- game-dev
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100