diff --git a/oracle.go b/oracle.go index 7ba1fbf..69f60a8 100644 --- a/oracle.go +++ b/oracle.go @@ -4,11 +4,12 @@ import ( "log" . "git.saintnet.tech/tomecraft/tome_lib" + "github.com/google/uuid" ) func OracleUpkeep(c *Card, g *Game) { switch c.Type { - case Eight: + case ShieldWall: c.Sick = true if c.Counters >= 3 { g.GameBoard.Remove(c) @@ -42,13 +43,26 @@ func OracleCast(c *Card, g *Game) bool { func OracleEnters(c *Card, g *Game) { c.Sick = true switch c.Type { - case Ace: + case Speedster: c.Sick = false return - case Four: - AddEffect(c, &Effect{c.Id, c.Id, 2}) - case Eight: + case Scholar: + AddEffect(c, &Effect{c.Id, c.Id, 2, 1}) + case ShieldWall, Tree: c.Counters = 0 + case HealthPotion: + g.SentinalPlayer.Life = g.SentinalPlayer.Life + 1 + g.ScourgePlayer.Life = g.ScourgePlayer.Life + 1 + case Goblin: + for i := 0; i < 2; i++ { + for k, v := range g.GetBoard(c.Owner) { + if v.Empty() { + g.GetBoard(c.Owner)[k] = NewCard(int(GoblinSpawn), c.Owner, k, uuid.Nil) + break + } + } + } + } } @@ -59,22 +73,27 @@ func OracleTick(c *Card, g *Game) { row := g.GetBoard(c.Owner) switch c.Type { - case Two: + case Commander: //+1 to all for _, v := range row { if v.Id != c.Id { - AddEffect(v, &Effect{c.Id, v.Id, 1}) + AddEffect(v, &Effect{c.Id, v.Id, 1, 1}) } } - case Three: + case Paladin: //+1 around it if c.Position-1 >= 0 { - AddEffect(row[c.Position-1], &Effect{c.Id, row[c.Position-1].Id, 1}) + AddEffect(row[c.Position-1], &Effect{c.Id, row[c.Position-1].Id, 1, 1}) } if c.Position+1 <= 3 { - AddEffect(row[c.Position+1], &Effect{c.Id, row[c.Position+1].Id, 1}) + AddEffect(row[c.Position+1], &Effect{c.Id, row[c.Position+1].Id, 1, 1}) + } + case Tree: + if c.Counters >= 5 { + AddEffect(row[c.Position], &Effect{c.Id, row[c.Position].Id, 1, 8}) } } + } func OracleLeaves(c *Card, g *Game) { @@ -83,12 +102,12 @@ func OracleLeaves(c *Card, g *Game) { } row := g.GetBoard(c.Owner) switch c.Type { - case Two: + case Commander: //remove +1 to all for _, v := range row { RemoveEffect(c.Id, v) } - case Three: + case Paladin: //+1 around it if c.Position-1 >= 0 { RemoveEffect(c.Id, row[c.Position-1]) @@ -96,27 +115,47 @@ func OracleLeaves(c *Card, g *Game) { if c.Position+1 <= 3 { RemoveEffect(c.Id, row[c.Position+1]) } - + case HealthPotion: + g.SentinalPlayer.Life = g.SentinalPlayer.Life - 1 + g.ScourgePlayer.Life = g.ScourgePlayer.Life - 1 } return } func OracleEndstep(c *Card, g *Game) { switch c.Type { - case Eight: + case ShieldWall, Tree: c.Counters = c.Counters + 1 } return } func OraclePower(c CardType, g *Game) int { - return int(c) + //this is horrible + switch c { + case Speedster, HealthPotion, Tree, Goblin: + return 1 + case Commander: + return 2 + case Paladin: + return 3 + case Scholar: + return 4 + case Warrior: + return 5 + case Fighter: + return 6 + case Seven: + return 7 + default: + return int(c) + } } func OracleMove(c *Card, src, dest int, g *Game) { c.Sick = true switch c.Type { - case Three: + case Paladin: row := g.GetBoard(c.Owner) if src-1 >= 0 { RemoveEffect(c.Id, row[src-1]) @@ -140,7 +179,7 @@ func OracleEffect(c *Card, g *Game) { case 0: log.Println("dummy effect applied. probably a bug") case 1: - c.Power = c.Power + 1 + c.Power = c.Power + e.Modifier case 2: if c.Owner != SentinalID && c.Owner != ScourgeID { log.Println("card draw effect was played but with no owner?") @@ -150,6 +189,8 @@ func OracleEffect(c *Card, g *Game) { g.CanDraw = true g.HasDrawn = false RemoveEffect(e.Owner, c) + case 3: + c.BasePower = e.Modifier default: log.Println("wrong effect type") }