Package: truthsayer
TruthsayerThis module allows to visualize the state ofDune the boardgame. The motivation for it is to build a bot allowing to play Dune online via Discord on theTruthsayer Discord channel.ExamplesYou can generate a map of Arrakis as followsfromtruthsayer.processorimportCaretaker,OriginatorTruthsayermeta={'factions':{},'usernames':{},'user_ids':{},'texts':{'promo_top':'Truthsayer Discord','promo':'Join us for more Dune games!','game_id':'#21762','game_turn':6,'game_phase':'Battle','qr':'https://discord.gg/VVYM22Hs2t','commands':[]}}originator=OriginatorTruthsayer(meta=meta)caretaker=Caretaker(originator)originator.render('images/originator/originator00.jpg')originator.join(1,'@marek','#467263')caretaker.backup()originator.join(5,'@renzokuken','#387843')caretaker.backup()originator.join(3,'@zylwia','#198264')caretaker.backup()originator.render('images/originator/originator01.jpg')originator.join(2,'@andy','#430293')caretaker.backup()originator.join(4,'@john','#098532')caretaker.backup()originator.join(6,'@somedude','#130539')caretaker.backup()originator.render('images/originator/originator02.jpg')originator.randomize('factions')caretaker.backup()originator.render('images/originator/originator03.jpg')originator.initgame()caretaker.backup()originator.render('images/originator/originator04.jpg')originator.ship('emperor','plastic_basin','R13',4)caretaker.backup()originator.render('images/originator/originator05.jpg')originator.move('atreides','arrakeen','R10','hole_in_the_rock','R9',3)caretaker.backup()originator.render('images/originator/originator06.jpg')We can move the storm, undo moves, cause Spiceblow and change sprite assetsoriginator.storm('R9')caretaker.backup()originator.render('images/originator/originator07.jpg')originator.spiceblow('sihaya_ridge',5)caretaker.backup()originator.render('images/originator/originator08.jpg')# try to undo the movecaretaker.undo()originator.render('images/originator/originator09.jpg')originator.config('spice_token','spiceglow',500)caretaker.backup()originator.render('images/originator/originator10.jpg')Now few examples how to draw cards and conduct the battle phase# draw some cardsoriginator.draw('player_1','treachery')caretaker.backup()originator.draw('player_1','treachery')caretaker.backup()originator.draw('player_2','treachery')caretaker.backup()originator.draw('player_2','treachery')caretaker.backup()# initiate battlehand_player_1=originator.hand('player_1')hand_player_2=originator.hand('player_2')print('player_1 hand')print(hand_player_1)print('player_2 hand')print(hand_player_2)originator.battle('player_1','player_2')caretaker.backup()originator.deployment('player_1',3)caretaker.backup()originator.lead('player_1','thufir_hawat')caretaker.backup()originator.treachery('player_1',hand_player_1['cards'][0])caretaker.backup()originator.deployment('player_2',4)caretaker.backup()originator.lead('player_2','alia')caretaker.backup()originator.treachery('player_2',hand_player_2['cards'][0])caretaker.backup()originator.render('images/originator/originator11.jpg',battle=True)Improve the Truthsayer experienceTo allow our bot to suggest territory names in commands try to convince Discord to increase thelimitson number of choices from 25 to at least 42.CreditsGame assets fromSorvan's website.For vectorizing regions on the map we used thesummerstyle editor.For creating transparency on the battle wheels usedonline png tools.