Commit graph

23358 commits

Author SHA1 Message Date
spjspj
8887cca387 slightly offcenter 2018-03-01 00:32:30 +11:00
spjspj
6516e7eea4
Merge pull request #4556 from spjspj/master
Adding in way to render BFZ style full art lands (BFZ and HOU full ar…
2018-02-28 00:54:04 +10:00
spjspj
596ca5be86 Adding in way to render BFZ style full art lands (BFZ and HOU full art lands)
Things still to do:
1) Get everyone to download the full art Face images ...
2) Add in the collector number to the Face images (<ImageDirector>/FACE/ZEN/Island.<numberneeded>.jpg for example)
4) Maybe even add in an UST (Unstable) way of rendering lands (with the swoosh of opaque full art down the bottom).
2018-02-28 01:25:29 +11:00
spjspj
154c2121b1
Merge pull request #4555 from spjspj/master
Modifying zendikar curved box to use a path instead. (Will be easier …
2018-02-28 00:35:02 +11:00
spjspj
a28e273dcc Modifying zendikar curved box to use a path instead. (Will be easier to then draw BFZ lands similarly). 2018-02-28 00:02:14 +11:00
Shaun Hannah
7c7f88ab3c [WIP] S3 Upload of JSON log 2018-02-27 05:17:20 -05:00
Shaun Hannah
7f94c724af Git ignore the game-<UUID>.json logs 2018-02-26 19:25:00 -05:00
Shaun Hannah
4b331355de [WIP] SPIKE - gson @Expose 2018-02-26 19:24:00 -05:00
Shaun Hannah
6aeb3c7c3a [WIP] Consumable JSON game logs
As discussed in https://github.com/magefree/mage/issues/4515

This exposes a JSON log of game interactions that can be analyzed.

This is just a first pass, to get up to speed with how the messaging works. It'd like to trim down the messages much
further so they don't include redundant information in each message. Also gson supports much more advances serialization
options; such as using the @Expose annotation. We should probably use that, but I ran into some issues (I'm not a java
developer, so still learning).

TODO:
  These currently only exist on the client side; ideally we'd submit this logs back up to a central server after the
  games completion; thinking this could be simple via an S3 file drop, and a Lambda function to process and expose the
  logs; maybe via a kafka stream.

Examples of log messages are below:

```
{
  "gameId": "2cede8c5-ff8e-4f8c-b9ac-66af53c0a254",
  "sessionId": "5c4o149-678483-je42ycva-1-je42ycw2-4",
  "type": "GAME_SELECT",
  "value": {
    "gameView": {
      "priorityTime": 3000,
      "players": [
        {
          "name": "computer",
          "life": 20,
          "counters": {}
        },
        {
          "name": "hooptie",
          "life": 20,
          "counters": {}
        }
      ],
      "hand": {
        "425d774f-ee0c-4a9b-8516-c98f886943f0": {
          "name": "Springleaf Drum",
          "power": "0",
          "toughness": "0",
          "loyalty": "",
          "manaCost": [
            "{1}"
          ],
          "convertedManaCost": 1,
          "type": 0,
          "paid": false,
          "id": "425d774f-ee0c-4a9b-8516-c98f886943f0"
        },
        "dd41bb4b-7fc3-4a3c-a69c-d18e281a1bff": {
          "name": "Blade of the Bloodchief",
          "power": "0",
          "toughness": "0",
          "loyalty": "",
          "manaCost": [
            "{1}"
          ],
          "convertedManaCost": 1,
          "type": 0,
          "paid": false,
          "id": "dd41bb4b-7fc3-4a3c-a69c-d18e281a1bff"
        },
        "06eb0a6c-1e70-4dc0-bd1c-93b6ea444806": {
          "name": "Ornithopter",
          "power": "0",
          "toughness": "2",
          "loyalty": "",
          "manaCost": [
            "{0}"
          ],
          "convertedManaCost": 0,
          "type": 0,
          "paid": false,
          "id": "06eb0a6c-1e70-4dc0-bd1c-93b6ea444806"
        },
        "a2f9cc13-e71a-4c9c-96aa-5424ea1a6b64": {
          "name": "Springleaf Drum",
          "power": "0",
          "toughness": "0",
          "loyalty": "",
          "manaCost": [
            "{1}"
          ],
          "convertedManaCost": 1,
          "type": 0,
          "paid": false,
          "id": "a2f9cc13-e71a-4c9c-96aa-5424ea1a6b64"
        },
        "91239f4f-9003-4c48-8ca1-4c318f892489": {
          "name": "Cranial Plating",
          "power": "0",
          "toughness": "0",
          "loyalty": "",
          "manaCost": [
            "{2}"
          ],
          "convertedManaCost": 2,
          "type": 0,
          "paid": false,
          "id": "91239f4f-9003-4c48-8ca1-4c318f892489"
        },
        "feb268d8-0535-4a9c-8915-83dd92a08c4c": {
          "name": "Arcbound Ravager",
          "power": "0",
          "toughness": "0",
          "loyalty": "",
          "manaCost": [
            "{2}"
          ],
          "convertedManaCost": 2,
          "type": 0,
          "paid": false,
          "id": "feb268d8-0535-4a9c-8915-83dd92a08c4c"
        }
      },
      "canPlayInHand": [
        "06eb0a6c-1e70-4dc0-bd1c-93b6ea444806"
      ],
      "stack": {},
      "combat": [],
      "phase": "PRECOMBAT_MAIN",
      "step": "PRECOMBAT_MAIN"
    },
    "message": "Play spells and abilities.",
    "options": {
      "queryType": "SELECT"
    }
  }
}
{
  "gameId": "2cede8c5-ff8e-4f8c-b9ac-66af53c0a254",
  "sessionId": "5c4o149-678483-je42ycva-1-je42ycw2-4",
  "type": "SEND_PLAYER_UUID",
  "value": "06eb0a6c-1e70-4dc0-bd1c-93b6ea444806"
}
{
  "gameId": "2cede8c5-ff8e-4f8c-b9ac-66af53c0a254",
  "sessionId": "5c4o149-678483-je42ycva-1-je42ycw2-4",
  "type": "GAME_CHOOSE_PILE",
  "value": {
    "choices": {
      "1ecf8671-be4c-4060-a76b-af614235a5b7": "Cast Ornithopter"
    }
  }
}
{
  "gameId": "2cede8c5-ff8e-4f8c-b9ac-66af53c0a254",
  "sessionId": "5c4o149-3v2cj2-je43178o-1-je43179f-4",
  "type": "GAME_INIT",
  "value": {
    "priorityTime": 3000,
    "players": [
      {
        "name": "computer",
        "life": 20,
        "counters": {}
      },
      {
        "name": "hooptie",
        "life": 20,
        "counters": {}
      }
    ],
    "hand": {
      "425d774f-ee0c-4a9b-8516-c98f886943f0": {
        "name": "Springleaf Drum",
        "power": "0",
        "toughness": "0",
        "loyalty": "",
        "manaCost": [
          "{1}"
        ],
        "convertedManaCost": 1,
        "type": 0,
        "paid": false,
        "id": "425d774f-ee0c-4a9b-8516-c98f886943f0"
      },
      "dd41bb4b-7fc3-4a3c-a69c-d18e281a1bff": {
        "name": "Blade of the Bloodchief",
        "power": "0",
        "toughness": "0",
        "loyalty": "",
        "manaCost": [
          "{1}"
        ],
        "convertedManaCost": 1,
        "type": 0,
        "paid": false,
        "id": "dd41bb4b-7fc3-4a3c-a69c-d18e281a1bff"
      },
      "06eb0a6c-1e70-4dc0-bd1c-93b6ea444806": {
        "name": "Ornithopter",
        "power": "0",
        "toughness": "2",
        "loyalty": "",
        "manaCost": [
          "{0}"
        ],
        "convertedManaCost": 0,
        "type": 0,
        "paid": false,
        "id": "06eb0a6c-1e70-4dc0-bd1c-93b6ea444806"
      },
      "a2f9cc13-e71a-4c9c-96aa-5424ea1a6b64": {
        "name": "Springleaf Drum",
        "power": "0",
        "toughness": "0",
        "loyalty": "",
        "manaCost": [
          "{1}"
        ],
        "convertedManaCost": 1,
        "type": 0,
        "paid": false,
        "id": "a2f9cc13-e71a-4c9c-96aa-5424ea1a6b64"
      },
      "91239f4f-9003-4c48-8ca1-4c318f892489": {
        "name": "Cranial Plating",
        "power": "0",
        "toughness": "0",
        "loyalty": "",
        "manaCost": [
          "{2}"
        ],
        "convertedManaCost": 2,
        "type": 0,
        "paid": false,
        "id": "91239f4f-9003-4c48-8ca1-4c318f892489"
      },
      "feb268d8-0535-4a9c-8915-83dd92a08c4c": {
        "name": "Arcbound Ravager",
        "power": "0",
        "toughness": "0",
        "loyalty": "",
        "manaCost": [
          "{2}"
        ],
        "convertedManaCost": 2,
        "type": 0,
        "paid": false,
        "id": "feb268d8-0535-4a9c-8915-83dd92a08c4c"
      }
    },
    "canPlayInHand": [
      "06eb0a6c-1e70-4dc0-bd1c-93b6ea444806"
    ],
    "stack": {},
    "combat": [],
    "phase": "PRECOMBAT_MAIN",
    "step": "PRECOMBAT_MAIN"
  }
}
{
  "gameId": "2cede8c5-ff8e-4f8c-b9ac-66af53c0a254",
  "sessionId": "5c4o149-3v2cj2-je43178o-1-je43179f-4",
  "type": "GAME_SELECT",
  "value": {
    "gameView": {
      "priorityTime": 3000,
      "players": [
        {
          "name": "computer",
          "life": 20,
          "counters": {}
        },
        {
          "name": "hooptie",
          "life": 20,
          "counters": {}
        }
      ],
      "hand": {
        "425d774f-ee0c-4a9b-8516-c98f886943f0": {
          "name": "Springleaf Drum",
          "power": "0",
          "toughness": "0",
          "loyalty": "",
          "manaCost": [
            "{1}"
          ],
          "convertedManaCost": 1,
          "type": 0,
          "paid": false,
          "id": "425d774f-ee0c-4a9b-8516-c98f886943f0"
        },
        "dd41bb4b-7fc3-4a3c-a69c-d18e281a1bff": {
          "name": "Blade of the Bloodchief",
          "power": "0",
          "toughness": "0",
          "loyalty": "",
          "manaCost": [
            "{1}"
          ],
          "convertedManaCost": 1,
          "type": 0,
          "paid": false,
          "id": "dd41bb4b-7fc3-4a3c-a69c-d18e281a1bff"
        },
        "06eb0a6c-1e70-4dc0-bd1c-93b6ea444806": {
          "name": "Ornithopter",
          "power": "0",
          "toughness": "2",
          "loyalty": "",
          "manaCost": [
            "{0}"
          ],
          "convertedManaCost": 0,
          "type": 0,
          "paid": false,
          "id": "06eb0a6c-1e70-4dc0-bd1c-93b6ea444806"
        },
        "a2f9cc13-e71a-4c9c-96aa-5424ea1a6b64": {
          "name": "Springleaf Drum",
          "power": "0",
          "toughness": "0",
          "loyalty": "",
          "manaCost": [
            "{1}"
          ],
          "convertedManaCost": 1,
          "type": 0,
          "paid": false,
          "id": "a2f9cc13-e71a-4c9c-96aa-5424ea1a6b64"
        },
        "91239f4f-9003-4c48-8ca1-4c318f892489": {
          "name": "Cranial Plating",
          "power": "0",
          "toughness": "0",
          "loyalty": "",
          "manaCost": [
            "{2}"
          ],
          "convertedManaCost": 2,
          "type": 0,
          "paid": false,
          "id": "91239f4f-9003-4c48-8ca1-4c318f892489"
        },
        "feb268d8-0535-4a9c-8915-83dd92a08c4c": {
          "name": "Arcbound Ravager",
          "power": "0",
          "toughness": "0",
          "loyalty": "",
          "manaCost": [
            "{2}"
          ],
          "convertedManaCost": 2,
          "type": 0,
          "paid": false,
          "id": "feb268d8-0535-4a9c-8915-83dd92a08c4c"
        }
      },
      "canPlayInHand": [
        "06eb0a6c-1e70-4dc0-bd1c-93b6ea444806"
      ],
      "stack": {},
      "combat": [],
      "phase": "PRECOMBAT_MAIN",
      "step": "PRECOMBAT_MAIN"
    },
    "message": "Play spells and abilities.",
    "options": {
      "queryType": "SELECT"
    }
  }
}
{
  "gameId": "2cede8c5-ff8e-4f8c-b9ac-66af53c0a254",
  "sessionId": "5c4o149-678483-je42ycva-1-je42ycw2-4",
  "type": "SEND_PLAYER_UUID",
  "value": "1ecf8671-be4c-4060-a76b-af614235a5b7"
}
```
2018-02-26 19:23:00 -05:00
Jeff
fe3a023c36 - Fixed Djinn Illuminatus #4552 2018-02-26 11:18:17 -06:00
LevelX2
79939c5ee7 Merge origin/master 2018-02-26 16:17:48 +01:00
LevelX2
5f98cb685e * Hushwing Gryff - Fixed that log message was sent out too often (fixes #4548). 2018-02-26 16:17:16 +01:00
Oleg Agafonov
aeb1fa6bb3 Card text fixes 2018-02-26 16:48:38 +04:00
Oleg Agafonov
ed8b59ff6f
Merge pull request #4553 from lcoviedo/master
spells cost reduction text
2018-02-26 16:46:56 +04:00
lcoviedo
1dd88b0ea7
spells cost reduction text 2018-02-26 12:27:19 +00:00
spjspj
871b035bb4
Merge pull request #4551 from spjspj/master
Adding in way to render Zendikar full art lands.
2018-02-26 15:31:10 +11:00
spjspj
afeb1c16ac Adding in way to render Zendikar full art lands.
Things still to do:
1) Get everyone to download the full art Face images
2) Add in the collector number to the Face images (<ImageDirector>/FACE/ZEN/Island.<numberneeded>.jpg for example)
3) Add in the ability to draw say BFZ / HOU full art lands as well.
4) Maybe even add in an UST (Unstable) way of rendering lands (with the swoosh of opaque full art down the bottom).
2018-02-26 15:22:59 +11:00
spjspj
576c1aec57 Adding in way to render Zendikar full art lands.
Things still to do:
1) Get everyone to download the full art Face images
2) Add in the collector number to the Face images (<ImageDirector>/FACE/ZEN/Island.<numberneeded>.jpg for example)
3) Add in the ability to draw say BFZ / HOU full art lands as well.
4) Maybe even add in an UST (Unstable) way of rendering lands (with the swoosh of opaque full art down the bottom).
2018-02-26 12:47:18 +11:00
L_J
2da32a767c
Implemented Just Fate 2018-02-25 21:44:52 +00:00
L_J
5246b96005
Implemented Heavy Fog 2018-02-25 21:43:58 +00:00
L_J
a87cbc12c7
Implemented cards 2018-02-25 21:42:46 +00:00
L_J
84f2d5cb27
Implemented cards 2018-02-25 21:42:07 +00:00
L_J
5104442d6d
Implemented Warrior's Stand 2018-02-25 21:41:18 +00:00
L_J
3af8e03350
Implemented Kongming's Contraptions 2018-02-25 21:40:30 +00:00
L_J
2892573fd3
Implemented Just Fate 2018-02-25 21:39:57 +00:00
L_J
47c3117dd3
Implemented Heavy Fog 2018-02-25 21:39:25 +00:00
L_J
cb677fa983
Implemented Goblin War Cry 2018-02-25 21:38:47 +00:00
L_J
9e2fda2a77
Implemented Eunuchs' Intrigues 2018-02-25 21:38:05 +00:00
LevelX2
ba483dd87a * Added a test for the new Blood Moon rule (set to @Ignored) because new rule is not implemented. 2018-02-25 21:59:06 +01:00
LevelX2
2fceafda93 * Fixed a bug that mana in the mana pool could not be used to pay mana costs that could only be payed with "you may spend mana as thought" effects (fixes #2581). 2018-02-25 21:53:47 +01:00
L_J
5fac17c0d4
Implemented Deep Wood 2018-02-25 15:24:55 +00:00
L_J
7e83497ba4
Implemented cards 2018-02-25 15:24:30 +00:00
L_J
b347ab3eb8
Implemented Temporary Truce 2018-02-25 15:22:41 +00:00
L_J
5152d34c41
Implemented Cruel Fate 2018-02-25 15:21:05 +00:00
L_J
65428726da
Implemented Dread Charge 2018-02-25 15:21:00 +00:00
L_J
d3eeaa28a4
Implemented Deep Wood 2018-02-25 15:20:31 +00:00
L_J
2c28f64294
CantBeBlockedByCreaturesAllEffect duration bugfix 2018-02-25 14:26:02 +00:00
L_J
aa4997607f
Implemented Harsh Justice 2018-02-25 11:54:31 +00:00
L_J
44e5366c48
Implemented Harsh Justice 2018-02-25 11:53:58 +00:00
L_J
36ef666f0e
Implemented Harsh Justice 2018-02-25 11:52:43 +00:00
LevelX2
0d4082c7f3 Merge origin/master 2018-02-25 12:34:27 +01:00
LevelX2
7e5f4f580d * Fixed wrong user active check for table health. 2018-02-25 12:33:57 +01:00
Oleg Agafonov
d7b19a1866 Fixed random game ends from 89b6aeacd6 2018-02-25 14:20:42 +04:00
LevelX2
4c88b8e6e3 * Fixed a bug of AttackedThisStepWatcher (fixes #4549). 2018-02-25 10:39:33 +01:00
L_J
a6048f497f
Implemented Blaze of Glory 2018-02-24 22:03:31 +00:00
L_J
9b3ed94cd4
Implemented Blaze of Glory 2018-02-24 22:03:25 +00:00
L_J
38a5bd01f2
Implemented Blaze of Glory 2018-02-24 22:03:17 +00:00
L_J
05123dafbf
Implemented Blaze of Glory 2018-02-24 22:03:13 +00:00
L_J
a204630180
Implemented Blaze of Glory 2018-02-24 22:00:16 +00:00
L_J
4b89342c34
Added support for Blaze of Glory 2018-02-24 21:52:05 +00:00