// 取得最終累計的數值。 public void check() { if (rollState == 2) { // 已經是第二次擲骰子了,所以必須檢查技能有無發動,並計算最終結果丟給戰鬥對象做check。 // // 寫法應該會是monster.check(finalCheckValue) // 如果判定通過,monster的class應該要設定一個hurt flag // 等到玩家按下繼續按鈕,到達player attack的階段時, // 在呼叫monster.playHurtAnimation()來播放傷害動畫。 // playHurtAnimation()應該會有if判斷式來檢查hurt flag, // flag立起來就trigger,不然就沒事。 // (PS. 特殊的技能應該也會在這邊立起flag,寫法應該同上一次彥求寫的isHeal, Debug.Log("Roll2"); // 重置 Skill Effect usingBattleSkillEffect = null; this.turnDamage = 0; finalCheckValue = 0; // 拿到重擲的final check value for (int i = 0; i < checkValue.Length; i++) { finalCheckValue += checkValue[i]; } Debug.Log("finalcheck: " + finalCheckValue); int damage = finalCheckValue; // 判定技能是否發動 if (usingBattleSkill) { currentCharacter.Mp -= usingBattleSkill.needMP; // 技能分成迴避技能、治療技能、攻擊技能,但這個做法不好, // 應該要把skillWeight改成回傳一個skillResultCallback物件,這樣才可以因應不能狀況發動不同效果。 // 像是可以邊攻擊邊迴避或邊治癒,這之後再改 usingBattleSkillEffect = usingBattleSkill.calSkillEffect(checkValue); // 此技能有傷害 if (usingBattleSkillEffect.isDamage) { damage = usingBattleSkillEffect.damage; monster.check(damage); } // 此技能有治療 if (usingBattleSkillEffect.isHeal) { currentCharacter.recoverHP(usingBattleSkillEffect.heal); } // 此技能有回避 if (usingBattleSkillEffect.isDodge) { currentCharacter.noHurtTurn += usingBattleSkillEffect.dodge; } // 此技能有減傷頓,之後再作 if (usingBattleSkillEffect.isShield) { } // 此技能有回復MP if (usingBattleSkillEffect.isHealMP) { currentCharacter.recoverMP(usingBattleSkillEffect.healMP); } // 此技能減少對面的MP if (usingBattleSkillEffect.isMPDamage) { monster.damageMp(usingBattleSkillEffect.MPDamage); } // 此技能封印骰子 if (usingBattleSkillEffect.isDisable) { DiceState dicestate = monster.diceStates[usingBattleSkillEffect.disable]; dicestate.addDisableTurn(usingBattleSkillEffect.disableTurns); } // 此技能封印自己骰子 if (usingBattleSkillEffect.isSelfDisable) { } } // 普通攻擊 else { monster.check(damage); } } else if (rollState == 3) { // 這是怪物擲骰子,攻擊玩家的傷害處理。 // 首先怪物應該有AI選擇攻擊對象,monster.AI(finalCheckValue); // AI()會找場上的角色,並根據預先設定好的攻擊選擇,對選定的角色做判定。 // 然後和前面一樣,對character的class設定hurt flag或其他特殊效果flag // 玩家按下繼續按鈕,到enemy attack的階段,在播放玩家傷害動畫。 // 傷害動畫的寫法也同上面所述。 Debug.Log("Roll3"); for (int i = 0; i < checkValue.Length; i++) { finalCheckValue += checkValue[i]; } monster.AI(checkValue); } else if (rollState == 1) { Debug.Log("Roll1"); string temp = ""; // 這邊會計算擲骰的結果值,同時處理battle skill的效果 for (int i = 0; i < checkValue.Length; i++) { finalCheckValue += checkValue[i]; if (i == checkValue.Length - 1) { temp = temp + checkValue [i] + " = " + finalCheckValue; } else { temp = temp + checkValue [i] + " + "; } } uiManager.setLastRollResult(temp); } if (usingGambleSkillIndex != -1 || rollState == 1 || rollState == 3) { if (usingGambleSkillIndex == 2 && rollState == 2) { string checkValueText = "~" + (finalCheckValue - checkValue [checkValue.Length - 1]) + "+" + checkValue [checkValue.Length - 1] + "~"; checkValueTextManager.showCheckValue2(checkValueText); } else { checkValueTextManager.showCheckValue(finalCheckValue); } } if (usingGambleSkillIndex != -1 || rollState == 1 || rollState == 3) { uiManager.showNextButton(); } }