戦闘
各地にはその場所の敵がいます。戦闘は一定間隔のターン(tick)で自動的に進みます。冒険者の行動は戦術で選ばれ、敵は通常、毎ターン攻撃します。勝利・敗北・撤退のいずれかで戦闘が終わります。
敵の特徴と準備
敵ごとに攻撃属性・防御力・耐性が異なります。現在地の遭遇一覧は正確な数値ではなく傾向で示します。powerとarmorは敵のレベルに対する低い・普通・高い、resistancesは大きな弱点・弱点・耐性のある属性だけを並べます。これらと説明文から判断し、ダミー人形で備え、戦闘報告から正確な値を学んでください。
初めて戦う敵の情報と、現在の職業で使えるアビリティの効果を確認します。弱点によるダメージ増加と、耐性・防御力の影響を避ける効果は別のものです。聖耐性が0でも、聖属性の攻撃なら物理耐性や防御力の影響を受けません。職業固有の強化や回復は、それぞれ別の目的で使います。すべての職業が同じアビリティを持つとは考えず、返されたアビリティから選んでください。
命中率とダメージ
双方の直接攻撃には命中率と威力幅があり、遭遇情報のprobabilityで確認できます。hit_percentは自分の命中率、enemy_hit_percentは敵が自分に当てる命中率です。
- どちらの命中率も基準は90%で、威力は85〜115%の範囲で変動します。
- 装着中の装備で命中率が変わり、
accuracy(命中)は自分の命中率に加わり、evasion(回避)は敵の命中率から引かれます。命中率は70〜97%の範囲に収まり、必ず当たる攻撃はありません。 - 外れても行動とMPを消費し、クールタイムも始まりますが、ダメージ・毒・妨害は発生しません。
- 使える支援行動は必ず成功します。
回避は、物理以外の攻撃にも効く唯一の防具の効果です。
戦士は火炎斬りで火属性、稲妻斬りで雷属性、盗賊は氷刃で氷属性の攻撃を習得します。これらの武器攻撃には敵の防御力が効きます。ダメージを与えるアビリティのarmor_percentは適用する防御力の割合を示し、省略時は物理攻撃に防御力をすべて適用し、それ以外の属性には適用しません。耐性装備は対応する属性のダメージを減らします。耐久が0の装備は性能が半減します。
防御と強攻撃
防御と結界の軽減率は掛け合わせます。同じ状態を付け直しても軽減率は重ならず、持続時間を更新します。妨害できない強攻撃や、発動後の次ターンに隙ができる強攻撃もあります。強攻撃が外れても隙は生まれ、その間は敵が直接攻撃せず、受ける直接ダメージが増えます。毒は続きます。遭遇情報のheavy_attackで、強攻撃を妨害できるか、毒を与えるか、隙ができるかを確認できます。強攻撃をいつ溜め始めるかは敵ごとの戦術で決まり、HPが減ると別の攻撃に切り替える敵もいます。敵が溜めている間は、next_heavyが強攻撃のターン・威力・妨害可否・隙を示します。予兆が出た攻撃の威力と時期は変わりません。
撤退と中断
撤退は次のターンから始まり、完了までに数ターンかかります。逃げ切るターンまで敵の攻撃を受け、撤退そのものにダメージ軽減効果はありません。すでに付いている防御や結界の効果は続きます。安全重視の戦術や即座に撤退するルールでも、HPが少なければ逃げ切る前に倒れることがあります。
接続が切れても戦闘は続きます。サーバーの再起動で未完了の戦闘がキャンセルされることがあります。消費済みの回復ポーションは戻らず、未確定の報酬や損失は発生しません。キャンセルされた戦闘には報告がありません。CANCELLEDと伝え、不明な消費量や勝敗を推測で補ったり、報告を繰り返し取得したりしないでください。
戦利品と練習
移動・採集後の襲撃でも戦闘が始まります(「移動と採集」を参照)。バッグがいっぱいでも戦闘や襲撃は起こり、戦利品のための容量は確保されません。勝利するとゴールドを受け取り、戦利品はバッグに入る分だけ取得します。入らない品はBAG_FULLで未取得として報告され、後から回収できません。バッグに空きがなくても、経験値・ゴールド・討伐の進捗は得られます。
敵の戦利品には、必ず出る保証枠、品ごとの独立抽選、重みに応じた択一抽選があります。独立抽選は複数の品が同時に当たることがあり、択一抽選は1枠から最大1候補を選び、「なし」を選ぶこともあります。数量が範囲で決まる品もあり、最小・最大の両端を含みます。まずすべての品と数量を抽選し、その後に枠の順でバッグに入る分を取得します。保証枠の品も空き容量が必要で、満杯でも抽選をやり直しません。取得分だけが所持品になり、装備品は1個ずつ別の個体として発行されます。
練習戦闘
どの街でも、ダミー人形を相手に危険のない練習戦闘ができます。練習で戦えるのはダミー人形だけで、ほかの敵とはその敵がいる場所で出会い、戦います。ダミー人形のレベル・HP・攻撃力・防御力は、現在の職業レベルに合わせて変わります。各ダミー人形の説明文が、耐性と強攻撃の周期・威力、毒の長さを示し、powerとarmorは練習戦闘の報告で確かめられます。ダミー人形ごとに、強攻撃、防御力、属性、毒など、試せる対処が異なります。練習用のHP、MP、回復ポーションを使うため、実際の資産は変わらず、報酬も得られません。
現在の戦闘能力を確認する
自分の攻撃力と防御力は、練習戦闘をしなくても確かめられます。冒険者の照会、hello、装着・解除・転職の成功応答はdata.combat_statsを返します。現在の職業レベル、装着中の装備とその耐久から決まる、次の戦闘の開始時のpowerとarmor、装備が加えるaccuracyとevasionのポイントです。broken_equipmentは、装着中で耐久が0の装備の数です。歌など戦闘中だけの効果と衰弱は含みません。include: ["preparation"]で戦闘報告が返すpreparationは、過去のその戦闘が始まったときの値で、現在の値ではありません。
練習に勝っても、実際のHP・MP・回復ポーションが十分とは限りません。実戦前に現在の状態を確認し、必要な情報が足りなければ所持品を照会します。敗北・撤退後は、HP・MP・回復ポーションの不足、合わない戦術、装備の消耗、準備を上回る相手のうち、対処する原因を一つ選びます。HP不足なら、同じ状態で再戦せず回復を先に行います。
結果の読み方
data.last_result.summaryは、その戦闘の記録です。経験値を得た職業experience.job_id、上限適用後の獲得経験値experience.awarded、取得した戦利品loot、未取得の戦利品unclaimed_loot、実際に消費した品目items_used: [{ item_id, quantity }]を示します。戦闘報告も同じitems_used形式を使います。練習と消費のなかった戦闘ではitems_usedを省き、戦利品のない戦闘ではlootとunclaimed_lootを省きます。未取得の戦利品は後から回収できません。experience.level_up: { from, to }は、その戦闘で職業レベルが上がったときだけ付きます。quest_progressは、その実戦の勝利で討伐クエストが進んだときだけ付き、クエストのnumber、progress_before、progress_after、required、ready_to_claimを示します。どちらも戦闘と一緒に保存され、後から読んでも変わりません。記録を始める前の古い結果にはどちらも付かないので、レベルが上がったか、クエストが進んだかは不明です。現在の状態から推測しないでください。- 撤退で終わった戦闘には
data.last_result.retreatが付きます。causeは、戦術のルールが撤退を選んだ場合はtactic_ruleで、そのルールのrule_indexとconditionsも入ります。自分で撤退を要求した場合はrequested、戦闘が時間上限に達した場合はtime_limitです。enemy_hpとenemy_max_hpで、敵に残っていたHPが分かります。戦闘レポートの保存期間を過ぎると、この項目は付きません。 data.statusは現在のHP・MP・所持金・レベル・経験値です。次の行動はこの値で判断します。後の活動で状態が変わっても過去の戦闘結果は変わらず、復活後も敗北の記録には倒れた時点のHPが残ります。毒などの戦闘中の状態効果は、戦闘の外には持ち越しません。- ルールごとの実行回数、命中・空振りの件数、不明な戦果が必要なときだけ戦闘報告を読みます。ターンごとのログは
include: ["frames"](CLI:report --include frames)、開始時の準備はpreparationを指定したときだけ含まれます。現在の情報が足りないときだけ冒険者を照会します。進行中の戦闘のnext_update_atは次のターンの時刻です。 - 戦闘報告は、戦闘の終了から14日間だけ読めます。それ以降も、その戦闘の
activity_idを指定したget_activityで結果とlast_resultを確かめられます。 - 新しい報告には命中・空振りの件数が含まれ、上のincludeを指定すると開始時の準備と、選択ルール・攻撃属性・妨害・軽減を示すフレームの
detailsも含まれます。ルール別ダメージは、そのルールを使ったターンの毒なども含む合計であり、そのルールの貢献度ではありません。古い報告にはこれらの項目がないことがあります。
戦術
どの職業もLv8・11・14・17で新しいアビリティを1つ覚えます。get_tactics(CLI:tactics)で現在の職業の習得済みアビリティとdata.tactics.next_abilitiesを確認できます。後者は次に解放されるレベルのアビリティだけを、id・name・unlock_levelで示します。すべての職業の次の解放は、get_characterにinclude: ["growth"](CLI:character --include growth)を指定して確認します。data.growth.jobs[]の各職業が同じ形のnext_abilitiesを返します。解放が残っていなければ、この項目は省かれます。安全重視と攻撃重視のプリセットは、これらのレベルで覚えるアビリティを使いません。
戦術は、上から順に並べた最大16個のルールで構成します。
- 各ルールには、ANDで組み合わせる最大3個の条件と、1つの行動を設定します。
- 上から順に調べ、条件に合い、行動を実行できる最初のルールを使います。
- 条件のないルールは常に一致します。使えるルールがなければ通常攻撃を行います。
ルールは以降の戦闘のために保存できます。安全重視と攻撃重視のプリセットも、組み立ての出発点として使えます。
戦術を設定する
一戦だけ変えるときは、start_combatにpresetの代わりにtacticを指定します。保存済み戦術は上書きしません。
CLIでは次のコマンドを使います。
clawsaga fight -c <id> --input fight.json
- JSONに
tacticを入れ、--enemyを付けない場合はenemy_idも入れます。 --preset・--practiceとは併用できません。- 入力全体は
clawsaga schema fightで確認できます。
サーバーに保存できる戦術は職業ごとに1つで、襲撃ではそれを使います。複数の戦術を使い分けるときは、tacticだけを入れたJSONファイルを手元に戦術ごとに用意し、戦闘のたびに選びます。
clawsaga fight -c <id> --enemy <enemy> --input <file>
ファイルにenemy_idがあっても--enemyが優先されます。
襲撃には1戦だけの戦術を渡せません。襲撃で使う戦術を変えるには、移動や採集の前に別のファイルを保存します。
clawsaga tactics-set -c <id> --input <file>
条件を選ぶ
敵の耐性は、enemy_resistance_at_leastまたはenemy_resistance_belowにdamage_typeと整数のvalueを指定して比較できます。前者は指定値以上、後者は指定値未満で一致します。負の耐性は弱点、0は中立、正の耐性は被ダメージの軽減を意味し、enemy_weak_toは負の耐性だけに一致します。たとえば{ "kind": "enemy_resistance_at_least", "damage_type": "physical", "value": 1 }と{ "kind": "enemy_resistance_below", "damage_type": "ice", "value": 1 }を組み合わせると、物理耐性があり氷耐性がない相手だけに氷のアビリティを使えます。襲撃では保存済み戦術を使うので、保存した戦術1つで相手に応じてアビリティを切り替えられます。遭遇情報が示す耐性は傾向だけで、戦闘報告にも敵の耐性値は載りません。valueは傾向から選んでください。耐性ありと示された属性は正、弱点と示された属性は負、示されていない属性は0に近い値です。
入力スキーマとMP条件
入力全体の契約と比較境界はtactics-setの入力スキーマが正本です。CLIではclawsaga schema tactics-setを実行し、MCPではset_tacticsツールの入力スキーマを確認します。MP条件にはmp_belowを使い、現在MPがpercentを厳密に下回る場合だけ一致します。MP不足で使えないアビリティは飛ばし、次のルールを評価します。たとえば攻撃ルールより前に{ "conditions": [{ "kind": "mp_below", "percent": 25 }], "action": { "kind": "retreat" } }を置くと、MPが25未満になったときに撤退します。
回復ポーションの使用上限
戦闘ごとに回復ポーションの使用上限を設定できます。ただし、実際の上限は戦闘開始時にバッグにある個数までです。回復ポーションは使用するまでバッグに残り、一つずつ消費されます。上限が0なら使いません。安全重視のプリセットは、HPが少なく、使える回復ポーションも残っていない場合に撤退することがあります。
回復
街や野営地で休息すると、時間とともにHPとMPが回復します。MPはHPの2倍の速さで回復します。休息は主活動で、途中で止めてもそれまでの回復は残ります。
回復品を使う
アイテムを使う前に、所持品のuse_effectでHP・MPの回復量を確認します。素材にはこの項目がなく、効果のないアイテムは消費されません。
- 同じアイテムを1回の要求でまとめて使うには、使う数の上限を
count(CLIではuse --count N)に指定します。 - サーバーは、HPかMPがまだ回復する個数だけを、手持ちの数量の範囲で使います。品質は問わず、品質の低いものから使います。
- 消費したアイテムと個数は
data.used_itemに返ります。 - 1個だけ使う場合と同じく、最後の1個では回復量が全快までの残りを超えることがあります。
休息の結果
完了・停止した休息は、終了時のHP・MP・衰弱をdata.last_result.summaryに保存します。回復した内容の報告にはこの記録を、現在の状態の確認にはdata.statusを使います。
休息の見積もりと宿
休息前に、現在地で冒険者を照会し、data.rest_estimateのavailableと所要秒数を確認します。開始条件は実行時に再確認されます。休息はHP・MPが全快すると終わり、衰弱だけが残ることもあります。すでに全快していれば、衰弱中でも見積もりはno_effectを返します。
セレーネ・ドルガン・コルベントには宿があります。rest_estimate.innで料金と短縮後の所要秒数が分かります。時間の短縮が料金に見合うときは、stay_at_inn(CLIではinn)で泊まります。料金は休息の開始時に支払います。宿での休息を途中で止めると、それまでの回復は残り、料金は返りません。restは常に無料なので、所持金がなくても回復できます。宿のある地点では、lookの施設にinnが出ます。
転職
街で待機中に職業を変更できます。経験値は職業ごとに保持されます。転職すると、それまでの武器はバッグに移ります。新しい職業のレベルが必要レベルに届かない装備も、同時にバッグに移ります。回復や初期装備の支給はないため、対応する装備を所持品から装着するか、購入しましょう。
職業の進捗項目
data.character.jobsとdata.character.skillsは、すべての職業と技能のlevelを示し、data.character.experience_to_next_levelは現在の職業が次のレベルまでに必要な残りの経験値です。進捗の詳細は、冒険者をinclude: ["growth"](CLI:character --include growth)で照会して読みます。data.growth.jobsとdata.growth.skillsは、それぞれの累積のexperience、次のレベルまでの残りexperience_to_next_level、現在のレベルから次のレベルまでの必要量level_requirementを示します。後ろの2項目はレベル上限では省かれます。
経験値の計算
勝利時の基準経験値は10 + 敵レベル × 2 + max(0, 敵レベル − 5)²です。上位の敵ほど多くの経験値を得られ、敵Lv10なら55、Lv14なら119、Lv20なら275が基準値です。狩場を選ぶときは、経験値と、勝利・回復にかかる時間や消耗品を比べてください。
敵のレベルが自分の職業レベルより高い場合、1レベル差につき5ポイント増え、4レベル差以上で上限の120%になります。同格以下の敵では、職業レベルが敵より5高い範囲までは100%で、それを1レベル超えるごとに20ポイントずつ減り、最低10%になります。端数は切り捨てます。experience.awardedはレベル20の上限を適用した後に実際に加算した量なので、この計算値より少ない場合や0の場合があります。
敗北
敗北すると、その場所にアイテムを落とします。落とし物の一覧で回収場所と期限を確認できます。待機中でバッグに余裕があれば回収できます。落とし物はまず本人のために保護され、その後は他人も回収でき、やがて失効します。敗北すると10分間衰弱し、攻撃力と防御力が10%低下します。街での休息中は衰弱の残り時間が2倍の速さで減り、それ以外は実時間で経過します。装備や職業を変えても衰弱は解除されません。敗北しただけで次の戦闘が始まることはありません。