HearthSim / hs-bugs

Unofficial Hearthstone issue tracker
https://hearthsim.info
65 stars 3 forks source link

Conceding forces your opponent to pick a Discover option, which can kill them and end the game in a draw #1257

Open Jetz72 opened 5 years ago

Jetz72 commented 5 years ago

Original report: https://us.forums.blizzard.com/en/hearthstone/t/draw-because-of-concede-button/12682

I played a game against a druid who decided to give up. At that moment, I played a tortolan-piligrim, but as he surrendered, a pyroblast randomly got out which accidentally hit my face and the game ended in a draw. Previously, in this case, the discover menu was simply closing, but now this bug has begun to occur. This physically could not be a missklick since the pyroblast was located on the other side of the screen.

This is not actually exclusive to Discover. Any mid-sequence choice can be interrupted this way, and depending on the situation, the result may kill the player making the choice. In fact the easiest way to reproduce it is with Tracking and Ancient Curse:

Hearthstone Screenshot 08-25-19 21 11 33 Hearthstone Screenshot 08-25-19 21 11 40 Hearthstone Screenshot 08-25-19 21 11 45

This isn't particularly severe if the choosing player had only losing options like above, but it can happen when there are survivable options available, turning a win into a draw.

From the choosing player's perspective the full sequence is shown. From the conceding player's perspective, the opponent suddenly explodes alongside them with no explanation: https://www.youtube.com/watch?v=Se3OgvyxN0s

The log also has a full sequence for the conceding player, even though it does not animate:

D 22:43:24.4100419 GameState.DebugPrintPowerList() - Count=22
D 22:43:24.4100419 GameState.DebugPrintPower() - BLOCK_START BlockType=PLAY Entity=[entityName=UNKNOWN ENTITY [cardType=INVALID] id=41 zone=HAND zonePos=1 cardId= player=2] EffectCardId= EffectIndex=0 Target=0 SubOption=-1 
D 22:43:24.4100419 GameState.DebugPrintPower() -     TAG_CHANGE Entity=trogg#14159 tag=RESOURCES_USED value=10 
D 22:43:24.4100419 GameState.DebugPrintPower() -     TAG_CHANGE Entity=trogg#14159 tag=NUM_RESOURCES_SPENT_THIS_GAME value=47 
D 22:43:24.4100419 GameState.DebugPrintPower() -     TAG_CHANGE Entity=trogg#14159 tag=NUM_CARDS_PLAYED_THIS_TURN value=4 
D 22:43:24.4100419 GameState.DebugPrintPower() -     TAG_CHANGE Entity=trogg#14159 tag=430 value=2 
D 22:43:24.4100419 GameState.DebugPrintPower() -     TAG_CHANGE Entity=[entityName=UNKNOWN ENTITY [cardType=INVALID] id=56 zone=HAND zonePos=7 cardId= player=2] tag=ZONE_POSITION value=6 
D 22:43:24.4100419 GameState.DebugPrintPower() -     TAG_CHANGE Entity=[entityName=UNKNOWN ENTITY [cardType=INVALID] id=49 zone=HAND zonePos=6 cardId= player=2] tag=ZONE_POSITION value=5 
D 22:43:24.4100419 GameState.DebugPrintPower() -     TAG_CHANGE Entity=[entityName=UNKNOWN ENTITY [cardType=INVALID] id=53 zone=HAND zonePos=5 cardId= player=2] tag=ZONE_POSITION value=4 
D 22:43:24.4110451 GameState.DebugPrintPower() -     TAG_CHANGE Entity=[entityName=UNKNOWN ENTITY [cardType=INVALID] id=54 zone=HAND zonePos=4 cardId= player=2] tag=ZONE_POSITION value=3 
D 22:43:24.4110451 GameState.DebugPrintPower() -     TAG_CHANGE Entity=[entityName=UNKNOWN ENTITY [cardType=INVALID] id=62 zone=HAND zonePos=3 cardId= player=2] tag=ZONE_POSITION value=2 
D 22:43:24.4110451 GameState.DebugPrintPower() -     TAG_CHANGE Entity=[entityName=UNKNOWN ENTITY [cardType=INVALID] id=52 zone=HAND zonePos=2 cardId= player=2] tag=ZONE_POSITION value=1 
D 22:43:24.4110451 GameState.DebugPrintPower() -     TAG_CHANGE Entity=[entityName=UNKNOWN ENTITY [cardType=INVALID] id=41 zone=HAND zonePos=1 cardId= player=2] tag=ZONE_POSITION value=0 
D 22:43:24.4110451 GameState.DebugPrintPower() -     SHOW_ENTITY - Updating Entity=[entityName=UNKNOWN ENTITY [cardType=INVALID] id=41 zone=HAND zonePos=1 cardId= player=2] CardID=DS1_184
D 22:43:24.4110451 GameState.DebugPrintPower() -         tag=CONTROLLER value=2
D 22:43:24.4110451 GameState.DebugPrintPower() -         tag=CARDTYPE value=SPELL
D 22:43:24.4110451 GameState.DebugPrintPower() -         tag=COST value=1
D 22:43:24.4110451 GameState.DebugPrintPower() -         tag=PREMIUM value=0
D 22:43:24.4110451 GameState.DebugPrintPower() -         tag=DAMAGE value=0
D 22:43:24.4110451 GameState.DebugPrintPower() -         tag=ZONE value=PLAY
D 22:43:24.4110451 GameState.DebugPrintPower() -         tag=ENTITY_ID value=41
D 22:43:24.4110451 GameState.DebugPrintPower() -         tag=FACTION value=NEUTRAL
D 22:43:24.4110451 GameState.DebugPrintPower() -         tag=RARITY value=FREE
D 22:43:24.4110451 GameState.DebugPrintPower() -         tag=ZONE_POSITION value=0
D 22:43:24.4110451 GameState.DebugPrintPower() -         tag=CARD_TARGET value=0
D 22:43:24.4110451 GameState.DebugPrintPower() -         tag=TAG_LAST_KNOWN_COST_IN_HAND value=1
D 22:43:24.4110451 GameState.DebugPrintPower() -         tag=478 value=2
D 22:43:24.4110451 GameState.DebugPrintPower() -         tag=479 value=0
D 22:43:24.4110451 GameState.DebugPrintPower() -         tag=ATTACKABLE_BY_RUSH value=0
D 22:43:24.4110451 GameState.DebugPrintPower() -         tag=1037 value=0
D 22:43:24.4110451 GameState.DebugPrintPower() -         tag=1043 value=1
D 22:43:24.4110451 GameState.DebugPrintPower() -         tag=1068 value=0
D 22:43:24.4110451 GameState.DebugPrintPower() -         tag=1196 value=0
D 22:43:24.4110451 GameState.DebugPrintPower() -         tag=1271 value=0
D 22:43:24.4110451 GameState.DebugPrintPower() -         tag=COPIED_BY_KHADGAR value=0
D 22:43:24.4110451 GameState.DebugPrintPower() -     TAG_CHANGE Entity=[entityName=UNKNOWN ENTITY [cardType=INVALID] id=41 zone=HAND zonePos=1 cardId= player=2] tag=JUST_PLAYED value=1 
D 22:43:24.4110451 GameState.DebugPrintPower() -     TAG_CHANGE Entity=trogg#14159 tag=LAST_CARD_PLAYED value=41 
D 22:43:24.4110451 GameState.DebugPrintPower() -     BLOCK_START BlockType=POWER Entity=[entityName=UNKNOWN ENTITY [cardType=INVALID] id=41 zone=HAND zonePos=1 cardId= player=2] EffectCardId= EffectIndex=0 Target=0 SubOption=-1 
D 22:43:24.4110451 GameState.DebugPrintPower() -         META_DATA - Meta=OVERRIDE_HISTORY Data=0 InfoCount=1
D 22:43:24.4110451 GameState.DebugPrintPower() -                     Info[0] = [entityName=UNKNOWN ENTITY [cardType=INVALID] id=41 zone=HAND zonePos=1 cardId= player=2]
D 22:43:24.4110451 GameState.DebugPrintPower() -         META_DATA - Meta=TARGET Data=0 InfoCount=1
D 22:43:24.4110451 GameState.DebugPrintPower() -                     Info[0] = [entityName=UNKNOWN ENTITY [cardType=INVALID] id=41 zone=HAND zonePos=1 cardId= player=2]
D 22:43:24.4110451 GameState.DebugPrintPower() -         FULL_ENTITY - Creating ID=133 CardID=
D 22:43:24.4110451 GameState.DebugPrintPower() -             tag=ZONE value=SETASIDE
D 22:43:24.4110451 GameState.DebugPrintPower() -             tag=CONTROLLER value=2
D 22:43:24.4110451 GameState.DebugPrintPower() -             tag=ENTITY_ID value=133
D 22:43:24.4110451 GameState.DebugPrintPower() -         META_DATA - Meta=HISTORY_TARGET Data=0 InfoCount=1
D 22:43:24.4110451 GameState.DebugPrintPower() -                     Info[0] = [entityName=UNKNOWN ENTITY [cardType=INVALID] id=36 zone=DECK zonePos=0 cardId= player=2]
D 22:43:24.4110451 GameState.DebugPrintPower() -         FULL_ENTITY - Creating ID=134 CardID=
D 22:43:24.4110451 GameState.DebugPrintPower() -             tag=ZONE value=SETASIDE
D 22:43:24.4110451 GameState.DebugPrintPower() -             tag=CONTROLLER value=2
D 22:43:24.4110451 GameState.DebugPrintPower() -             tag=ENTITY_ID value=134
D 22:43:24.4110451 GameState.DebugPrintPower() -         META_DATA - Meta=HISTORY_TARGET Data=0 InfoCount=1
D 22:43:24.4110451 GameState.DebugPrintPower() -                     Info[0] = [entityName=Ancient Curse id=126 zone=DECK zonePos=0 cardId= player=2]
D 22:43:24.4271114 GameState.DebugPrintEntityChoices() - id=4 Player=trogg#14159 TaskList=656 ChoiceType=GENERAL CountMin=1 CountMax=1
D 22:43:24.4271114 GameState.DebugPrintEntityChoices() -   Source=[entityName=UNKNOWN ENTITY [cardType=INVALID] id=41 zone=HAND zonePos=1 cardId= player=2]
D 22:43:24.4271114 GameState.DebugPrintEntityChoices() -   Entities[0]=[entityName=UNKNOWN ENTITY [cardType=INVALID] id=133 zone=SETASIDE zonePos=0 cardId= player=2]
D 22:43:24.4271114 GameState.DebugPrintEntityChoices() -   Entities[1]=[entityName=UNKNOWN ENTITY [cardType=INVALID] id=134 zone=SETASIDE zonePos=0 cardId= player=2]
D 22:43:24.4271114 ChoiceCardMgr.WaitThenShowChoices() - id=4 WAIT for taskList 656

D 22:43:27.9723869 ChoiceCardMgr.WaitThenShowChoices() - id=4 BEGIN
D 22:43:57.7448035 GameState.DebugPrintEntitiesChosen() - id=4 Player=trogg#14159 EntitiesCount=1
D 22:43:57.7448035 GameState.DebugPrintEntitiesChosen() -   Entities[0]=[entityName=UNKNOWN ENTITY [cardType=INVALID] id=134 zone=SETASIDE zonePos=0 cardId= player=2]
D 22:43:57.7448035 ChoiceCardMgr.DoesLocalChoiceMatchPacket(): Null list passed in! localChoices=, packetChoices=System.Collections.Generic.List`1[System.Int32].
D 22:43:57.7448035 ChoiceCardMgr.WaitThenHideChoicesFromPacket() - id=4 END WAIT
D 22:43:57.8594654 GameState.DebugPrintPowerList() - Count=55
D 22:43:57.8594654 GameState.DebugPrintPower() - TAG_CHANGE Entity=Jetz#1946 tag=PLAYSTATE value=CONCEDED 
D 22:43:57.8594654 GameState.DebugPrintPower() - FULL_ENTITY - Creating ID=135 CardID=
D 22:43:57.8594654 GameState.DebugPrintPower() -     tag=ZONE value=SETASIDE
D 22:43:57.8594654 GameState.DebugPrintPower() -     tag=CONTROLLER value=2
D 22:43:57.8594654 GameState.DebugPrintPower() -     tag=ENTITY_ID value=135
D 22:43:57.8594654 GameState.DebugPrintPower() - TAG_CHANGE Entity=[entityName=UNKNOWN ENTITY [cardType=INVALID] id=36 zone=DECK zonePos=0 cardId= player=2] tag=ZONE value=SETASIDE 
D 22:43:57.8594654 GameState.DebugPrintPower() - TAG_CHANGE Entity=trogg#14159 tag=467 value=1 
D 22:43:57.8594654 GameState.DebugPrintPower() - SHOW_ENTITY - Updating Entity=[entityName=Ancient Curse id=126 zone=DECK zonePos=0 cardId= player=2] CardID=LOE_110t
D 22:43:57.8594654 GameState.DebugPrintPower() -     tag=CONTROLLER value=2
D 22:43:57.8594654 GameState.DebugPrintPower() -     tag=CARDTYPE value=SPELL
D 22:43:57.8594654 GameState.DebugPrintPower() -     tag=COST value=4
D 22:43:57.8594654 GameState.DebugPrintPower() -     tag=DAMAGE value=0
D 22:43:57.8594654 GameState.DebugPrintPower() -     tag=ZONE value=DECK
D 22:43:57.8594654 GameState.DebugPrintPower() -     tag=ENTITY_ID value=126
D 22:43:57.8594654 GameState.DebugPrintPower() -     tag=ZONE_POSITION value=0
D 22:43:57.8594654 GameState.DebugPrintPower() -     tag=CREATOR value=40
D 22:43:57.8594654 GameState.DebugPrintPower() -     tag=349 value=1
D 22:43:57.8594654 GameState.DebugPrintPower() -     tag=TOPDECK value=1
D 22:43:57.8594654 GameState.DebugPrintPower() -     tag=DISPLAYED_CREATOR value=40
D 22:43:57.8594654 GameState.DebugPrintPower() -     tag=REVEALED value=1
D 22:43:57.8594654 GameState.DebugPrintPower() -     tag=TAG_LAST_KNOWN_COST_IN_HAND value=4
D 22:43:57.8594654 GameState.DebugPrintPower() -     tag=479 value=0
D 22:43:57.8594654 GameState.DebugPrintPower() -     tag=1037 value=2
D 22:43:57.8594654 GameState.DebugPrintPower() -     tag=1043 value=1
D 22:43:57.8594654 GameState.DebugPrintPower() -     tag=1068 value=0
D 22:43:57.8594654 GameState.DebugPrintPower() -     tag=1196 value=0
D 22:43:57.8594654 GameState.DebugPrintPower() -     tag=1271 value=0
D 22:43:57.8594654 GameState.DebugPrintPower() -     tag=CREATOR_DBID value=9081
D 22:43:57.8594654 GameState.DebugPrintPower() -     tag=COPIED_BY_KHADGAR value=0
D 22:43:57.8594654 GameState.DebugPrintPower() - TAG_CHANGE Entity=[entityName=Ancient Curse id=126 zone=DECK zonePos=0 cardId= player=2] tag=1068 value=3 
D 22:43:57.8594654 GameState.DebugPrintPower() - TAG_CHANGE Entity=[entityName=Ancient Curse id=126 zone=DECK zonePos=0 cardId= player=2] tag=1068 value=0 
D 22:43:57.8594654 GameState.DebugPrintPower() - TAG_CHANGE Entity=[entityName=Ancient Curse id=126 zone=DECK zonePos=0 cardId= player=2] tag=ZONE value=HAND 
D 22:43:57.8594654 GameState.DebugPrintPower() - TAG_CHANGE Entity=[entityName=Ancient Curse id=126 zone=DECK zonePos=0 cardId= player=2] tag=ZONE_POSITION value=7 
D 22:43:57.8594654 GameState.DebugPrintPower() - BLOCK_START BlockType=TRIGGER Entity=[entityName=Daring Reporter id=20 zone=PLAY zonePos=3 cardId=CFM_851 player=1] EffectCardId= EffectIndex=0 Target=0 SubOption=-1 TriggerKeyword=TRIGGER_VISUAL
D 22:43:57.8594654 GameState.DebugPrintPower() - BLOCK_END
D 22:43:57.8594654 GameState.DebugPrintPower() - BLOCK_START BlockType=TRIGGER Entity=[entityName=Ancient Curse id=126 zone=DECK zonePos=0 cardId= player=2] EffectCardId= EffectIndex=0 Target=0 SubOption=-1 TriggerKeyword=TOPDECK
D 22:43:57.8594654 GameState.DebugPrintPower() -     META_DATA - Meta=TARGET Data=0 InfoCount=1
D 22:43:57.8594654 GameState.DebugPrintPower() -                 Info[0] = [entityName=Rexxar id=66 zone=PLAY zonePos=0 cardId=HERO_05 player=2]
D 22:43:57.8594654 GameState.DebugPrintPower() -     TAG_CHANGE Entity=[entityName=Rexxar id=66 zone=PLAY zonePos=0 cardId=HERO_05 player=2] tag=PREDAMAGE value=7 
D 22:43:57.8594654 GameState.DebugPrintPower() -     TAG_CHANGE Entity=[entityName=Rexxar id=66 zone=PLAY zonePos=0 cardId=HERO_05 player=2] tag=1173 value=66 
D 22:43:57.8594654 GameState.DebugPrintPower() -     TAG_CHANGE Entity=[entityName=Rexxar id=66 zone=PLAY zonePos=0 cardId=HERO_05 player=2] tag=PREDAMAGE value=0 
D 22:43:57.8594654 GameState.DebugPrintPower() -     TAG_CHANGE Entity=[entityName=Rexxar id=66 zone=PLAY zonePos=0 cardId=HERO_05 player=2] tag=1173 value=0 
D 22:43:57.8594654 GameState.DebugPrintPower() -     TAG_CHANGE Entity=[entityName=Rexxar id=66 zone=PLAY zonePos=0 cardId=HERO_05 player=2] tag=PREDAMAGE value=7 
D 22:43:57.8594654 GameState.DebugPrintPower() -     TAG_CHANGE Entity=[entityName=Rexxar id=66 zone=PLAY zonePos=0 cardId=HERO_05 player=2] tag=PREDAMAGE value=0 
D 22:43:57.8594654 GameState.DebugPrintPower() -     META_DATA - Meta=DAMAGE Data=7 InfoCount=1
D 22:43:57.8594654 GameState.DebugPrintPower() -                 Info[0] = [entityName=Rexxar id=66 zone=PLAY zonePos=0 cardId=HERO_05 player=2]
D 22:43:57.8594654 GameState.DebugPrintPower() -     TAG_CHANGE Entity=[entityName=Rexxar id=66 zone=PLAY zonePos=0 cardId=HERO_05 player=2] tag=LAST_AFFECTED_BY value=126 
D 22:43:57.8594654 GameState.DebugPrintPower() -     TAG_CHANGE Entity=[entityName=Rexxar id=66 zone=PLAY zonePos=0 cardId=HERO_05 player=2] tag=DAMAGE value=31 
D 22:43:57.8594654 GameState.DebugPrintPower() -     TAG_CHANGE Entity=trogg#14159 tag=464 value=7 
D 22:43:57.8594654 GameState.DebugPrintPower() -     TAG_CHANGE Entity=[entityName=Ancient Curse id=126 zone=DECK zonePos=0 cardId= player=2] tag=1068 value=6 
D 22:43:57.8594654 GameState.DebugPrintPower() -     TAG_CHANGE Entity=[entityName=Ancient Curse id=126 zone=DECK zonePos=0 cardId= player=2] tag=1068 value=0 
D 22:43:57.8594654 GameState.DebugPrintPower() -     TAG_CHANGE Entity=[entityName=Ancient Curse id=126 zone=DECK zonePos=0 cardId= player=2] tag=ZONE_POSITION value=0 
D 22:43:57.8594654 GameState.DebugPrintPower() -     TAG_CHANGE Entity=[entityName=Ancient Curse id=126 zone=DECK zonePos=0 cardId= player=2] tag=ZONE value=SETASIDE 
D 22:43:57.8594654 GameState.DebugPrintPower() - BLOCK_END
D 22:43:57.8594654 GameState.DebugPrintPower() - TAG_CHANGE Entity=trogg#14159 tag=NUM_CARDS_DRAWN_THIS_TURN value=4 
D 22:43:57.8594654 GameState.DebugPrintPower() - TAG_CHANGE Entity=trogg#14159 tag=995 value=26 
D 22:43:57.8594654 GameState.DebugPrintPower() - TAG_CHANGE Entity=trogg#14159 tag=467 value=0 
D 22:43:57.8594654 GameState.DebugPrintPower() - BLOCK_END
D 22:43:57.8594654 GameState.DebugPrintPower() - TAG_CHANGE Entity=[entityName=Tracking id=41 zone=PLAY zonePos=0 cardId=DS1_184 player=2] tag=1068 value=4 
D 22:43:57.8594654 GameState.DebugPrintPower() - TAG_CHANGE Entity=[entityName=Tracking id=41 zone=PLAY zonePos=0 cardId=DS1_184 player=2] tag=1068 value=0 
D 22:43:57.8594654 GameState.DebugPrintPower() - TAG_CHANGE Entity=[entityName=Tracking id=41 zone=PLAY zonePos=0 cardId=DS1_184 player=2] tag=ZONE value=GRAVEYARD 
D 22:43:57.8594654 GameState.DebugPrintPower() - TAG_CHANGE Entity=[entityName=Daring Reporter id=20 zone=PLAY zonePos=3 cardId=CFM_851 player=1] tag=479 value=15 
D 22:43:57.8594654 GameState.DebugPrintPower() - TAG_CHANGE Entity=[entityName=Daring Reporter id=20 zone=PLAY zonePos=3 cardId=CFM_851 player=1] tag=HEALTH value=15 
D 22:43:57.8594654 GameState.DebugPrintPower() - TAG_CHANGE Entity=[entityName=Daring Reporter id=20 zone=PLAY zonePos=3 cardId=CFM_851 player=1] tag=ATK value=15 
D 22:43:57.8594654 GameState.DebugPrintPower() - BLOCK_START BlockType=DEATHS Entity=GameEntity EffectCardId= EffectIndex=0 Target=0 SubOption=-1 
D 22:43:57.8594654 GameState.DebugPrintPower() -     TAG_CHANGE Entity=[entityName=Rexxar id=66 zone=PLAY zonePos=0 cardId=HERO_05 player=2] tag=1068 value=4 
D 22:43:57.8594654 GameState.DebugPrintPower() -     TAG_CHANGE Entity=[entityName=Rexxar id=66 zone=PLAY zonePos=0 cardId=HERO_05 player=2] tag=1068 value=0 
D 22:43:57.8594654 GameState.DebugPrintPower() -     TAG_CHANGE Entity=[entityName=Rexxar id=66 zone=PLAY zonePos=0 cardId=HERO_05 player=2] tag=ZONE value=GRAVEYARD 
D 22:43:57.8594654 GameState.DebugPrintPower() -     TAG_CHANGE Entity=trogg#14159 tag=PLAYSTATE value=LOSING 
D 22:43:57.8594654 GameState.DebugPrintPower() - BLOCK_END
D 22:43:57.8594654 GameState.DebugPrintPower() - TAG_CHANGE Entity=trogg#14159 tag=NUM_OPTIONS_PLAYED_THIS_TURN value=5 
D 22:43:57.8594654 GameState.DebugPrintPower() - BLOCK_END
D 22:43:57.8594654 GameState.DebugPrintPower() - TAG_CHANGE Entity=Jetz#1946 tag=PLAYSTATE value=TIED 
D 22:43:57.8594654 GameState.DebugPrintPower() - TAG_CHANGE Entity=trogg#14159 tag=PLAYSTATE value=TIED 
D 22:43:57.8594654 GameState.DebugPrintPower() - TAG_CHANGE Entity=GameEntity tag=NEXT_STEP value=FINAL_WRAPUP 
D 22:43:57.8594654 GameState.DebugPrintPower() - TAG_CHANGE Entity=GameEntity tag=STEP value=FINAL_WRAPUP 
D 22:43:57.8594654 GameState.DebugPrintPower() - BLOCK_START BlockType=TRIGGER Entity=GameEntity EffectCardId= EffectIndex=-1 Target=0 SubOption=-1 TriggerKeyword=0
D 22:43:57.8594654 GameState.DebugPrintPower() -     TAG_CHANGE Entity=GameEntity tag=NEXT_STEP value=FINAL_GAMEOVER 
D 22:43:57.8594654 GameState.DebugPrintPower() - BLOCK_END
D 22:43:57.8594654 GameState.DebugPrintPower() - TAG_CHANGE Entity=GameEntity tag=STEP value=FINAL_GAMEOVER 
D 22:43:57.8594654 GameState.DebugPrintPower() - TAG_CHANGE Entity=GameEntity tag=STATE value=COMPLETE 
troggnostupidhs commented 4 years ago

https://youtu.be/Iw-AF_udBCM?t=158