とりあえず魔法一揃い


2017年 11月23日
 
 
 途中だけど区切りが良いので。
 
 
 ソースには魔法一揃い並べたけど、まだ機能は全部実装してない。

 補助ステータスのソースをまとめたのとヒールを追加したくらい。

 
 今回はソースはダイジェストで。

*battle_syoki ; 戦闘初期 ////////////////////////////////

	bsb=21			; 最大数
	dim bs,6*bsb	; 戦闘ステータス
	bsg=0			; 現在のユニット

; 戦闘ステータス(0=un、1=火傷、2=氷、3=麻痺、4=気絶、5=魅惑、6=毒、
; 7=ファイヤーウエポン、8=アイスエンチャント、9=ウインドエンチャント、10=サンダーウエポン、
; 11=グラビティウエポン、12=ホーリーウエポン、13=ダークウエポン、
; 14=攻撃、15=防御、16=加速、17=減速、
; 18=ウォータースクリーン、19=ウインドウォール、20=ホーリーライトサークル、)

	dim rdpd,3 ; ランダムピックのun格納


; ピックアップ --------------------------------------------

#defcfunc fns int fnsf ; 先頭判定 -------------------------------

	un2=0
	repeat 3,1
	 if fnsf=1 : un2=fn1(cnt)
	 if fnsf=2 : un2=fn2(cnt)
	  if un2=0 or ud(un2*udb+26)<=0 : continue
	 break
	loop

	return un2

#defcfunc bsp int bspn; 戦闘ステータスデータNo,ピック

	repeat 6
	 bsp_bsg=bsb*cnt
	  if bspn=bs(bsp_bsg) : break
	loop

	return bsp_bsg


#defcfunc rdp int rdpf ; ランダムピック

	rdpn=0 : rdpc=0
	repeat 3
	 rdpd(cnt)=0 ; リセット
	 if rdpf=1 : rdpun=fn1(cnt+1) ; 自軍の場合
	 if rdpf=2 : rdpun=fn2(cnt+1) ; 敵軍の場合
	 if rdpun=0 or ud(rdpun*udb+26)<=0 : continue ; いない
	 rdpd(rdpc)=rdpun : rdpc+ ; 候補格納
	loop
	if rdpc=0 : return 0 ; 1人もいない場合

	r=rnd(rdpc) : rdpn=rdpd(r) ; unNo.照会

;dgs "ランダム選択 ",rdpd(r),10

	return rdpn


#defcfunc ftp int ftpf,int ftpn ; 隊列番号ピック

	repeat 3,1
	 if ftpf=1 : ftpn=fn1(cnt) : ftpn2=cnt : break
	 if ftpf=2 : ftpn=fn2(cnt) : ftpn2=cnt : break
	loop

	return ftpn2


#deffunc rang int rangn ; 射程判定 -------------------------------

	rangf=0 ; 攻撃したかフラグ

	repeat 3,1 ; 射程
	 if rangn<(ut-1)+cnt : break ; 射程外
	 et=cnt : en=ffn(et) : if en=0 : continue ; 隊列にいない
	 eg=en*udb : if ud(eg+26)<=0 : continue ; HPが0
	 rangf+ : break ; 攻撃した
	loop

	return


#deffunc brang int brangn ; 後方から射程判定 -------------------------------

	rangf=0 ; 攻撃したかフラグ

	repeat 3 ; 射程
	 if brangn<(ut-1)+(3-cnt) : continue ; 射程外
	 et=3-cnt : en=ffn(et) : if en=0 : continue ; 隊列にいない
	 eg=en*udb : if ud(eg+26)<=0 : continue ; HPが0
	 rangf+ : break ; 攻撃した
	loop

	return



; ステータス効果 ------------------------------------------------

#deffunc sad int sadf,int sadc,int sadn ; ステータス効果+

	switch sadf
	 case 1 ; 先頭
	  un2=fns(fs) : if un2=0 : swbreak ; 先頭判定
	  bsg=bsp(un2) : bs(bsg+sadc)+=sadn+mho
	 swbreak
	 case 2 ; ランダム1体
	  un2=rdp(fs) : if un2=0 : swbreak ; ランダムピック
	  bsg=bsp(un2) : bs(bsg+sadc)+=sadn+mho
	 swbreak
	 case 3 ; 3体全員
	  repeat 3,1
	  if fs=1 : n=fn1(cnt)
	  if fs=2 : n=fn2(cnt)
	   bsg=bsp(n) : bs(bsg+sadc)+=sadn+mho
	  loop
	 swbreak
	swend

	return

#deffunc enc int encf,int encn ; エンチャント

	un2=rdp(fs) : bsg=bsp(un2) ; unNo.決定

;dgs "enc bsg ",bsg,10

	f=0
	repeat 7 ; 別系統のエンチャントがかかっているか
	 if encf=cnt+1 : continue
	 if bs(bsg+7+cnt)>0 : f=1 : break
	loop

	repeat 7,7 ; リセット
	 if f=0 : break
	 bs(bsg+cnt)=0
	loop

	bs(bsg+6+encf)+=encn+mho ; 付与

	return


#deffunc scr int scrf,int scrn ; スクリーン

	if scrf=2 : n2=18 ; ウォータースクリーン
	if scrf=3 : n2=19 ; ウインドウォール
	if scrf=5 : n2=20 ; ホーリーライトサークル

	repeat 3,1
	 if fs=1 : n=fn1(cnt)
	 if fs=2 : n=fn2(cnt)
	  bsg=bsp(n)

	 bs(bsg+n2)+=scrn+mho
	loop

	return


#deffunc heal int healf,int healn ; 回復

	switch healf
	 case 1 ; 1体
	  n=0 : ft=0
	  repeat 3,1 ; 回復するunを特定(HPの低い順)
	   if fs=1 : un2=fn1(cnt)
	   if fs=2 : un2=fn2(cnt)
	   	n1=ud(un2*udb+26) : n2=ud(un2*udb+25)
	   	 if n1>=n2 : continue ; HPが減ってないので対象外
	   	  if n=0 or n>n1 : n=n1 : ft=cnt : un3=un2
	  loop
	  if n=0 : swbreak ; 対象がいなかった

	  n1=ud(un3*udb+26)
	   ud(un3*udb+26)+=healn+mho ; 回復
	    if ud(un3*udb+26)>ud(un3*udb+25) : ud(un3*udb+26)=ud(un3*udb+25)
	  n2=ud(un3*udb+26) : n=n2-n1
	   if fs=1 : dmp_set n,ft,3	 ; 回復表示
	   if fs=2 : dmp_set n,3+ft,3
	 swbreak
	 case 3 ; 全員
	  repeat 3,1
	   if fs=1 : un2=fn1(cnt)
	   if fs=2 : un2=fn2(cnt)
	    n1=ud(un2*udb+26)
	     ud(un2*udb+26)+=healn+mho
	      if ud(un2*udb+26)>ud(un2*udb+25) : ud(un2*udb+26)=ud(un2*udb+25)
	    n2=ud(un2*udb+26) : n=n2-n1
	     if n<=0 : continue
		  if fs=1 : dmp_set n,cnt,3		; 回復表示
	      if fs=2 : dmp_set n,3+cnt,3
	  loop
	 swbreak
	swend

bpk

	return

#defcfunc zk2_syo int zk2sf,int zk2sn
; 特殊のアイテム属性補整(zk2sf=0 全属性、1~6 各属性) -------

	zk2sg=0 : k1=120 : k2=80 ; アイテム補整 -------
	n=0 : nn=0

	bsg=bsp(un) ; 戦闘ステータスNo.

	if zk2sf=0 or zk2sf=1 {	; 火 ------------------------
	 n2=zk2sn+ud(ug+31)
	  if zk2sf=0 : bsg=bsp(un) : n2+=bs(bsg+7) ; エンチャント+

	 n3=0
	  bsg=bsp(en) : n3-=bs(bsg+18) ; ウォータースクリーン-
;dgs "n2 ",n2,8
;dgs "n3 ",n3,9

	 n=n2+n3-ud(eg+32)+ud(eg+34)-ud(eg+36)+ud(eg+35) ; 火値-水+地-闇+光
	  if n>n2 : n=n2			; 最大値
	  if n<0 and n<n2 : n=-n2	; 最小値

	 if ud(eg+7)=4 or ud(eg+7)=5 { ; 地、光。+%
		if n>0 : n=n*k1/100 : else : n=n*k2/100
	 }
	 if ud(eg+7)=2 or ud(eg+7)=6 { ; 水、闇。-%
		if n>0 : n=n*k2/100 : else : n=n*k1/100
	 }
	 zk2sg+=n
	}

zputn(1)=n
n=0

	if zk2sf=0 or zk2sf=2 {	; 水 -----------------------
	 n2=zk2sn+ud(ug+32)
	  if zk2sf=0 : bsg=bsp(un) : n2+=bs(bsg+8) ; エンチャント+
	 n=zk2sn+ud(ug+32)-ud(eg+33)+ud(eg+31)-ud(eg+36)+ud(eg+35) ; 水値-風+火-闇+光
	  if n>n2 : n=n2			; 最大値
	  if n<0 and n<n2 : n=-n2	; 最小値

	 if ud(eg+7)=1 or ud(eg+7)=5 { ; 火、光。+%
		if n>0 : n=n*k1/100 : else : n=n*k2/100
	 }
	 if ud(eg+7)=3 or ud(eg+7)=6 { ; 風、闇。-%
		if n>0 : n=n*k2/100 : else : n=n*k1/100
	 }
	 zk2sg+=n
	}

zputn(2)=n
n=0

	if zk2sf=0 or zk2sf=3 {		; 風
	 n2=zk2sn+ud(ug+33)
	  if zk2sf=0 {
			bsg=bsp(un)
			 n2+=bs(bsg+9)	; エンチャント+
			 n2+=bs(bsg+10) ; エンチャント+
	  }

	 n3=0
	  bsg=bsp(en) : n3+=bs(bsg+18) ; ウォータースクリーン+

	 n=zk2sn+n3+ud(ug+33)-ud(eg+34)+ud(eg+32)-ud(eg+36)+ud(eg+35) ; 風値-地+水-闇+光
	  if n>n2 : n=n2			; 最大値
	  if n<0 and n<n2 : n=-n2	; 最小値

	 if ud(eg+7)=2 or ud(eg+7)=5 { ; 水、光。+%
		if n>0 : n=n*k1/100 : else : n=n*k2/100
	 }
	 if ud(eg+7)=4 or ud(eg+7)=6 { ; 地、闇。-%
		if n>0 : n=n*k2/100 : else : n=n*k1/100
	 }
	 zk2sg+=n
	}

zputn(3)=n
n=0

	if zk2sf=0 or zk2sf=4 { ; 地
	 n2=zk2sn+ud(ug+34)
	  if zk2sf=0 : bsg=bsp(un) : n2+=bs(bsg+11) ; エンチャント+
	 n=n2-ud(eg+31)+ud(eg+33)-ud(eg+36)+ud(eg+35) ; 地値-火+風-闇+光
	  if n>n2 : n=n2	; 最大値
	  if n<0 and n<n2 : n=-n2	; 最小値

		if ud(eg+7)=3 or ud(eg+7)=5 { ; 風、光。+%
			if n>0 : n=n*k1/100 : else : n=n*k2/100
		}
		if ud(eg+7)=1 or ud(eg+7)=6 { ; 火、闇。-%
			if n>0 : n=n*k2/100 : else : n=n*k1/100
		}
		zk2sg+=n
	}

zputn(4)=n
n=0
	if zk2sf=0 or zk2sf=5 { ; 光
	 n=0 : nn=0
	 repeat 4
	  if ud(eg+31+cnt)>0 : n+=ud(eg+31+cnt)
	 loop
	 n2=zk2sn+ud(ug+35)
	  if zk2sf=0 : bsg=bsp(un) : n2+=bs(bsg+12) ; エンチャント+

	 n3=0
	  bsg=bsp(en) : n3-=bs(bsg+18) ; ウォータースクリーン-

	 nn=n2-n+n3+ud(eg+36)
	  if nn>n2 : nn=n2	; 最大値
	  if nn<0 and nn<n2 : nn=-n2	; 最小値

	 if 1<=ud(eg+7) and ud(eg+7)<=4 { ; 4属、+%
		if nn>0 : nn=nn*k2/100 : else : nn=nn*k1/100
	 }
	 if ud(eg+7)=6 { ; 闇、-%
		if nn>0 : nn=nn*k1/100 : else : nn=nn*k2/100
	 }
	 zk2sg+=nn
	}

zputn(5)=nn
n=0

	if zk2sf=0 or zk2sf=6 { ; 闇
	 n=0 : nn=0
	 repeat 4
	  if ud(eg+31+cnt)>0 : n+=ud(eg+31+cnt)
	 loop
	 n2=zk2sn+ud(ug+36)
	  if zk2sf=0 : bsg=bsp(un) : n2+=bs(bsg+13) ; エンチャント+

	 n3=0
	  bsg=bsp(en) : n3+=bs(bsg+18) ; ウォータースクリーン-

	 nn=n2+n+n3-ud(eg+35)
	  if nn>n2 : nn=n2	; 最大値
	  if nn<0 and nn<n2 : nn=-n2	; 最小値

	 if 1<=ud(eg+7) and ud(eg+7)<=4 { ; 4属、+%
		if nn>0 : nn=nn*k1/100 : else : nn=nn*k2/100
	 }
	 if ud(eg+7)=5 { ; 光、-%
		if nn>0 : nn=nn*k2/100 : else : nn=nn*k1/100
	 }
	 zk2sg+=nn
	}

zputn(6)=nn


	return zk2sg

#deffunc matk int matkf,int mzk,int matkn,int matkrg
; 魔法攻撃(フラグ、属性、攻撃値、射程) -------
n=matkf
dgs "matk ",n,2
n=matkn
dgs "威力 ",n,3

	mzk2=mzk : matkn2=matkn

	switch matkf
	 case 0 ; 手前の一体 --------------
	  rang matkrg : if rangf=0 : swbreak ; 射程判定
	   matk_syo
	 swbreak
	 case 1 ; 後列の一体 --------------
	  brang matkrg : if rangf=0 : swbreak ; 射程判定
	   matk_syo
	 swbreak
	 case 2 ; 貫通 --------------
	  repeat 3,1 : et=cnt
	   if matkrg<(ut-1)+et : break		; 射程外
	   en=ffn(et) : if en=0 : continue	; 隊列にいない
	   eg=en*udb : if ud(eg+26)<=0 : continue ; HPが0
		matk_syo
	   gsr-=25							; 威力減衰
	  loop
	 swbreak
	 case 3 ; 全列 --------------
	  repeat 3 : cnt2=cnt ; 隊列場所
	   if fs=1 : if un=fn1(cnt+1) : break
	   if fs=2 : if un=fn2(cnt+1) : break
	  loop
	  n=matkrg-cnt2 : if n>3 : n=3 ; 回数

	  repeat n,1
	   et=cnt : en=ffn(et) : if en=0 : continue ; 隊列にいない
	   eg=en*udb : if ud(eg+26)<=0 : continue ; HPが0
		matk_syo
	  loop
	 swbreak
	 case 4 ; 着弾範囲型 --------------
	  f=0
	  repeat 3,1 ; 3体いるか
	   if ffn(cnt)=0 or ud(ffn(cnt)*udb+26)<=0 : f=1 : break
	  loop
	  if matkrg<(ut-1)+2 : f=1 ; 真ん中に射程が届くか
	  if f=0 { ; 3体の場合
	   gsr=100	; 中央
	    et=2 : en=ffn(et) : eg=en*udb : matk_syo
	   gsr=75	; 左右
	    et=1 : en=ffn(et) : eg=en*udb : matk_syo
	    et=3 : en=ffn(et) : eg=en*udb : matk_syo
	   swbreak
	  }
	  rang matkrg : if rangf=0 : swbreak		; 射程内に敵がいなかった
	   matk_syo	; 1体目
	  et+ : if et>3 : swbreak					; 範囲外
	   en=ffn(et) : if en=0 : swbreak			; 2体目にいない
	    eg=en*udb : if ud(eg+26)<=0 : swbreak	; HPが0
	     gsr=75 : matk_syo ; 2体目
	 swbreak
	 case 5 ; 押し出し
	  rang matkrg : if rangf=0 : swbreak ; 射程判定
	   matk_syo
	  if et=3 : swbreak ; 最後列
	  if fs=1 : if fn2(et+1)=0 or ud(fn2(et+1)*udb+26)<=0 : fn2(et+1)=fn2(et) : fn2(et)=0 ; 押し出し
	  if fs=2 : if fn1(et+1)=0 or ud(fn1(et+1)*udb+26)<=0 : fn1(et+1)=fn1(et) : fn1(et)=0 ; 押し出し
	  ffn(et+1)=ffn(et) : ffn(et)=0
	 swbreak
	 case 7 ; ランダム1体
	  if fs=1 : n=2 : else : n=1
	   en=rdp(n) : if en=0 : swbreak ; unNo.決定
	    repeat 3,1
	     if fs=1 : if fn2(cnt)=en : et=cnt : break
	     if fs=2 : if fn1(cnt)=en : et=cnt : break
	    loop
	    eg=en*udb : matk_syo
	 swbreak
	 case 8 ; 引き寄せ
	  rang matkrg : if rangf=0 : swbreak ; 射程判定
	  if et=1 : swbreak ; 最前列
	  if fs=1 : if fn2(et-1)=0 or ud(fn2(et-1)*udb+26)<=0 : fn2(et-1)=fn2(et) : fn2(et)=0
	  if fs=2 : if fn1(et-1)=0 or ud(fn1(et-1)*udb+26)<=0 : fn1(et-1)=fn1(et) : fn1(et)=0
	  ffn(et-1)=ffn(et) : ffn(et)=0
	 swbreak
	swend

	return

*atack ; 攻撃処理 ----------------------------------------------------

	en=0 ; 敵ユニットNo.

;dgs "intvc",intvc,0
dgs "un ",un,0
dgs "fs ",fs,1
;dgs "ut ",ut,2
;dgs "16 ",ud(ug+16),4

;dgs "gsr ",gsr,3
; ユニット特殊、魔法

	gsr=100 ; 攻撃減衰率

	mho=ud(un*udb+22)/5 ; 魔力補整
dgs "mho ",mho,11
	if ud(ug+8)=60 : tatk 0,1,ud(ug+9),1	; 火の息
	if ud(ug+8)=61 : tatk 4,1,ud(ug+9),3	; ファイヤーボール
	if ud(ug+8)=62 : tatk 3,1,ud(ug+9),0	; ファイヤーストーム
	if ud(ug+8)=63 : tatk 3,2,ud(ug+9),0	; コールドストーム

redraw 0
  color 0,0,0 : boxf : color 255,255,255
 btl_put
 dmp_put
 dg_put
redraw 1
pkey

; アイテム魔法 ---------------------------------------


	repeat 7 ; 装備欄
	 in=ud(ug+40+cnt) : if in<=0 : continue
	  ig=in*idb : itn=id(ig)

	 gsr=100 ; 減衰率リセット

	 if itn=251 : matk 0,1,id(ig+9),id(ig+17)	; ファイヤー
	 if itn=252 :  enc 1,id(ig+9)				; ファイヤーウェポン
	 if itn=253 :  sad 2,14,id(ig+9)			; バーサーク
	 if itn=254 : matk 1,1,id(ig+9),id(ig+17)	; ファイヤーピレイム
	 if itn=255 : matk 2,1,id(ig+9),id(ig+17)	; フレイムアロー
	 if itn=256 :  sad 3,14,id(ig+9)			; バトルソング
	 if itn=257 : matk 4,1,id(ig+9),id(ig+17)	; ファイアーボール
	 if itn=258 : matk 3,1,id(ig+9),id(ig+17)	; ファイヤーウォール
	 if itn=259 : matk 3,1,id(ig+9),id(ig+17)	; エクスプロージョン

	 if itn=261 : matk 0,2,id(ig+9),id(ig+17)	; アイスニードル
	 if itn=262 : matk 5,2,id(ig+9),id(ig+17)	; ウォーターストリーム
	 if itn=263 : ;sad 1,id(ig+9)				; ピュリファイ
	 if itn=264 :  enc 2,id(ig+9)				; アイスエンチャント
	 if itn=265 : matk 2,2,id(ig+9),id(ig+17)	; アイスジャベリン
	 if itn=266 : matk 1,2,id(ig+9),id(ig+17)	; アイスピラー
	 if itn=267 :  scr 2,id(ig+9)				; ウォータースクリーン
	 if itn=268 : matk 2,2,id(ig+9),id(ig+17)	; 津波
	 if itn=269 : matk 4,2,id(ig+9),id(ig+17)	; メイルシュトローム
	 if itn=270 : matk 3,2,id(ig+9),id(ig+17)	; ブリザード

	 if itn=281 : matk 0,3,id(ig+9),id(ig+17)	; ウインドカッター
	 if itn=282 :  sad 2,16,id(ig+9)			; ウインドムーブ
	 if itn=283 : matk 7,3,id(ig+9),id(ig+17)	; サンダー
	 if itn=284 :  enc 3,id(ig+9)				; ウィンドエンチャント
	 if itn=285 :  enc 4,id(ig+9)				; サンダーウエポン
	 if itn=286 : ;matk 1,3,id(ig+9),id(ig+17)	; セイレーンボイス
	 if itn=287 :  scr 3,id(ig+9)				; ウィンドウォール
	 if itn=288 : matk 2,3,id(ig+9),id(ig+17)	; ライトニングボルト
	 if itn=289 : matk 3,3,id(ig+9),id(ig+17)	; ウィンドストーム

	 if itn=291 : ;matk 0,2,id(ig+9),id(ig+17)	; アースキュア
	 if itn=292 :  sad 1,15,id(ig+9)			; ハードコーティング
	 if itn=293 : heal 1,id(ig+9)				; ネイチャーヒール
	 if itn=294 : matk 8,4,id(ig+9),5;id(ig+17)	; グラヴィティマグネット
	 if itn=295 :  enc 5,id(ig+9)				; グラビティウエポン
	 if itn=296 :  sdc 17,1,id(ig+9)			; バインディングブランチ
	 if itn=297 : matk 0,4,id(ig+9),id(ig+17)	; ストーンブラスト
	 if itn=298 : ;matk 2,4,id(ig+9),id(ig+17)	; ゴーレムクリエイト
	 if itn=299 : matk 3,4,id(ig+9),id(ig+17)	; アースクエイク

	 if itn=301 : heal 1,id(ig+9)				; ヒール
	 if itn=302 : ;matk 9,5,id(ig+9),id(ig+17)	; ターンアンデッド
	 if itn=303 :  sad 2,16,id(ig+9)			; フォースセンス
	 if itn=304 : ; enc 2,id(ig+9)				; ホーリーライトキュア
	 if itn=305 :  enc 6,id(ig+9)				; ホーリーウエポン
	 if itn=306 :  sad 1,15,id(ig+9)			; プロテクト
	 if itn=307 : matk 0,5,id(ig+9),id(ig+17)	; レイアロー
	 if itn=308 : matk 5,5,id(ig+9),id(ig+17)	; サイキックフォース
	 if itn=309 :  sad 3,14,id(ig+9)			; ブレス
	 if itn=310 :  scr 5,id(ig+9)				; ホーリーライトサークル
	 if itn=311 : matk 9,5,id(ig+9),id(ig+17)	; レイブレイド
	 if itn=312 : heal 3,id(ig+9)				; ホーリーライトヒール
	 if itn=313 : ;matk 4,5,id(ig+9),id(ig+17)	; ウィル・オ・ウィスプ
	 if itn=314 : ;matk 3,5,id(ig+9),id(ig+17)	; リザレクション

	 if itn=321 : matk 7,6,id(ig+9),id(ig+17)	; マインドブラスト
	 if itn=322 : ; sad 1,15,id(ig+9)			; ポイズン
	 if itn=323 : ;sad 1,id(ig+9)				; 邪眼
	 if itn=324 : ;matk 8,4,id(ig+9),5;id(ig+17)	; チャーム
	 if itn=325 :  sdc 1,14,id(ig+9)			; ウィークネス
	 if itn=326 :  ;sdc 17,1,id(ig+9)			; カース
	 if itn=327 :  sdc 3,16,id(ig+9)			; ダークネス
	 if itn=328 : matk 3,6,id(ig+9),id(ig+17)	; フレイムカース
	 if itn=329 : ;matk 3,4,id(ig+9),id(ig+17)	; デモンズゲート




	redraw 0
	  color 0,0,0 : boxf : color 255,255,255
	 btl_put
	 dmp_put
	 dg_put
	redraw 1
pkey

	loop ; --------------------------------------------



	repeat 6*bsb ; 魔法効果半減処理
	 if cnt\bsb=0 : continue ; un
	 if cnt\bsb=16 or cnt\bsb=17 : continue ; 加速減速は半減されない
	 if bs(cnt)>0 : bs(cnt)=bs(cnt)/2 ; 半減
	loop

 
 
 攻撃、防御、加速、減速のステータス魔法は sadにまとめた。

 ヒールは healに作った。
 簡単かと思ったけど、HPの低い順にかけるというのが手間だ。
 それと表示も。

 後は引き寄せの魔法を作ったんだったか?
 グラビティマグネットって敵の先頭の1体を手前に引き寄せるだけの魔法。
 matk 8でできる。
 あれ?これ 6がそれようの空きだったっけかな?
 まあ見てくれている人にはどうでもいいけどね。
 
 
 
 それじゃあ今回は回復魔法だけテスト。
 
 
 ヒール


 
 
 HPの低い順にかけてくれる。

 見え難いけど緑の 6。
 
 
 ホーリーライトヒール


 
 
 全体にかける光の強力な魔法。


 
 
 と言うわけなんだけど、そういえば回復に装備属性値を足すの忘れてる。
 
 
 さて、ちょっと隊列の処理(fn1、fn2)に間違いがあったので改修する。

 そしたら今度は毒、麻痺、気絶などの状態異常を作る予定。
 
 

コメントを残す

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