ファイアーエムブレム聖戦の系譜リメイク作ろうぜ
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




VIPサービス増築中!
携帯うpろだ|隙間うpろだ
Powered By VIPservice