hearthstone 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +15 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +43 -0
  6. data/Rakefile +2 -0
  7. data/bin/hearthstone-recorder +7 -0
  8. data/hearthstone.gemspec +28 -0
  9. data/lib/hearthstone.rb +7 -0
  10. data/lib/hearthstone/commands/recorder_command.rb +86 -0
  11. data/lib/hearthstone/log.rb +7 -0
  12. data/lib/hearthstone/log/configurator.rb +41 -0
  13. data/lib/hearthstone/log/data.rb +1 -0
  14. data/lib/hearthstone/log/data/game.rb +74 -0
  15. data/lib/hearthstone/log/data/game_player.rb +25 -0
  16. data/lib/hearthstone/log/data/game_turn.rb +32 -0
  17. data/lib/hearthstone/log/game_logger.rb +128 -0
  18. data/lib/hearthstone/log/parser.rb +276 -0
  19. data/lib/hearthstone/models.rb +3 -0
  20. data/lib/hearthstone/models/AllSetsAllLanguages.json +1 -0
  21. data/lib/hearthstone/models/card.rb +20 -0
  22. data/lib/hearthstone/models/card_store.rb +50 -0
  23. data/lib/hearthstone/models/entity.rb +67 -0
  24. data/lib/hearthstone/models/game.rb +151 -0
  25. data/lib/hearthstone/models/game_loader.rb +52 -0
  26. data/lib/hearthstone/models/player.rb +37 -0
  27. data/lib/hearthstone/version.rb +3 -0
  28. data/spec/fixtures/completed.config +8 -0
  29. data/spec/fixtures/empty_config.config +0 -0
  30. data/spec/fixtures/game1.json +2433 -0
  31. data/spec/fixtures/gamelog1.json +1585 -0
  32. data/spec/fixtures/gamelog1.log +25508 -0
  33. data/spec/fixtures/gamelog2.log +85357 -0
  34. data/spec/hearthstone/log/configurator_spec.rb +61 -0
  35. data/spec/hearthstone/log/game_logger_spec.rb +57 -0
  36. data/spec/hearthstone/log/parser_spec.rb +185 -0
  37. data/spec/hearthstone/models/card_store_spec.rb +16 -0
  38. data/spec/hearthstone/models/game_loader_spec.rb +153 -0
  39. data/spec/hearthstone/models/game_spec.rb +157 -0
  40. metadata +179 -0
@@ -0,0 +1,1585 @@
1
+ {
2
+ "mode": "ranked",
3
+ "players": [
4
+ {
5
+ "id": 2,
6
+ "name": "zardeine",
7
+ "first_player": false,
8
+ "hero": {
9
+ "id": 36,
10
+ "card_id": "HERO_05"
11
+ },
12
+ "hero_power": {
13
+ "id": 37,
14
+ "card_id": "DS1h_292"
15
+ }
16
+ },
17
+ {
18
+ "id": 1,
19
+ "name": "siuying",
20
+ "first_player": true,
21
+ "hero": {
22
+ "id": 4,
23
+ "card_id": "HERO_05"
24
+ },
25
+ "hero_power": {
26
+ "id": 5,
27
+ "card_id": "DS1h_292"
28
+ }
29
+ }
30
+ ],
31
+ "turns": [
32
+ {
33
+ "number": 0,
34
+ "player": null,
35
+ "timestamp": null,
36
+ "events": [
37
+ [
38
+ "open_card",
39
+ {
40
+ "id": 4,
41
+ "card_id": "HERO_05"
42
+ }
43
+ ],
44
+ [
45
+ "open_card",
46
+ {
47
+ "id": 5,
48
+ "card_id": "DS1h_292"
49
+ }
50
+ ],
51
+ [
52
+ "open_card",
53
+ {
54
+ "id": 10,
55
+ "card_id": "EX1_556"
56
+ }
57
+ ],
58
+ [
59
+ "open_card",
60
+ {
61
+ "id": 23,
62
+ "card_id": "FP1_011"
63
+ }
64
+ ],
65
+ [
66
+ "open_card",
67
+ {
68
+ "id": 31,
69
+ "card_id": "EX1_536"
70
+ }
71
+ ],
72
+ [
73
+ "open_card",
74
+ {
75
+ "id": 36,
76
+ "card_id": "HERO_05"
77
+ }
78
+ ],
79
+ [
80
+ "open_card",
81
+ {
82
+ "id": 37,
83
+ "card_id": "DS1h_292"
84
+ }
85
+ ]
86
+ ]
87
+ },
88
+ {
89
+ "number": 1,
90
+ "player": "siuying",
91
+ "timestamp": 1418307906,
92
+ "events": [
93
+ [
94
+ "card_added_to_deck",
95
+ {
96
+ "player_id": 1,
97
+ "id": 6,
98
+ "card_id": ""
99
+ }
100
+ ],
101
+ [
102
+ "card_added_to_deck",
103
+ {
104
+ "player_id": 1,
105
+ "id": 7,
106
+ "card_id": ""
107
+ }
108
+ ],
109
+ [
110
+ "card_added_to_deck",
111
+ {
112
+ "player_id": 1,
113
+ "id": 8,
114
+ "card_id": ""
115
+ }
116
+ ],
117
+ [
118
+ "card_added_to_deck",
119
+ {
120
+ "player_id": 1,
121
+ "id": 9,
122
+ "card_id": ""
123
+ }
124
+ ],
125
+ [
126
+ "card_received",
127
+ {
128
+ "player_id": 1,
129
+ "id": 10,
130
+ "card_id": "EX1_556"
131
+ }
132
+ ],
133
+ [
134
+ "card_added_to_deck",
135
+ {
136
+ "player_id": 1,
137
+ "id": 11,
138
+ "card_id": ""
139
+ }
140
+ ],
141
+ [
142
+ "card_added_to_deck",
143
+ {
144
+ "player_id": 1,
145
+ "id": 12,
146
+ "card_id": ""
147
+ }
148
+ ],
149
+ [
150
+ "card_added_to_deck",
151
+ {
152
+ "player_id": 1,
153
+ "id": 13,
154
+ "card_id": ""
155
+ }
156
+ ],
157
+ [
158
+ "card_added_to_deck",
159
+ {
160
+ "player_id": 1,
161
+ "id": 14,
162
+ "card_id": ""
163
+ }
164
+ ],
165
+ [
166
+ "card_added_to_deck",
167
+ {
168
+ "player_id": 1,
169
+ "id": 15,
170
+ "card_id": ""
171
+ }
172
+ ],
173
+ [
174
+ "card_added_to_deck",
175
+ {
176
+ "player_id": 1,
177
+ "id": 16,
178
+ "card_id": ""
179
+ }
180
+ ],
181
+ [
182
+ "card_added_to_deck",
183
+ {
184
+ "player_id": 1,
185
+ "id": 17,
186
+ "card_id": ""
187
+ }
188
+ ],
189
+ [
190
+ "card_added_to_deck",
191
+ {
192
+ "player_id": 1,
193
+ "id": 18,
194
+ "card_id": ""
195
+ }
196
+ ],
197
+ [
198
+ "card_added_to_deck",
199
+ {
200
+ "player_id": 1,
201
+ "id": 19,
202
+ "card_id": ""
203
+ }
204
+ ],
205
+ [
206
+ "card_added_to_deck",
207
+ {
208
+ "player_id": 1,
209
+ "id": 20,
210
+ "card_id": ""
211
+ }
212
+ ],
213
+ [
214
+ "card_added_to_deck",
215
+ {
216
+ "player_id": 1,
217
+ "id": 21,
218
+ "card_id": ""
219
+ }
220
+ ],
221
+ [
222
+ "card_added_to_deck",
223
+ {
224
+ "player_id": 1,
225
+ "id": 22,
226
+ "card_id": ""
227
+ }
228
+ ],
229
+ [
230
+ "card_received",
231
+ {
232
+ "player_id": 1,
233
+ "id": 23,
234
+ "card_id": "FP1_011"
235
+ }
236
+ ],
237
+ [
238
+ "card_added_to_deck",
239
+ {
240
+ "player_id": 1,
241
+ "id": 24,
242
+ "card_id": ""
243
+ }
244
+ ],
245
+ [
246
+ "card_added_to_deck",
247
+ {
248
+ "player_id": 1,
249
+ "id": 25,
250
+ "card_id": ""
251
+ }
252
+ ],
253
+ [
254
+ "card_added_to_deck",
255
+ {
256
+ "player_id": 1,
257
+ "id": 26,
258
+ "card_id": ""
259
+ }
260
+ ],
261
+ [
262
+ "card_added_to_deck",
263
+ {
264
+ "player_id": 1,
265
+ "id": 27,
266
+ "card_id": ""
267
+ }
268
+ ],
269
+ [
270
+ "card_added_to_deck",
271
+ {
272
+ "player_id": 1,
273
+ "id": 28,
274
+ "card_id": ""
275
+ }
276
+ ],
277
+ [
278
+ "card_added_to_deck",
279
+ {
280
+ "player_id": 1,
281
+ "id": 29,
282
+ "card_id": ""
283
+ }
284
+ ],
285
+ [
286
+ "card_added_to_deck",
287
+ {
288
+ "player_id": 1,
289
+ "id": 30,
290
+ "card_id": ""
291
+ }
292
+ ],
293
+ [
294
+ "card_received",
295
+ {
296
+ "player_id": 1,
297
+ "id": 31,
298
+ "card_id": "EX1_536"
299
+ }
300
+ ],
301
+ [
302
+ "card_added_to_deck",
303
+ {
304
+ "player_id": 1,
305
+ "id": 32,
306
+ "card_id": ""
307
+ }
308
+ ],
309
+ [
310
+ "card_added_to_deck",
311
+ {
312
+ "player_id": 1,
313
+ "id": 33,
314
+ "card_id": ""
315
+ }
316
+ ],
317
+ [
318
+ "card_added_to_deck",
319
+ {
320
+ "player_id": 1,
321
+ "id": 34,
322
+ "card_id": ""
323
+ }
324
+ ],
325
+ [
326
+ "card_added_to_deck",
327
+ {
328
+ "player_id": 1,
329
+ "id": 35,
330
+ "card_id": ""
331
+ }
332
+ ],
333
+ [
334
+ "card_added_to_deck",
335
+ {
336
+ "player_id": 2,
337
+ "id": 38,
338
+ "card_id": ""
339
+ }
340
+ ],
341
+ [
342
+ "card_added_to_deck",
343
+ {
344
+ "player_id": 2,
345
+ "id": 39,
346
+ "card_id": ""
347
+ }
348
+ ],
349
+ [
350
+ "card_added_to_deck",
351
+ {
352
+ "player_id": 2,
353
+ "id": 40,
354
+ "card_id": ""
355
+ }
356
+ ],
357
+ [
358
+ "card_added_to_deck",
359
+ {
360
+ "player_id": 2,
361
+ "id": 41,
362
+ "card_id": ""
363
+ }
364
+ ],
365
+ [
366
+ "card_added_to_deck",
367
+ {
368
+ "player_id": 2,
369
+ "id": 42,
370
+ "card_id": ""
371
+ }
372
+ ],
373
+ [
374
+ "card_added_to_deck",
375
+ {
376
+ "player_id": 2,
377
+ "id": 43,
378
+ "card_id": ""
379
+ }
380
+ ],
381
+ [
382
+ "card_added_to_deck",
383
+ {
384
+ "player_id": 2,
385
+ "id": 44,
386
+ "card_id": ""
387
+ }
388
+ ],
389
+ [
390
+ "card_received",
391
+ {
392
+ "player_id": 2,
393
+ "id": 45,
394
+ "card_id": ""
395
+ }
396
+ ],
397
+ [
398
+ "card_added_to_deck",
399
+ {
400
+ "player_id": 2,
401
+ "id": 46,
402
+ "card_id": ""
403
+ }
404
+ ],
405
+ [
406
+ "card_added_to_deck",
407
+ {
408
+ "player_id": 2,
409
+ "id": 47,
410
+ "card_id": ""
411
+ }
412
+ ],
413
+ [
414
+ "card_added_to_deck",
415
+ {
416
+ "player_id": 2,
417
+ "id": 48,
418
+ "card_id": ""
419
+ }
420
+ ],
421
+ [
422
+ "card_received",
423
+ {
424
+ "player_id": 2,
425
+ "id": 49,
426
+ "card_id": ""
427
+ }
428
+ ],
429
+ [
430
+ "card_added_to_deck",
431
+ {
432
+ "player_id": 2,
433
+ "id": 50,
434
+ "card_id": ""
435
+ }
436
+ ],
437
+ [
438
+ "card_added_to_deck",
439
+ {
440
+ "player_id": 2,
441
+ "id": 51,
442
+ "card_id": ""
443
+ }
444
+ ],
445
+ [
446
+ "card_added_to_deck",
447
+ {
448
+ "player_id": 2,
449
+ "id": 52,
450
+ "card_id": ""
451
+ }
452
+ ],
453
+ [
454
+ "card_added_to_deck",
455
+ {
456
+ "player_id": 2,
457
+ "id": 53,
458
+ "card_id": ""
459
+ }
460
+ ],
461
+ [
462
+ "card_received",
463
+ {
464
+ "player_id": 2,
465
+ "id": 54,
466
+ "card_id": ""
467
+ }
468
+ ],
469
+ [
470
+ "card_added_to_deck",
471
+ {
472
+ "player_id": 2,
473
+ "id": 55,
474
+ "card_id": ""
475
+ }
476
+ ],
477
+ [
478
+ "card_added_to_deck",
479
+ {
480
+ "player_id": 2,
481
+ "id": 56,
482
+ "card_id": ""
483
+ }
484
+ ],
485
+ [
486
+ "card_added_to_deck",
487
+ {
488
+ "player_id": 2,
489
+ "id": 57,
490
+ "card_id": ""
491
+ }
492
+ ],
493
+ [
494
+ "card_added_to_deck",
495
+ {
496
+ "player_id": 2,
497
+ "id": 58,
498
+ "card_id": ""
499
+ }
500
+ ],
501
+ [
502
+ "card_received",
503
+ {
504
+ "player_id": 2,
505
+ "id": 59,
506
+ "card_id": ""
507
+ }
508
+ ],
509
+ [
510
+ "card_added_to_deck",
511
+ {
512
+ "player_id": 2,
513
+ "id": 60,
514
+ "card_id": ""
515
+ }
516
+ ],
517
+ [
518
+ "card_added_to_deck",
519
+ {
520
+ "player_id": 2,
521
+ "id": 61,
522
+ "card_id": ""
523
+ }
524
+ ],
525
+ [
526
+ "card_added_to_deck",
527
+ {
528
+ "player_id": 2,
529
+ "id": 62,
530
+ "card_id": ""
531
+ }
532
+ ],
533
+ [
534
+ "card_added_to_deck",
535
+ {
536
+ "player_id": 2,
537
+ "id": 63,
538
+ "card_id": ""
539
+ }
540
+ ],
541
+ [
542
+ "card_added_to_deck",
543
+ {
544
+ "player_id": 2,
545
+ "id": 64,
546
+ "card_id": ""
547
+ }
548
+ ],
549
+ [
550
+ "card_added_to_deck",
551
+ {
552
+ "player_id": 2,
553
+ "id": 65,
554
+ "card_id": ""
555
+ }
556
+ ],
557
+ [
558
+ "card_added_to_deck",
559
+ {
560
+ "player_id": 2,
561
+ "id": 66,
562
+ "card_id": ""
563
+ }
564
+ ],
565
+ [
566
+ "card_added_to_deck",
567
+ {
568
+ "player_id": 2,
569
+ "id": 67,
570
+ "card_id": ""
571
+ }
572
+ ],
573
+ [
574
+ "card_received",
575
+ {
576
+ "player_id": 2,
577
+ "id": 68,
578
+ "card_id": ""
579
+ }
580
+ ],
581
+ [
582
+ "card_drawn",
583
+ {
584
+ "player_id": 2,
585
+ "id": 60,
586
+ "card_id": ""
587
+ }
588
+ ],
589
+ [
590
+ "card_reshuffled",
591
+ {
592
+ "player_id": 2,
593
+ "id": 59,
594
+ "card_id": ""
595
+ }
596
+ ],
597
+ [
598
+ "choice_type",
599
+ "MULLIGAN"
600
+ ],
601
+ [
602
+ "choose",
603
+ {
604
+ "id": 31,
605
+ "card_id": "EX1_536",
606
+ "player_id": 1
607
+ }
608
+ ],
609
+ [
610
+ "card_drawn",
611
+ {
612
+ "player_id": 1,
613
+ "id": 16,
614
+ "card_id": "EX1_536"
615
+ }
616
+ ],
617
+ [
618
+ "card_played",
619
+ {
620
+ "player_id": 1,
621
+ "id": 23,
622
+ "card_id": "FP1_011"
623
+ }
624
+ ]
625
+ ]
626
+ },
627
+ {
628
+ "number": 2,
629
+ "player": "zardeine",
630
+ "timestamp": 1418307916,
631
+ "events": [
632
+ [
633
+ "card_drawn",
634
+ {
635
+ "player_id": 2,
636
+ "id": 41,
637
+ "card_id": ""
638
+ }
639
+ ],
640
+ [
641
+ "card_played",
642
+ {
643
+ "player_id": 2,
644
+ "id": 68,
645
+ "card_id": "GAME_005"
646
+ }
647
+ ],
648
+ [
649
+ "card_discarded",
650
+ {
651
+ "player_id": 2,
652
+ "id": 68,
653
+ "card_id": "GAME_005"
654
+ }
655
+ ]
656
+ ]
657
+ },
658
+ {
659
+ "number": 3,
660
+ "player": "siuying",
661
+ "timestamp": 1418307926,
662
+ "events": [
663
+ [
664
+ "card_played",
665
+ {
666
+ "player_id": 2,
667
+ "id": 41,
668
+ "card_id": "FP1_004"
669
+ }
670
+ ],
671
+ [
672
+ "card_drawn",
673
+ {
674
+ "player_id": 1,
675
+ "id": 28,
676
+ "card_id": "FP1_011"
677
+ }
678
+ ],
679
+ [
680
+ "damaged",
681
+ {
682
+ "id": 36,
683
+ "card_id": "HERO_05",
684
+ "player_id": 2,
685
+ "amount": 2
686
+ }
687
+ ],
688
+ [
689
+ "action_start",
690
+ {
691
+ "subtype": "ATTACK",
692
+ "from": {
693
+ "id": 23,
694
+ "card_id": "FP1_011",
695
+ "player_id": 1
696
+ },
697
+ "to": {
698
+ "id": 36,
699
+ "card_id": "HERO_05",
700
+ "player_id": 2
701
+ }
702
+ }
703
+ ],
704
+ [
705
+ "damaged",
706
+ {
707
+ "id": 36,
708
+ "card_id": "HERO_05",
709
+ "player_id": 2,
710
+ "amount": 3
711
+ }
712
+ ]
713
+ ]
714
+ },
715
+ {
716
+ "number": 4,
717
+ "player": "zardeine",
718
+ "timestamp": 1418307945,
719
+ "events": [
720
+ [
721
+ "card_drawn",
722
+ {
723
+ "player_id": 2,
724
+ "id": 50,
725
+ "card_id": ""
726
+ }
727
+ ],
728
+ [
729
+ "card_played",
730
+ {
731
+ "player_id": 2,
732
+ "id": 60,
733
+ "card_id": "FP1_002"
734
+ }
735
+ ],
736
+ [
737
+ "action_start",
738
+ {
739
+ "subtype": "ATTACK",
740
+ "from": {
741
+ "id": 41,
742
+ "card_id": "FP1_004",
743
+ "player_id": 2
744
+ },
745
+ "to": {
746
+ "id": 4,
747
+ "card_id": "HERO_05",
748
+ "player_id": 1
749
+ }
750
+ }
751
+ ],
752
+ [
753
+ "damaged",
754
+ {
755
+ "id": 4,
756
+ "card_id": "HERO_05",
757
+ "player_id": 1,
758
+ "amount": 2
759
+ }
760
+ ]
761
+ ]
762
+ },
763
+ {
764
+ "number": 5,
765
+ "player": "siuying",
766
+ "timestamp": 1418307956,
767
+ "events": [
768
+ [
769
+ "card_setaside",
770
+ {
771
+ "player_id": 1,
772
+ "id": 22,
773
+ "card_id": "EX1_610"
774
+ }
775
+ ],
776
+ [
777
+ "card_drawn",
778
+ {
779
+ "player_id": 1,
780
+ "id": 22,
781
+ "card_id": "EX1_610"
782
+ }
783
+ ],
784
+ [
785
+ "action_start",
786
+ {
787
+ "subtype": "ATTACK",
788
+ "from": {
789
+ "id": 23,
790
+ "card_id": "FP1_011",
791
+ "player_id": 1
792
+ },
793
+ "to": {
794
+ "id": 36,
795
+ "card_id": "HERO_05",
796
+ "player_id": 2
797
+ }
798
+ }
799
+ ],
800
+ [
801
+ "damaged",
802
+ {
803
+ "id": 36,
804
+ "card_id": "HERO_05",
805
+ "player_id": 2,
806
+ "amount": 4
807
+ }
808
+ ]
809
+ ]
810
+ },
811
+ {
812
+ "number": 6,
813
+ "player": "zardeine",
814
+ "timestamp": 1418307969,
815
+ "events": [
816
+ [
817
+ "card_drawn",
818
+ {
819
+ "player_id": 2,
820
+ "id": 65,
821
+ "card_id": ""
822
+ }
823
+ ],
824
+ [
825
+ "open_card",
826
+ {
827
+ "id": 69,
828
+ "card_id": "NEW1_032"
829
+ }
830
+ ],
831
+ [
832
+ "card_played",
833
+ {
834
+ "player_id": 2,
835
+ "id": 49,
836
+ "card_id": "NEW1_031"
837
+ }
838
+ ],
839
+ [
840
+ "card_put_in_play",
841
+ {
842
+ "player_id": 2,
843
+ "id": 69,
844
+ "card_id": "NEW1_032"
845
+ }
846
+ ],
847
+ [
848
+ "card_discarded",
849
+ {
850
+ "player_id": 2,
851
+ "id": 49,
852
+ "card_id": "NEW1_031"
853
+ }
854
+ ],
855
+ [
856
+ "action_start",
857
+ {
858
+ "subtype": "ATTACK",
859
+ "from": {
860
+ "id": 60,
861
+ "card_id": "FP1_002",
862
+ "player_id": 2
863
+ },
864
+ "to": {
865
+ "id": 23,
866
+ "card_id": "FP1_011",
867
+ "player_id": 1
868
+ }
869
+ }
870
+ ],
871
+ [
872
+ "damaged",
873
+ {
874
+ "id": 23,
875
+ "card_id": "FP1_011",
876
+ "player_id": 1,
877
+ "amount": 1
878
+ }
879
+ ],
880
+ [
881
+ "damaged",
882
+ {
883
+ "id": 60,
884
+ "card_id": "FP1_002",
885
+ "player_id": 2,
886
+ "amount": 1
887
+ }
888
+ ],
889
+ [
890
+ "open_card",
891
+ {
892
+ "id": 70,
893
+ "card_id": "EX1_534"
894
+ }
895
+ ],
896
+ [
897
+ "action_start",
898
+ {
899
+ "subtype": "ATTACK",
900
+ "from": {
901
+ "id": 41,
902
+ "card_id": "FP1_004",
903
+ "player_id": 2
904
+ },
905
+ "to": {
906
+ "id": 4,
907
+ "card_id": "HERO_05",
908
+ "player_id": 1
909
+ }
910
+ }
911
+ ],
912
+ [
913
+ "damaged",
914
+ {
915
+ "id": 4,
916
+ "card_id": "HERO_05",
917
+ "player_id": 1,
918
+ "amount": 4
919
+ }
920
+ ],
921
+ [
922
+ "card_destroyed",
923
+ {
924
+ "player_id": 1,
925
+ "id": 23,
926
+ "card_id": "FP1_011"
927
+ }
928
+ ],
929
+ [
930
+ "card_received",
931
+ {
932
+ "player_id": 1,
933
+ "id": 70,
934
+ "card_id": "EX1_534"
935
+ }
936
+ ]
937
+ ]
938
+ },
939
+ {
940
+ "number": 7,
941
+ "player": "siuying",
942
+ "timestamp": 1418308041,
943
+ "events": [
944
+ [
945
+ "card_drawn",
946
+ {
947
+ "player_id": 1,
948
+ "id": 27,
949
+ "card_id": "FP1_028"
950
+ }
951
+ ],
952
+ [
953
+ "card_played",
954
+ {
955
+ "player_id": 1,
956
+ "id": 27,
957
+ "card_id": "FP1_028"
958
+ }
959
+ ],
960
+ [
961
+ "card_played",
962
+ {
963
+ "player_id": 1,
964
+ "id": 28,
965
+ "card_id": "FP1_011"
966
+ }
967
+ ],
968
+ [
969
+ "open_card",
970
+ {
971
+ "id": 71,
972
+ "card_id": "FP1_028e"
973
+ }
974
+ ],
975
+ [
976
+ "attached",
977
+ {
978
+ "id": 71,
979
+ "target": 27
980
+ }
981
+ ],
982
+ [
983
+ "card_played",
984
+ {
985
+ "player_id": 1,
986
+ "id": 22,
987
+ "card_id": "EX1_610"
988
+ }
989
+ ]
990
+ ]
991
+ },
992
+ {
993
+ "number": 8,
994
+ "player": "zardeine",
995
+ "timestamp": 1418308057,
996
+ "events": [
997
+ [
998
+ "card_drawn",
999
+ {
1000
+ "player_id": 2,
1001
+ "id": 59,
1002
+ "card_id": ""
1003
+ }
1004
+ ],
1005
+ [
1006
+ "card_target",
1007
+ {
1008
+ "id": 65,
1009
+ "card_id": "",
1010
+ "player_id": 2,
1011
+ "target": 60
1012
+ }
1013
+ ],
1014
+ [
1015
+ "card_played",
1016
+ {
1017
+ "player_id": 2,
1018
+ "id": 65,
1019
+ "card_id": "DS1_070"
1020
+ }
1021
+ ],
1022
+ [
1023
+ "action_start",
1024
+ {
1025
+ "subtype": "ATTACK",
1026
+ "from": {
1027
+ "id": 60,
1028
+ "card_id": "FP1_002",
1029
+ "player_id": 2
1030
+ },
1031
+ "to": {
1032
+ "id": 27,
1033
+ "card_id": "FP1_028",
1034
+ "player_id": 1
1035
+ }
1036
+ }
1037
+ ],
1038
+ [
1039
+ "damaged",
1040
+ {
1041
+ "id": 27,
1042
+ "card_id": "FP1_028",
1043
+ "player_id": 1,
1044
+ "amount": 3
1045
+ }
1046
+ ],
1047
+ [
1048
+ "damaged",
1049
+ {
1050
+ "id": 60,
1051
+ "card_id": "FP1_002",
1052
+ "player_id": 2,
1053
+ "amount": 3
1054
+ }
1055
+ ],
1056
+ [
1057
+ "card_destroyed",
1058
+ {
1059
+ "player_id": 1,
1060
+ "id": 27,
1061
+ "card_id": "FP1_028"
1062
+ }
1063
+ ],
1064
+ [
1065
+ "action_start",
1066
+ {
1067
+ "subtype": "ATTACK",
1068
+ "from": {
1069
+ "id": 41,
1070
+ "card_id": "FP1_004",
1071
+ "player_id": 2
1072
+ },
1073
+ "to": {
1074
+ "id": 28,
1075
+ "card_id": "FP1_011",
1076
+ "player_id": 1
1077
+ }
1078
+ }
1079
+ ],
1080
+ [
1081
+ "damaged",
1082
+ {
1083
+ "id": 28,
1084
+ "card_id": "FP1_011",
1085
+ "player_id": 1,
1086
+ "amount": 2
1087
+ }
1088
+ ],
1089
+ [
1090
+ "damaged",
1091
+ {
1092
+ "id": 41,
1093
+ "card_id": "FP1_004",
1094
+ "player_id": 2,
1095
+ "amount": 1
1096
+ }
1097
+ ],
1098
+ [
1099
+ "open_card",
1100
+ {
1101
+ "id": 73,
1102
+ "card_id": "DS1_178"
1103
+ }
1104
+ ],
1105
+ [
1106
+ "card_destroyed",
1107
+ {
1108
+ "player_id": 1,
1109
+ "id": 28,
1110
+ "card_id": "FP1_011"
1111
+ }
1112
+ ],
1113
+ [
1114
+ "card_received",
1115
+ {
1116
+ "player_id": 1,
1117
+ "id": 73,
1118
+ "card_id": "DS1_178"
1119
+ }
1120
+ ],
1121
+ [
1122
+ "action_start",
1123
+ {
1124
+ "subtype": "ATTACK",
1125
+ "from": {
1126
+ "id": 69,
1127
+ "card_id": "NEW1_032",
1128
+ "player_id": 2
1129
+ },
1130
+ "to": {
1131
+ "id": 4,
1132
+ "card_id": "HERO_05",
1133
+ "player_id": 1
1134
+ }
1135
+ }
1136
+ ],
1137
+ [
1138
+ "damaged",
1139
+ {
1140
+ "id": 36,
1141
+ "card_id": "HERO_05",
1142
+ "player_id": 2,
1143
+ "amount": 6
1144
+ }
1145
+ ],
1146
+ [
1147
+ "damaged",
1148
+ {
1149
+ "id": 41,
1150
+ "card_id": "FP1_004",
1151
+ "player_id": 2,
1152
+ "amount": 3
1153
+ }
1154
+ ],
1155
+ [
1156
+ "damaged",
1157
+ {
1158
+ "id": 60,
1159
+ "card_id": "FP1_002",
1160
+ "player_id": 2,
1161
+ "amount": 5
1162
+ }
1163
+ ],
1164
+ [
1165
+ "damaged",
1166
+ {
1167
+ "id": 69,
1168
+ "card_id": "NEW1_032",
1169
+ "player_id": 2,
1170
+ "amount": 2
1171
+ }
1172
+ ],
1173
+ [
1174
+ "damaged",
1175
+ {
1176
+ "id": 65,
1177
+ "card_id": "DS1_070",
1178
+ "player_id": 2,
1179
+ "amount": 2
1180
+ }
1181
+ ],
1182
+ [
1183
+ "open_card",
1184
+ {
1185
+ "id": 74,
1186
+ "card_id": "EX1_536e"
1187
+ }
1188
+ ],
1189
+ [
1190
+ "attached",
1191
+ {
1192
+ "id": 74,
1193
+ "target": 16
1194
+ }
1195
+ ],
1196
+ [
1197
+ "open_card",
1198
+ {
1199
+ "id": 75,
1200
+ "card_id": "FP1_002t"
1201
+ }
1202
+ ],
1203
+ [
1204
+ "open_card",
1205
+ {
1206
+ "id": 76,
1207
+ "card_id": "FP1_002t"
1208
+ }
1209
+ ],
1210
+ [
1211
+ "damaged",
1212
+ {
1213
+ "id": 4,
1214
+ "card_id": "HERO_05",
1215
+ "player_id": 1,
1216
+ "amount": 8
1217
+ }
1218
+ ],
1219
+ [
1220
+ "card_destroyed",
1221
+ {
1222
+ "player_id": 2,
1223
+ "id": 41,
1224
+ "card_id": "FP1_004"
1225
+ }
1226
+ ],
1227
+ [
1228
+ "card_destroyed",
1229
+ {
1230
+ "player_id": 2,
1231
+ "id": 60,
1232
+ "card_id": "FP1_002"
1233
+ }
1234
+ ],
1235
+ [
1236
+ "card_put_in_play",
1237
+ {
1238
+ "player_id": 2,
1239
+ "id": 51,
1240
+ "card_id": ""
1241
+ }
1242
+ ],
1243
+ [
1244
+ "card_put_in_play",
1245
+ {
1246
+ "player_id": 2,
1247
+ "id": 75,
1248
+ "card_id": "FP1_002t"
1249
+ }
1250
+ ],
1251
+ [
1252
+ "card_put_in_play",
1253
+ {
1254
+ "player_id": 2,
1255
+ "id": 76,
1256
+ "card_id": "FP1_002t"
1257
+ }
1258
+ ]
1259
+ ]
1260
+ },
1261
+ {
1262
+ "number": 9,
1263
+ "player": "siuying",
1264
+ "timestamp": 1418308089,
1265
+ "events": [
1266
+ [
1267
+ "card_drawn",
1268
+ {
1269
+ "player_id": 1,
1270
+ "id": 11,
1271
+ "card_id": "EX1_110"
1272
+ }
1273
+ ],
1274
+ [
1275
+ "card_played",
1276
+ {
1277
+ "player_id": 1,
1278
+ "id": 10,
1279
+ "card_id": "EX1_556"
1280
+ }
1281
+ ],
1282
+ [
1283
+ "action_start",
1284
+ {
1285
+ "subtype": "ATTACK",
1286
+ "from": {
1287
+ "id": 4,
1288
+ "card_id": "HERO_05",
1289
+ "player_id": 1
1290
+ },
1291
+ "to": {
1292
+ "id": 69,
1293
+ "card_id": "NEW1_032",
1294
+ "player_id": 2
1295
+ }
1296
+ }
1297
+ ],
1298
+ [
1299
+ "damaged",
1300
+ {
1301
+ "id": 69,
1302
+ "card_id": "NEW1_032",
1303
+ "player_id": 2,
1304
+ "amount": 5
1305
+ }
1306
+ ],
1307
+ [
1308
+ "damaged",
1309
+ {
1310
+ "id": 4,
1311
+ "card_id": "HERO_05",
1312
+ "player_id": 1,
1313
+ "amount": 12
1314
+ }
1315
+ ],
1316
+ [
1317
+ "damaged",
1318
+ {
1319
+ "id": 16,
1320
+ "card_id": "EX1_536",
1321
+ "player_id": 1,
1322
+ "amount": 1
1323
+ }
1324
+ ],
1325
+ [
1326
+ "damaged",
1327
+ {
1328
+ "id": 36,
1329
+ "card_id": "HERO_05",
1330
+ "player_id": 2,
1331
+ "amount": 8
1332
+ }
1333
+ ],
1334
+ [
1335
+ "card_destroyed",
1336
+ {
1337
+ "player_id": 2,
1338
+ "id": 69,
1339
+ "card_id": "NEW1_032"
1340
+ }
1341
+ ]
1342
+ ]
1343
+ },
1344
+ {
1345
+ "number": 10,
1346
+ "player": "zardeine",
1347
+ "timestamp": 1418308104,
1348
+ "events": [
1349
+ [
1350
+ "card_drawn",
1351
+ {
1352
+ "player_id": 2,
1353
+ "id": 47,
1354
+ "card_id": ""
1355
+ }
1356
+ ],
1357
+ [
1358
+ "open_card",
1359
+ {
1360
+ "id": 77,
1361
+ "card_id": "NEW1_033"
1362
+ }
1363
+ ],
1364
+ [
1365
+ "card_played",
1366
+ {
1367
+ "player_id": 2,
1368
+ "id": 50,
1369
+ "card_id": "NEW1_031"
1370
+ }
1371
+ ],
1372
+ [
1373
+ "card_put_in_play",
1374
+ {
1375
+ "player_id": 2,
1376
+ "id": 77,
1377
+ "card_id": "NEW1_033"
1378
+ }
1379
+ ],
1380
+ [
1381
+ "card_discarded",
1382
+ {
1383
+ "player_id": 2,
1384
+ "id": 50,
1385
+ "card_id": "NEW1_031"
1386
+ }
1387
+ ],
1388
+ [
1389
+ "action_start",
1390
+ {
1391
+ "subtype": "ATTACK",
1392
+ "from": {
1393
+ "id": 65,
1394
+ "card_id": "DS1_070",
1395
+ "player_id": 2
1396
+ },
1397
+ "to": {
1398
+ "id": 4,
1399
+ "card_id": "HERO_05",
1400
+ "player_id": 1
1401
+ }
1402
+ }
1403
+ ],
1404
+ [
1405
+ "damaged",
1406
+ {
1407
+ "id": 4,
1408
+ "card_id": "HERO_05",
1409
+ "player_id": 1,
1410
+ "amount": 17
1411
+ }
1412
+ ],
1413
+ [
1414
+ "action_start",
1415
+ {
1416
+ "subtype": "ATTACK",
1417
+ "from": {
1418
+ "id": 75,
1419
+ "card_id": "FP1_002t",
1420
+ "player_id": 2
1421
+ },
1422
+ "to": {
1423
+ "id": 4,
1424
+ "card_id": "HERO_05",
1425
+ "player_id": 1
1426
+ }
1427
+ }
1428
+ ],
1429
+ [
1430
+ "damaged",
1431
+ {
1432
+ "id": 4,
1433
+ "card_id": "HERO_05",
1434
+ "player_id": 1,
1435
+ "amount": 19
1436
+ }
1437
+ ],
1438
+ [
1439
+ "action_start",
1440
+ {
1441
+ "subtype": "ATTACK",
1442
+ "from": {
1443
+ "id": 76,
1444
+ "card_id": "FP1_002t",
1445
+ "player_id": 2
1446
+ },
1447
+ "to": {
1448
+ "id": 4,
1449
+ "card_id": "HERO_05",
1450
+ "player_id": 1
1451
+ }
1452
+ }
1453
+ ],
1454
+ [
1455
+ "damaged",
1456
+ {
1457
+ "id": 4,
1458
+ "card_id": "HERO_05",
1459
+ "player_id": 1,
1460
+ "amount": 21
1461
+ }
1462
+ ],
1463
+ [
1464
+ "damaged",
1465
+ {
1466
+ "id": 4,
1467
+ "card_id": "HERO_05",
1468
+ "player_id": 1,
1469
+ "amount": 23
1470
+ }
1471
+ ]
1472
+ ]
1473
+ },
1474
+ {
1475
+ "number": 11,
1476
+ "player": "siuying",
1477
+ "timestamp": 1418308123,
1478
+ "events": [
1479
+ [
1480
+ "card_drawn",
1481
+ {
1482
+ "player_id": 1,
1483
+ "id": 24,
1484
+ "card_id": "EX1_016"
1485
+ }
1486
+ ],
1487
+ [
1488
+ "action_start",
1489
+ {
1490
+ "subtype": "ATTACK",
1491
+ "from": {
1492
+ "id": 10,
1493
+ "card_id": "EX1_556",
1494
+ "player_id": 1
1495
+ },
1496
+ "to": {
1497
+ "id": 65,
1498
+ "card_id": "DS1_070",
1499
+ "player_id": 2
1500
+ }
1501
+ }
1502
+ ],
1503
+ [
1504
+ "card_revealed",
1505
+ {
1506
+ "player_id": 2,
1507
+ "id": 51,
1508
+ "card_id": "EX1_611"
1509
+ }
1510
+ ],
1511
+ [
1512
+ "card_returned",
1513
+ {
1514
+ "player_id": 1,
1515
+ "id": 10,
1516
+ "card_id": "EX1_556"
1517
+ }
1518
+ ],
1519
+ [
1520
+ "card_played",
1521
+ {
1522
+ "player_id": 1,
1523
+ "id": 24,
1524
+ "card_id": "EX1_016"
1525
+ }
1526
+ ],
1527
+ [
1528
+ "action_start",
1529
+ {
1530
+ "subtype": "ATTACK",
1531
+ "from": {
1532
+ "id": 4,
1533
+ "card_id": "HERO_05",
1534
+ "player_id": 1
1535
+ },
1536
+ "to": {
1537
+ "id": 65,
1538
+ "card_id": "DS1_070",
1539
+ "player_id": 2
1540
+ }
1541
+ }
1542
+ ],
1543
+ [
1544
+ "damaged",
1545
+ {
1546
+ "id": 65,
1547
+ "card_id": "DS1_070",
1548
+ "player_id": 2,
1549
+ "amount": 5
1550
+ }
1551
+ ],
1552
+ [
1553
+ "damaged",
1554
+ {
1555
+ "id": 4,
1556
+ "card_id": "HERO_05",
1557
+ "player_id": 1,
1558
+ "amount": 28
1559
+ }
1560
+ ],
1561
+ [
1562
+ "damaged",
1563
+ {
1564
+ "id": 16,
1565
+ "card_id": "EX1_536",
1566
+ "player_id": 1,
1567
+ "amount": 2
1568
+ }
1569
+ ],
1570
+ [
1571
+ "card_destroyed",
1572
+ {
1573
+ "player_id": 2,
1574
+ "id": 65,
1575
+ "card_id": "DS1_070"
1576
+ }
1577
+ ]
1578
+ ]
1579
+ }
1580
+ ],
1581
+ "results": {
1582
+ "siuying": "LOST",
1583
+ "zardeine": "WON"
1584
+ }
1585
+ }