装備によるアイテム枠増減のプログラムできた(T_T)


2017年 10月4日
 
 
 いやあ、ややこしかった。

 おっと前々々回と入りが同じだ。

 どう処理したらできるのか分からなくて、もうダメかと思ったけど、何も考えずにブロック積み上げるように地味にベタベタと組んだらなぜかできた。

 まあ、難しい時はとりあえず紙に書くと良い。
 
 
 ソースはこちら。

 装備によるステータス計算の前半にぶち込む事にした。

 後半の 2ブロックはとりあえず前にも出た部分で、今回は関係無い。

 追加したのは増加枠の部分ね。

#deffunc equ_syo int equ_syon1,int equ_syon2; 装備処理

	eun=equ_syon1	; キャラNo.
	qin=equ_syon2	; アイテムNo.
	qig=qin*idb		; アイテムデータ位置


; 増加枠 -------

	repeat
	 n1=ud(ug+19) ; 元のアイテム枠数

	 n=0
	 repeat 7
	  qin2=ud(ug+40+cnt)
	  if qin2<=0 : continue
	  n+=id(qin2*idb+3) ; 知力を加算
	 loop
	 n2=(ud(ug+3)+n)/20-ud(ug+18)+1	; 枠元値

	 repeat 7
	  if equsi(cnt)!5 : continue	; 特殊枠
	  n=ud(ug+40+cnt)	; アイテムNo.
	  if n<=0 : break	; 装備してない
	  if id(n*idb+8)=19 : n2+=id(n*idb+9) ; 特殊の枠増加
	  break
	 loop

	 ud(ug+19)=n2 ; アイテム枠数

	 if n1<=n2 : break	; 枠が同数か増えてるなら終わり

	 n3=ud(ug+16)+ud(ug+17)+ud(ug+18)
	  if n3+n2>=7 : break	; 7枠以上なら終わり

	 n4=n3+n2
	 repeat 7 ; 減った枠のアイテムを外す
	  if n4+cnt>=7 : break
	  if ud(ug+40+n4+cnt)<=0 : continue
	  qin2=ud(ug+40+n4+cnt) : id(qin2*idb+13)=0 ; アイテムを外す
	  ud(ug+40+n4+cnt)=0
	 loop

	loop

	sbk_syo	; 装備枠再計算


; 基礎値 -------

	repeat 5 : ud(ug+21+cnt)=ud(ug+1+cnt) :	loop	; 基礎値

	repeat sbkn : cnt2=cnt	; アイテムの基礎値+
	 qin=ud(ug+40+cnt2)		; アイテムNo.
	 if qin<=0 : continue	; 装備してない

	 qig=qin*idb			; アイテムデータ先頭
	  repeat 5				; アイテム能力値+
	   ud(ug+21+cnt)+=id(qig+1+cnt)
	  loop
	loop

	repeat 2 : ud(ug+11+cnt)=ud(ug+21) : loop		; 基礎攻防値
	repeat 6 : ud(ug+31+cnt)=0 : loop				; 属性値リセット


; 装備 -------

	f=0
	repeat sbkn : cnt2=cnt
	 qin=ud(ug+40+cnt2)		; アイテムNo.
	 if qin<=0 : continue	; 装備してない

	 qig=qin*idb			; アイテムデータ先頭

	 repeat 1	; 攻撃
	  if ud(ug+16)<cnt2 : ud(ug+11)+=id(qig+11) : break
	  if f=1 : break
	  ud(ug+11)+=id(qig+11) : f=1
	 loop

	 ud(ug+12)+=id(qig+12)	; 防御

	 repeat 6 : ud(ug+31+cnt)+=id(qig+31+cnt) : loop	; 属性値
	loop


	return

 
 
 どういう事をしてるかというと、まず変更前のアイテム枠の数をひかえ、アイテム枠の数に関係する知力の全装備アイテムの値を仮に計算して、現在の元枠数を出す。

 次に特殊装備枠に枠数増加のアイテムが装備されていたら、その値をアイテム枠数に足す。

 枠数が装備変更前の枠数と同じか増えてる分には変更無し。

 枠数が 7枠以上なら装備を外す必要が無いので変更無し。

 減った枠の分だけ装備をはずす。

 そしたら始めに戻って再計算。
 
 
 とまあそんな感じだ。

 字ヅラだけ追っても何の事か分からないだろう。
 大丈夫、自分にはさっぱり分からない。

 これによって枠増加のアイテムは元より、知力の増加するアイテムを付けたり外した場合にも対処できる・・・・ハズ・・・。

 まあ、後は追々バグを処理していこう。
 
 
 装備前


 
 
 アイテム枠増加アイテムを装備。
 サックは +3。


 
 
 とりあえず、能力値増加のアイテムを装備してみる。
 ガントレットは力が、サークレットはその他が少し上がる。
 ステータスが少し上がってると思う。


 
 
 サックをはずすと、減った枠のアイテムが自動で外れる。


 
 
 以上(T_T)
 
 
 
 さて、やっと基本的な枠組みが出来上がった様なので、これでいよいよ「戦闘」をプログラムできると思う。

 やっとメインかなあ、戦闘の要素は全プログラムの 2~3割くらいかな。

 という訳でまた次回。
 
 

コメントを残す

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