# 線性代數 ###### tags: `機制設計` :::success :::spoiler Click to open TOC [TOC] ::: ::: ## 釋義 ### 石頭 - `stone1` 主動方 - `stone2` 被動方 ### 參數 - `Random(n)` 在 1/n ~ 1*n 之間取隨機 - `Math.XXX` 數學 如 `Math.log` 為取log - `ATU` 進場前的狀態 - `ATU_now` 當下狀況 --- # 機制與公式 ## 意志(體力) ### 對各項素質的影響 $ATU_{ratio}=ATU_{now}/ATU$ ```clike ATU_ratio = (ATU_now/ATU) //HP_now = HP_now MSH_now = MSH * ( 0.555 + 0.445*ATU_ratio ) AGI_now = AGI * ( 0.487 + 0.523*ATU_ratio ) ACC_now = ACC * ( 0.630 + 0.370*ATU_ratio ) //ATU_now INT_now = INT * ( 0.777 + 0.223*ATU_ratio ) LUK_now = LUK * ( 1.000 + 0.487*(1-ATU_ratio) ) ``` ### 基本體力消耗 ```c ATU_delta = 1 ``` ## 戰鬥次序 <!-- - 遊戲內置一條時間軸 - 每次石頭攻擊完後會依照行動cd來決定下次攻擊的時間 - 行動cd會依照【基礎行動cd】與【上次施放技能】而改變 --> - 每次石頭攻擊完後會依照行動cd來決定下次攻擊的時間,一般而言 `cd = 10000` - 每次攻擊後,`cd = 10000` - 之後每單位時間扣減 `cd -= AGI_now` - WHEN `cd == 0`, do attack! ## 套用攻擊動作 - 流程圖如下 (1204會議結果) ![](https://i.imgur.com/sUZhbx2.jpg) - 攻擊時會消耗較多體力 ```c stone1.ATU_now -= 2 ``` ### 普通攻擊傷害 ```csharp= damage = Mathf.Max(target.currentAbility.Msh - user.currentAbility.Msh, 5) * (Mathf.Max(Mathf.Log10(target.currentAbility.Int / user.currentAbility.Int), 1) + 1) * Random.Range(1/1.23f, 1.23f) * 2.5f; ``` ### 爆擊 - 如果觸發爆擊,`damage *= critical_damage_multipler` ```c critical_rate = ``` #### 爆擊傷害加成 ```c critical_damage_multipler = ``` ## 套用防禦動作 Defense Skill - 連續檢查以下三項是否發生,若有任一項發生則直接跳到下一個 AttackPhase(套用傷害) -> Default Defense Skill - 可能還會有腳色獨有防禦技 ### 閃避 - 如果觸發閃避,`damage = 0` ```c dodge_rate = //stone2.AGI_now/stone1.ACC_now * 0.175 ``` ### 格檔 - 如果觸發格檔,`damage 大幅減少` ```c block_rate = ``` #### 格檔受到傷害 ```c block_damage = ``` ### 反擊 - 如果觸發反擊,`damage = 0` 並且回饋對方`counter_damage`傷害 ```c counter_rate = ``` #### 反擊傷害 ```c counter_damage = ``` ## 套用傷害 - 套用傷害,紀錄到response ```c stone2.hp_now -= damage ``` ## 石頭特殊能力 https://docs.google.com/document/d/1jj4bjMYvEW8A0SEoHC_HTVZA21uh1btDwHTxF_Beh-0/edit ```