2020年 6月 23日
BGMは主に 0番を使うとして、SEは戦闘の始めに必要なものを 2~29番にロードする方法にした。
最大 6人 × アイテムスロット 7つと考えて、最大 SE数はザッと 42個と仮定できる。
27個以上の場合は、その SEは鳴らない事にする。
左上の緑の数字が読み込んだ音声ファイル No.の最大数、白い数字は各 SEが何番のファイル No.に割り当てられたかを示す。
戦闘に入る直前に割り当てと読み込みを行う。
;------- SEセット ------- repeat senob : seno(21+cnt)=0 : loop senon=2 ; SEセットNo. ; 状態異常 semm_set 109 ; 麻痺 semm_set 110 ; スタン semm_set 111 ; 魅惑、自 semm_set 112 ; 火傷 semm_set 113 ; 毒 repeat 3,1 ; SEセット、自部隊 un=fn1(cnt) : if un>0 : gosub *se_set loop repeat 3,1 ; SEセット、敵部隊 un=fn2(cnt) : if un>0 : gosub *se_set loop ; ボリュームセット if mt_sef=0 : sevo2=sevo : else : sevo2=0 ; ミュート repeat senob,21 : no=seno(cnt) if no=0 : continue n=mvo*sevo2*vo(no)-999 mmvol no,n loop ;------------------------
senoの配列変数は、各 SEが何番の音声ファイルNo.かを格納する。
senonは音声ファイルNo.
状態異常の 5個は必ずセットする、これはソース内に散見されるので、それを拾うプログラムが煩雑になるため。
*se_set、ここでそのユニットがどの SEを鳴らすのかを特定する。
*se_set ; SEセット ug=un*udb : us=ud(ug) repeat 1 ; 素アタック if us=6 or us=11 or us=13 or us=33 or us=36 or us=46 or us=51 or us=72 or us=74 or us=97 or us=111 or us=167 or us=181 or us=185 or us=205 : semm_set 22 : break if us=71 or us=92 or us=96 or us=118 or us=132 or us=184 : semm_set 23 : break if us=7 or us=16 or us=52 or us=135 or us=168 : semm_set 24 : break if us=1 or us=8 or us=12 or us=32 or us=35 or us=43 or us=50 or us=73 or us=94 or us=95 or us=112 or us=120 or us=151 or us=152 or us=153 or us=169 or us=190 or us=192 : semm_set 25 : break if us=31 or us=183 : semm_set 26 : break ; 急降下 semm_set 21 ; 素手 loop ; 特殊 if ud(ug+8)=33 : semm_set 114 ; 再生 if ud(ug)=156 or ud(ug)=71 or ud(ug)=195 or ud(ug)=201 : semm_set 103 ; 魅惑、キューピット、ネコ if ud(ug+8)=31 : semm_set 117 ; ネクロマンサー if ud(ug+8)=32 : semm_set 118 ; 吸血 if ud(ug+8)=35 : semm_set 119 ; ナイトメア if ud(ug+8)=50 : semm_set 120 ; ファイヤーブレス if ud(ug+8)=51 : semm_set 121 ; コールドブレス if ud(ug+8)=52 : semm_set 75 ; サンダーブレス if ud(ug+8)=53 : semm_set 123 ; 咆哮 if ud(ug+8)=54 : semm_set 124 ; ホーリーブレス if ud(ug+8)=55 : semm_set 125 ; ポイズンブレス if ud(ug+8)=56 : semm_set 65 ; 津波 if ud(ug+8)=60 : semm_set 127 ; 火の息 if ud(ug+8)=61 : semm_set 55 ; ファイアーボール if ud(ug+8)=62 : semm_set 130 ; ファイアーストーム if ud(ug+8)=63 : semm_set 131 ; コールドストーム if ud(ug+8)=64 : semm_set 132 ; ダークスフィア if ud(ug+8)=65 : semm_set 133 ; ウィンドストーム if ud(ug+8)=66 : semm_set 134 ; 火炎弾 if ud(ug+8)=44 : semm_set 135 ; 岩投下 if ud(ug)=151 or ud(ug)=155 or ud(ug)=157 : semm_set 86 ; 天使系ヒール if ud(ug+8)=71 : semm_set 97 ; ヒールオール if ud(ug+8)=72 : semm_set 86 ; ヒールソング if ud(ug)=85 : semm_set 95 ; シスター ; その他のエフェクト if itn=257 or itn=221 or itn=222 or itn=90 or ud(ug+8)=61 : semm_set 56 : semm_set 40 ; 爆発、ファイアーボール、ダイナマイト、爆弾、大砲 if itn=286 or id(ig+8)=36 : semm_set 103 ; 魅惑、敵 ; アイテム if itn=201 : semm_set 41 ; 包帯 if itn=202 : semm_set 42 ; ポーション if itn=203 ; 救急箱 if itn=204 : semm_set 43 ; ラージポーション if itn=205 : semm_set 44 ; 火傷の塗り薬 if itn=206 : semm_set 45 ; ファイアードロップ if itn=207 : semm_set 46 ; マヒ消し if itn=208 : semm_set 47 ; 気付け薬 if itn=209 : semm_set 48 ; 毒消し repeat sbkn ; 装備 in=ud(ug+40+cnt) : if in<=0 : continue ig=in*idb : itn=id(ig) repeat 1 ; セット ; 武器 if itn=9 or itn=10 or itn=16 or itn=24 : semm_set 27 : continue ; 曲刀 if itn=8 or itn=11 or itn=14 or itn=23 : semm_set 28 : continue ; 刺突剣 if id(ig+19)=1 : semm_set 29 : continue ; 剣 if id(ig+19)=2 : semm_set 30 : continue ; 大剣 if id(ig+19)=3 : semm_set 31 : continue ; 槍 if id(ig+19)=4 : semm_set 32 : continue ; 斧 if id(ig+19)=5 : semm_set 33 : continue ; 槌 if id(ig+19)=6 : semm_set 34 : continue ; 杖 ; 投射武器 if id(ig+19)=7 : semm_set 35 : continue ; 弓 if id(ig+19)=8 : semm_set 36 : continue ; ボウ if itn=90 : semm_set 37 : continue ; 大砲 if id(ig+19)=9 : semm_set 38 : continue ; 銃 if id(ig+8)=1 : semm_set 39 : continue ; 投擲 ; 魔法 if itn=252 : semm_set 49 : continue ; ファイヤー if itn=253 : semm_set 50 : continue ; ファイヤーウェポン if itn=256 : semm_set 51 : continue ; バーサーク if itn=255 : semm_set 52 : continue ; ファイヤーピレイム if itn=254 : semm_set 53 : continue ; フレイムアロー if itn=251 : semm_set 54 : continue ; バトルソング if itn=257 : semm_set 55 : continue ; ファイアーボール if itn=258 : semm_set 57 : continue ; ファイヤーウォール if itn=259 : semm_set 58 : continue ; エクスプロージョン if itn=263 : semm_set 58 : continue ; アイスニードル if itn=261 : semm_set 59 : continue ; ウォーターストリーム if itn=262 : semm_set 60 : continue ; ピュリファイ if itn=266 : semm_set 61 : continue ; アイスエンチャント if itn=265 : semm_set 62 : continue ; アイスジャベリン if itn=267 : semm_set 63 : continue ; アイスピラー if itn=264 : semm_set 64 : continue ; ウォータースクリーン if itn=270 : semm_set 65 : continue ; 津波 if itn=268 : semm_set 66 : continue ; メイルシュトローム if itn=269 : semm_set 67 : continue ; ブリザード if itn=284 : semm_set 68 : continue ; ウインドカッター if itn=281 : semm_set 69 : continue ; ウインドムーブ if itn=283 : semm_set 70 : continue ; サンダー if itn=282 : semm_set 71 : continue ; ウィンドエンチャント if itn=287 : semm_set 72 : continue ; サンダーウエポン if itn=286 : semm_set 73 : continue ; セイレーンボイス if itn=285 : semm_set 74 : continue ; ウィンドウォール if itn=288 : semm_set 75 : continue ; ライトニングボルト if itn=289 : semm_set 76 : continue ; ウィンドストーム if itn=291 : semm_set 77 : continue ; アースキュア if itn=298 : semm_set 78 : continue ; ハードコーティング if itn=295 : semm_set 79 : continue ; ネイチャーヒール if itn=292 : semm_set 80 : continue ; グラヴィティマグネット if itn=294 : semm_set 81 : continue ; グラビティウエポン if itn=293 : semm_set 82 : continue ; バインディングブランチ if itn=296 : semm_set 83 : continue ; ストーンブラスト if itn=297 : semm_set 84 : continue ; ゴーレムクリエイト if itn=299 : semm_set 85 : continue ; アースクエイク if itn=308 : semm_set 86 : continue ; ヒール if itn=303 : semm_set 87 : continue ; ターンアンデッド if itn=302 : semm_set 88 : continue ; フォースセンス if itn=304 : semm_set 89 : continue ; ホーリーライトキュア if itn=311 : semm_set 90 : continue ; ホーリーウエポン if itn=305 : semm_set 91 : continue ; プロテクト if itn=307 : semm_set 92 : continue ; レイアロー if itn=310 : semm_set 93 : continue ; サイキックフォース if itn=301 : semm_set 94 : continue ; ブレス if itn=309 : semm_set 95 : continue ; ホーリーライトサークル if itn=306 : semm_set 96 : continue ; レイブレイド if itn=312 : semm_set 97 : continue ; ホーリーライトヒール if itn=313 : semm_set 98 : continue ; ウィル・オ・ウィスプ if itn=314 : semm_set 99 : continue ; リザレクション if itn=324 : semm_set 100 : continue ; マインドブラスト if itn=322 : semm_set 101 : continue ; ポイズン if itn=326 : semm_set 102 : continue ; 邪眼 if itn=323 : semm_set 103 : continue ; チャーム if itn=321 : semm_set 104 : continue ; ウィークネス if itn=328 : semm_set 105 : continue ; カース if itn=325 : semm_set 106 : continue ; ダークネス if itn=327 : semm_set 107 : continue ; フレイムカース if itn=329 : semm_set 108 : continue ; デモンズゲート loop loop return
これを書くのに時間がかかった。
今回は付けたし変更だったため、このような無様な(笑)ソースになったが、始めからならもう少し合理的な方法を考えたい所。
特定したら、その SEの音声ファイルNo.をセットし、その No.にデータを読み込む。
#deffunc semm_set int semm_setn ; SEセット semmn=semm_setn if senon>29 : return ; 登録上限 if seno(semmn)>0 : return ; 登録済み repeat 1 if semmn=21 : seno(21)=senon : mmload fi3+"panchi10.wav" ,senon,0 : vo(senon)=5 : break ; 素手 if semmn=22 : seno(22)=senon : mmload fi3+"kiba.wav" ,senon,0 : vo(senon)=6 : break ; 牙 if semmn=23 : seno(23)=senon : mmload fi3+"tume5.wav" ,senon,0 : vo(senon)=5 : break ; 爪 if semmn=24 : seno(24)=senon : mmload fi3+"sipo.wav" ,senon,0 : vo(senon)=9 : break ; 尾 if semmn=25 : seno(25)=senon : mmload fi3+"takle.wav" ,senon,0 : vo(senon)=8 : break ; 体当たり if semmn=26 : seno(26)=senon : mmload fi3+"kouka.wav" ,senon,0 : vo(senon)=8 : break ; 急降下 if semmn=27 : seno(27)=senon : mmload fi3+"kyokuto2.wav" ,senon,0 : vo(senon)=10 : break ; 曲刀 if semmn=28 : seno(28)=senon : mmload fi3+"sitotu.wav" ,senon,0 : vo(senon)=10 : break ; 刺突剣 if semmn=29 : seno(29)=senon : mmload fi3+"swad.wav" ,senon,0 : vo(senon)=10 : break ; 剣 if semmn=30 : seno(30)=senon : mmload fi3+"bswad3.wav" ,senon,0 : vo(senon)=7 : break ; 大剣 if semmn=31 : seno(31)=senon : mmload fi3+"spia.wav" ,senon,0 : vo(senon)=9 : break ; 槍 if semmn=32 : seno(32)=senon : mmload fi3+"axe3.wav" ,senon,0 : vo(senon)=10 : break ; 斧 if semmn=33 : seno(33)=senon : mmload fi3+"club.wav" ,senon,0 : vo(senon)=10 : break ; 槌 if semmn=34 : seno(34)=senon : mmload fi3+"stick.wav" ,senon,0 : vo(senon)=9 : break ; 杖 if semmn=35 : seno(35)=senon : mmload fi3+"bow.wav" ,senon,0 : vo(senon)=6 : break ; 弓 if semmn=36 : seno(36)=senon : mmload fi3+"cbow.wav" ,senon,0 : vo(senon)=8 : break ; ボウ if semmn=37 : seno(37)=senon : mmload fi3+"canon.wav" ,senon,0 : vo(senon)=10 : break ; 大砲 if semmn=38 : seno(38)=senon : mmload fi3+"gun.wav" ,senon,0 : vo(senon)=10 : break ; 銃 if semmn=39 : seno(39)=senon : mmload fi3+"throw.wav" ,senon,0 : vo(senon)=8 : break ; 投擲 if semmn=40 : seno(40)=senon : mmload fi3+"bom.wav" ,senon,0 : vo(senon)=1 : break ; 爆弾 if semmn=41 : seno(41)=senon : mmload fi3+"houtai.wav" ,senon,0 : vo(senon)=6 : break ; 包帯 if semmn=42 : seno(42)=senon : mmload fi3+"pot.wav" ,senon,0 : vo(senon)=10 : break ; POT if semmn=43 : seno(43)=senon : mmload fi3+"lpot.wav" ,senon,0 : vo(senon)=10 : break ; LPOT if semmn=44 : seno(44)=senon : mmload fi3+"f_drug.wav" ,senon,0 : vo(senon)=10 : break ; 火傷の塗り薬 if semmn=45 : seno(45)=senon : mmload fi3+"i_drug.wav" ,senon,0 : vo(senon)=10 : break ; ファイアードロップ if semmn=46 : seno(46)=senon : mmload fi3+"pa_drug.wav" ,senon,0 : vo(senon)=10 : break ; マヒ消し if semmn=47 : seno(47)=senon : mmload fi3+"s_drug.wav" ,senon,0 : vo(senon)=10 : break ; 気付け薬 if semmn=48 : seno(48)=senon : mmload fi3+"po_drug.wav" ,senon,0 : vo(senon)=10 : break ; 毒消し if semmn=49 : seno(49)=senon : mmload fi3+"fire3.wav" ,senon,0 : vo(senon)=10 : break ; ファイアー if semmn=50 : seno(50)=senon : mmload fi3+"enchant.wav" ,senon,0 : vo(senon)=6 : break ; エンチャント if semmn=51 : seno(51)=senon : mmload fi3+"berserk2.wav" ,senon,0 : vo(senon)=10 : break ; バーサーク if semmn=52 : seno(52)=senon : mmload fi3+"pireim2.wav" ,senon,0 : vo(senon)=10 : break ; ピレイム if semmn=53 : seno(53)=senon : mmload fi3+"farow.wav" ,senon,0 : vo(senon)=10 : break ; フレイムアロー if semmn=54 : seno(54)=senon : mmload fi3+"bsong.wav" ,senon,0 : vo(senon)=10 : break ; バトルソング if semmn=55 : seno(55)=senon : mmload fi3+"fb_tou2.wav" ,senon,0 : vo(senon)=10 : break ; ファイアーボール投げ if semmn=56 : seno(56)=senon : mmload fi3+"fb_bom2.wav" ,senon,0 : vo(senon)=10 : break ; ファイアーボール爆発 if semmn=57 : seno(57)=senon : mmload fi3+"fwall4.wav" ,senon,0 : vo(senon)=10 : break ; ファイアーウォール if semmn=58 : seno(58)=senon : mmload fi3+"fexp3.wav" ,senon,0 : vo(senon)=10 : break ; エクスプロージョン if semmn=58 : seno(58)=senon : mmload fi3+"inidru2.wav" ,senon,0 : vo(senon)=10 : break ; アイスニードル if semmn=59 : seno(59)=senon : mmload fi3+"wstrm.wav" ,senon,0 : vo(senon)=10 : break ; ウォーターストリーム if semmn=60 : seno(60)=senon : mmload fi3+"pyuri.wav" ,senon,0 : vo(senon)=10 : break ; ピュリファイ if semmn=61 : seno(61)=senon : mmload fi3+"i_encya3.wav" ,senon,0 : vo(senon)=3 : break ; アイスエンチャント if semmn=62 : seno(62)=senon : mmload fi3+"ijyabe.wav" ,senon,0 : vo(senon)=10 : break ; アイスジャベリン if semmn=63 : seno(63)=senon : mmload fi3+"ipira.wav" ,senon,0 : vo(senon)=10 : break ; アイスピラー if semmn=64 : seno(64)=senon : mmload fi3+"wscren.wav" ,senon,0 : vo(senon)=7 : break ; ウォータースクリーン if semmn=65 : seno(65)=senon : mmload fi3+"tunami.wav" ,senon,0 : vo(senon)=8 : break ; 津波 if semmn=66 : seno(66)=senon : mmload fi3+"meilsyu.wav" ,senon,0 : vo(senon)=10 : break ; メイルシュトローム if semmn=67 : seno(67)=senon : mmload fi3+"c_storm.wav" ,senon,0 : vo(senon)=8 : break ; ブリザード if semmn=68 : seno(68)=senon : mmload fi3+"cutter.wav" ,senon,0 : vo(senon)=8 : break ; ウインドカッター if semmn=69 : seno(69)=senon : mmload fi3+"move.wav" ,senon,0 : vo(senon)=10 : break ; ウインドムーブ if semmn=70 : seno(70)=senon : mmload fi3+"thunder.wav" ,senon,0 : vo(senon)=10 : break ; サンダー if semmn=71 : seno(71)=senon : mmload fi3+"encha_w.wav" ,senon,0 : vo(senon)=7 : break ; ウィンドエンチャント if semmn=72 : seno(72)=senon : mmload fi3+"encha_t.wav" ,senon,0 : vo(senon)=10 : break ; サンダーウエポン if semmn=73 : seno(73)=senon : mmload fi3+"silent2.wav" ,senon,0 : vo(senon)=10 : break ; セイレーンボイス if semmn=74 : seno(74)=senon : mmload fi3+"w_wall3.wav" ,senon,0 : vo(senon)=10 : break ; ウィンドウォール if semmn=75 : seno(75)=senon : mmload fi3+"l_bolt.wav" ,senon,0 : vo(senon)=4 : break ; ライトニングボルト if semmn=76 : seno(76)=senon : mmload fi3+"w_storm2.wav" ,senon,0 : vo(senon)=10 : break ; ウィンドストーム if semmn=71 : seno(71)=senon : mmload fi3+"eath_qua.wav" ,senon,0 : vo(senon)=10 : break ; アースキュア if semmn=71 : seno(71)=senon : mmload fi3+"coating2.wav" ,senon,0 : vo(senon)=10 : break ; ハードコーティング if semmn=71 : seno(71)=senon : mmload fi3+"heal_n.wav" ,senon,0 : vo(senon)=10 : break ; ネイチャーヒール if semmn=80 : seno(80)=senon : mmload fi3+"magnet.wav" ,senon,0 : vo(senon)=3 : break ; グラヴィティマグネット if semmn=81 : seno(81)=senon : mmload fi3+"skill.wav" ,senon,0 : vo(senon)=3 : break ; グラビティウエポン if semmn=82 : seno(82)=senon : mmload fi3+"bind.wav" ,senon,0 : vo(senon)=10 : break ; バインディングブランチ if semmn=83 : seno(83)=senon : mmload fi3+"stone.wav" ,senon,0 : vo(senon)=10 : break ; ストーンブラスト if semmn=84 : seno(84)=senon : mmload fi3+"golem.wav" ,senon,0 : vo(senon)=10 : break ; ゴーレムクリエイト if semmn=85 : seno(85)=senon : mmload fi3+"quake2.wav" ,senon,0 : vo(senon)=10 : break ; アースクエイク if semmn=86 : seno(86)=senon : mmload fi3+"heal.wav" ,senon,0 : vo(senon)=10 : break ; ヒール if semmn=87 : seno(87)=senon : mmload fi3+"tarnund2.wav" ,senon,0 : vo(senon)=10 : break ; ターンアンデッド if semmn=88 : seno(88)=senon : mmload fi3+"fors2.wav" ,senon,0 : vo(senon)=10 : break ; フォースセンス if semmn=89 : seno(89)=senon : mmload fi3+"hr_qua.wav" ,senon,0 : vo(senon)=10 : break ; ホーリーライトキュア if semmn=90 : seno(90)=senon : mmload fi3+"h_wapon.wav" ,senon,0 : vo(senon)=7 : break ; ホーリーウエポン if semmn=91 : seno(91)=senon : mmload fi3+"protect2.wav" ,senon,0 : vo(senon)=10 : break ; プロテクト if semmn=92 : seno(92)=senon : mmload fi3+"rayarow.wav" ,senon,0 : vo(senon)=9 : break ; レイアロー if semmn=93 : seno(93)=senon : mmload fi3+"psyfors.wav" ,senon,0 : vo(senon)=10 : break ; サイキックフォース if semmn=94 : seno(94)=senon : mmload fi3+"bless.wav" ,senon,0 : vo(senon)=10 : break ; ブレス if semmn=95 : seno(95)=senon : mmload fi3+"hr_cie.wav" ,senon,0 : vo(senon)=10 : break ; ホーリーライトサークル if semmn=96 : seno(96)=senon : mmload fi3+"raybrad.wav" ,senon,0 : vo(senon)=10 : break ; レイブレイド if semmn=97 : seno(97)=senon : mmload fi3+"hr_heal.wav" ,senon,0 : vo(senon)=10 : break ; ホーリーライトヒール if semmn=98 : seno(98)=senon : mmload fi3+"will_o.wav" ,senon,0 : vo(senon)=10 : break ; ウィル・オ・ウィスプ if semmn=99 : seno(99)=senon : mmload fi3+"riza.wav" ,senon,0 : vo(senon)=10 : break ; リザレクション if semmn=100 : seno(100)=senon : mmload fi3+"mindbrs5.wav" ,senon,0 : vo(senon)=4 : break ; マインドブラスト if semmn=101 : seno(101)=senon : mmload fi3+"poison.wav" ,senon,0 : vo(senon)=10 : break ; ポイズン if semmn=102 : seno(102)=senon : mmload fi3+"evileye2.wav" ,senon,0 : vo(senon)=6 : break ; 邪眼 if semmn=103 : seno(103)=senon : mmload fi3+"chrm.wav" ,senon,0 : vo(senon)=8 : break ; チャーム if semmn=104 : seno(104)=senon : mmload fi3+"weaknes.wav" ,senon,0 : vo(senon)=10 : break ; ウィークネス if semmn=105 : seno(105)=senon : mmload fi3+"curse.wav" ,senon,0 : vo(senon)=10 : break ; カース if semmn=106 : seno(106)=senon : mmload fi3+"darknes.wav" ,senon,0 : vo(senon)=8 : break ; ダークネス if semmn=107 : seno(107)=senon : mmload fi3+"f_curse3.wav" ,senon,0 : vo(senon)=10 : break ; フレイムカース if semmn=108 : seno(108)=senon : mmload fi3+"d_gate4.wav" ,senon,0 : vo(senon)=10 : break ; デモンズゲート if semmn=109 : seno(109)=senon : mmload fi3+"mahi3.wav" ,senon,0 : vo(senon)=10 : break ; 麻痺 if semmn=110 : seno(110)=senon : mmload fi3+"stan6.wav" ,senon,0 : vo(senon)=1 : break ; スタン if semmn=111 : seno(111)=senon : mmload fi3+"bs_chrm2.wav" ,senon,0 : vo(senon)=4 : break ; 魅惑、自 if semmn=112 : seno(112)=senon : mmload fi3+"bs_fire.wav" ,senon,0 : vo(senon)=7 : break ; 火傷 if semmn=113 : seno(113)=senon : mmload fi3+"bs_poi.wav" ,senon,0 : vo(senon)=8 : break ; 毒 if semmn=114 : seno(114)=senon : mmload fi3+"regene2.wav" ,senon,0 : vo(senon)=10 : break ; 再生 ;mmload fi3+"" ,115,0 : vo(115)=10 ; 魅惑、敵 ;mmload fi3+"" ,116,0 : vo(116)=8 ; チャーム if semmn=117 : seno(117)=senon : mmload fi3+"necro4.wav" ,senon,0 : vo(senon)=8 : break ; ネクロマンサー if semmn=118 : seno(118)=senon : mmload fi3+"bd_suck.wav" ,senon,0 : vo(senon)=6 : break ; 吸血 if semmn=119 : seno(119)=senon : mmload fi3+"nigtmea2.wav" ,senon,0 : vo(senon)=7 : break ; ナイトメア if semmn=120 : seno(120)=senon : mmload fi3+"f_bres.wav" ,senon,0 : vo(senon)=5 ; ファイヤーブレス if semmn=121 : seno(121)=senon : mmload fi3+"coldbrs.wav" ,senon,0 : vo(senon)=10 ; コールドブレス ;mmload fi3+"" ,122,0 : vo(122)=10 ; サンダーブレス if semmn=123 : seno(123)=senon : mmload fi3+"shout4.wav" ,senon,0 : vo(senon)=4 ; 咆哮 if semmn=124 : seno(124)=senon : mmload fi3+"holybrs.wav" ,senon,0 : vo(senon)=6 ; ホーリーブレス if semmn=125 : seno(125)=senon : mmload fi3+"p_bres2.wav" ,senon,0 : vo(senon)=8 ; ポイズンブレス ;mmload fi3+"" ,126,0 : vo(126)=10 ; 津波 if semmn=127 : seno(127)=senon : mmload fi3+"hinoiki2.wav" ,senon,0 : vo(senon)=10 ; 火の息 ;mmload fi3+"" ,128,0 : vo(128)=10 ; ファイアーボールの爆発 ;mmload fi3+"" ,129,0 : vo(129)=10 ; ファイアーボール if semmn=130 : seno(130)=senon : mmload fi3+"f_storm5.wav" ,senon,0 : vo(senon)=10 ; ファイアーストーム if semmn=131 : seno(131)=senon : mmload fi3+"brizad2.wav" ,senon,0 : vo(senon)=8 ; コールドストーム if semmn=132 : seno(132)=senon : mmload fi3+"dark_f.wav" ,senon,0 : vo(senon)=8 ; ダークスフィア if semmn=133 : seno(133)=senon : mmload fi3+"windstm.wav" ,senon,0 : vo(senon)=9 ; ウィンドストーム if semmn=134 : seno(134)=senon : mmload fi3+"kaendan.wav" ,senon,0 : vo(senon)=8 ; 火炎弾 if semmn=135 : seno(135)=senon : mmload fi3+"rockdwn.wav" ,senon,0 : vo(senon)=10 ; 岩投下 ;mmload fi3+"" ,136,0 : vo(136)=10 ; 天使系ヒール ;mmload fi3+"" ,137,0 : vo(137)=10 ; 天使系ヒールオール ;mmload fi3+"" ,138,0 : vo(138)=10 ; ヒールソング loop senon+ ; seNo.+ return
データの読み込みが戦闘の始めに行われるため、戦闘に入るまでにタイムラグが発生してしまう、たぶん市販のゲームの LOADINGもこんな感じなんだろうな。
全部検証したらボリュームのセットを行う。
音を鳴らすときは今まで使っていた mmplays(作った関数)を少し改造したものを使う、呼び出しの鳴らす方のソースはそのままで済む。
#deffunc mmplays int mmplaysn ; SEを鳴らす senon=mmplaysn if mvo=0 or sevo=0 or mt_sef>0 : return ; ミュート if seno(senon)>0 : mmplay seno(senon) return
mmplay seno(senon)で、指定の SEを鳴らす事ができる訳だ。
音声関係の調整はまだ全部終わってませんけど、おおむねこれで対応できたと思います。