Baiklah, kita ketemu lagi di blog post
yang membahas soal cara membuat RPG. Kali ini aku akan melanjutkan
bahasan sebelumnya soal AI, yaitu bagaimana membuat AI penyihir.
Sebenarnya membuat AI penyihir ini nggak jauh beda dengan membuat AI
untuk petarung, hanya ada sedikit perubahan saja. Ada dua jenis
penyihir, yaitu penyihir ofensif / tipe penyerang, dan penyihir
suportif, keduanya punya logika sendiri-sendiri.
Pertama-tama kita akan bahas AI dari
penyihir ofensif, logikanya adalah seperti ini:
Pilih target
Kalau SP mencukupi untuk men-cast
paling nggak satu sihir, pilih sihir
Masuk casting time
Kalau diserang musuh casting time
berakhir, sihir gagal di-cast
Kalau bisa casting sampai casting
time berakhir, keluarkan sihir dan kurangi current SP
Kalau target masih hidup, kembali
ke poin 2
Kalau target sudah mati, kembali
ke poin 1
Kalau SP nggak mencukupi, dekati
musuh, lalu serang secara fisik.
Aku perlu menambahkan poin terakhir
soal kemungkinan kalau ternyata si penyihir nggak punya cukup SP buat
mengeluarkan sihir, kalau nggak begitu bisa-bisa penyihir kita cuma
berdiri bengong di tengah battle screen. Logika pemilihan target akan
kubuat sama seperti penyerang fisik, yaitu menggunakan instance
variable enemySelection dan targetName,
kalau kamu lupa untuk apa kedua instance variable ini, bisa lihat di
blog post sebelumnya.
Berikutnya, penyihir akan memilih sihir
apa yang dipakai, untuk sementara aku berencana membuatnya memilih
acak, karena aku nggak tahu bagaimana cara membuat AI memilih sihir
yang bagus. Sesudah memilih, penyihir akan masuk casting time. Selama
casting time ini penyihir nggak bisa berjalan atau melakukan hal yang
lain, kalau penyihir dikendalikan oleh pemain maka kita harus
mengganti nilai variable state yang sudah aku jelaskan. Semua sihir
punya instance variable castTime yang
hitungannya dalam detik, nanti kita akan mengurusi variable ini
sewaktu kita mulai men-coding sistem penyihir ini. Sepertinya sisa
poin-poinnya sudah cukup jelas dan nggak perlu aku jelaskan, kalau
belum jelas silahkan tinggalkan komentar.