/// <summary> ///メイン計算式 /// </summary> static public int BattleDamageCalculate(IMonsterData attackMonster, IMonsterData defenseMonster, ISkillData attackSkill) { //乱数の値 float[] randomValue = new float[16] { 0.85f, 0.86f, 0.87f, 0.88f, 0.89f, 0.90f, 0.91f, 0.92f, 0.93f, 0.94f, 0.95f, 0.96f, 0.97f, 0.98f, 0.99f, 1.00f, }; //乱数 float randomResult = randomValue[AllSceneManager.GetInstance().GetRandom().Next(0, 16)]; //モンスターのタイプと技のタイプの一致か否か float typeMatch = 1; if (attackMonster.tribesData_.firstElement_.state_ == attackSkill.elementType_.state_ || attackMonster.tribesData_.secondElement_.state_ == attackSkill.elementType_.state_) { typeMatch = 1.5f; } //敵モンスターと技のタイプ相性 float typeSimillar = defenseMonster.ElementSimillarChecker(attackSkill.elementType_); //補正値の初期値 4096 //技の最終威力 int realSkillPower = (int)(attackSkill.effectValue_ * (4096 / 4096)); //物理か特殊か //EffectAttackTypeState ea = attackSkill.effectValueType_.GetEffectAttackTypeState(); //モンスターの最終攻撃力 int realMonsterAttack = 0; { //if (ea.state_ == EffectAttackType.Normal) { // realMonsterAttack = (int)(attackMonster.RealAttack() * attackMonster.battleData_.RealAttackParameterRank() * (4096 / 4096)); //} realMonsterAttack = (int)(attackMonster.RealAttack() * attackMonster.battleData_.RealAttackParameterRank() * (4096 / 4096)); } //敵モンスターの最終防御力 int realMonsterDefense = 0; { //if (ea.state_ == EffectAttackType.Normal) { // realMonsterDefense = (int)(defenseMonster.RealDefense() * defenseMonster.battleData_.RealDefenseParameterRank() * (4096 / 4096)); //} realMonsterDefense = (int)(defenseMonster.RealDefense() * defenseMonster.battleData_.RealDefenseParameterRank() * (4096 / 4096)); } //(((レベル×2/5+2)×威力×A/D)/50+2) //最終ダメージ int realDamage = (int)((((attackMonster.level_ * 2 / 5 + 2) * realSkillPower * realMonsterAttack / realMonsterDefense) / 50) * randomResult * typeMatch * typeSimillar); return(realDamage); }
/// <summary> ///乱数平均、急所なし、計算式 /// </summary> static public int TestDamageCalculate(IMonsterData attackMonster, IMonsterData defenseMonster, ISkillData attackSkill) { //乱数 float randomResult = 9.5f; //モンスターのタイプと技のタイプの一致か否か float typeMatch = 1; if (attackMonster.tribesData_.firstElement_.state_ == attackSkill.elementType_.state_ || attackMonster.tribesData_.secondElement_.state_ == attackSkill.elementType_.state_) { typeMatch = 1.5f; } //敵モンスターと技のタイプ相性 float typeSimillar = defenseMonster.ElementSimillarChecker(attackSkill.elementType_); //補正値の初期値 4096 //技の最終威力 int realSkillPower = (int)(attackSkill.effectValue_ * (4096 / 4096)); //物理か特殊か //EffectAttackTypeState ea = attackSkill.effectValueType_.GetEffectAttackTypeState(); //モンスターの最終攻撃力 int realMonsterAttack = 0; { //if (ea.state_ == EffectAttackType.Normal) { // realMonsterAttack = (int)(attackMonster.RealAttack() * attackMonster.battleData_.RealAttackParameterRank() * (4096 / 4096)); //} realMonsterAttack = (int)(attackMonster.RealAttack() * attackMonster.battleData_.RealAttackParameterRank() * (4096 / 4096)); } //敵モンスターの最終防御力 int realMonsterDefense = 0; { //if (ea.state_ == EffectAttackType.Normal) { // realMonsterDefense = (int)(defenseMonster.RealDefense() * defenseMonster.battleData_.RealDefenseParameterRank() * (4096 / 4096)); //} realMonsterDefense = (int)(defenseMonster.RealDefense() * defenseMonster.battleData_.RealDefenseParameterRank() * (4096 / 4096)); } //(((レベル×2/5+2)×威力×A/D)/50+2) //最終ダメージ int realDamage = (int)((((attackMonster.level_ * 2 / 5 + 2) * realSkillPower * realMonsterAttack / realMonsterDefense) / 50) * randomResult * typeMatch * typeSimillar); return(realDamage); }