例によって細かく各所をいじっているが、追加部分だけ追っていく。
[MagicAndSkillDataクラス]
public class MagicAndSkillData {
public String name="";
public int masNumber=0; //技・魔法の固有ナンバー。categolyとセットで記憶し、セーブ・ロード時にこれらをもとに作り直す。
public int lv=0; //これもセーブ・ロード時にセットする。魔法の設定レベルを表す変数。同じ魔法でも高レベルで使うと威力が上がる。
public int damageType=0; //0物理 1魔法 攻撃魔力をつかって物理属性の魔法もある。
public int attackAnime=0; //shapeで決まる。ドラクエ型にしたらレンジを使うかどうか微妙だが…。
public int type=0;//使用目的 (1=HP回復 2=MP回復 3=HP MP両方回復 4=状態回復 5=能力向上 6=ダメージを与える)
public int power=0;//回復、攻撃等の効力値。この数値+αが効果になる。
public int hit=0; //命中補正。0が基本で1=5%の補正がかかる。-10だと-50%。10なら+50%。
public int range=0;//効果範囲(0=単体 1=全体)
public int useMp=0;//消費MP
public int useKp=0;//消費KP MPKP両方使うものも設定可能
では、eventExeクラスで魔法使用コマンドを実用化する。
[StatusWindowクラス eventStart関数 の一部]
public void eventStart(GameData gdt) {
case 10: //魔法・特技使うキャラ選択 if (pushKey==1) { if (unitLiveCheck(cursorPos[mode]) ) { selectUnitNumber=cursorPos[mode]; modeChange=11; } } if (pushKey==2) modeChange=1; break;
case 11: //使う魔法・特技を選ぶ if (pushKey==1) { MagicAndSkillData cmas=gData.uData[selectUnitNumber].masData[cursorPos[mode]+1]; int mtype=cmas.type; int ump=cmas.useMp; int ukp=cmas.useKp; int cmp=gData.uData[selectUnitNumber].vst_total[1]; int ckp=gData.uData[selectUnitNumber].vst_total[2]; if (mtype>=1 && mtype<=4 && cmp>=ump && ckp>=ukp) { selectMasNumber=cursorPos[mode]+1; //アイテム同様、キャラを選ぶ前に効力をインプットしておく healPlusInit(); if (mtype==1 || mtype==4) healPlus[0]=cmas.power; if (mtype==2 || mtype==4) healPlus[1]=cmas.power; if (mtype==3 || mtype==4) healPlus[2]=cmas.power; if (mtype==5) healPlus[3]=cmas.power; healPlus[5]=ump; healPlus[6]=ukp; modeChange=12; } } if (pushKey==2) modeChange=10; break;
case 12: if (pushKey==1) { UnitData cUnit=gData.uData[cursorPos[mode]]; if (cUnit.live) { healPlus[4]=cursorPos[mode]; heal(1); modeChange=13; } } if (pushKey==2) modeChange=11; break;
case 13: healUsing(mode); break;
}