ファイアーエムブレム聖戦の系譜リメイク作ろうぜ
↓ 1- 覧 板 20
433:396
2013/10/30(水) 01:44:24.42 ID:bgx4tYkk0
修正済み攻撃ロジック
// myself→攻撃者entity、
// enemy→防御者entity、
// range→彼我距離、
// correncitonValue→補正値 ※地形・指揮官・恋人すべての補正
// isRenzoku→連続かどうか ※外からこのメソッドを呼ぶ場合は常にfalse
// null =ミス、プラス = 敵へのダメージ、マイナス = 自分への回復
// もし敵が「待ち伏せ」を持っていれば、このメソッドを呼ぶ順番を自分→敵から敵→味方に変更
// もし味方か敵が「突撃」を持っていれば、このメソッドを味方、敵で呼んだあとに判定を行い、再びこのメソッドを呼ぶ(何度も可能)
public List attack(Unit myself , Unit enemy,int range,int correctionValue,boolean isRenzoku) {
List damages = new ArrayList(); //複数攻撃の場合、合計ではなく各攻撃値が欲しいのでList
List mySkill = myself.getSkillList(); // スキルは兵種スキル1〜5と個人スキル1〜5 をリストに格納
List enemySkill = enemy.getSkillList(); // スキルは兵種スキル1〜5と個人スキル1〜5 をリストに格納
// 射程外の場合はスキップ
if(myself.getDirectWeapon().getMaxRange() < range && range < myself.getDirectWeapon().getMinRange()
&& myself.getIndirectWeapon().getMaxRange() < range && range < myself.getIndirectWeapon().getMinRange()
){
return damages; // 空のリスト返却
}
// 流星剣判定 ※剣技は技%
if(!enemySkill.contains("見切り") && mySkill.contains("流星剣") && new Random(100) <= myself.getSklPoint() ) {
for(int i=0; i<5; i++){ // 五回ダメージ判定を行い、ダメージに追加する
damages.addAll(getDamage(myself ,enemy,1,range,correctionValue));
}
// 月光剣判定 ※剣技は技%
} else if(!enemySkill.contains("見切り") && mySkill.contains("月光剣") && new Random(100) <= myself.getSklPoint() ){
damages.addAll(getDamage(myself ,enemy,2,range,correctionValue));
}
// 太陽剣判定 ※剣技は技%
} else if(!enemySkill.contains("見切り") && mySkill.contains("太陽剣") && new Random(100) <= myself.getSklPoint() ){
damages.addAll(getDamage(myself ,enemy,3,range,correctionValue));
// 通常判定
} else{
damages.addAll(getDamage(myself ,enemy,0,range,correctionValue));
}
// 連続判定 ※連続は一度のみしか判定しない
if(!isRenzoku && !enemySkill.contains("見切り") && mySkill.contains("連続") && new Random(100) <= myself.getSklPoint()){
// このメソッドを再び呼ぶ。 ※連続フラグを立てることで、三度目に呼ばれる可能性はない
damages.addAll(attack(myself,enemy,range,correctionValue,true));
}
}
516Res/288.26 KB
↑[8] 前[4] 次[6]
書[5]
板[3] 1-[1] l20