# 會議記錄-2020/12/19 ###### tags: `會議記錄` <!-- 頁首通用模組 --> {%hackmd xcsnQTMQQ0SZQ9QF7YUp_g %} --- :::info :::spoiler 大綱 [TOC] ::: --- ## 備註 - [ ] 記得拿思樂冰杯 ## 新資料結構之討論 ### 原本的長這樣 ```json= // one skill { "TimeStamp" : <number>, "AttackerInfo" : { "AttackerID" : <number>, "SkillID" : <number>, "HpChange" : [<number>] // 攻擊者每回合的血量變化 }, "DefenserInfo" : // 存成陣列,因為可能有很多石頭 [{ "DefenserID": <number>, "DefenserReaction": [{ "ReactID" : <number>, // 防禦者對於攻擊動作的回應 "HpChange": <number> // 血量變化 }] }] } ``` ### 會需要的資料 - Timestamp - 使用攻擊技能 每次連擊會記錄: - 攻擊者的 - HP 變化 - 防禦者的 - ID - HP變化 - 使用防禦技 ### 新的 ``` ballteRecord = [skillRecord] ``` ```javascript= skill: { timeStamp: <number>, // unix timestamp : long, $int64 attackerID: <number>, attackerSkillID: <number>, hits: [<hit>] } ``` ```javascript= hit: { defenserID: <number>, defenserSkillID: <number>, defenserHPChange: <number>, attackerHPChange: <number>, isAttackCritical: <bool> } ``` ## 技能的選擇方式 - 攻擊技:從技能池裡面依照【某種規則】選出一種攻擊技 - 防禦技:在技能池內依照丟入【沒有技能】、【閃避】、【格檔】、【反擊】,再依照【某種規則】選出一種防禦技 ```javascript= let attackerStone = priQue.pop(); let skill = attackerStone.choseSkill(); let enemyStones = attackerStone.owner.enemyStones; let allyStones = attackerStone.owner.allyStones; let targetSet = skill.choseTarget(enemyStones, allyStones; let hitsRecord = skill.apply(targetSet) let newSkillRecord = new SkillRecordModel({ timeStamp: attackerStome.time, ... }) battleRecord.append(newSkillRecord); attackerStone.updateTime(); if (!attackerStone.dead) priQue.push(attaackerStone); ``` ```javascript= skill.apply = function(targetSet) { } ```