magefree / magefree/mage

Runed Halo protection ability is wrongly implemented

Open
#13,841 3 comments 0 reactions 0 assignees View on GitHub
bug
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.