戻る
; "R_SOUBI.ASM" PC-9801UV11 make by R.H 1990/11/6
;
;
;	「子育て」
;
;	装備
;
;
; (C) 1990 ritsurou hashimoto.

INCLUDE	TSTSET.INC
INCLUDE	..\KOSO\WINDOW.INC
INCLUDE	..\KOSO\KOSO2.INC
INCLUDE	WORDID.INC

CCT_OPEN_TYPE	EQU	7	; オープンタイプ

MOVX	MACRO	DEST,SOUR
	MOV	AX,WORD PTR SOUR
	MOV	WORD PTR DEST,AX
	ENDM

ADDX	MACRO	DEST,SOUR
	MOV	AX,SOUR
	ADD	DEST,AX
	ENDM

SUBX	MACRO	DEST,SOUR
	MOV	AX,SOUR
	SUB	DEST,AX
	ENDM

CMPX	MACRO	DEST,SOUR
	MOV	AX,SOUR
	CMP	DEST,AX
	ENDM

CODE	SEGMENT	PUBLIC	'CODE'

	ASSUME	CS:CODE,DS:DATA


PUBLIC	R_SOUBI			; 装備

PUBLIC	R_SOUBI_KISEKAE		; 着せ替えモード

PUBLIC	R_SOUBI_S_DOUGU		; 戦闘時・道具の使用

EXTRN	R_LOADS:NEAR		; ロード&セーブ

EXTRN	R_DISP_ITEM_M:NEAR	; 持物アイテム表示

EXTRN	R_KEISAN:NEAR		; 各計算処理

EXTRN	MUSIC_KOSODATE:NEAR	; 子育てのテーマ

EXTRN	R_ITEM_SCH:NEAR		; アイテム条件検索
EXTRN	R_ITM_SYUBETU:NEAR	; 持物アイテム種別検索
EXTRN	R_ITM_OFFSET:NEAR	; 持物アイテムのアイテムオフセット計算
EXTRN	R_ITM_MOCH_DEL:NEAR	; 持物アイテム削除
EXTRN	R_GET_SELECT:NEAR	; アイテムレコード内から選択単語を取り出す
EXTRN	R_ADD_SELECT:NEAR	; 選択単語へ追加
EXTRN	R_ITM_MOCHIMON:NEAR	; 持物アイテム検索

EXTRN	R_SR_GIRL_NAME:NEAR	; キャラクタ名
EXTRN	R_SR_GIRL_SHOGO:NEAR	; キャラクタの称号
EXTRN	R_SR_GIRL_HELP:NEAR	; キャラクタに対する説明

EXTRN	R_SR_ITEM_HELP:NEAR	; アイテムに対する説明
EXTRN	R_SR_ITEM_PRICE:NEAR	; アイテムに対する値段

EXTRN	R_SR_GIRL_FUKU:NEAR	; キャラクタ服名
EXTRN	R_SR_SR_DESU:NEAR	; "です"
EXTRN	R_SR_NAINAI:NEAR	; "「なにもないよ、シクシク」"

EXTRN	R_SCHO_KISEKAE:NEAR	; 娘着せ替えの処理


EXTRN	WIDSTAT_INIT:NEAR	; WIDNOWS/ステータスウインドウ初期処理
EXTRN	WIDSTAT:NEAR		; WINDOWS/ステータス

EXTRN	WIDSLC_INIT:NEAR	; WINDOWS/セレクト・ウインドウ初期処理
EXTRN	WIDSLC:NEAR		; WINDOWS/セレクト・ウインドウ

EXTRN	WIDITEM_CLEAR:NEAR	; WINDOWS/アイテム表示設定クリア
EXTRN	WIDITEM_INIT:NEAR	; WINDOWS/アイテム管理初期処理
EXTRN	WIDITEM_OPEN:NEAR	; WINDOWS/アイテムオープン
EXTRN	WIDITEM_CLOSE:NEAR	; WINDOWS/アイテムクローズ

EXTRN	WIDBAR_SOUBI_OPEN:NEAR	; WINDOWS/バー・装備OPEN
EXTRN	WIDBAR_SOUBI_CLOSE:NEAR	; WINDOWS/バー・装備CLOSE
EXTRN	WIDBAR_SOUBI:NEAR	; WINDOWS/バー・装備PUT

EXTRN	WIDWAZA_OPEN:NEAR	; WINDOWS/技(わざ)オープン
EXTRN	WIDWAZA_CLOSE:NEAR	; WINDOWS/技(わざ)クローズ

EXTRN	WIDWORKS_OPEN:NEAR	; WINDOWS/行い(おこない)オープン
EXTRN	WIDWORKS_CLOSE:NEAR	; WINDOWS/行い(おこない)クローズ

EXTRN	WIDDSP_SAVE:NEAR	; WINDOWS/画面退避
EXTRN	WIDDSP_LOAD:NEAR	; WINDOWS/画面復元
EXTRN	WIDDSP_SV_H:NEAR	; WINDOWS/画面範囲退避
EXTRN	WIDDSP_LD_H:NEAR	; WINDOWS/画面範囲復元
EXTRN	WIDFRM_BACKSAVE:NEAR	; WINDOWS/背景をセーブ
EXTRN	WIDFRM_BACKLOAD:NEAR	; WINDOWS/背景をロード

EXTRN	WIDCCT_INIT:NEAR	; WINDOWS/キャラクタ初期処理
EXTRN	WIDCCT_OPEN:NEAR	; WINDOWS/キャラクタオープン
EXTRN	WIDCCT_CLOSE:NEAR	; WINDOWS/キャラクタクローズ
EXTRN	WIDCCT_CHANGE:NEAR	; WINDOWS/キャラクタチェンジ

EXTRN	WIDHBR_INIT:NEAR	; WINDOWS/横グラフ初期処理
EXTRN	WIDHBR:NEAR		; WINDOWS/横グラフ表示
EXTRN	WIDHBRS:NEAR		; WINDOWS/横グラフ再表示
EXTRN	WIDHBR_MAX:NEAR		; WINDOWS/横グラフ最大表示
EXTRN	WIDHBR_RELOC:NEAR	; WINDOWS/横グラフ位置変更

EXTRN	TEST_MUSIC_M:NEAR	; 音楽テスト(メニュー付き)

EXTRN	TKRHME:NEAR		; 台詞ホームポジション

EXTRN	MSCSRT:NEAR		; カーソルスタート
EXTRN	MSCMOV:NEAR		; カーソル移動
EXTRN	MSCWAT:NEAR		; カーソルボタンOFF待ち
EXTRN	MSCSTP:NEAR		; カーソルストップ
EXTRN	MSCSTS:NEAR		; マウスカーソルステータス

EXTRN	KEYTEN:NEAR		; キーボード・読み込み


; ****************************************************
;	装備
;	-O- AX  : 0=通常,1=データをロードした。
; ****************************************************

R_SOUBI		PROC	NEAR
	CALL	TKRHME			; 台詞ホームポジション
	PR_TXT	"えーと、この子の現在の状態は………"

	MOVX	R_SR_CHR_ADRS,WIDMY_GIRL_OF	; 私の娘アドレス

	CALL	WIDDSP_SAVE			; WINDOWS/画面退避

	MOV	AX,WIDMY_GIRL_OF		; 私の娘アドレス
	MOV	S_FUNC,14			; 14=ヘッダー整合
	CALL	R_KEISAN			; 各計算処理

	MOVX	W_STAT_HEAD_NO,WIDMY_GIRL_NO	; 私の娘No.
	CALL	WIDSTAT				; WINDOWS/ステータス

;*NON*;	MOV	WDGNO,0				; 0. 体力
;*NON*;	CALL	WIDHBRS				; WINDOWS/横グラフ再表示

R_SOUBI_LOOP:					;
SELECT	"武器の装備,兜の装備,鎧の装備,道具を使う,着がえ,セーブ,ロード,おわりました"

	CALL	WIDDSP_LOAD			; WINDOWS/画面復元

	CMP	WIDSNM,0			;
	JE	R_SHOW_BUKI			; 0.武器
	CMP	WIDSNM,1			;
	JE	R_SHOW_BOUGU_KABUTO		; 1.防具・兜
	CMP	WIDSNM,2			;
	JE	R_SHOW_BOUGU_YOROI		; 2.防具・鎧
	CMP	WIDSNM,3			;
	JE	R_SOUBI_DOUGU			; 3.道具
	CMP	WIDSNM,4			;
	JE	R_SOUBI_KIGAE			; 4.着替え
	CMP	WIDSNM,5			;
	JE	R_SOUBI_SAVE			; 5.セーブ
	CMP	WIDSNM,6			;
	JE	R_SOUBI_LOAD			; 6.ロード
	CMP	WIDSNM,OFFF			;
	JE	R_SOUBI_EXIT			;

	JMP	R_SOUBI_EXIT			;

R_SHOW_BUKI:					;
	CALL	SHOW_BUKI			; 0.武器
	JMP	R_SOUBI_LOOP			;
R_SHOW_BOUGU_KABUTO:				;
	CALL	SHOW_BOUGU_KABUTO		; 1.防具・兜
	JMP	R_SOUBI_LOOP			;
R_SHOW_BOUGU_YOROI:				;
	CALL	SHOW_BOUGU_YOROI		; 2.防具・鎧
	JMP	R_SOUBI_LOOP			;
R_SOUBI_DOUGU:					;
	CALL	DOUGU_MENU			; 3.道具 道具メニュー
	JMP	R_SOUBI_LOOP			;
R_SOUBI_KIGAE:					;
	CALL	KISEKAE_MODE			; 4.着せ替えモード
	JMP	R_SOUBI_LOOP			;
R_SOUBI_SAVE:					;
	CALL	DSK_SAVE			; 5.セーブ
	JMP	R_SOUBI_LOOP			;
R_SOUBI_LOAD:					;
	CALL	DSK_LOAD			; 6.ロード
	CMP	AX,1				; 0=通常,1=データロード
	JE	R_SOUBI_NEW_LOAD		;
	JMP	R_SOUBI_LOOP			;

R_SOUBI_EXIT:
	CALL	TKRHME				; 台詞ホームポジション
	MOV	AX,0				; 0=通常
	RET
R_SOUBI_NEW_LOAD:
	CALL	TKRHME				; 台詞ホームポジション
	MOV	AX,1				; 1=データをロードした。
	RET
R_SOUBI		ENDP


; ****************************************************
;	着せ替えモード
; ****************************************************

R_SOUBI_KISEKAE		PROC	NEAR
	CALL	KISEKAE_MODE		; 着せ替えモード
	RET
R_SOUBI_KISEKAE		ENDP


; ****************************************************
;	戦闘時・道具の使用
; ****************************************************

R_SOUBI_S_DOUGU	PROC	NEAR
	PR_TXT	"@道具"

	MOV	WDX1,1	;0		; エリア左上座標X
	MOV	WDY1,1	;0		; エリア左上座標Y
	MOV	WDX2,48	;51		; エリアサイズX
	MOV	WDY2,364;400-33		; エリアサイズY
	CALL	WIDDSP_SV_H		; WINDOWS/画面範囲退避
;*;	MOV	DX,0			; 背景退避用パーツバンク番号#0
;*;	CALL	WIDFRM_BACKSAVE		; WINDOWS/背景をセーブ

	MOV	ITEM_ATTR,4		; アイテム種別 4=道具
	CALL	SHOW_MOCHIMONO		; 持物は?

	CMP	K_TBL_MAX,0		; 検索レコード数
	JMPEQ	R_SOUBI_S_DOUGU_NONE	;

	PR_TXT	"@どれか、使いますか?"

	CALL	R_ITM_OFFSET		; 持物アイテムのアイテムオフセット計算

	MOV	BX,0			; 何ワード目か
	CALL	R_GET_SELECT		; アイテムレコード内から選択単語を取り出す

	CALL	WIDSLC			; WINDOWS/セレクト・ウインドウ

	MOV	WDX1,1	;0		; エリア左上座標X
	MOV	WDY1,1	;0		; エリア左上座標Y
	MOV	WDX2,48	;51		; エリアサイズX
	MOV	WDY2,364;400-33		; エリアサイズY
	CALL	WIDDSP_LD_H		; WINDOWS/画面範囲復元
;*;	CALL	WIDFRM_BACKLOAD		; WINDOWS/背景をロード

	CMP	WIDSNM,OFFF		; ユーザ選択番号
	JMPEQ	R_SOUBI_S_DOUGU_EXIT	;


	MOV	AX,WIDMY_GIRL_OF	; 私の娘アドレス
	MOV	SI,WIDOFS_GRP		; グラフテーブルオフセット
	MOV	DI,WIDOFS_VAL		; 内容表示テーブルオフセット
	MOV	BX,WIDSNM		; ユーザ選択番号
	SHL	BX,1			;
	MOV	DX,DS:K_TBL_OFSET[BX]	; アイテム(道具)アドレス
	MOV	S_FUNC,13		; 13=道具使用
	CALL	R_KEISAN		; 各計算処理

	MOV	AX,WIDMY_GIRL_OF	; 私の娘アドレス
	MOV	BX,WIDSNM		; ユーザ選択番号
	SHL	BX,1			;
	MOV	DX,DS:K_TBL_MOCHI[BX]	; DX=持物リスト削除番号
	CALL	R_ITM_MOCH_DEL		; 持物アイテム削除

	JMP	R_SOUBI_S_DOUGU_EXIT	;

R_SOUBI_S_DOUGU_NONE:			;
	CALL	R_SR_NAINAI		; "「なにもないよ、シクシク」"
R_SOUBI_S_DOUGU_EXIT:			;
	RET
R_SOUBI_S_DOUGU	ENDP


;*NON*;; ****************************************************
;*NON*;;	装備メニュー
;*NON*;; ****************************************************
;*NON*;
;*NON*;SOUBI_MENU	PROC	NEAR
;*NON*;	PR_TXT	"なにを装備しますか?@"
;*NON*;
;*NON*;	MOVX	R_SR_CHR_ADRS,WIDMY_GIRL_OF	; 私の娘アドレス
;*NON*;SOUBI_MENU_SEL:
;*NON*;	S_CALL	"武器,兜,鎧,やめる",SOUBI_MENU_EE
;*NON*;	DW	SHOW_BUKI			; 0.武器
;*NON*;	DW	SHOW_BOUGU_KABUTO		; 1.防具・兜
;*NON*;	DW	SHOW_BOUGU_YOROI		; 2.防具・鎧
;*NON*;	DW	NONE_NONE			; 3.やめる
;*NON*;SOUBI_MENU_EE:
;*NON*;	CMP	WIDSNM,3			; ユーザ選択番号
;*NON*;	JE	SOUBI_MENU_EXIT
;*NON*;	CMP	WIDSNM,OFFF			; ユーザ選択番号
;*NON*;	JE	SOUBI_MENU_EXIT
;*NON*;
;*NON*;	JMP	SOUBI_MENU_SEL
;*NON*;
;*NON*;SOUBI_MENU_EXIT:
;*NON*;	CALL	R_SR_GIRL_NAME			; キャラクタ名
;*NON*;	PR_TXTR	"は装備を終えた。@"
;*NON*;SOUBI_MENU_BREAK:
;*NON*;	RET
;*NON*;SOUBI_MENU_MACHIGAE:
;*NON*;	PR_TXTR	"やめる。@"
;*NON*;	RET
;*NON*;SOUBI_MENU	ENDP


; ****************************************************
;	ロード
;	-O- AX : 0=通常,1=データロード
; ****************************************************

DSK_LOAD	PROC	NEAR
	PR_CLS
	PR_TXT	"ロード"
	MOV	R_LOAD_FUNC,1		; 1=ロード
	CALL	R_LOADS			; ロード&セーブ
	RET
DSK_LOAD	ENDP


; ****************************************************
;	セーブ
; ****************************************************

DSK_SAVE	PROC	NEAR
	PR_CLS
	PR_TXT	"セーブ"
	MOV	R_LOAD_FUNC,2		; 2=セーブ
	CALL	R_LOADS			; ロード&セーブ
	RET
DSK_SAVE	ENDP


; ****************************************************
;	道具メニュー
; ****************************************************

DOUGU_MENU	PROC	NEAR
	PR_TXT	"@道具"

	MOV	ITEM_ATTR,4		; アイテム種別 4=道具
	CALL	SHOW_MOCHIMONO		; 持物は?

	CMP	K_TBL_MAX,0		; 検索レコード数
	JMPEQ	DOUGU_MENU_NONE		;

	PR_TXT	"@どれを、使いますか?"

	CALL	R_ITM_OFFSET		; 持物アイテムのアイテムオフセット計算

	MOV	BX,0			; 何ワード目か
	CALL	R_GET_SELECT		; アイテムレコード内から選択単語を取り出す

	CALL	WIDSLC			; WINDOWS/セレクト・ウインドウ

	CALL	WIDDSP_LOAD		; WINDOWS/画面復元

	CMP	WIDSNM,OFFF		; ユーザ選択番号
	JMPEQ	DOUGU_MENU_EXIT		;


	MOVX	W_STAT_HEAD_NO,WIDMY_GIRL_NO	; 私の娘No.
	CALL	WIDSTAT				; WINDOWS/ステータス

	MOV	AX,WIDMY_GIRL_OF	; 私の娘アドレス
	MOV	SI,WIDOFS_GRP		; グラフテーブルオフセット
	MOV	DI,WIDOFS_VAL		; 内容表示テーブルオフセット
	MOV	BX,WIDSNM		; ユーザ選択番号
	SHL	BX,1			;
	MOV	DX,DS:K_TBL_OFSET[BX]	; アイテム(道具)アドレス
	MOV	S_FUNC,13		; 13=道具使用
	CALL	R_KEISAN		; 各計算処理

	MOV	AX,WIDMY_GIRL_OF	; 私の娘アドレス
	MOV	BX,WIDSNM		; ユーザ選択番号
	SHL	BX,1			;
	MOV	DX,DS:K_TBL_MOCHI[BX]	; DX=持物リスト削除番号
	CALL	R_ITM_MOCH_DEL		; 持物アイテム削除

	JMP	DOUGU_MENU_EXIT		;
DOUGU_MENU_NONE:			;
	SELECT	"「なにもないよ、シクシク」"
DOUGU_MENU_EXIT:
	RET
DOUGU_MENU	ENDP


; ****************************************************
;	着せ替えモード
; ****************************************************

KISEKAE_MODE	PROC	NEAR
	PR_TXT	"@着替え"
KISEKAE_MODE_LOOP:
	PR_TXT	"@どうする"

	CALL	KEYTEN		; キーボード・読み込み
	CMP	BX,1		; 1=HELP,2=HOME,3=PLUS,4=ESC (-1:押していない)
	JE	KISEKAE_MODE_12

KISEKAE_MODE_11:
	SELECT	"春服,夏服,秋服,冬服,おわりました"
	JMP	KISEKAE_MODE_13
KISEKAE_MODE_12:
	SELECT	"春服,夏服,秋服,冬服,おわりました,とりあえず脱ぐ,おんがく"
KISEKAE_MODE_13:

	CMP	WIDSNM,0			; 春服
	JE	KISEKAE_MODE_HARU		;
	CMP	WIDSNM,1			; 夏服
	JE	KISEKAE_MODE_NATSU		;
	CMP	WIDSNM,2			; 秋服
	JE	KISEKAE_MODE_AKI		;
	CMP	WIDSNM,3			; 冬服
	JE	KISEKAE_MODE_FUYU		;
	CMP	WIDSNM,4			; おわりました
	JE	KISEKAE_MODE_OWARI		;
	CMP	WIDSNM,5			; とりあえず脱ぐ
	JE	KISEKAE_MODE_NUGU		;
	CMP	WIDSNM,6			; 音楽
	JE	KISEKAE_MODE_MUSIC		;
	CMP	WIDSNM,OFFF			; EXIT
	JE	KISEKAE_MODE_OWARI		;
	JMP	KISEKAE_MODE_NEXT		;
KISEKAE_MODE_HARU:				;
	MOV	DX,1				; 何を着る 1=春服
	CALL	KISEKAE_KIRU			; 着替え・着る
	JMP	KISEKAE_MODE_NEXT		;
KISEKAE_MODE_NATSU:				;
	MOV	DX,2				; 何を着る 2=夏服
	CALL	KISEKAE_KIRU			; 着替え・着る
	JMP	KISEKAE_MODE_NEXT		;
KISEKAE_MODE_AKI:				;
	MOV	DX,3				; 何を着る 3=秋服
	CALL	KISEKAE_KIRU			; 着替え・着る
	JMP	KISEKAE_MODE_NEXT		;
KISEKAE_MODE_FUYU:				;
	MOV	DX,4				; 何を着る 4=冬服
	CALL	KISEKAE_KIRU			; 着替え・着る
	JMP	KISEKAE_MODE_NEXT		;
KISEKAE_MODE_NUGU:				;
	CALL	KISEKAE_NUGU			; 着替え・脱ぐ
	JMP	KISEKAE_MODE_NEXT		;
KISEKAE_MODE_MUSIC:				;
	CALL	TEST_MUSIC_M			; 音楽テスト(メニュー付き)
	CALL	MUSIC_KOSODATE			; 子育てのテーマ
	JMP	KISEKAE_MODE_NEXT		;

KISEKAE_MODE_NEXT:
	JMP	KISEKAE_MODE_LOOP		;

KISEKAE_MODE_OWARI:
	CMP	WIDCHAR_DRESS,0		; 自分の娘の着ている服 0=何も着ない
	JNE	KISEKAE_MODE_EXIT	;

	PR_TXT	"@「はだかじゃ、いや!」"

	JMP	KISEKAE_MODE_LOOP

KISEKAE_MODE_EXIT:
	RET
KISEKAE_MODE	ENDP


; ****************************************************
;	着替え・脱ぐ
; ****************************************************

KISEKAE_NUGU	PROC	NEAR

	MOV	AX,WIDMY_GIRL_OF	; 私の娘アドレス
	MOV	S_FUNC,49		; 49=服は何を着ているか
	CALL	R_KEISAN		; 各計算処理
	CMP	DX,0			; 自分の娘の着ている服
	JNE	KISEKAE_NUGU_4		;

	PR_TXT	"@もう、"		;
	CALL	R_SR_GIRL_FUKU		; キャラクタ服名
	CALL	R_SR_SR_DESU		; "です"
	JMP	KISEKAE_NUGU_EXIT	;

KISEKAE_NUGU_4:

	MOV	WIDCHAR_DRESS,0		; 自分の娘の着ている服 0=何も着ない

	MOV	DX,WIDCHAR_DRESS	; 自分の娘の着ている服
	MOV	AX,WIDMY_GIRL_OF	; 私の娘アドレス
	MOV	S_FUNC,50		; 50=服の着替え
	CALL	R_KEISAN		; 各計算処理

	CALL	R_SCHO_KISEKAE		; 娘着せ替えの処理
KISEKAE_NUGU_EXIT:
	RET
KISEKAE_NUGU	ENDP


; ****************************************************
;	着替え・着る
;	-I- DX : 何を着る 0=何も着ない,1=春服,2=夏服,3=秋,4=冬
; ****************************************************

KISEKAE_KIRU	PROC	NEAR
	MOV	NUM,DX			; 番号

	MOV	AX,WIDMY_GIRL_OF	; 私の娘アドレス
	MOV	S_FUNC,49		; 49=服は何を着ているか
	CALL	R_KEISAN		; 各計算処理
	CMP	DX,NUM			; 自分の娘の着ている服
	JNE	KISEKAE_KIRU_4		;

	PR_TXT	"@もう、"		;
	CALL	R_SR_GIRL_FUKU		; キャラクタ服名
	CALL	R_SR_SR_DESU		; "です"
	JMP	KISEKAE_KIRU_EXIT	;

KISEKAE_KIRU_4:

	PR_TXT	"@着替え中"

	MOVX	WIDCHAR_DRESS,NUM		; 自分の娘の着ている服

	MOV	DX,WIDCHAR_DRESS		; 自分の娘の着ている服
	MOV	AX,WIDMY_GIRL_OF		; 私の娘アドレス
	MOV	S_FUNC,50			; 50=服の着替え
	CALL	R_KEISAN			; 各計算処理

	CALL	R_SCHO_KISEKAE			; 娘着せ替えの処理

	PR_TXT	"@着替えました。"

KISEKAE_KIRU_EXIT:
	RET
KISEKAE_KIRU	ENDP


; ****************************************************
;	武器
; ****************************************************

SHOW_BUKI	PROC	NEAR
	PR_TXT	"@武器"
	MOV	ITEM_ATTR,0		; アイテム種別 0=武器
	CALL	SOUBI_SET		; 装備セット
	RET
SHOW_BUKI	ENDP


; ****************************************************
;	防具・兜
; ****************************************************

SHOW_BOUGU_KABUTO	PROC	NEAR
	PR_TXT	"@兜"
	MOV	ITEM_ATTR,1		; アイテム種別 1=防具・兜
	CALL	SOUBI_SET		; 装備セット
	RET
SHOW_BOUGU_KABUTO	ENDP


; ****************************************************
;	防具・鎧
; ****************************************************

SHOW_BOUGU_YOROI	PROC	NEAR
	PR_TXT	"@鎧"
	MOV	ITEM_ATTR,2		; アイテム種別 2=防具・鎧
	CALL	SOUBI_SET		; 装備セット
	RET
SHOW_BOUGU_YOROI	ENDP



; ****************************************************
;	装備セット
;	-I- ITEM_ATTR : アイテム種別 0=武器,1=防具・兜,2=防具・鎧
;	                             3=防具・盾, 4=道具
; ****************************************************

SOUBI_SET	PROC	NEAR

	CALL	SHOW_MOCHIMONO		; 持物は?

	CMP	K_TBL_MAX,0		; 検索レコード数
	JMPEQ	SOUBI_SET_NONE		;

	PR_TXT	"@どれを、装備しますか?"

	CALL	R_ITM_OFFSET		; 持物アイテムのアイテムオフセット計算

	MOV	BX,0			; 何ワード目か
	CALL	R_GET_SELECT		; アイテムレコード内から選択単語を取り出す

	WD_ADRS	ID_86,DX		; "何も装備しない"
	CALL	R_ADD_SELECT		; 選択単語へ追加
	MOV	AX,ATMMAX		; ユーザ選択番号
	DEC	AX			;
	MOV	NONE_NUM,AX		; 指定=何も装備しない

	CALL	WIDSLC			; WINDOWS/セレクト・ウインドウ

	CALL	WIDDSP_LOAD		; WINDOWS/画面復元

	CMP	WIDSNM,OFFF		; ユーザ選択番号
	JMPEQ	SOUBI_SET_EXIT		;

	MOV	AX,WIDMY_GIRL_NO	; 私の娘No.
	MOV	DX,CCT_OPEN_TYPE	; オープンタイプ
	CALL	WIDCCT_OPEN		; WINDOWS/キャラクタオープン

	MOV	WDGNO,0			; 0. 体力
	CALL	WIDHBRS			; WINDOWS/横グラフ再表示

	JMP	SOUBI_SET_INTER		;

SOUBI_SET_LOOP:
	CALL	WIDBAR_SOUBI		; WINDOWS/バー・装備PUT
	CALL	WIDSLC			; WINDOWS/セレクト・ウインドウ

SOUBI_SET_INTER:

	CMP	WIDSNM,OFFF		; ユーザ選択番号
	JMPEQ	SOUBI_SET_EXIT		;


;*;	PR_TXT	"@装備・はずす"

	MOV	BX,ITEM_ATTR			; アイテム種別
	MOV	CX,WIDOFS_ITEM			; アイテムテーブル
	MOV	SI,WIDOFS_GRP			; グラフテーブルオフセット
	MOV	DI,WIDOFS_VAL			; 内容表示テーブルオフセット

	CMPX	WIDSNM,NONE_NUM			; 指定=何も装備しない
	JNE	SOUBI_SET_55			;

	MOV	AX,WIDMY_GIRL_OF		; 私の娘アドレス
	MOV	DX,0				; 表示停止スイッチ0=OFF 1=ON
	MOV	S_FUNC,16			; 16=装備・はずす
	CALL	R_KEISAN			; 各計算処理
	JMP	SOUBI_SET_NEXT			;

SOUBI_SET_55:					;
	MOV	AX,WIDMY_GIRL_OF		; 私の娘アドレス
	MOV	DX,1				; 表示停止スイッチ0=OFF 1=ON
	MOV	S_FUNC,16			; 16=装備・はずす
	CALL	R_KEISAN			; 各計算処理
	;	-O- AX : 0=正常,1=装備していない


;*;	PR_TXT	"@装備・つける"

	MOV	SI,WIDSNM			; ユーザ選択番号
	SHL	SI,1				;
	MOV	DX,DS:K_TBL_OFSET[SI]		; アイテムアドレス
	MOV	CX,DS:K_TBL_REC[SI]		; アイテムレコードNO
	MOV	BX,DS:K_TBL_ATR[SI]		; アイテム種別
	MOV	AX,WIDMY_GIRL_OF		; 私の娘アドレス

	MOV	SI,WIDOFS_GRP			; グラフテーブルオフセット
	MOV	DI,WIDOFS_VAL			; 内容表示テーブルオフセット

	MOV	S_FUNC,15			; 15=装備・つける
	CALL	R_KEISAN			; 各計算処理
	;	-O- AX : 0=正常,1=装備を外せ

SOUBI_SET_NEXT:					;
	JMP	SOUBI_SET_LOOP			;


SOUBI_SET_EXIT:					;
	CALL	WIDDSP_LOAD			; WINDOWS/画面復元
	RET
SOUBI_SET_NONE:
	SELECT	"「なにももってなぁい」"
	RET
SOUBI_SET	ENDP



; ****************************************************
;	持物は?
;	-I- ITEM_ATTR : アイテム種別 0=武器,1=防具・兜,2=防具・鎧
;	                             3=防具・盾, 4=道具
;	-O- K_TBL_ATR[]   : 検索レコード種別テーブル
;	    K_TBL_REC[]   : 検索レコードテーブル
;	    K_TBL_MOCHI[] : 検索レコード持物テーブル
;	    K_TBL_MAX     : 検索レコード数
; ****************************************************

SHOW_MOCHIMONO	PROC	NEAR
	PR_TXT	"は、"

	MOV	AX,WIDMY_GIRL_OF	; 私の娘アドレス
	MOV	DX,ITEM_ATTR		; 検索するアイテム属性
	CALL	R_ITM_SYUBETU		; 持物アイテム種別検索
	CALL	R_DISP_ITEM_M		; 持物アイテム表示

	RET
SHOW_MOCHIMONO	ENDP

CODE	ENDS


DATA	SEGMENT	PUBLIC	'DATA'

EXTRN	R_SR_CHR_ADRS:WORD	; 台詞・キャラクタアドレス
EXTRN	R_SR_ITM_ADRS:WORD	; 台詞・アイテムアドレス

EXTRN	R_LOAD_FUNC:WORD	; ロードセーブ機能

EXTRN	S_FUNC:WORD		; 計算ファンクション

EXTRN	K_TBL_REC:WORD		; 検索レコードテーブル
EXTRN	K_TBL_OFSET:WORD	; 検索レコードオフセットテーブル
EXTRN	K_TBL_MOCHI:WORD	; 検索レコード持物テーブル
EXTRN	K_TBL_ATR:WORD		; 検索レコード種別テーブル
EXTRN	K_TBL_MAX:WORD		; 検索レコード数
EXTRN	K_TBL_DIM:WORD		; 検索レコードテーブルサイズ

EXTRN	W_STAT_HEAD_NO:NEAR	; ヘッダー番号(WIDSTAT.ASM)

EXTRN	ATMSEG:WORD		; WINDOWS/テキストバッファセグメント
EXTRN	ATMTBL:WORD		; WINDOWS/表示単語アドレス
EXTRN	ATMMAX:WORD		; WINDOWS/表示単語の数
EXTRN	ATMDIM:WORD	 	; WINDOWS/表示単語のテーブルサイズ

ITEM_ATTR	DW	0	; アイテム種別 0=武器,1=防具・兜,2=防具・鎧
				;              3=防具・盾, 4=道具

REC_NO		DW	0	; レコード番号

NONE_NUM	DW	0	; 指定=何も装備しない

NUM		DW	0	; 番号

DATA	ENDS

	END
;
;	end of "R_SOUBI.ASM"
;