Dalam Dungeons & Dragons edisi ke-5 (dan juga sebagian besar edisi lainnya), ada item ajaib yang disebut Deck of Many Things . Ini adalah barang yang sangat kuat, karena semua kartu memiliki efek positif atau negatif yang sangat kuat. Untuk menggunakan dek, karakter mendeklarasikan angka, dan kemudian menggambar hingga jumlah kartu itu, dengan efek yang diterapkan secara berurutan. Jika karakter tidak menggambar semua kartu yang mereka nyatakan, dan sudah setidaknya 1 jam sejak kartu terakhir diambil, sisa kartu diambil secara otomatis untuknya dan efek diterapkan. Setelah setiap kartu ditarik, kartu dikembalikan ke geladak, dan geladak dikocok.
Berikut ini adalah daftar efek menggambar masing-masing kartu 1 :
- Saldo : Pikiran Anda mengalami perubahan yang memilukan, menyebabkan perataan Anda berubah. Sah menjadi kacau, baik menjadi jahat, dan sebaliknya. Jika Anda benar-benar netral atau tidak selaras, kartu ini tidak berpengaruh pada Anda.
- Comet : Jika Anda sendiri mengalahkan monster bermusuhan berikutnya atau sekelompok monster yang Anda temui, Anda mendapatkan poin pengalaman yang cukup untuk mendapatkan satu tingkat. Kalau tidak, kartu ini tidak akan berpengaruh.
- Donjon : Anda menghilang dan menjadi terkubur dalam keadaan mati suri dalam lingkup ekstradimensional. Segala sesuatu yang Anda kenakan dan bawa tetap berada di belakang di ruang yang Anda duduki saat Anda menghilang. Anda tetap dipenjara sampai Anda ditemukan dan dikeluarkan dari bola. Anda tidak dapat ditemukan oleh sihir ramalan apa pun, tetapi mantra harapan dapat mengungkapkan lokasi penjara Anda. Anda tidak menggambar kartu lagi.
- Euryale . Wajah seperti kartu medusa mengutuk Anda. Anda mengambil penalti -2 untuk menyelamatkan lemparan sambil dikutuk dengan cara ini. Hanya dewa atau keajaiban kartu Takdir yang bisa mengakhiri kutukan ini.
- The Fates : Reality's fabric mengurai dan berputar lagi, memungkinkan Anda untuk menghindari atau menghapus satu peristiwa seolah-olah itu tidak pernah terjadi. Anda dapat menggunakan sihir kartu segera setelah Anda menarik kartu atau pada waktu lain sebelum Anda mati.
- Api : Setan yang kuat menjadi musuhmu. Iblis mencari kehancuran Anda dan mengganggu hidup Anda, menikmati penderitaan Anda sebelum mencoba membunuh Anda. Permusuhan ini berlangsung sampai Anda atau iblis mati.
- Bodoh : Anda kehilangan 10.000 XP, membuang kartu ini, dan menggambar dari dek lagi, menghitung kedua draw sebagai salah satu draw yang Anda nyatakan. Jika kehilangan XP sebanyak itu akan menyebabkan Anda kehilangan level, Anda malah kehilangan jumlah yang membuat Anda memiliki cukup XP untuk mempertahankan level Anda.
- Permata : Dua puluh lima potong perhiasan masing-masing berharga 2.000 gp atau lima puluh permata senilai 1.000 gp muncul di kaki Anda.
- Idiot : Kurangi Intelijen Anda secara permanen sebesar 1d4 + 1 (hingga skor minimum 1). Anda dapat menggambar satu kartu tambahan di luar undian yang Anda nyatakan.
- Jester : Anda mendapatkan 10.000 XP, atau Anda dapat menggambar dua kartu tambahan di luar undian yang Anda nyatakan. Buang kartu ini setelah menariknya.
- Kunci : Senjata ajaib yang langka atau langka yang Anda mahir muncul di tangan Anda. GM memilih senjata.
- Ksatria : Anda mendapatkan layanan dari pejuang tingkat 4 yang muncul di ruang yang Anda pilih dalam jarak 30 kaki dari Anda. Pejuang itu dari ras yang sama seperti Anda dan melayani Anda dengan loyal sampai mati, percaya nasib telah menariknya kepada Anda. Anda mengontrol karakter ini.
- Bulan : Anda diberikan kemampuan untuk mengucapkan mantra permintaan 1d3 kali.
- Rogue : Karakter bukan pemain pilihan GM menjadi memusuhi Anda. Identitas musuh baru Anda tidak diketahui sampai NPC atau orang lain mengungkapkannya. Tidak kurang dari mantra harapan atau intervensi ilahi dapat mengakhiri permusuhan NPC terhadap Anda.
- Hancur : Semua bentuk kekayaan yang Anda bawa atau miliki, selain benda ajaib, hilang untuk Anda. Properti portabel lenyap. Bisnis, bangunan, dan tanah milik Anda hilang dengan cara yang mengubah kenyataan. Dokumentasi apa pun yang membuktikan bahwa Anda memiliki sesuatu yang hilang dari kartu ini juga hilang.
- Tengkorak . Anda memanggil avatar kematian - kerangka hantu humanoid berpakaian jubah hitam compang-camping dan membawa sabit spektral. Itu muncul di ruang pilihan GM dalam jarak 10 kaki dari Anda dan menyerang Anda, memperingatkan semua orang lain bahwa Anda harus memenangkan pertempuran sendirian. Avatar itu berkelahi sampai Anda mati atau turun ke 0 poin hit, dan kemudian menghilang. Jika ada yang mencoba membantu Anda, penolong itu memanggil avatar kematiannya sendiri. Makhluk yang dibunuh oleh avatar kematian tidak dapat dipulihkan.
- Bintang : Tingkatkan satu dari skor kemampuan Anda sebesar 2. Skor tersebut dapat melebihi 20 tetapi tidak dapat melebihi 24.
- Sun : Anda mendapatkan 50.000 XP, dan item menakjubkan (yang ditentukan GM secara acak) muncul di tangan Anda.
- Cakar : Setiap benda ajaib yang Anda kenakan atau bawa hancur. Artefak yang Anda miliki tidak dihancurkan tetapi musnah.
- Tahta : Anda memperoleh kemahiran dalam keterampilan Persuasi, dan Anda menggandakan bonus kemahiran Anda pada cek yang dibuat dengan keterampilan itu. Selain itu, Anda mendapatkan kepemilikan sah dari tempat kecil di suatu tempat di dunia. Namun, penyimpanan saat ini ada di tangan monster, yang harus Anda bersihkan sebelum Anda dapat mengklaim menyimpannya sebagai milik Anda.
- Wazir : Kapan saja Anda memilih dalam satu tahun menggambar kartu ini, Anda dapat mengajukan pertanyaan dalam meditasi dan secara mental menerima jawaban yang jujur untuk pertanyaan itu. Selain informasi, jawabannya membantu Anda memecahkan masalah yang membingungkan atau dilema lainnya. Dengan kata lain, pengetahuan itu datang dengan kebijaksanaan tentang bagaimana menerapkannya.
- The Void : Kartu hitam ini berarti bencana. Jiwa Anda diambil dari tubuh Anda dan terkandung dalam sebuah objek di tempat pilihan GM. Satu atau lebih makhluk kuat menjaga tempat itu. Sementara jiwa Anda terjebak dengan cara ini, tubuh Anda tidak mampu. Mantra harapan tidak dapat memulihkan jiwa Anda, tetapi mantera tersebut mengungkapkan lokasi objek yang menyimpannya. Anda tidak menggambar kartu lagi.
(deskripsi kartu disalin dari D & D SRD edisi ke-5 )
Beberapa pemain bodoh biasanya akan menarik sejumlah besar kartu sekaligus, berharap mendapatkan setidaknya satu anugerah yang kuat untuk menyeimbangkan kartu yang merugikan. Seperti yang diduga, ini sering mengakibatkan kematian karakter atau ketidakmampuan untuk terus menggambar kartu.
Tantangan
Simulasikan gambar berulang dari Deck 22 Many card, mengeluarkan setiap kartu yang diambil, berhenti hanya ketika salah satu dari kondisi berikut dipenuhi:
- Karakter mati (melalui menggambar Tengkorak , atau menggambar 5 kartu setelah menggambar Api atau Nakal , tanpa manfaat dari Nasib atau Bulan aktif 2 ).
- Karakter tidak mampu menggambar lebih banyak kartu (melalui efek Donjon , Talons , The Void 3 , atau skor Intelijen karakter turun menjadi 3 atau lebih rendah melalui Idiot 4 ).
Aturan
- Penyelarasan karakter, level, XP, dan harta benda selain dek tidak menjadi masalah.
- Skor Kecerdasan karakter dimulai dari 10.
- Tidak ada batas maksimum untuk Intelijen karakter atau penggunaan keinginan yang mereka miliki .
- Penggunaan Takdir tidak menumpuk.
- The keinginan mantra memiliki 1-in-3 kesempatan menyebabkan karakter untuk tidak pernah bisa menggunakan keinginan mantra lagi, selain efek reguler. Jika ini terjadi, karakter tidak dapat lagi menggunakan mantra untuk meniadakan Flames , Rogue , atau Skull - kekuatan The Fates adalah satu-satunya jalan mereka.
- Karakter selalu membuat pilihan berikut:
- The Fates and Moon hanya digunakan untuk mendapatkan karakter keluar dari masalah dari Skull , Flames , dan Rogue . Karakter tidak akan pernah menggunakannya untuk membalikkan efek Talons atau mantra harapan yang tidak dapat dilemparkan lagi, dan tidak dapat menggunakannya untuk membalikkan efek Donjon dan The Void . Karakter akan segera menggunakan satu mantra harapan untuk meniadakan efek Skull , Flames , atau Rogue saat menggambar salah satunya, dan itu akan selalu berhasil. Karakter akan selalu menggunakan Takdir sebelum digunakanberharap .
- Karakter selalu memilih untuk menggambar lebih banyak kartu dengan efek Idiot dan Jester (tepat).
- Efek Star selalu digunakan untuk meningkatkan Intelligence sebesar 2, untuk menghindari keharusan berhenti menggambar kartu melalui efek Idiot .
- Sekutu NPC yang dipanggil oleh Knight tidak cukup kuat untuk menyelamatkan karakter dari kematian mereka sebelum waktunya.
- Setiap kenaikan atau penurunan ke Intelijen (melalui Star atau Idiot , masing-masing) harus tercermin dalam output (baik dengan mencatat perubahan (
+2
atau-(1d4+1)
), atau dengan menghasilkan skor Intelijen saat ini setelah efek terjadi). - Setiap perubahan pada jumlah permintaan yang digunakan karakter yang telah ditimbun juga harus tercermin dalam output, termasuk keinginan yang menyebabkan karakter tidak dapat menggunakan keinginan lagi.
- Semua pilihan acak berasal dari distribusi diskrit seragam.
- Anda dapat memilih 22 output yang berbeda untuk dikeluarkan untuk kartu yang diambil - nama kartu tidak harus digunakan.
- Anda dapat menghasilkan perubahan dalam Intelijen, penggunaan keinginan , dan keinginan menjadi tidak dapat digunakan dengan cara apa pun yang Anda pilih secara konsisten dan jelas.
- Karakter dapat menggunakan keinginan atau kekuatan Takdir untuk menghindari kematian jika kartu yang sesuai diambil sebagai kartu kelima setelah menggambar Rogue atau Flames . Hanya jika keinginan tidak dapat digunakan atau semua penggunaan telah digunakan, serta Nasib tidak ditarik dalam waktu atau telah digunakan, karakter akan mati.
- Fool dan Jester dibuang setelah ditarik. Semua kartu lainnya segera dikembalikan ke geladak, dan geladak kemudian dikocok.
- Jika ada beberapa tumpukan Rogue dan / atau Flame aktif, hanya satu penggunaan Takdir atau keinginan diperlukan untuk menghilangkan semuanya.
- Menggambar banyak kartu sekaligus melalui Jester atau Fool tidak memajukan turn counter pada Flames dan / atau Rogue .
Contohnya
Setiap garis mewakili urutan undian. Perubahan ke Intelijen dan penggunaan keinginan ditunjukkan oleh nilai saat ini dalam tanda kurung. Di C
sebelah permintaan digunakan menunjukkan bahwa keinginan tidak dapat digunakan lagi. A F
menunjukkan bahwa kekuatan Takdir digunakan untuk menghindari kematian. Komentar tambahan disediakan untuk tujuan penjelasan, dalam bentuk komentar gaya Python.
Void # Can't draw with your soul ripped out of your body.
Throne, Euryale, Rogue, Star (12), Donjon # Can't draw while in suspended animation.
Moon (3), Throne, Sun, Flames (2), Fool, Idiot (6), Flames (1 C), The Fates, Skull (F), Skull # Two uses of wish were used on the two Flames draws. The second use rendered the character unable to use wish again. The Fates was used on the first Skull. When the second Skull came up, there was no way for the character to save himself, so he died.
Idiot (5), Star (7), Idiot (3) # Too dumb to draw.
Sun, Star (12), Talons # Talons destroys the deck.
Fates, Throne, Moon (2), Fates, Skull (F), Skull # Fates doesn't stack
Fates, Flames, Euryale, Fates, Skull, Void
Flames, Comet, Euryale, Gem, Knight, Key # 5 draws after Flames, the hero dies
Rogue, Balance, Throne, Gem, Idiot (8), Vizier, Sun # 5 draws plus one extra from Idiot
Implementasi Referensi
#!/usr/bin/env python3
import random
deck="""Sun
Moon
Star
Throne
Key
Knight
Void
Flames
Skull
Ruin
Euryale
Rogue
Jester
Vizier
Comet
Fates
Gem
Talons
Idiot
Donjon
Balance
Fool""".split()
random.shuffle(deck)
int_stat = 10
wish_uses = 0
wish_expired = False
fates = False
turn_count = None
while True:
card = deck.pop()
if card == "Fates":
if turn_count is None:
fates = True
print(card)
else:
turn_count = None
fates = False
print("{} (F)".format(card))
elif card == "Moon":
wish_uses += random.randint(1, 3)
if turn_count is None:
print("{} ({})".format(card, wish_uses))
else:
turn_count = None
wish_uses -= 1
print("{} ({}) ({})".format(card, wish_uses+1, wish_uses))
elif card in ["Flames", "Rogue"]:
if turn_count is None:
turn_count = 5
if fates:
fates = False
turn_count = None
print("{} (F)".format(card))
elif wish_uses > 0 and not wish_expired:
wish_uses -= 1
turn_count = None
wish_now_expired = random.choice([False, False, True])
print("{} ({}{})".format(card, wish_uses, " C" if wish_expired else ""))
wish_expired = wish_now_expired
else:
print("{}".format(card))
elif card == "Idiot":
int_stat -= random.randint(2, 5)
print("{} ({})".format(card, int_stat))
if turn_count is not None:
turn_count += 1
if int_stat <= 3:
break
elif card == "Star":
int_stat += 2
print("{} ({})".format(card, int_stat))
elif card == "Skull":
if fates:
fates = False
turn_count = None
print("{} (F)".format(card))
elif wish_uses > 0 and not wish_expired:
wish_uses -= 1
turn_count = None
wish_now_expired = random.choice([False, False, True])
print("{} ({}{})".format(card, wish_uses, " C" if wish_expired else ""))
wish_expired = wish_now_expired
else:
print(card)
break
elif card in ["Donjon", "Void", "Talons"]:
print(card)
break
elif card == "Fool":
print(card)
if turn_count is not None:
turn_count += 1
elif card == "Jester":
print(card)
if turn_count is not None:
turn_count += 2
else:
print(card)
if card not in ["Fool", "Jester"]:
deck.append(card)
random.shuffle(deck)
if turn_count is not None:
turn_count -= 1
if turn_count == 0:
break
[1]: Secara teknis, ada dua varian: satu dengan 13 kartu, dan satu dengan 22 kartu. Kami hanya khawatir tentang versi 22 kartu lengkap di sini.
[2]: Flame dan Rogue biasanya tidak langsung membunuh karakter, tetapi NPC yang bermusuhan diasumsikan telah menemukan dan membunuh karakter bodoh setelah mereka punya waktu untuk menggambar 5 kartu lagi. Momok yang dipanggil oleh Skull sangat sulit untuk dilawan, dan diasumsikan bahwa karakternya tidak menang. Hanya intervensi ilahi / magis melalui Nasib atau Bulan yang dapat menyelamatkan karakter bodoh dari kematian mereka dengan 3 kartu ini.
[3]: Kami menganggap teman-teman karakter cukup pintar untuk tidak mencoba menyelamatkan karakter dan memungkinkan mereka untuk menggambar lebih banyak kartu.
[4]: Skor Kecerdasan 3 kira-kira setara dengan hewan liar, yang tidak akan dapat secara aktif membuat pilihan untuk menggambar kartu.
Jawaban:
JavaScript (ES6), 379 byte
Tidak disatukan
Tampilkan cuplikan kode
Penjelasan Output
Kisaran kartu 0-21 sebagai berikut:
Pembalikan Skull, Flames, atau Rogue via The Fates dilambangkan dengan a
0
.JavaScript (ES6), 792 byte
Versi sebelumnya menggunakan nama kartu, sebelum saya tahu bahwa 22 output berbeda diizinkan.
Tidak disatukan
Tampilkan cuplikan kode
sumber
Kotlin , 1173 bytes
Ini runnable juga. - Cobalah online!
Mungkin ada banyak bug ... beri tahu saya di komentar!
sumber
Fool
atauJester
.Java 8,
481480 byteMelakukan porting implementasi referensi Python3 di Java, dan kemudian memutarnya. Pasti bisa bermain golf lebih banyak, tetapi ini hanya versi awal untuk memastikan saya melakukan semuanya dengan benar.
Jika ada yang menemukan kesalahan (
tidak akan mengejutkan saya jika adaEDIT: Sudah diperbaiki seperti tujuh atau delapan kesalahan sejak saya memposting ini ..), tolong beri tahu saya.Output kartu:
Format output untuk keinginan yang tersisa, keinginan yang digunakan, intelijen yang tersisa, dan bendera yang digunakan:
Penjelasan:
Cobalah di sini atau Coba di sini dengan hasil cetak yang cantik .
sumber
Jester; Fates; Ruin; Euryale; Gem; Ruin; Ruin; Rogue(Fates used) Gem; Balance; Throne; Rogue(wishes left: 0; wishes used: 0); Rogue(wishes left: 0; wishes used: 0);
Mengapa itu berhenti?