Hextrategy 音声ファイル 30個上限に対応した


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を鳴らす事ができる訳だ。
 
 
 音声関係の調整はまだ全部終わってませんけど、おおむねこれで対応できたと思います。
 
 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です