Skip to content

Commit

Permalink
HotFix - Sorcery (#33)
Browse files Browse the repository at this point in the history
Hotfix per evitare che il cast delle Instant/Sorcery causi il
crash/soft-lock del game.

## In depth 🔍 

### Sorcery - NullPointerException

La rimozione della riga seguente e le successive modifiche impedisco
alla Sorcery di causare NullPointerException nelle succesive regole.
``` diff

	$p: Player(id == $id)
	$listaSottoTipi: LinkedList() from $spell.getSubtype()
-       $sottoTipo : String() from $listaSottoTipi
then
	for (String sottoTipo : $listaSottoTipi) {
		if(sottoTipo == "Aura"){
			System.out.println("AURA");
			$scs.add("601.2cfase1");
			$scs.add("601.2cfase2");	
```

La Sorcery a nostra disposizione, _Addle_, non aveva nessun sottotipo.
Questo impediva alla regola `601.2c` di triggerare.


https://github.com/Typing-Monkeys/TeferiTheGathering/blob/91b7f695201c958fd3e1357d3a3a0ed0551f0497/mtgengine/src/main/resources/rules/Rules.drl#L5501-L5520

### Instant/Sorcery - SoftLock

La regola che finalizzava il cast delle Spell Instant, aveva un problema
nel `when`: la condizione `resolvingSpell.isPermanent == null` era
malposta in quanto bisogna controllare che sia `false` !

```diff
agenda-group "general"
no-loop true 
	when
-		$g: Game(stage == Game.GAME_STAGE, resolvingSpell != null, resolvingSpell.isPermanent == null, $id: resolvingSpell.idController)
+		$g: Game(stage == Game.GAME_STAGE, resolvingSpell != null, resolvingSpell.isPermanent == false, $id: resolvingSpell.idController)
		$p: Player(id == $id)
```


https://github.com/Typing-Monkeys/TeferiTheGathering/blob/91b7f695201c958fd3e1357d3a3a0ed0551f0497/mtgengine/src/main/resources/rules/Rules.drl#L7133-L7154
  • Loading branch information
CristianCosci authored Mar 9, 2023
2 parents 60b4953 + 5d79faf commit 7aea289
Show file tree
Hide file tree
Showing 3 changed files with 540 additions and 9 deletions.
Loading

0 comments on commit 7aea289

Please sign in to comment.