Compare commits

...

6 Commits

Author SHA1 Message Date
晓丶梦丶仁
1baa07573d docs: 文档新增平铺格式 2025-07-07 20:06:40 +08:00
pre-commit-ci[bot]
edbe27763d chore: Auto update by pre-commit hooks [skip changelog] 2025-07-07 20:06:40 +08:00
晓丶梦丶仁
36512e1132 chore: 添加 parser, 完成 cpp 主体 2025-07-07 20:06:40 +08:00
晓丶梦丶仁
008c5ab6b0 feat: 添加不期而遇 json 样例 2025-07-07 20:06:40 +08:00
晓丶梦丶仁
71294e9781 chore: 添加maa tools 2025-07-07 20:06:39 +08:00
晓丶梦丶仁
0426e7dda4 docs: 添加示例,进行公示 2025-07-07 20:06:39 +08:00
15 changed files with 1982 additions and 19 deletions

View File

@@ -57,7 +57,7 @@ icon: ri:game-fill
3. 请不要修改已经存在的 group 名称,以免在 MAA 更新时导致之前版本的作业无法使用
4. 请尽量不要新增 group尽量将新添加进作业的单位按照用法纳入已经存在的 group
:::
:::
::: tip
默认仅招募精 1 55 级以上等级干员
@@ -544,7 +544,7 @@ icon: ri:game-fill
### MAA 现有对不期而遇的判断方法
OCR 识别不期而遇事件名称,但是选项是操作固定的位置
OCR 识别不期而遇事件名称,然后 OCR 所有选项,依照 json 中给定的顺序选择最优的可选选项
事件名识别失败的话会点击选项类型图标(若有),或点最下面的选项
@@ -560,28 +560,200 @@ OCR 识别不期而遇事件名称,但是选项是操作固定的位置
```json5
{
"theme": "Sami", //肉鸽主题
"stage": [ //不期而遇类事件
"theme": "Sami", // 肉鸽主题
"stage": [ // 事件
{
"name": "低地市集", //不期而遇事件名称
"option_num": 3, //总共有几个选项这里是3
"choose": 3, //优先选择第几个选项(这里优先选第三个),如果选不到就选跑路选项(基本上是最后一个)
"choices": [ //选择选项的要求(暂时不影响程序运行,只做适用情况的标注方便修改)
"name": "低地市集", // 事件名称
"choices": [ // 事件的选项
{
"name": "选择碎草药", //选项的名字
"ChaosLevel": { //抗干扰/灯火等级
"value": "3", //要求的数字
"type": ">" //是大于还是小于(这里表示抗干扰/灯火大于3时才激活选择碎草药选项
}
"name": "选择碎草药" // 选项的名字json 中从上到下的出现顺序即为选择此选项的优先级
},
{
"name": "选择好看的织物",
"ChaosLevel": {
"value": "3",
"type": ">"
}
"name": "选择好看的织物"
},
...
]
},
{
...
}
]
```
长事件预览:
```json5
{
"theme": "Sarkaz",
"stage": [
{
"name": "价高者得",
"choices": [
{
"name": "那还是算了吧"
},
{
"name": "我当然是成功人士!",
"conditions": [ // 满足所有条件时会优先选择此选项
{ // 多个选项同时满足各自条件时按照 json 中从上到下的出现顺序选择
"requirement": "源石锭", // 必选字段,表示所需物品的种类,还有灯火、希望、目标生命、目标生命上限等
"name": "源石锭", // 必选字段,表示所需物品的名称
"type": ">=", // 可选字段,表示所需物品进行判断的方式
"value": "35" // 可选字段,表示所需物品用于判断的数量
},
{
"requirement": "operator",
"name": "唯时代尔" // 干员无需type和value
}
],
"sub": { // 若选完此选项后会再次弹出多个选项,称弹出的选项为子事件
// "name": "价高者得我当然是成功人士!"
// 子事件没有 ocr不需要明文事件名代码中存储的事件名由母事件名和进入事件的选项名进行字符串拼接而成
"choices": [
{
"name": "举牌加价5源石锭",
"sub": {
"choices": [
{
"name": "付钱给鸭爵,拿走神秘拍品"
},
{
"name": "那还是算了吧"
},
{
"name": "举牌加价5源石锭",
"sub": {
"choices": [
{
"name": "拒绝付钱",
"sub": {
"choices": [
{
"name": "再解释一遍",
"sub": {
"choices": [
{
"name": "进入一场紧急战斗"
}
]
}
}
]
}
},
{
"name": "付钱给鸭爵,拿走神秘拍品"
},
{
"name": "那还是算了吧"
},
{
"name": "举牌加价5源石锭",
"sub": {
"choices": [
{
"name": "拒绝付钱",
"sub": {
"choices": [
{
"name": "再解释一遍",
"sub": {
// "name": "价高者得我当然是成功人士举牌加价5源石锭举牌加价5源石锭举牌加价5源石锭拒绝付钱再解释一遍",
"choices": [
{
"name": "进入一场紧急战斗"
}
]
}
}
]
}
},
{
"name": "付钱给鸭爵,拿走神秘拍品"
}
]
}
}
]
}
},
{
"name": "拒绝付钱",
"sub": {
"choices": [
{
"name": "再解释一遍",
"sub": {
"choices": [
{
"name": "进入一场紧急战斗"
}
]
}
}
]
}
}
]
}
},
{
"name": "那还是算了吧"
}
]
}
}
]
}
```
```json5
{
"theme": "Sarkaz",
"stage": [
{
"name": "价高者得",
"choices": [
{
"name": "那还是算了吧"
},
{
"name": "我当然是成功人士!",
"conditions": [ // 满足所有条件时会优先选择此选项
{ // 多个选项同时满足各自条件时按照 json 中从上到下的出现顺序选择
"requirement": "源石锭", // 必选字段,表示所需物品的种类,还有灯火、希望、目标生命、目标生命上限等
"name": "源石锭", // 必选字段,表示所需物品的名称
"type": ">=", // 可选字段,表示所需物品进行判断的方式
"value": "35" // 可选字段,表示所需物品用于判断的数量
},
{
"requirement": "operator",
"name": "唯时代尔" // 干员无需type和value
}
],
},
{
"name": "付钱给鸭爵,拿走神秘拍品"
},
{
"name": "举牌加价5源石锭"
},
{
"name": "拒绝付钱"
},
{
"name": "再解释一遍"
},
{
"name": "进入一场紧急战斗"
}
]
}
```
### 根据队伍情况动态调整某些选项的优先度TODO

View File

@@ -0,0 +1,668 @@
{
"theme": "Sarkaz",
"events": [
{
"name": "解惑",
"choices": [
{
"name": "萨科塔杀死了萨卡兹"
},
{
"name": "萨卡兹埋葬了萨科塔"
},
{
"name": "他们的头顶都生出了光环"
}
]
},
{
"name": "高空坠物",
"choices": [
{
"name": "从中寻找有用的物件"
},
{
"name": "找些帮手来把这里搬空"
}
]
},
{
"name": "好心的女士",
"choices": [
{
"name": "请帮帮我"
},
{
"name": "请帮帮我,还有我的同伴们"
},
{
"name": "我不需要帮助"
}
]
},
{
"name": "在故事结束之后",
"choices": [
{
"name": "战士的躯壳崩解成灰"
},
{
"name": "战士的长角生根发芽"
},
{
"name": "时光的永恒在此定格"
}
]
},
{
"name": "竣工仪式",
"choices": [
{
"name": "交出浮空城的图纸!"
},
{
"name": "我们是来参加研讨会的"
}
]
},
{
"name": "离去者的庭院",
"choices": [
{
"name": "“阿斯卡纶”"
},
{
"name": "“触痕”"
},
{
"name": "“菲茨罗伊”"
},
{
"name": "“埃里克森”"
},
{
"name": "“阿米娅”"
}
]
},
{
"name": "刀口舔血",
"choices": [
{
"name": "花钱雇佣"
},
{
"name": "许诺未来的报酬"
},
{
"name": "交付驮兽载满的资源"
},
{
"name": "我只是来观光的"
}
]
},
{
"name": "疤痕国际",
"choices": [
{
"name": "招募"
},
{
"name": "和负责人打个招呼"
},
{
"name": "暂时不需要"
}
]
},
{
"name": "一叶扁舟",
"choices": [
{
"name": "让有缘人上船"
},
{
"name": "与阿纳萨商量"
}
]
},
{
"name": "失落财宝",
"choices": [
{
"name": "《酋长威仪》"
},
{
"name": "《萨卡兹尊主》"
},
{
"name": "《泰拉之王》"
},
{
"name": "我更想饱餐一顿"
}
]
},
{
"name": "绝境?抉择?",
"choices": [
{
"name": "跟随女妖的笛声"
},
{
"name": "跟随巫妖的智慧"
},
{
"name": "跟随独眼巨人的预示"
},
{
"name": "跟随内心的选择"
}
]
},
{
"name": "相遇",
"choices": [
{
"name": "它邀请对方共享猎物"
},
{
"name": "它向前扑去"
},
{
"name": "它回应愿望"
},
{
"name": "它叼着猎物转头离开"
}
]
},
{
"name": "虫卡兹!",
"choices": [
{
"name": "带花纹的蛛腿从黑暗中出现!"
},
{
"name": "你有没有听到什么声音?"
},
{
"name": "这怎么可能嘛?"
}
]
},
{
"name": "捷径",
"choices": [
{
"name": "如果我倒退着走呢?"
},
{
"name": "它其实是在骗人吗?"
}
]
},
{
"name": "驮兽旅行家",
"choices": [
{
"name": "与驮兽同行"
},
{
"name": "索要定金"
},
{
"name": "快步走开"
}
]
},
{
"name": "深坑秘宝",
"choices": [
{
"name": "好吧,我要一个"
},
{
"name": "胡萝卜,你觉得呢?"
},
{
"name": "这不就是普通的石头?休想骗我"
},
{
"name": "我对这玩意没兴趣"
}
]
},
{
"name": "热门景点",
"choices": [
{
"name": "这可以代替门票吗?"
},
{
"name": "从旁边的小路溜进去"
},
{
"name": "无奈离开"
}
]
},
{
"name": "修正时代",
"choices": [
{
"name": "“假如源石可以吃......”"
},
{
"name": "“假如大地合为一国......”"
},
{
"name": "“假如我明天遇到......”"
}
]
},
{
"name": "卫国前夜",
"choices": [
{
"name": "怎么了?"
},
{
"name": "算了,我正忙着呢"
}
]
},
{
"name": "变幻之城",
"choices": [
{
"name": "尝试理解城市"
},
{
"name": "尝试讨好城市"
},
{
"name": "求助土石之子"
}
]
},
{
"name": "未来猎手",
"choices": [
{
"name": "拒绝她"
},
{
"name": "拿出希望的画作"
},
{
"name": "拿出仇恨的矛头"
},
{
"name": "转头就跑"
}
]
},
{
"name": "造物倒影",
"choices": [
{
"name": "打开它的门扉"
},
{
"name": "撞碎它的载体"
},
{
"name": "记录它的存在"
},
{
"name": "远离它"
}
]
},
{
"name": "财源广进",
"choices": [
{
"name": "奉上一些财物"
},
{
"name": "奉上所有财物"
},
{
"name": "虔诚祈祷"
},
{
"name": "多一事不如少一事"
}
]
},
{
"name": "表达欲",
"choices": [
{
"name": "再忍一忍"
},
{
"name": "奋起反抗"
},
{
"name": "让锡人交涉"
}
]
},
{
"name": "阴魂不散",
"choices": [
{
"name": "赶跑他"
},
{
"name": "问他为什么哭"
}
]
},
{
"name": "不请自来",
"choices": [
{
"name": "我只想打一顿"
},
{
"name": "算了,习惯了"
}
]
},
{
"name": "沉默拳王",
"choices": [
{
"name": "举起拳头!"
},
{
"name": "举起矛头!"
},
{
"name": "离他远点"
}
]
},
{
"name": "气打鸭处来",
"choices": [
{
"name": "阻止他"
},
{
"name": "准备把鸭子刺个对穿"
},
{
"name": "随他去吧"
}
]
},
{
"name": "敬虔之人",
"choices": [
{
"name": "接近修女"
},
{
"name": "狩猎死仇"
},
{
"name": "谨慎观察"
}
]
},
{
"name": "解读变迁",
"choices": [
{
"name": "使用共感模拟器"
},
{
"name": "运用传统巫术"
},
{
"name": "离开"
}
]
},
{
"name": "聚思成塔",
"choices": [
{
"name": "仔细翻找"
},
{
"name": "随便翻找"
},
{
"name": "算了"
}
]
},
{
"name": "价高者得",
"choices": [
{
"name": "我当然是成功人士!"
},
{
"name": "那还是算了吧"
}
]
},
{
"name": "前瞻",
"choices": [
{
"name": "派遣人员"
},
{
"name": "留意当下"
}
]
},
{
"name": "原初异途",
"choices": [
{
"name": "一件奇物"
},
{
"name": "一个方盒"
},
{
"name": "一片莲瓣"
},
{
"name": "一堆金属"
}
]
},
{
"name": "巴别塔雇员",
"choices": [
{
"name": "我好像见过这个!"
},
{
"name": "我想要的是这个吗?"
},
{
"name": "谢啦,兄弟"
},
{
"name": "谢啦,兄弟"
},
{
"name": "你还有其他好东西吗?"
},
{
"name": "我们的故事需要这个"
},
{
"name": "我们做笔交易吧"
}
]
},
{
"name": "待诉说的故事",
"choices": [
{
"name": "用构想补足缺陷"
},
{
"name": "将它吸纳入思维"
}
]
},
{
"name": "魂灵见闻:以血还血",
"choices": [
{
"name": "体验萨卡兹的故事"
},
{
"name": "将花瓣掷入故事"
},
{
"name": "算了"
}
]
},
{
"name": "魂灵见闻:善恶同道",
"choices": [
{
"name": "体验萨卡兹的故事"
},
{
"name": "将花瓣掷入故事"
},
{
"name": "算了"
}
]
},
{
"name": "魂灵见闻:石心双子",
"choices": [
{
"name": "体验萨卡兹的故事"
},
{
"name": "将花瓣掷入故事"
},
{
"name": "算了"
}
]
},
{
"name": "戴冠式",
"choices": [
{
"name": "两人为对方戴上冠冕"
},
{
"name": "兄长为妹妹戴上冠冕"
}
]
},
{
"name": "尾页",
"choices": [
{
"name": "【不持有“阿纳萨羯磨”和“滚动先祖”】"
},
{
"name": "【持有“滚动先祖”】"
},
{
"name": "【持有“阿纳萨羯磨”】"
},
{
"name": "【持有“阿纳萨羯磨”和“滚动先祖”】"
}
]
},
{
"name": "待诉说的真相",
"choices": [
{
"name": "用构想补足缺陷"
},
{
"name": "将它吸纳入思维"
}
]
},
{
"name": "扣响异音",
"choices": [
{
"name": "扣动扳机"
},
{
"name": "销毁铳械"
}
]
},
{
"name": "淡然面对",
"choices": [
{
"name": "稍事休息"
},
{
"name": "强化训练"
},
{
"name": "鼓舞士气"
},
{
"name": "重整编制"
},
{
"name": "听个故事"
},
{
"name": "分享见解"
},
{
"name": "予人安息"
},
{
"name": "充足休息"
},
{
"name": "翻新编制"
},
{
"name": "听场史诗"
},
{
"name": "讨论观点"
},
{
"name": "寻找帮手"
}
]
},
{
"name": "温暖余韵",
"choices": [
{
"name": "好好歇息"
},
{
"name": "思考未来"
}
]
}
]
}

View File

@@ -1250,6 +1250,42 @@
"preDelay": 600,
"roi": [0, 405, 725, 225]
},
"Roguelike@StageEncounterOcrChoice": {
"baseTask": "Roguelike@StageEncounterOcrReplace",
"text": [],
"preDelay": 600,
"roi": [800, 50, 466, 583]
},
"Roguelike@StageEncounterOcrChoiceConfirm": {
"Doc": "选项数若 >= 4则可能出现显示不全的问题故拆成 2 个模板",
"template": ["Roguelike@StageEncounterOcrChoiceConfirm1.png", "Roguelike@StageEncounterOcrChoiceConfirm2.png"],
"action": "ClickSelf",
"roi": [1130, 0, 150, 720],
"postDelay": 1000
},
"Roguelike@StageEncounterOcrChoiceHelper1": {
"Doc": "此任务为使用 maa tools 中的 getimagefromroi 而设计使用情景是在出现4选项事件时点击第二选项然后截图",
"template": "empty.png",
"roi": [1140, 220, 134, 54]
},
"Roguelike@StageEncounterOcrChoiceHelper2": {
"Doc": "此任务为使用 maa tools 中的 getimagefromroi 而设计使用情景是在出现4选项事件时点击第二选项然后截图",
"template": "empty.png",
"roi": [1140, 306, 134, 54]
},
"Roguelike@StageEncounterOcrNew": {
"baseTask": "Roguelike@StageEncounterOcrReplace",
"action": "ClickSelf",
"text": [],
"preDelay": 600,
"roi": [0, 405, 725, 225]
},
"Roguelike@StageEncounterOcrReplace": {
"algorithm": "OcrDetect",
"text": [],
"Doc": "该任务复用于肉鸽所有事件类节点的识别中文被拆成3字节处理需要包括号",
"ocrReplace": []
},
"Roguelike@StageEncounterOption": {
"Doc": "base_task",
"template": "empty.png",

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -20,6 +20,7 @@
#include "Roguelike/RoguelikeRecruitConfig.h"
#include "Roguelike/RoguelikeShoppingConfig.h"
#include "Roguelike/RoguelikeStageEncounterConfig.h"
#include "Roguelike/RoguelikeStageEncounterNewConfig.h"
#include "Roguelike/Sami/RoguelikeCollapsalParadigmConfig.h"
#include "Roguelike/Sami/RoguelikeFoldartalConfig.h"
#include "TaskData.h"
@@ -227,6 +228,36 @@ bool asst::ResourceLoader::load(const std::filesystem::path& path)
RoguelikeStageEncounterConfig,
"roguelike"_p / "Sami"_p / "encounter"_p / "collapse.json"_p);
// Refactored Roguelike Encounter Config
/*
LoadResourceAndCheckRet(
RoguelikeStageEncounterNewConfig,
"roguelike"_p / "Phantom"_p / "encounter"_p / "anon.json"_p);
LoadResourceAndCheckRet(
RoguelikeStageEncounterNewConfig,
"roguelike"_p / "Mizuki"_p / "encounter"_p / "anon.json"_p);
LoadResourceAndCheckRet(
RoguelikeStageEncounterNewConfig,
"roguelike"_p / "Sami"_p / "encounter"_p / "anon.json"_p);
*/
LoadResourceAndCheckRet(
RoguelikeStageEncounterNewConfig,
"roguelike"_p / "Sarkaz"_p / "encounter"_p / "anon.json"_p);
/*
LoadResourceAndCheckRet(
RoguelikeStageEncounterNewConfig,
"roguelike"_p / "Phantom"_p / "encounter"_p / "deposit.json"_p);
LoadResourceAndCheckRet(
RoguelikeStageEncounterNewConfig,
"roguelike"_p / "Mizuki"_p / "encounter"_p / "deposit.json"_p);
LoadResourceAndCheckRet(
RoguelikeStageEncounterNewConfig,
"roguelike"_p / "Sami"_p / "encounter"_p / "deposit.json"_p);
LoadResourceAndCheckRet(
RoguelikeStageEncounterNewConfig,
"roguelike"_p / "Sarkaz"_p / "encounter"_p / "deposit.json"_p);
*/
// Roguelike Map Config ------
LoadResourceAndCheckRet(RoguelikeMapConfig, "roguelike"_p / "Sarkaz"_p / "map.json"_p);

View File

@@ -0,0 +1,66 @@
#include "RoguelikeStageEncounterNewConfig.h"
#include <meojson/json.hpp>
#include "Utils/Logger.hpp"
bool asst::RoguelikeStageEncounterNewConfig::parse_event(
RoguelikeEncounterEvents& events,
const json::value& event_json,
std::string sub_event_name)
{
RoguelikeEncounterEvent event;
event.name = sub_event_name == "" ? event_json.at("name").as_string() : sub_event_name;
for (const auto& choice_json : event_json.at("choices").as_array()) {
RoguelikeEncounterEventChoice choice;
choice.name = choice_json.at("name").as_string();
if (auto conditions_opt = choice_json.find("conditions"); conditions_opt && conditions_opt->is_array()) {
for (const auto& requirement_json : conditions_opt->as_array()) {
RoguelikeEncounterEventChoiceCondition condition;
condition.name = requirement_json.at("name").as_string();
condition.type = requirement_json.at("type").as_string();
condition.value = requirement_json.at("value").as_string();
}
}
if (auto sub_event_opt = choice_json.find("sub"); sub_event_opt) {
const auto& sub_event = sub_event_opt.value();
choice.sub_event = event.name + choice.name;
parse_event(events, sub_event, choice.sub_event);
}
event.choices_map[choice.name] = choice;
event.choices_str.push_back(choice.name);
}
events[event.name] = event;
return true;
}
bool asst::RoguelikeStageEncounterNewConfig::parse(const json::value& json)
{
LogTraceFunction;
const std::string theme = json.at("theme").as_string();
RoguelikeEncounterEvents events;
for (const auto& event_json : json.at("events").as_array()) {
if (!parse_event(events, event_json)) {
return false;
}
}
m_events[theme] = std::move(events);
m_event_names[theme].reserve(m_events[theme].size());
for (const auto& pair : m_events[theme]) {
// 应该只有非子事件才要进事件名
m_event_names[theme].push_back(pair.first);
}
return true;
}

View File

@@ -0,0 +1,84 @@
#pragma once
#include "Config/AbstractConfig.h"
#include <vector>
#include "Common/AsstBattleDef.h"
#include "Task/Roguelike/RoguelikeConfig.h"
namespace asst
{
class RoguelikeStageEncounterNewConfig final :
public SingletonHolder<RoguelikeStageEncounterNewConfig>,
public AbstractConfig
{
public:
virtual ~RoguelikeStageEncounterNewConfig() override = default;
enum class ConditionRequirement
{
,
,
,
,
,
,
,
,
,
};
struct RoguelikeEncounterEventChoiceCondition
{
ConditionRequirement requirement;
std::string name;
std::string type;
std::string value;
};
struct RoguelikeEncounterEventChoice
{
std::string name;
std::unordered_map<std::string, RoguelikeEncounterEventChoiceCondition> conditions;
std::string sub_event = ""; // 子事件,出现于选完一个选项之后会出现选项,而不是结束不期而遇
};
struct RoguelikeEncounterEvent
{
std::string name;
std::unordered_map<std::string, RoguelikeEncounterEventChoice> choices_map;
std::vector<std::string> choices_str;
};
using RoguelikeEncounterEvents = std::unordered_map<std::string, RoguelikeEncounterEvent>;
const auto& get_events(const std::string& theme /*, const RoguelikeMode& mode = RoguelikeMode::Exp*/) const noexcept
{
return m_events.at(theme);
}
const auto& get_event_names(const std::string& theme) const noexcept { return m_event_names.at(theme); }
const auto& get_event(const std::string& theme, const std::string& event_name) const noexcept
{
return m_events.at(theme).at(event_name);
}
const auto& get_choice(const std::string& theme, const std::string& event_name, const std::string& choice_name)
const noexcept
{
return m_events.at(theme).at(event_name).choices_map.at(choice_name);
}
private:
virtual bool parse(const json::value& json) override;
bool parse_event(RoguelikeEncounterEvents& events, const json::value& event_json, std::string sub_event_name = "");
std::unordered_map<std::string, RoguelikeEncounterEvents> m_events; // <theme, <event_names, events>>
std::unordered_map<std::string, std::vector<std::string>> m_event_names; // <theme, event_names>
};
inline static auto& RoguelikeStageEncounterNew = RoguelikeStageEncounterNewConfig::get_instance();
}

View File

@@ -226,6 +226,7 @@
<ClInclude Include="Config\Miscellaneous\OcrConfig.h" />
<ClInclude Include="Config\Miscellaneous\SSSCopilotConfig.h" />
<ClInclude Include="Config\OnnxSessions.h" />
<ClInclude Include="Config\Roguelike\RoguelikeStageEncounterNewConfig.h" />
<ClInclude Include="Config\TaskData\TaskDataSymbol.h" />
<ClInclude Include="Config\TaskData\TaskDataSymbolStream.h" />
<ClInclude Include="Config\TaskData\TaskDataTypes.h" />
@@ -432,6 +433,7 @@
<ClCompile Include="Config\Miscellaneous\OcrConfig.cpp" />
<ClCompile Include="Config\Miscellaneous\SSSCopilotConfig.cpp" />
<ClCompile Include="Config\OnnxSessions.cpp" />
<ClCompile Include="Config\Roguelike\RoguelikeStageEncounterNewConfig.cpp" />
<ClCompile Include="Config\TaskData\TaskDataSymbol.cpp" />
<ClCompile Include="Config\TaskData\TaskDataSymbolStream.cpp" />
<ClCompile Include="Controller\adb-lite\client.cpp" />

View File

@@ -1340,6 +1340,9 @@
<ClInclude Include="Vision\Miscellaneous\OperNameAnalyzer.h">
<Filter>Source\Vision\Miscellaneous</Filter>
</ClInclude>
<ClInclude Include="Config\Roguelike\RoguelikeStageEncounterNewConfig.h">
<Filter>Source\Resource\Roguelike</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="Vision\VisionHelper.cpp">
@@ -1860,8 +1863,11 @@
<ClCompile Include="Vision\Miscellaneous\OperNameAnalyzer.cpp">
<Filter>Source\Vision\Miscellaneous</Filter>
</ClCompile>
<ClCompile Include="Config\Roguelike\RoguelikeStageEncounterNewConfig.cpp">
<Filter>Source\Resource\Roguelike</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Natvis Include="meojson.natvis" />
</ItemGroup>
</Project>
</Project>

View File

@@ -1,6 +1,7 @@
#include "RoguelikeStageEncounterTaskPlugin.h"
#include "Config/Roguelike/RoguelikeStageEncounterConfig.h"
#include "Config/Roguelike/RoguelikeStageEncounterNewConfig.h"
#include "Controller/Controller.h"
#include "Task/ProcessTask.h"
#include "Utils/Logger.hpp"
@@ -35,6 +36,13 @@ bool asst::RoguelikeStageEncounterTaskPlugin::_run()
{
LogTraceFunction;
m_theme = m_config->get_theme();
m_mode = m_config->get_mode();
if (refactored_encounter_run()) {
return true;
}
const std::string& theme = m_config->get_theme();
const RoguelikeMode& mode = m_config->get_mode();
const auto& event_map = RoguelikeStageEncounter.get_events(theme, mode);
@@ -218,3 +226,153 @@ int asst::RoguelikeStageEncounterTaskPlugin::hp(const cv::Mat& image)
}
return utils::chars_to_number(res_vec_opt->front().text, hp_val) ? hp_val : 0;
}
bool asst::RoguelikeStageEncounterTaskPlugin::refactored_encounter_run(std::optional<RoguelikeEncounterEvent> sub)
{
LogTraceFunction;
if (m_theme != "Sarkaz") {
return false;
}
// 识别事件
RoguelikeEncounterEvent event;
if (sub) {
event = sub.value();
}
else {
auto event_analyze = refactored_encounter_event_analyze();
if (event_analyze) {
event = event_analyze.value();
}
else {
return false;
}
}
// 这个 str 应该在获取之后重新根据 condition 算出来
auto& event_choices_str = event.choices_str;
// auto event_choices = reorder_choices(event);
// 识别选项
const auto event_choice_task_ptr = Task.get("Roguelike@StageEncounterOcrChoice");
sleep(event_choice_task_ptr->pre_delay);
if (need_exit()) {
return false;
}
cv::Mat event_choice_image = ctrler()->get_image();
OCRer event_choice_analyzer(event_choice_image);
event_choice_analyzer.set_task_info(event_choice_task_ptr);
event_choice_analyzer.set_required(event_choices_str);
Log.info("Required choices:", event_choices_str);
if (!event_choice_analyzer.analyze()) {
Log.warn("Unknown Choices");
return false;
}
const auto& choice_name_result_vec = event_choice_analyzer.get_result();
if (choice_name_result_vec.empty()) {
Log.warn("Choices OCR Failed");
return false;
}
// 按 json 给定顺序点击选项
for (auto& choice : event_choices_str) {
auto choice_name_result_it =
ranges::find_if(choice_name_result_vec, [&](const auto& result) { return result.text == choice; });
if (choice_name_result_it == choice_name_result_vec.end()) {
continue;
}
ctrler()->click((*choice_name_result_it).rect);
sleep(600); // 动画延迟
if (ProcessTask(*this, { "Roguelike@StageEncounterOcrChoiceConfirm" }).run()) {
const auto& event_choice =
RoguelikeStageEncounterNew.get_choice(m_theme, event.name, (*choice_name_result_it).text);
if (event_choice.sub_event != "") {
return refactored_encounter_run(RoguelikeStageEncounterNew.get_event(m_theme, event_choice.sub_event));
}
// 离开事件不用写,直接交给 Roguelike@CloseEvent以免多层 sub_event 出问题
return true;
}
else {
// 万一真没识别到对勾
}
}
return false;
}
std::optional<asst::RoguelikeStageEncounterTaskPlugin::RoguelikeEncounterEvent>
asst::RoguelikeStageEncounterTaskPlugin::refactored_encounter_event_analyze()
{
LogTraceFunction;
auto& event_map = RoguelikeStageEncounterNew.get_events(m_theme /*, m_mode*/);
auto& event_names = RoguelikeStageEncounterNew.get_event_names(m_theme);
const auto event_name_task_ptr = Task.get("Roguelike@StageEncounterOcrNew");
sleep(event_name_task_ptr->pre_delay);
if (need_exit()) {
return std::nullopt;
}
cv::Mat event_name_image = ctrler()->get_image();
OCRer event_name_analyzer(event_name_image);
event_name_analyzer.set_task_info(event_name_task_ptr);
event_name_analyzer.set_required(event_names);
if (!event_name_analyzer.analyze()) {
Log.warn("Unknown Event");
return std::nullopt;
}
const auto& event_name_result_vec = event_name_analyzer.get_result();
if (event_name_result_vec.empty()) {
Log.info("Unknown Event");
return std::nullopt;
}
std::string event_name = event_name_result_vec.front().text;
return event_map.at(event_name);
}
/*
std::vector<std::string> asst::RoguelikeStageEncounterTaskPlugin::reorder_choices(RoguelikeEncounterEvent event)
{
std::vector<std::string> event_choices;
for (auto& choice_str : event.choices_str) {
auto& choice = event.choices_map.at(choice_str);
if (choice.conditions.size() == 0) {
continue;
}
bool condition_satisfied = true;
for (auto& [condition_name, condition] : choice.conditions) {
switch (condition.requirement) {
case ConditionRequirement::源石锭:
break;
case ConditionRequirement::希望:
break;
case ConditionRequirement::目标生命:
break;
case ConditionRequirement::目标生命上限:
break;
case ConditionRequirement::思绪:
break;
case ConditionRequirement::收藏品:
break;
case ConditionRequirement::干员:
break;
case ConditionRequirement::护盾值:
break;
case ConditionRequirement::圣遗物:
Log.error("就你小子喜欢圣遗物是吧?");
break;
default:
Log.info("Unsupported requirement:", condition.requirement);
break;
}
}
}
return std::vector<std::string>();
}
*/

View File

@@ -1,6 +1,7 @@
#pragma once
#include "AbstractRoguelikeTaskPlugin.h"
#include "Config/Roguelike/RoguelikeStageEncounterConfig.h"
#include "Config/Roguelike/RoguelikeStageEncounterNewConfig.h"
#include "Config/TaskData.h"
#include "Sami/RoguelikeCollapsalParadigmTaskPlugin.h"
#include "Vision/OCRer.h"
@@ -22,5 +23,16 @@ protected:
static bool satisfies_condition(const Config::ChoiceRequire& requirement, int special_val);
static int process_task(const Config::RoguelikeEvent& event, const int special_val);
static int hp(const cv::Mat& image);
private:
using RoguelikeEncounterEvents = RoguelikeStageEncounterNewConfig::RoguelikeEncounterEvents;
using RoguelikeEncounterEvent = RoguelikeStageEncounterNewConfig::RoguelikeEncounterEvent;
using ConditionRequirement = RoguelikeStageEncounterNewConfig::ConditionRequirement;
std::optional<RoguelikeEncounterEvent> refactored_encounter_event_analyze();
bool refactored_encounter_run(std::optional<RoguelikeEncounterEvent> sub = std::nullopt);
// std::vector<std::string> reorder_choices(RoguelikeEncounterEvent event);
std::string m_theme;
RoguelikeMode m_mode;
};
}

View File

@@ -0,0 +1 @@
*.json

View File

@@ -0,0 +1,609 @@
{{编辑中}}
__NOTOC__
{{#widget:ISEvent}}
{{#vardefine:theme|萨卡兹的无终奇语}}{{#vardefine:link|想象实体图鉴}}
{{ISEvent|theme={{#var:theme}}
<!--不期而遇-->
|事件res1={{ISEvent/scene|etype=不期而遇|开始|Avg_pic_rogue_4_3|解惑|年轻的巫妖听见你走近,显得非常激动。“终于找到一个活人了!”他急切地询问,“你认识字吗?帮我看看这本书的结局到底是什么。”你接过书翻到最后一页:一名萨卡兹猎人终于追上了他的猎物,一名萨科塔。他们的结局是——
|选项={{ISEvent/choose|simple|萨科塔杀死了萨卡兹|gold|desc1=获得{{color|#28bfe5|4}}源石锭|dest=1}}
{{ISEvent/choose|simple|萨卡兹埋葬了萨科塔|population|desc1=获得{{color|#28bfe5|2}}希望|dest=2}}
{{ISEvent/choose|simple|他们的头顶都生出了光环|gold|desc1=持有{{color|#28bfe5|希望时代的涂鸦}},获得{{color|#28bfe5|4}}源石锭,{{color|#28bfe5|2}}希望|desc2={{mdi|information}}仅在持有“希望时代的涂鸦”时出现|dest=3}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_3|解惑|“符合常理......”你这才发现,巫妖的双眼一片灰白。他不好意思地解释道,为了解决老师布置的问题,他只好一直躲在这里查找资料。现在,他终于可以回去了。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_3|解惑|“原来如此......”你这才发现,巫妖的双眼一片灰白。他不好意思地解释道,为了解决老师布置的问题,他只好一直躲在这里查找资料。现在,他终于可以回去了。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_3|解惑|“怎么可能是这样?”巫妖惊叫出声,但他随即又陷入沉思,也许这正是老师想让他探寻的答案?你发现巫妖的双眼灰白,他的脑后轻微地闪烁着奇异的光芒。难道他将故事当真了?}}
|事件res2={{ISEvent/scene|开始|Avg_pic_rogue_4_4|高空坠物|“喂——”头顶传来一声呼喊你向上张望却只看见一片铅灰色的云层。“C区再抛掉一些负重该死的你想让整个卡兹戴尔都坠毁吗”不久后一大堆杂物如暴雨般砸下之后一些衣物和纸张慢悠悠飘落。一直等到头顶彻底没了动静你才敢走近去看地上的一片狼藉。
|选项={{ISEvent/choose|simple|从中寻找有用的物件|population|desc1=获得{{color|#28bfe5|2}}希望|dest=1}}
{{ISEvent/choose|simple|找些帮手来把这里搬空|population|desc1=持有{{color|#28bfe5|希望时代的涂鸦}},获得{{color|#28bfe5|3}}希望|desc2={{mdi|information}}仅在持有“希望时代的涂鸦”时出现|dest=2}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_4|高空坠物|地面被砸出大大小小的坑洞,那些手提箱、柜子都在高速撞击下毁坏报废。一些写满萨卡兹文字的纸张倒是完好,可字迹潦草、顺序混乱,你根本看不懂上面写了什么,只勉强分辨出“升空”“组装”“名额”等几个字眼。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_4|高空坠物|你找到一位萨卡兹牧民,他朝山坡下吹了几声口哨,不一会儿就赶来七八个身强力壮的农夫,有菲林也有佩洛,但都说一口流利的萨卡兹语。他们和你一起兴高采烈地将地上的物件都搬回村子里。而当你提起天上的声音时,他们淡定地表示这种事经常有,毕竟只要运气好抽到签就能上去,但脑子不见得比他们灵光。}}
|事件res3={{ISEvent/scene|开始|Avg_pic_rogue_4_5|好心的女士|“又见面啦。”眼前的年轻女士向你打招呼。你看着她的脸,感觉有些熟悉,却想不起来她的名字。“别费脑筋了,我不在你们的故事里,哪怕想起来,你也会很快忘掉的。”她掏出来一张纸,似乎是刚从本子上撕下来的,“那么这次,你需要我的帮助吗?”
|选项={{ISEvent/choose|simple|请帮帮我|hp|desc1=回复{{color|#28bfe5|4}}目标生命|dest=1}}
{{ISEvent/choose|simple|请帮帮我,还有我的同伴们|hp|desc1=持有{{color|#28bfe5|希望时代的涂鸦}},获得{{color|#28bfe5|4}}目标生命上限|desc2={{mdi|information}}仅在持有“希望时代的涂鸦”时出现|dest=2}}
{{ISEvent/choose|simple|我不需要帮助|leave|desc1=下次再说吧|dest=3}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_5|好心的女士|“没问题。”她的手轻轻晃动,那张纸竟然无火自燃。一股暖流钻进你的身体,你感到疲惫和疼痛一扫而空。但那股暖流很快就消失了,冰冷的空气重新涌来,差点让你呛到。“加油哦,这次争取走更远一些,大家都等着听后面的故事呢。”好心的女士说完,打了个响指,原地消失了。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_5|好心的女士|“哦?”年轻的女士语气中流露出一丝惊讶,“你这次运气不错呀,这幅涂鸦都被你找到了。”她思索片刻,用指尖在纸张上写了些什么,接着那张纸无火自燃,化作许多光点散入你和同伴们的体内。你握了握拳,感到身体似乎更有力量了。“下次见哦,别让大家失望。”好心的女士说完,打了个响指,原地消失了。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_5|好心的女士|“好吧,又白跑一趟。”年轻的女士耸耸肩,“希望你这次能走得更远,大家都等着听后面的故事呢。”她跺了跺脚,原地消失了。那一刻,你好像想起了她的名字,但马上又忘记了。}}
|事件res4={{ISEvent/scene|开始|Avg_pic_rogue_4_6|在故事结束之后|温迪戈战士奋战至死,带着他的梦想与希望逝去,只留下了一具躯壳。属于他的故事已经画上了句号,而你则有机会见证他的结局。你看到——
|选项={{ISEvent/choose|custom|战士的躯壳崩解成灰|思绪_旧乡晶尘|desc1=获得遗愿{{color|#28bfe5|旧乡晶尘}}(失去后进入新一层会再次回到手上,解读时更容易获得收藏品)|dest=1}}
{{ISEvent/choose|custom|战士的角生根发芽|思绪_枯木新枝|desc1=获得{{color|#28bfe5|2缕}}遗愿{{color|#28bfe5|枯木新枝}}(携带此遗愿进入下一层时再次获得该遗愿,解读时更容易获得收藏品)|dest=2}}
{{ISEvent/choose|simple|时光的永恒在此定格|leave|desc1=这些都不是我要去的地方|dest=3}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_6|在故事结束之后|大多数萨卡兹都是感染者,而感染者的结局自不必说。清风吹来,带走了晶尘。这便是他的遗愿,他想要回家。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_6|在故事结束之后|他的尸骸似乎并不愿意接受死亡的命运,没过多久,温迪戈的角便开始生根发芽,不断生长,有一小段嫩枝甚至缠绕上了你的手指,将他的遗愿传达给了你:他的死亡哺育了一个新的故事,他衷心希望那新生命能够茁壮成长。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_6|在故事结束之后|羽兽不飞翔,风儿不吹动,你等待了许久,也没能见到这一故事的后续。直至你离去,直至大地崩裂,直至太阳湮灭,这里都不会再有任何改变。}}
|事件res5={{ISEvent/scene|开始|Avg_pic_rogue_4_7|竣工仪式|夜色呼啸而过,燥热的风卷起灰烬与残页。这是卡兹戴尔浮上天空后的第一个夜晚,裸露的泥土上再也没有城市的踪影,只剩下数百个燃烧的铁桶。你看见有人正将成堆的图纸扔进火中,这些工程师打扮的萨卡兹警惕地看向你的背后,你回过头去,那里站着一群面色不善的异族。留守地面的工程师出声质问,你答道——
|选项={{ISEvent/choose|custom|交出浮空城的图纸!|思绪_构想|desc1=获得{{color|#28bfe5|3缕}}构想(可在印象重建中消耗并能用于开通新路线或改变节点)|dest=1}}
{{ISEvent/choose|custom|我们是来参加研讨会的|思绪_构想|desc1=持有{{color|#28bfe5|希望时代的涂鸦}},获得{{color|#28bfe5|5缕}}构想(可在印象重建中消耗并能用于开通新路线或改变节点)|desc2={{mdi|information}}仅在持有“希望时代的涂鸦”时出现|dest=2}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_7|竣工仪式|萨卡兹工程师们冷哼一声,抱起地上的图纸全数投进火焰中,接着便转身跑进夜色里。你没有追上去的打算,而是从火焰中抢出几张还未烧尽的残页。萨卡兹与其他种族之间的矛盾注定无法调和,否则他们也不至于逃到天上去。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_7|竣工仪式|萨卡兹工程师们听说你们是来参加研讨会的,面色缓和了不少,并为你们指明了去会场的路。“卡兹戴尔能飞起来,离不开各族朋友的帮衬。这次设计研讨会就是为了将我们的经验和教训分享给所有人,算是一份小小的谢礼。”你跟着那群同样迷路的异族抵达了会场,做了不少笔记,你觉得这些知识将来肯定能派上用场。}}
|事件fin2={{ISEvent/scene|开始|Avg_pic_rogue_4_9|离去者的庭院|战争、病痛、事故不断地从特雷西斯和特蕾西娅身边夺走那些追随他们的朋友。为了纪念这些人,两位魔王在卡兹戴尔的中心建立了一座纪念公园,在这里,你可以见到那些魔王挚友的纪念碑。你走到一座碑前,仔细看了看这位亡者的名字——
|选项={{ISEvent/choose|simple|“阿斯卡纶”|population|desc1=获得{{color|#28bfe5|3}}希望|dest=1}}
{{ISEvent/choose|simple|“触痕”|hp|desc1=回复{{color|#28bfe5|6}}目标生命|dest=2}}
{{ISEvent/choose|simple|“菲茨罗伊”|gold|desc1=获得{{color|#28bfe5|5}}源石锭|dest=3}}
{{ISEvent/choose|simple|“埃里克森”|fragment|desc1=获得{{color|#28bfe5|1缕}}较为稀有的思绪|dest=4}}
{{ISEvent/choose|collection|“阿米娅”|249|desc1=获得收藏品{{color|#28bfe5|十戒}}|dest=5}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_9|离去者的庭院|“这里埋葬着阿斯卡纶,魔王的侍卫长。她在一场针对魔王的阴谋中杀死百名刺客,以身殉职。”在她的纪念碑前,放着几束鲜花。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_9|离去者的庭院|“这里埋葬着触痕,巴别塔的外勤医疗专家。她因辛劳过度不幸逝世。”在她的纪念碑前,放着几样医疗器具。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_9|离去者的庭院|“这里埋葬着菲茨罗伊先生,一位用商业撬动哥伦比亚使之转变态度的商人朋友。他死于无药可医的家族遗传病,根据遗嘱,其遗产由女妖娜斯提继承。”在他的纪念碑前,放着几块源石锭。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_9|离去者的庭院|“这里埋葬着埃里克森,历史的记录者。他寿终正寝,没有任何遗憾。”在他的纪念碑前,放着几本书籍。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_9|离去者的庭院|“这里埋葬着阿米娅,愿她安息。”在她的纪念碑上,雕刻着十枚戒指。恍惚间,你似乎看到了特蕾西娅为阿米娅戴上戒指,目送她远行的场景。回过神来,这十枚戒指已经戴在了你的手指上。但不知为何,你感觉到,这些戒指不全属于你面前的这位阿米娅,它们是魔王的,它们是罗德岛的......它们属于你认知里的那个卡特斯。}}
|事件rec1={{ISEvent/scene|开始|Avg_pic_rogue_4_10|刀口舔血|这里是疤痕商场,雇佣兵的地盘。只要有足够的资源,你能在这里雇佣任何你想要的打手。
|选项={{ISEvent/choose|simple|花钱雇佣|recruit|desc1=消耗{{color|#ff6e6e|2}}源石锭招募一名干员从随机2个职业中选择|dest=1}}
{{ISEvent/choose|item|许诺未来的报酬|高级人事调度函|desc1=消耗{{color|#ff6e6e|1缕}}构想,招募任意一名干员<br>{{color|#28bfe5|高级人事调度函}}|dest=2}}
{{ISEvent/choose|item|交付驮兽载满的资源|高级人事调度函|desc1=持有{{color|#28bfe5|牧驮人的摇铃}},招募任意一名干员<br>{{color|#28bfe5|高级人事调度函}}|desc2={{mdi|information}}仅在持有“牧驮人的摇铃”时出现|dest=3}}
{{ISEvent/choose|simple|我只是来观光的|leave|desc1=多一事不如少一事|dest=4}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_10|刀口舔血|钱能解决的,就不是问题,你很快找到了你心怡的雇佣兵。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_10|刀口舔血|只要提出的未来足够有诱惑力,总有人愿意暂时不考虑薪水为你效力。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_10|刀口舔血|时至今日,以物易物仍是萨卡兹的古老传统,在你交付了载满资源的驮兽后,疤痕商场的负责人让你自己去挑一位想要的雇佣兵,他们会解决交涉和报酬问题。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_10|刀口舔血|疤痕商场建立在地下深处,由无数道锁链将其固定在熔岩上空。你很少看到这样的奇景,无论你走向何方,疤痕商场似乎都如锚点那样稳固......在满足了好奇心后,你就离开了。}}
|事件rec2={{ISEvent/scene|开始|Avg_pic_rogue_4_11|疤痕国际|古老的萨卡兹佣兵组织经过革新后,以“疤痕国际”的身份出现在了泰拉大地上。你之前已获得了他们的会员资格,现在可以免费雇佣想要的佣兵。
|选项={{ISEvent/choose|item|招募|高级人事调度函|desc1=招募任意一名干员<br>{{color|#28bfe5|高级人事调度函}}|dest=1}}
{{ISEvent/choose|simple|和负责人打个招呼|population|desc1=持有{{color|#28bfe5|希望时代的涂鸦}},获得{{color|#28bfe5|2}}希望,招募任意一名干员|desc2={{mdi|information}}仅在持有“希望时代的涂鸦”时出现|dest=2}}
{{ISEvent/choose|simple|暂时不需要|leave|desc1=多一事不如少一事|dest=3}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_11|疤痕国际|疤痕国际拥有全泰拉最好的佣兵资源,你很快就找到了心仪的人选。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_11|疤痕国际|一位被称作“桥夹”克里夫的笞心魔接待了你。这位神射手当初在疤痕商场的首领竞争中脱颖而出,最后掌控并重组了整个组织。一阵闲聊后,他让自己的副手伍德洛带你们去挑选佣兵。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_11|疤痕国际|你今天只是来参观的,前台的服务人员为你安排了导游,那位叫做芙兰卡的佣兵带着你们游览了这艘被作为行动基地的高速战舰。}}
|事件rec3={{ISEvent/scene|开始|Avg_pic_rogue_4_42|一叶扁舟|你们想去拜谒附近的一座庙宇,却怎么也找不到路,辗转来回间,只在芦苇荡中发现一条小船。撑船的阿纳萨愿意免费渡人去寺庙,但船并不大,只有一人的空位。
|选项={{ISEvent/choose|item|让有缘人上船|高级物资配给券|desc1=获得进阶券<br>{{color|#28bfe5|高级物资配给券}}|dest=1}}
{{ISEvent/choose|item|与阿纳萨商量|高级物资配给券|desc1=持有{{color|#28bfe5|希望时代的涂鸦}}进阶任意2名干员<br>{{color|#28bfe5|高级物资配给券}}|desc2={{mdi|information}}仅在持有“希望时代的涂鸦”时出现|dest=2}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_42|一叶扁舟|阿纳萨载着那位幸运儿消失在了芦苇丛中,你注意到她虽然专注,但动作并不熟练,似乎不是当地的船娘。过了许久船才划回来,上船的人迫不及待地与你分享了见闻,你这才知道,那座庙宇实质上是感染者的治疗中心......以及墓地。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_42|一叶扁舟|见你们诚心拜谒,阿纳萨把船竿交给你们并指了路,两位有缘人驾船去了庙宇,你则留在岸边和阿纳萨聊天。她说这里本是离弃矿石病人的乱葬岗,后来阿纳萨们将庙建在了附近,为病人提供治疗,也为他们安排体面的死亡,她受了庙里的恩惠,于是发愿为来往的人摆渡。}}
|事件relic1={{ISEvent/scene|开始|Avg_pic_rogue_4_12|失落财宝|艺术沙龙里人头攒动,画家正向路过的观赏者介绍自己以古老传说为题材创作的油画。你想听听哪一件作品背后的故事?
|选项={{ISEvent/choose|simple|《酋长威仪》|relic|desc1=获得{{color|#28bfe5|1件}}国王收藏品|dest=1}}
{{ISEvent/choose|simple|《萨卡兹尊主》|relic|desc1=消耗{{color|#ff6e6e|5}}目标生命,获得{{color|#28bfe5|2件}}国王收藏品|desc2={{mdi|information}}始终可选择目标生命值最低降至1|dest=2}}
{{ISEvent/choose|simple|《泰拉之王》|relic|desc1=仅有{{color|#ff6e6e|1}}目标生命,获得{{color|#28bfe5|所有}}国王收藏品|desc2={{mdi|information}}仅在目标生命为1时出现|dest=3}}
{{ISEvent/choose|simple|我更想饱餐一顿|hp|desc1=回复{{color|#28bfe5|3}}目标生命|dest=4}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_12|失落财宝|“他被自己的父亲放逐,在荒野上度过了童年。可他注定要戴上王冠,多年之后,当部落陷入动乱时,他回到了自己的家园,手刃亲族,夺下了象征酋长身份的饰品。”听着那模糊的描述,一个物件的轮廓慢慢出现在了你的想象中。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_12|失落财宝|“凭借着雄心与武力,他驰骋在平原上,将提卡兹们一一收服于旗下。提卡兹们为他打造了两件神器,只要持有它们,便是所有提卡兹毋庸置疑的王。”听着那模糊的描述,你费尽心思想象着神器的模样。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_12|失落财宝|“当征服完高山与大海间的所有种族,提卡兹之主便是泰拉无可争辩的王。他为自己打造了无数珍宝,用以在子民面前展现他的权威。”你对故事不是很感兴趣,但为了想象出君王的全套装扮,你费尽了心力。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_12|失落财宝|你对那些陈词滥调并没有兴趣,在吃饱喝足后就离开了。}}
|事件relic2={{ISEvent/scene|开始|Avg_pic_rogue_4_13|绝境?抉择?|黑色行列在大地上蠕动,萨卡兹们艰难地寻找着出路。魔族只剩下着最后一支血脉,究竟向哪里走,才能获得一线生机?你向智者们提问,于是女妖取出骨笔,巫妖洞穿空间,独眼巨人睁开只眼。半晌之后,你决定——
|选项={{ISEvent/choose|simple|跟随女妖的笛声|unknown|desc1=我们会去向何方?|dest=1}}
{{ISEvent/choose|simple|跟随巫妖的智慧|unknown|desc1=持有{{color|#28bfe5|死仇时代的恨意}},消耗{{color|#ff6e6e|4}}目标生命,获得一件{{color|#28bfe5|特殊}}的收藏品|desc2={{mdi|information}}仅在持有“死仇时代的恨意”时出现,出现时始终可选择|dest=2}}
{{ISEvent/choose|simple|跟随独眼巨人的预示|unknown|desc1=持有{{color|#28bfe5|希望时代的涂鸦}},回复{{color|#28bfe5|4}}目标生命,获得一件{{color|#28bfe5|特殊}}的收藏品|desc2={{mdi|information}}仅在持有“希望时代的涂鸦”时出现|dest=3}}
{{ISEvent/choose|simple|跟随内心的选择|leave|desc1=离开|dest=4}}
}}
{{ISEvent/scene|女妖|Avg_pic_rogue_4_13|绝境?抉择?|随着悠扬笛声,行列再次向前行进,走过河谷,走进洞窟,深入地底,如果阳光下的地盘不能让萨卡兹发展,那就让这黑暗之地,成为萨卡兹的家园。
|选项={{ISEvent/choose|simple|来自家园的馈赠|relic|desc1=获得{{color|#28bfe5|1件}}较为稀有的收藏品|dest=4}}
}}
{{ISEvent/scene|巫妖|Avg_pic_rogue_4_13|绝境?抉择?|巫妖献出命结,穿过每一个族人。当族群成为个体,敌人们便很难彻底杀死它。在这个叫做萨卡兹的个体损耗殆尽前,它遇到了海中的朋友,并最终成为了那个大家庭的一部分。
|选项={{ISEvent/choose|collection|来自众我的馈赠|132|desc1=获得收藏品{{color|#28bfe5|几丁质刺刃}}|dest=4}}
}}
{{ISEvent/scene|独眼巨人|Avg_pic_rogue_4_13|绝境?抉择?|萨卡兹们跟着独眼巨人顺利在萨米定居,与当地土著一起抵抗北方的邪魔灾异。巨人的眼见到了无数未来与惨剧,为了让萨卡兹们不再受到邪魔侵扰。巨人们离开人群,直视灾异,用那腐化的眼,看尽邪魔的终末。
|选项={{ISEvent/choose|collection|来自盟友的馈赠|203|desc1=获得收藏品{{color|#28bfe5|人事部密信}}|dest=4}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_13|绝境?抉择?|你没能从智者们的回答中寻找到答案,既然无人能够指明未来,那就继续前进吧,至少,眼前的路仍清晰可见。于是萨卡兹们继续在大地上流浪。一个建起卡兹戴尔的梦,也不知何时能够完满。}}
|事件pick1={{ISEvent/scene|开始|Avg_pic_rogue_4_14|相遇|黑色的野兽死死咬住猎物的喉咙,直到它不再挣扎,瘫软在自己口中。突然,荒野中闪出一道金光,那是未曾见过的生物,鬃毛在阳光下生辉,利齿与锐爪彰显着它的武力。那究竟是什么?黑色的野兽放下猎物,目光紧盯着对方,而后......
|选项={{ISEvent/choose|collection|它邀请对方共享猎物|228|desc1=获得收藏品{{color|#28bfe5|希望时代的涂鸦}}|dest=1}}
{{ISEvent/choose|collection|它向前扑去|229|desc1=获得收藏品{{color|#28bfe5|死仇时代的恨意}}|dest=2}}
{{ISEvent/choose|collection|它回应愿望|231|desc1=获得收藏品{{color|#28bfe5|美愿时代的留恋}}|dest=3}}
{{ISEvent/choose|simple|它叼着猎物转头离开|leave|desc1=离开|dest=4}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_14|相遇|千百年后,不同种族的人们早已不分彼此。合作才能共赢,这是所有人的共识。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_14|相遇|萨卡兹杀死猎物,那猎物的后代也会杀死萨卡兹。不是你死就是我亡,泰拉并不存在第二条路。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_14|相遇|正是在这一刻,提卡兹听到了恳切的愿望,眼前的生物许愿不再饥饿。于是提卡兹将猎物让给了它,并看着它死于暴食,成为自己的美餐。可惜,此后的人们只记着提卡兹能够实现愿望,他们不断许愿,许愿,最终将提卡兹与他们自身尽数毁灭。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_14|相遇|就这样,提卡兹与神民的正式相遇又推后了几日。}}
|事件normal1={{ISEvent/scene|开始|Avg_pic_rogue_4_15|虫卡兹!|“他们说,提卡兹被源石所塑造,经过了万千岁月,变成了今日的模样。他们不知道的是,源石并非只给提卡兹提供了唯一一种固定的相貌。在魂灵熔炉虬曲的管道网络中,在那些无人问津的拐角,在堆积了一百年的源石废料里,生活着我们的另一种表亲,生有节肢的表亲......”
|选项={{ISEvent/choose|simple|带花纹的蛛腿从黑暗中出现!|fragment|desc1=获得{{color|#28bfe5|2缕}}灵感|dest=1}}
{{ISEvent/choose|simple|你有没有听到什么声音?|fragment|desc1=获得{{color|#28bfe5|2缕}}遗愿|dest=2}}
{{ISEvent/choose|simple|这怎么可能嘛?|leave|desc1=源石虫怎么可能是我们的表亲!|dest=3}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_15|虫卡兹!|“呜哇!那就是‘虫卡兹’!不要动!不要听它的耳语!不要伸手去摸它的线团!哎你怎么不听我的!”
|选项={{ISEvent/choose|simple|它刚刚说让我“拿点午饭”?|leave|desc1=离开}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_15|虫卡兹!|“呜哇!那就是‘虫卡兹’!它嫉妒你的人形,会对你发出恐怖的诅咒!你完了!哦,我也完了!哎不是它怎么又走了?它放了什么在地上?”
|选项={{ISEvent/choose|simple|它刚刚在地上写“注意安全”?|leave|desc1=离开}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_15|虫卡兹!|也许存在着这样一个“源石虫的时代”,但我们应该早就已经错过那个时代啦。}}
|事件normal2={{ISEvent/scene|开始|Avg_pic_rogue_4_16|捷径|“魂灵熔炉四通八达,千奇百怪的生灵寄居在它盘根错节、亦虚亦实的管道里。也许会有这样一条管路,它会向所有钻进它的人许诺,说自己通往一个安全舒适的目的地。但命运使然,人们每在这条路上多走一步,离那个目的地反而就远一分......”
|选项={{ISEvent/choose|custom|如果我倒退着走呢?|思绪_灌铅胸牌|desc1=获得遗愿{{color|#28bfe5|灌铅胸牌}}(失去后源石锭+3在安全的角落中会发挥特殊效果解读时更容易获得收藏品|dest=1}}
{{ISEvent/choose|simple|它其实是在骗人吗?|leave|desc1=那么你呢?|dest=2}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_16|捷径|“说得好,我当时也有你这么好的脑袋瓜就好喽。走吧,到了那个安全的地方再叫醒我——可不要趁着我睡觉把我带回疤痕商场去。”}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_16|捷径|“这可是卡兹戴尔,许诺总有实现的时候——他们是这么跟我说的。哼,那你们走别的路吧,比如那条,过去就是废墟;还有那条,死胡同。”}}
|事件normal3={{ISEvent/scene|开始|Avg_pic_rogue_4_17|驮兽旅行家|一只背满行李的驮兽站在城墙废墟的顶端,悠哉地抖落身上的积雪。它是从哪来的?又是怎么爬到那地方去的?驮兽当然不会开口说话,但它打了个响鼻,从背上甩下一本小册子,册子上写着“徒步游遍泰拉!下一站:卡兹戴尔遗址。诚聘向导,报酬面议!”。册子内页盖满了印戳,最靠后的一枚来自谢拉格的某个雪山邮局。
|选项={{ISEvent/choose|simple|与驮兽同行|population|desc1=可携带干员{{color|#28bfe5|+1}},满载货物的驮兽加入队伍|desc2={{mdi|information}}同时获得收藏品{{color|#28bfe5|牧驮人的摇铃}}|dest=1}}
{{ISEvent/choose|simple|索要定金|gold|desc1=获得{{color|#28bfe5|5}}源石锭,满载货物的驮兽加入队伍|desc2={{mdi|information}}同时获得收藏品{{color|#28bfe5|牧驮人的摇铃}}|dest=2}}
{{ISEvent/choose|simple|快步走开|leave|desc1=说不定是坏人假扮的!|dest=3}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_17|驮兽旅行家|你费了些力气才把驮兽从那处废墟上弄下来。它低下头,在你的裤脚处蹭了蹭,似乎很是高兴。你从它背上的行李中找到一个摇铃,上面刻着一行字:“向伟大的驮兽探险家——胡萝卜致敬”。你一边走一边晃动摇铃,驮兽胡萝卜便听话地跟了上来。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_17|驮兽旅行家|你费了些力气才把驮兽从那处废墟上弄下来,并说明了你需要一笔定金的原因。驮兽抖抖肩膀,从行李中掉出几块源石锭和一个摇铃。你弯腰去捡源石锭时,正巧看到它护目镜的边框上刻着“胡萝卜”,这似乎是它的名字。你喊了几遍,它没有反应。直到你晃动摇铃,它才慢慢跟了上来。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_17|驮兽旅行家|走出一段距离后,你不禁回望了一眼——驮兽还站在那处城墙废墟的顶端。它没有看向你,也没有其他动作。你愈发确信这是一场骗局,听说卡兹戴尔陷落地下后,这附近便出现了很多骗子,专挑前来探险寻宝的外地人下手,只是没想到他们的手段竟已演化到这种地步。}}
|事件normal4={{ISEvent/scene|开始|Avg_pic_rogue_4_18|深坑秘宝|一个满身泥土的萨卡兹拦住了你,问你想不想开开眼界。“这些货可都是我亲手从卡兹戴尔的最深层挖出来的,真正的老坑宝贝,以前都是王庭御用的器物。”他掏出一堆发光的石头,还把石头上的王庭印记指给你看。见你迟疑不定,他咬咬牙,承诺会附赠一张“失落卡兹戴尔纪念馆”的门票。“这可是热门景点,你赚大了!”
|选项={{ISEvent/choose|custom|好吧,我要一个|思绪_无话可说|desc1=消耗{{color|#ff6e6e|5}}源石锭,获得遗愿{{color|#28bfe5|无话可说}}(平凡的愿望,解读时更容易获得收藏品)|dest=1}}
{{ISEvent/choose|custom|胡萝卜,你觉得呢?|思绪_无话可说|desc1=持有{{color|#28bfe5|牧驮人的摇铃}},获得遗愿{{color|#28bfe5|无话可说}}(平凡的愿望,解读时更容易获得收藏品)|desc2={{mdi|information}}仅在持有“牧驮人的摇铃”时出现|dest=2}}
{{ISEvent/choose|simple|这不就是普通的石头?休想骗我|battle|desc1=说不定是有人假扮的!|dest=3}}
{{ISEvent/choose|simple|我对这玩意没兴趣|leave|desc1=离开|dest=4}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_18|深坑秘宝|你交出源石锭,如愿以偿地拿到了一块发光的石头。这东西握在手里轻飘飘的,似乎没有任何重量,但盯着它看时,你又觉得眼睛酸痛发涩。你索要他刚才承诺的纪念馆门票,他却指着你手里的石头,笑着说:“这不就是吗?”}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_18|深坑秘宝|“胡萝卜?那个驮兽探险家?”他瞪圆了眼睛,“原来你们是来寻宝的呀,欢迎欢迎!”你从他口中得知,卡兹戴尔大深坑边上已经建立起了探险家协会,前来寻宝的人带动了这里各行各业的发展,不少当地人摇身一变成了专业的深坑向导。“这个就送你了。需要下坑的时候记得来找我给你们打折。”}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_18|深坑秘宝|“你们要是探险队的,我说不定还客气几分......”满身泥土的萨卡兹不耐烦地挥挥手,一群手持锄头和镰刀的萨卡兹将你们团团围住。“他们身上肯定有不少肥油,全刮出来!”
|选项={{ISEvent/choose|simple|进入战斗|battle|desc1=遭遇一场战斗|desc2={{mdi|information-variant-circle}} 随机出现以下'''普通作战'''中的一个:[[ISW-NO 大棋一盘|{{color|orange|ISW-NO 大棋一盘}}]] / [[ISW-NO 血脉之辩|{{color|orange|ISW-NO 血脉之辩}}]] / [[ISW-NO 遮天蔽日|{{color|orange|ISW-NO 遮天蔽日}}]] / [[ISW-NO 劳作的清晨|{{color|orange|ISW-NO 劳作的清晨}}]] / [[ISW-NO 溃乱魔典|{{color|orange|ISW-NO 溃乱魔典}}]] / [[ISW-NO 盲盒商场|{{color|orange|ISW-NO 盲盒商场}}]]}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_18|深坑秘宝|你执意离去,对方没有阻拦。擦肩而过时,你注意到他的身上虽然沾满泥土,但指缝里却异常干净。你联想到了什么,于是加快了脚步。}}
|事件normal5={{ISEvent/scene|开始|Avg_pic_rogue_4_19|热门景点|一个造型奇特的拱门出现在你的视野内。锈迹斑斑的金属架上焊着“失落之城卡兹戴尔”几个大字。简陋的售票窗口无人排队,里面坐着一个睡眼惺忪的孩童,他瞥了你一眼,说:“买门票送魔王私藏纪念品,三‘嘎嘣’一个,概不退换。”可是你把口袋翻了个遍,也没找到叫“嘎嘣”的玩意。
|选项={{ISEvent/choose|simple|这可以代替门票吗?|relic|desc1=失去{{color|#ff6e6e|无话可说}},获得一件随机收藏品|desc2={{mdi|information}}仅在持有“无话可说”时出现|dest=1}}
{{ISEvent/choose|simple|从旁边的小路溜进去|unknown|desc1=没票就不能看了吗?|dest=1}}
{{ISEvent/choose|simple|无奈离开|leave|desc1=我怎么一个“嘎嘣”都没有?|dest=2}}
}}
{{ISEvent/scene|参观|Avg_pic_rogue_4_19|热门景点|拱门背后是一道蜿蜒向下的阶梯,两边潦草的壁画讲述着卡兹戴尔在一夜之间陷落地下的故事。越往深处,壁画的内容就愈发荒诞不经。不知多久后,你抵达了一处观景平台,借着火把的光亮,你看见了断崖上用茅草和树枝搭成的“宫殿”,还有旁边的一个歪斜的告示牌,写着“魔王戴冠仪式处,同款王冠售票处有售”。
|选项={{ISEvent/choose|simple|去找售票员要个说法|battle|desc1=这是什么坑人的假景区!|dest=3}}
{{ISEvent/choose|simple|憋着怒气离开|leave|desc1=吃一堑长一智,再也不来了!|dest=4}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_19|热门景点|你走出几步,越想越纳闷,“嘎嘣”到底是什么?你怎么从来没听说过?你决定折回去问个清楚。售票处的小孩听完了你的问题,却哈哈大笑起来:“‘嘎嘣’就是‘嘎嘣’,连‘嘎嘣’都没有,那你肩膀上面是什么?”听完这话,你只觉得头晕脑胀,脖子上似乎有几百公斤重。你赶紧离开了,不敢继续打听。}}
{{ISEvent/scene|战斗|Avg_pic_rogue_4_19|热门景点|你怒气冲冲地回到售票处,里面的人换成了一个身上沾满泥土的萨卡兹。他一边吹口哨一边抠着指甲,根本就没把你的投诉听进去。你要求他赔偿你精神损失费,他却掏出一把刀插在桌子上:“该看的都看了,想退款?那就别怪老子把你眼珠子挖出来做成石头!”
|选项={{ISEvent/choose|simple|进入战斗|battle|desc1=遭遇一场艰难的战斗|desc2={{mdi|information-variant-circle}} 随机出现以下'''紧急作战'''中的一个:[[ISW-NO 寄人城池下|{{color|orange|ISW-NO 寄人城池下}}]] / [[ISW-NO 计划耕种|{{color|orange|ISW-NO 计划耕种}}]] / [[ISW-NO 巫咒同盟|{{color|orange|ISW-NO 巫咒同盟}}]] / [[ISW-NO 通道封锁|{{color|orange|ISW-NO 通道封锁}}]] / [[ISW-NO 无罪净土|{{color|orange|ISW-NO 无罪净土}}]] / [[ISW-NO 浮空城接舷战|{{color|orange|ISW-NO 浮空城接舷战}}]] / [[ISW-NO 残损学院|{{color|orange|ISW-NO 残损学院}}]]}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_19|热门景点|路过售票处时,你发现里面的人换成了一个身上沾满泥土的萨卡兹。你觉得他有些眼熟,但你不想再跟这里的人纠缠,只当他不存在。走出一段距离后,你忽然听到背后传来一阵闷响,回头看去,拱门已消失,只剩地上一个深坑。}}
|事件normal6={{ISEvent/scene|开始|Avg_pic_rogue_4_20|修正时代|“你看,萨卡兹们编写了无数本预言书,这也是其中一本。一如既往,它上面有家园的毁灭,有仇敌的残忍......等等,还有些其他的倒霉破事......这写的不全是最近的我吗?!难道这是我的转运书?如果我加点好内容上去,是不是就能不再倒霉?”
|选项={{ISEvent/choose|simple|“假如源石可以吃......”|disaster|desc1=消耗{{color|#ff6e6e|5}}源石锭,进入繁荣年代|dest=1}}
{{ISEvent/choose|simple|“假如大地合为一国......”|disaster|desc1=消耗{{color|#ff6e6e|1缕}}构想,进入繁荣年代|dest=1}}
{{ISEvent/choose|simple|“假如我明天遇到......”|leave|desc1=“可我愿受预言摆布吗?”|dest=2}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_20|修正时代|“......最后我们都过上了好日子,完!”}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_20|修正时代|“还是不写了,一点霉运有什么大不了的!”}}
|事件normal7={{ISEvent/scene|开始|Avg_pic_rogue_4_21|卫国前夜|卡兹戴尔城内,人们正在为了抵抗联军入侵而加固城防。就在你固定好路障后,一旁的萨卡兹凑了过来。“嘿,朋友,刚刚城里发生了些事,想不想听听?”
|选项={{ISEvent/choose|simple|怎么了?|population|desc1=获得{{color|#28bfe5|5}}希望,出现不同的险路恶敌战斗|dest=1}}
{{ISEvent/choose|simple|算了,我正忙着呢|population|desc1=获得{{color|#28bfe5|2}}希望|dest=2}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_21|卫国前夜|“听说那个可怕的菲林将军把乌萨斯人也拉了过来,我们得面对四国联军了......哎别跑,听我说完啊。我在城里的兄弟说,两位新魔王已经带领萨卡兹们做好了准备,歌利亚战士换上了新的铠甲,女妖的歌声已经响起。我有信心,我们会赢的。”}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_21|卫国前夜|你背起一个沙袋走向远处。你相信,萨卡兹们都相信,在准备妥当后,你们一定能抵挡住这些入侵者......在那之后,老魔王陨落,新魔王诞生,六英雄在卫国战争中抵挡住了三国联军,特雷西斯斩杀了领头的菲林将军。这些都是熟悉的场景,它们自然地融入了你的故事。}}
|事件normal8={{ISEvent/scene|开始|Avg_pic_rogue_4_23|变幻之城|卡兹戴尔的城市结构并不遵循常理,道路随着直觉延伸,景色伴随潜意识转换,行走这一动作在时空中更像是一种思考。因此,身处其间的人时常会迷失,而这座城市本身,正兴致盎然地看着无数茫然的旅人。
|选项={{ISEvent/choose|simple|尝试理解城市|unknown|desc1=消耗{{color|#ff6e6e|2缕}}构想|dest=1}}
{{ISEvent/choose|simple|尝试讨好城市|gold|desc1=消耗{{color|#ff6e6e|1缕}}构想,获得{{color|#28bfe5|10}}源石锭|dest=2}}
{{ISEvent/choose|simple|求助土石之子|leave|desc1=离开|dest=3}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_23|变幻之城|你用自己的构想拆解了这座城市的循环逻辑——在可认知的空间中,创造性被压缩凝结成具象的砖瓦铺满城市。每一丝念想都会催动它的变化,因此任何改变都会彻底重塑城市的面貌。当你将这份理解运用于眼前的道路时,卡兹戴尔将你带去了一个熟悉的地方——
|选项={{ISEvent/choose|simple|我回去了?|teleport|desc1=进入诡谲断章}}
{{ISEvent/choose|desc|desc1={{mdi|information}}进入[[萨卡兹的无终奇语#区域|{{color|orange|Ⅳ 诡谲断章}}]]}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_23|变幻之城|在将自己的构想献给城市后没多久,你便找到了一些资源,这究竟是前人探索时留下的遗产,还是这座城市本身的......“赏赐”?}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_23|变幻之城|土石之子建造了这座城市,自然也对城市的结构一清二楚,在她的带领下,你很快就从这里脱身了。}}
|事件normal9={{ISEvent/scene|开始|Avg_pic_rogue_4_22|未来猎手|一位独眼巨人撕开裂隙,来到了你的面前。“你好。”她很有礼貌,言辞中却布满荆棘。“你带着它,对吗?那把改变未来的钥匙。”她虽没有看着你,但她的视线早已将你洞穿。“请交给我吧,我会带去改变,我会抹消我所见的悲惨未来,请不要拒绝我。”
|选项={{ISEvent/choose|simple|拒绝她|battle|desc1=我还无法信任你|dest=1}}
{{ISEvent/choose|simple|拿出希望的画作|hp|desc1=失去{{color|#ff6e6e|希望时代的涂鸦}},获得{{color|#28bfe5|8}}目标生命上限|desc2={{mdi|information}}仅在持有“希望时代的涂鸦”时出现|dest=2}}
{{ISEvent/choose|item|拿出仇恨的矛头|高级物资配给券|desc1=失去{{color|#ff6e6e|死仇时代的恨意}},获得进阶券<br>{{color|#28bfe5|高级物资配给券}}|desc2={{mdi|information}}仅在持有“死仇时代的恨意”时出现|dest=3}}
{{ISEvent/choose|simple|转头就跑|leave|desc1=离开}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_22|未来猎手|“抱歉,即使诉诸暴力,我也一定要得到它。”独眼巨人挥动法杖,消失在了迷雾中,随后迷雾消散,一场战争被映射到此处,将你们卷入其中。
|选项={{ISEvent/choose|simple|进入战斗|battle|desc1=遭遇一场艰难的战斗|desc2={{mdi|information-variant-circle}} 随机出现以下'''紧急作战'''中的一个:[[ISW-NO 寄人城池下|{{color|orange|ISW-NO 寄人城池下}}]] / [[ISW-NO 计划耕种|{{color|orange|ISW-NO 计划耕种}}]] / [[ISW-NO 巫咒同盟|{{color|orange|ISW-NO 巫咒同盟}}]] / [[ISW-NO 通道封锁|{{color|orange|ISW-NO 通道封锁}}]] / [[ISW-NO 无罪净土|{{color|orange|ISW-NO 无罪净土}}]] / [[ISW-NO 浮空城接舷战|{{color|orange|ISW-NO 浮空城接舷战}}]] / [[ISW-NO 残损学院|{{color|orange|ISW-NO 残损学院}}]]}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_22|未来猎手|“和平,互助,多么美妙的幻象,内里蕴含的色彩足够倾覆任何晦暗。有了它,我就能将预见的黑暗未来抹消在时光中,谢谢你。”她为你留下了一段生命的奥秘,随后就消失在了裂隙中。}}
{{ISEvent/scene|开始|Avg_pic_rogue_4_22|未来猎手|“无止境的仇恨,暴力的结晶。我可以用它屠戮所有预见的黑暗未来,让独眼巨人所能预见的一切苦难成为谎言。谢谢你。”她为你留下了一些已逝预言的片段,随后就消失在了裂隙中。}}
|事件normal10={{ISEvent/scene|开始|Avg_pic_rogue_4_2|造物倒影|一扇门的轮廓在墙上显现,缝隙中不断地向外渗出巫术能量。这是一种窥探的手段?是连接时空的桥梁?还是某位大能降临的先兆?这些问题都不重要,重要的是,你将如何对待它。
|选项={{ISEvent/choose|simple|打开它的门扉|unknown|desc1=该怎样触碰其端末?|dest=1}}
{{ISEvent/choose|simple|撞碎它的载体|unknown|desc1=该如何破坏这幻影?|desc2={{mdi|information}}仅在持有“死仇时代的恨意”时出现|dest=2}}
{{ISEvent/choose|simple|记录它的存在|fragment|desc1=获得{{color|#28bfe5|2缕}}特殊的灵感<br>{{color|#28bfe5|巫术}}(使用后,下一次战斗中召唤“门”)|dest=3}}
{{ISEvent/choose|simple|远离它|leave|desc1=该如何忘记那一瞥?|dest=4}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_2|造物倒影|这件造物被设下了禁制,想要打开它,智慧与暴力都不可或缺。
|选项={{ISEvent/choose|simple|进入战斗|battle|desc1=遭遇一场[[ISW-SP 继承|{{color|orange|特殊的战斗}}]]}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_2|造物倒影|这件造物被设下了禁制,想要打开它,智慧与暴力都不可或缺。
|选项={{ISEvent/choose|simple|进入战斗|battle|desc1=遭遇一场艰难的[[ISW-SP 继承|{{color|orange|特殊战斗}}]]|desc2={{mdi|information-variant-circle}} 升级为'''紧急作战'''}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_2|造物倒影|你对这扇门的想法化作灵感留在了脑中。很明显,它是一件巫术造物,你随时能在故事中将之化为现实。至于激活它会发生什么,你一无所知。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_2|造物倒影|即使是在自己想象的故事中,也不应当放纵自己的好奇心。你决定离这奇怪的东西远点。}}
|事件normal11={{ISEvent/scene|开始|Avg_pic_rogue_4_40|财源广进|这座金碧辉煌的庙宇里供奉着一座玄铁打造的阿纳萨塑像,听过路参拜的先民说,玄铁三身天王是掌管商运财运的大能,只要虔心祈祷或随喜结缘,就能得到天王的祝福,从而财源广进。
|选项={{ISEvent/choose|simple|奉上一些财物|relic|desc1=消耗{{color|red|8}}源石锭,获得{{color|#28bfe5|2件}}随机收藏品|dest=1}}
{{ISEvent/choose|simple|奉上所有财物|relic|desc1=消耗{{color|red|所有}}源石锭,获得{{color|#28bfe5|3件}}随机收藏品|dest=1}}
{{ISEvent/choose|simple|虔诚祈祷|relic|desc1=持有{{color|#28bfe5|希望时代的涂鸦}},获得{{color|#28bfe5|3件}}随机收藏品|desc2={{mdi|information}}仅在持有“希望时代的涂鸦”时出现|dest=1}}
{{ISEvent/choose|simple|多一事不如少一事|leave|desc1=离开|dest=2}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_40|财源广进|你刚参拜完毕,一位白发库兰塔居士就托着裹有黄绸的方盒出现在你面前,将这来自庙宇的谢礼赠予了你。她返回后院时,你无意间瞥见了院子里全是摆放齐整的黄绸盒子。令信仰与财富能够互相置换,看来,这就是寺庙香火旺盛的真正原因。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_40|财源广进|你根本不认识这里供奉的阿纳萨,对两位蓝发居士的解说也不感兴趣,在寺庙里草草逛了一圈就离开了。}}
|事件normal12={{ISEvent/scene|开始|Avg_pic_rogue_4_41|表达欲|死魂灵突然就出现在了你的故事里,他们横冲直撞,把天空撕下一片贴在大地上,又原地建起一座大“门”,无数“门”喷涌而出,将生物传去各个时间。再这样下去,不等先祖们闹完,你就得先被他们逼疯。
|选项={{ISEvent/choose|simple|再忍一忍|relic|desc1=获得一件较为稀有的收藏品|dest=1}}
{{ISEvent/choose|collection|奋起反抗|232|desc1=消耗{{color|red|2缕}}构想,获得收藏品{{color|#28bfe5|滚动先祖}}|dest=2}}
{{ISEvent/choose|simple|让锡人交涉|leave|desc1=离开|dest=3}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_41|表达欲|在你的退让下,这个故事很快被撕扯成了虚无,再也没有东西可以毁坏的时候,死魂灵们才心满意足地消失了,只给你留下一块故事的残骸。你叹了口气,捡起这块残骸,开始想象新的故事。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_41|表达欲|在锡人的帮助下,你耗费了一些构想将这个故事化作囚笼。死魂灵们胡闹完正准备离开,才发现自己被困在了死循环中。你将这个满载先祖的圆球放入了行囊,自认为解决了他们惹的麻烦,而他们也在不断的滚动中等待时机,为下一次肆意“表达”做准备。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_41|表达欲|在锡人的交涉下,死魂灵们很快就离开了。}}
|事件bat1={{ISEvent/scene|开始|Avg_pic_rogue_2_32|阴魂不散|周遭的景象已经变化了许多次,然而每一次,你都能听到居民们提及同一条流言:一个不停抽泣的冤魂,徘徊在卡兹戴尔的街道上......在听了无数次后,你终于抑制不住自己的好奇心,前去探访其源头。然后你就发现......那只是只迷路的佩洛。
|选项={{ISEvent/choose|simple|赶跑他|unknown|desc1=我受够了!|dest=1}}
{{ISEvent/choose|simple|问他为什么哭|leave|desc1=多一事不如少一事|dest=2}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_2_32|阴魂不散|听着他的抽泣声,你突然意识到一件事:你对这声音有印象。这只佩洛似乎......一直在跟踪你们?!你想询问他原因,他却一直畏畏缩缩不肯开口,很是烦人。
|选项={{ISEvent/choose|simple|那就只能打跑他了|battle|desc1=遭遇一场[[ISW-SP 失败的试胆|{{color|orange|特殊的战斗}}]]}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_2_32|阴魂不散|每次都想要鼓起勇气,每次都回到原点,无数故事中的他都惊人地一致,扭扭捏捏,哭哭啼啼。你帮不了他,只能安慰安慰他,然后转身离去。}}
|事件bat2={{ISEvent/scene|开始|Avg_pic_rogue_2_16|不请自来|这只鸭子就这样突兀地出现在故事里,留下没头没尾的喧嚣,还有那可笑的蹼印。他到底是怎么出现的,他究竟想要干什么?
|选项={{ISEvent/choose|simple|我只想打一顿|unknown|desc1=我受够了!|dest=1}}
{{ISEvent/choose|simple|算了,习惯了|leave|desc1=多一事不如少一事|dest=2}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_2_16|不请自来|他似乎很熟悉这座城市,闪转腾挪间,你连一根毛都没摸到,这让你更加生气。
|选项={{ISEvent/choose|simple|鸭子,别逃!|battle|desc1=遭遇一场[[ISW-SP 信号灯|{{color|orange|特殊的战斗}}]]}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_2_16|不请自来|你懒得理会这只鸭子,自顾自地离开了。没过多久,他也摇晃着消失,留下一串叮叮当当的响声,一遍遍回荡在城中。难道他也是这座城市的一部分?一只鸭子?}}
|事件bat3={{ISEvent/scene|开始|Avg_pic_rogue_2_17|沉默拳王|这个乌萨斯人出现在故事里,完全是因为他那位吵吵闹闹的鸭子老板。他不怎么用言语回应人,因为大部分事情,举起拳头就可以搞定。
|选项={{ISEvent/choose|simple|举起拳头!|unknown|desc1=我受够了!|dest=1}}
{{ISEvent/choose|simple|举起矛头!|unknown|desc1=持有{{color|#28bfe5|死仇时代的恨意}},我受够了!|desc2={{mdi|information}}仅在持有“死仇时代的恨意”时出现|dest=3}}
{{ISEvent/choose|simple|离他远点|leave|desc1=多一事不如少一事|dest=2}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_2_17|沉默拳王|你得让乌萨斯人搞清楚一件事情:这里是卡兹戴尔,你的地盘。要论暴力,你才应该是这里最纯粹的暴力。
|选项={{ISEvent/choose|simple|谁挨拳头还不一定呢|battle|desc1=遭遇一场[[ISW-SP 劫虚济实|{{color|orange|特殊的战斗}}]]}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_2_17|沉默拳王|见你远去,他也没什么反应,只是一如既往地抱胸站在那里,看着他的老板上蹿下跳,等着老板跳上肩膀,载着老板消失在街道上。}}
{{ISEvent/scene|结束|Avg_pic_rogue_2_17|沉默拳王|你手上那根缠绕着尖刺的矛头吸引了鸭爵的注意,他没有和你谈判,而是直接让乌萨斯人来“拿”。
|选项={{ISEvent/choose|simple|我要是不给呢?|battle|desc1=遭遇一场艰难的[[ISW-SP 劫虚济实|{{color|orange|特殊战斗}}]]|desc2={{mdi|information-variant-circle}} 升级为'''紧急作战'''}}
}}
|事件bat4={{ISEvent/scene|开始|Avg_pic_rogue_2_18|气打鸭处来|这一回,鸭子和他的同伙们都在这里。脚踩着黄金......石块......书卷......不对,他们脚下的东西为什么一直在变?这鸭子用了什么巫术?他到底要干什么?
|选项={{ISEvent/choose|simple|阻止他|unknown|desc1=我受够了!|dest=1}}
{{ISEvent/choose|simple|准备把鸭子刺个对穿|unknown|desc1=持有{{color|#28bfe5|死仇时代的恨意}},我受够了!|desc2={{mdi|information}}仅在持有“死仇时代的恨意”时出现|dest=3}}
{{ISEvent/choose|simple|随他去吧|leave|desc1=多一事不如少一事|dest=2}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_2_18|气打鸭处来|看到你不断靠近,鸭子的手下也严阵——等等,怎么有人逃走了?
|选项={{ISEvent/choose|simple|别小看我啊!|battle|desc1=遭遇一场[[ISW-SP 鸭速公路|{{color|orange|特殊的战斗}}]]}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_2_18|气打鸭处来|除了有点烦人,他也没真给你造成什么阻碍,何必跟他计较呢?你看着他在不断变化的杂物堆上谈论着卡兹戴尔商业帝国的宏图伟业,笑了笑离开了。但你没有注意到的是,周边的装饰物也在不断变化,虽然还未定型,但一眼就能看出来,全部都是鸭爵的脑袋。}}
{{ISEvent/scene|结束|Avg_pic_rogue_2_18|气打鸭处来|鸭爵似乎很忌惮你手上的矛头,他罕见地招呼手下严阵以待。然而,现在准备已经来不及了。你决定将全部的暴力和愤恨倾注在它身上。
|选项={{ISEvent/choose|simple|有什么遗言吗?|battle|desc1=遭遇一场[[ISW-SP 鸭速公路|{{color|orange|艰难的特殊战斗}}]]|desc2={{mdi|information-variant-circle}} 升级为'''紧急作战'''}}
}}
|事件bat5={{ISEvent/scene|开始|Avg_pic_rogue_4_1|敬虔之人|虔诚的萨科塔修女跪在圣像前轻声祈祷,丝毫没有注意到你们的到来。
|选项={{ISEvent/choose|simple|接近修女|unknown|desc1=有些人不应当在这里|dest=1}}
{{ISEvent/choose|simple|狩猎死仇|unknown|desc1=持有{{color|#28bfe5|死仇时代的恨意}},有些人不应当在这里|desc2={{mdi|information}}仅在持有“死仇时代的恨意”时出现|dest=3}}
{{ISEvent/choose|simple|谨慎观察|leave|desc1=多一事不如少一事|dest=2}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_1|敬虔之人|你走到修女背后,还在犹豫应当怎么处理这个敌人,然而一声铳响打破了你的疑虑,那位修女的身形消散在眼前,萨科塔将你团团包围。好吧......原来这是个陷阱。
|选项={{ISEvent/choose|simple|那就来吧!|battle|desc1=遭遇一场[[ISW-SP 战场侧面|{{color|orange|特殊的战斗}}]]}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_1|敬虔之人|出现在卡兹戴尔的萨科塔,带有长角的圣像,这诡异的场景让你没有急于行动。很快,修女结束了祈祷向你走来。你看清楚了,那是个纯粹的萨科塔,但她放在你手心的,却是个萨卡兹泥人。她是在为两族的和解祈祷?这有可能吗?}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_1|敬虔之人|对于仇敌你自然没有怜悯之心,你掷出武器,它却穿过修女,砸毁了圣像。霎时间,阴影中浮现出萨科塔们的身姿,而那位修女,早已消失得无影无踪。
|选项={{ISEvent/choose|simple|你们好,猎物|battle|desc1=遭遇一场[[ISW-SP 战场侧面|{{color|orange|艰难的特殊战斗}}]]|desc2={{mdi|information-variant-circle}} 升级为'''紧急作战'''}}
}}
<!--兴致盎然-->
|事件ent1={{ISEvent/scene|etype=兴致盎然|开始|Avg_pic_rogue_4_24|解读变迁|“远逐者”的启明永远改变了提卡兹的进化进程,然而,光环与光翼依旧耗费了许多时间才出现在每个提卡兹身上。在这段时间里,黑色的同族与白色的同族都以各自的方式留下了记录。你找到了一座堆满文献的图书馆,准备解读一些当时的资料,为今后的探索做准备。
|选项={{ISEvent/choose|simple|使用共感模拟器|unknown|desc1=消耗{{color|#ff6e6e|2}}源石锭|dest=1}}
{{ISEvent/choose|simple|运用传统巫术|unknown|desc1=消耗{{color|#ff6e6e|1}}目标生命|dest=1}}
{{ISEvent/choose|simple|离开|leave|desc1=多一事不如少一事|dest=2}}
}}
{{ISEvent/scene|结果|Avg_pic_rogue_4_24|解读变迁|{{mdi|information}}以下结果和选项随机出现
|选项={{ISEvent/choose|desc|desc1=【RESULT 1】<br>巫术解析后的资料为你展现了那一时期广泛的冲突情况——不是所有提卡兹都愿意接受转化,这种抗拒很快就演化为了暴力冲突,层出不穷的对抗方式让你记忆犹新。}}
{{ISEvent/choose|simple|再读一本|fragment|desc1=获得{{color|#28bfe5|1缕}}随机思绪|dest=3}}
{{ISEvent/choose|desc|desc1=【RESULT 2】<br>巫术解析后的资料为你展现了那一时期广泛的冲突情况——不是所有提卡兹都愿意接受转化,这种抗拒很快就演化为了暴力冲突,层出不穷的对抗方式让你记忆犹新。}}
{{ISEvent/choose|simple|再读一本|fragment|desc1=获得{{color|#28bfe5|1缕}}较为稀有的思绪|dest=3}}
{{ISEvent/choose|desc|desc1=【RESULT 3】<br>以错误的方式解析了错误的资料,结果当然是——一无所获。}}
{{ISEvent/choose|simple|再读一本|leave|desc1=我还就不信了!|dest=3}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_24|解读变迁|既然结果已经确定了,那过程又有什么重要的?}}
{{ISEvent/scene|再读一本|Avg_pic_rogue_4_24|解读变迁|仍有许多文献混杂在一起,等待着被解读。
|选项={{ISEvent/choose|simple|使用共感模拟器|unknown|desc1=消耗{{color|#ff6e6e|2}}源石锭|dest=1}}
{{ISEvent/choose|simple|运用传统巫术|unknown|desc1=消耗{{color|#ff6e6e|1}}目标生命|dest=1}}
{{ISEvent/choose|simple|已经足够了|leave|desc1=我需要时间来消化这些知识......|dest=2}}
}}
|事件ent2={{ISEvent/scene|开始|Avg_pic_rogue_4_38|聚思成塔|“都是些没人要的想法,堆在这里怪可惜的。”一个札拉克站在废物堆上,手拿清单核对着什么。“老板要我把它们打包带走,如果你有什么想要的,就赶紧挑吧。”
|选项={{ISEvent/choose|simple|仔细翻找|unknown|desc1=消耗{{color|#ff6e6e|2}}希望及等量上限|dest=1}}
{{ISEvent/choose|simple|随便翻找|unknown|desc1=消耗{{color|#ff6e6e|1}}希望及等量上限|dest=1}}
{{ISEvent/choose|simple|算了|leave|desc1=多一事不如少一事|dest=2}}
}}
{{ISEvent/scene|结果|Avg_pic_rogue_4_38|聚思成塔|{{mdi|information}}以下结果随机出现
|选项={{ISEvent/choose|desc|desc1=【RESULT 1】<br>已臻极致的创造显现在这块化石中,剥开风化的石块,你得到了一件造物。札拉克看了眼清单,打上了一个钩。}}
{{ISEvent/choose|simple|真不错|relic|desc1=获得一件随机收藏品|dest=3}}
{{ISEvent/choose|desc|desc1=【RESULT 2】<br>饱含财宝的金翼魔之梦在你手中炸开,看着散落一地的源石锭,札拉克小小的眼睛里满是光亮。}}
{{ISEvent/choose|simple|发财了!|gold|desc1=获得{{color|#28bfe5|7}}源石锭|dest=3}}
{{ISEvent/choose|desc|desc1=【RESULT 3】<br>你找到了一段被遗忘的思辨,其中的某些观点充实了你的思维。但札拉克只是瞥了一眼你手上的想法,便在清单上划了一道。}}
{{ISEvent/choose|simple|原来如此|fragment|desc1=获得{{color|#28bfe5|1缕}}随机思绪|dest=3}}
{{ISEvent/choose|desc|desc1=【RESULT 4】<br>两块无用的石头碰在一起,碎裂,空间扭曲,而后掉下了一个盒子。札拉克看得一头雾水,在清单上记录下了什么。}}
{{ISEvent/choose|simple|赚了|gold|desc1=获得{{color|#28bfe5|2}}源石锭|dest=3}}
{{ISEvent/choose|desc|desc1=【RESULT 5】<br>看你并没翻出什么神秘的东西,札拉克在清单上划去了什么。}}
{{ISEvent/choose|simple|倒霉......|unknown|desc1=要不再试一次?|dest=3}}
{{ISEvent/choose|desc|desc1=【RESULT END】<br>“等等,你抓我干什么?喂,喂,清醒点,不然我要动手了!”}}
{{ISEvent/choose|simple|所以呢?|unknown|desc1=继续揉搓它的脸蛋|dest=4}}
{{ISEvent/choose|simple|哦......对不起|leave|desc1=离开|dest=5}}
}}
{{ISEvent/scene|结果|Avg_pic_rogue_4_38|聚思成塔|你并不想在这堆没有价值的东西上耗费时间,于是转身离开了。}}
{{ISEvent/scene|结果|Avg_pic_rogue_4_38|聚思成塔|这堆被遗弃的想法里或许仍有可用之物,要再翻翻吗?
|选项={{ISEvent/choose|simple|继续翻找|unknown|desc1=消耗{{color|#ff6e6e|2}}希望及等量上限|dest=1}}
{{ISEvent/choose|simple|随便挑挑|unknown|desc1=消耗{{color|#ff6e6e|1}}希望及等量上限|dest=1}}
{{ISEvent/choose|simple|算了|leave|desc1=多一事不如少一事|dest=2}}
}}
{{ISEvent/scene|结果|Avg_pic_rogue_4_38|聚思成塔|你不仅没把他放下,还抓着他的脸捏圆搓扁。于是,理所当然地,他生气了,从你手中挣脱,摁下了一个红色按钮,随后钻进了废物堆,消失得无影无踪。
|选项={{ISEvent/choose|simple|怎么有无人机的声音?|battle|desc1=遭遇一场[[ISW-SP 玩具的报复|{{color|orange|特殊的战斗}}]]}}
}}
{{ISEvent/scene|结果|Avg_pic_rogue_4_38|聚思成塔|你把札拉克放下,然后给他道了歉。在你离开后没多久,浩浩荡荡的无人机机群便把废物堆给搬走了。}}
|事件ent3={{ISEvent/scene|开始|Avg_pic_rogue_1_12|价高者得|一群人围在一顶帐篷边上,他们神色各异,或是狂喜,或是悔恨痛哭。你也想过去看看热闹,但高普尼克拦住了你。按照他的说法,鸭爵正在举行一场拍卖会,目前只剩下最后一件压轴秘宝,要想参与,得先缴纳一笔入场费。“仅限成功人士。”他说完就紧紧闭上了嘴。
|选项={{ISEvent/choose|simple|我当然是成功人士!|unknown|desc1=消耗{{color|#ff6e6e|5}}源石锭|dest=1}}
{{ISEvent/choose|simple|那还是算了吧|leave|desc1=转身离去|dest=2}}
}}
{{ISEvent/scene|出价|Avg_pic_rogue_1_12|价高者得|高普尼克带领你进入了帐篷。他交给你一个出价牌,并告诉你,压轴秘宝藏于幕后,起拍价五个源石锭,每次加价也是五个,价高者得。你看到了坐席当中的鸭爵,难道他既是庄家又是买家?你连忙向高普尼克询问,但高普尼克只是敲槌示意拍卖开始。下一秒,鸭爵举起牌子,价格来到了十个源石锭。
|选项={{ISEvent/choose|simple|举牌加价5源石锭|unknown|desc1=将出价提升至{{color|#28bfe5|15}}源石锭|dest=3}}
{{ISEvent/choose|simple|那还是算了吧|leave|desc1=转身离去|dest=2}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_1_12|价高者得|你对口袋里的每一块源石锭都有所安排——绝不包括挥霍在这里。}}
{{ISEvent/scene|加价至15|Avg_pic_rogue_1_12|价高者得|{{mdi|information}}以下结果随机出现。
|选项={{ISEvent/choose|desc|desc1=【RESULT 1】<br>你刚举起牌子,就有一盏聚光灯投向了你。鸭爵似乎对你的加价有些意外,他远远地瞥了你一眼,又将高普尼克叫到跟前,一番耳语后便不再有其他动作,任由倒数归零,木槌落下,咚——宝贝归你了!}}
{{ISEvent/choose|simple|付钱给鸭爵,拿走神秘拍品|relic|desc1=消耗{{color|#ff6e6e|15}}源石锭,获得一件收藏品|dest=4}}
{{ISEvent/choose|simple|拒绝付钱|unknown|desc1=呃,我刚才是闹着玩的......|dest=7}}
{{ISEvent/choose|desc|desc1=【RESULT 2】<br>你刚举起牌子,就有一盏聚光灯投向了你。只是还没等你适应这光亮,灯光又从你身上溜走了。你追着聚光灯的落点看去,原来鸭爵又一次举牌,将价格抬到了二十源石锭!聚光灯下的鸭爵脸上看不出什么表情,好像完全没把你当回事。}}
{{ISEvent/choose|simple|举牌加价5源石锭|unknown|desc1=将出价提升至{{color|#28bfe5|25}}源石锭|dest=5}}
{{ISEvent/choose|simple|那还是算了吧|leave|desc1=转身离去|dest=2}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_1_12|价高者得|你抱着重金拍下的宝贝走出了帐篷,看着帐篷周围那些或狂喜或痛哭的人们,你似乎有些感同身受。你低头又看了看怀中的东西,不知道自己该哭还是该笑。与此同时,又有新的路人缴纳了入场费,满怀期待地走入帐篷。你发誓你听见了鸭爵的笑声。}}
{{ISEvent/scene|加价至25|Avg_pic_rogue_1_12|价高者得|{{mdi|information}}以下结果随机出现。
|选项={{ISEvent/choose|desc|desc1=【RESULT 1】<br>你刚举起牌子,就有一盏聚光灯投向了你。鸭爵似乎对你的加价有些意外,他远远地瞥了你一眼,又将高普尼克叫到跟前,一番耳语后便不再有其他动作,任由倒数归零,木槌落下,咚——宝贝归你了!}}
{{ISEvent/choose|simple|付钱给鸭爵,拿走神秘拍品|relic|desc1=消耗{{color|#ff6e6e|25}}源石锭,获得一件收藏品|dest=4}}
{{ISEvent/choose|simple|拒绝付钱|unknown|desc1=呃,我刚才是闹着玩的......|dest=7}}
{{ISEvent/choose|desc|desc1=【RESULT 2】<br>你举牌加价,抢回了那道灯光!鸭爵似乎对你的又一次加价有些意外,他远远地瞥了你一眼。那眼神中充满了警告意味,但这并不妨碍你享受聚光灯照在身上的热烈暖意。暖意总共持续了不到十秒,鸭爵再次举牌,将价格抬到了三十个源石锭。}}
{{ISEvent/choose|simple|放上源石锭|unknown|desc1=将出价提升至{{color|#28bfe5|35}}源石锭|dest=6}}
{{ISEvent/choose|simple|那还是算了吧|leave|desc1=转身离去|dest=2}}
}}
{{ISEvent/scene|加价至35|Avg_pic_rogue_1_12|价高者得|吱啦——鸭爵跳下座椅,紧盯着你的脸。他比出一个手势,头顶立马传来几声惨叫,随后聚光灯又投向了他。不过鸭爵没有再出价,他将牌子摔在地上,恨恨地钻进了幕后。木槌落下,高普尼克走到聚光灯下,宣布你以三十五个源石锭的价格竞拍到了幕布后的压轴秘宝。
|选项={{ISEvent/choose|simple|付钱给鸭爵,拿走神秘拍品|relic|desc1=消耗{{color|#ff6e6e|35}}源石锭,获得一件收藏品|dest=4}}
{{ISEvent/choose|simple|拒绝付钱|unknown|desc1=呃,我刚才是闹着玩的......|dest=7}}
}}
{{ISEvent/scene|拒绝付钱|Avg_pic_rogue_1_12|价高者得|高普尼克好像没听懂你的意思,于是你又解释了一遍,并希望他不要生气。但你的解释似乎没有任何用,鸭爵气冲冲地从幕后跑出来,一把抢走了你手里的出价牌。高普尼克放下木槌,开始活动关节。
|选项={{ISEvent/choose|simple|再解释一遍|unknown|desc1=啊哦......|dest=8}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_1_12|价高者得|“闹着玩的?你说你是......”你被揪住领子提起,脚跟离开了柔软的地毯。“......闹着玩的?”鸭爵在座椅上坐下,审判般高举手臂,比出一个手势。下一刻,一群手持棍棒的打手包围了你,其中一个鼻青脸肿的打手眼中充满恨意,刚才似乎就是他在操作聚光灯。
|选项={{ISEvent/choose|simple|进入一场紧急战斗|battle|desc1=遭遇一场[[ISW-SP 信号灯|{{color|orange|特殊的战斗}}]]|desc2={{mdi|information-variant-circle}} 升级为'''紧急作战'''}}
}}
<!--先行一步-->
|事件scout={{ISEvent/scene|etype=先行一步|开始|Avg_pic_rogue_4_25|前瞻|故事的内容总在变化,它的不确定性既是甘露,也是毒药。因此当我们沉浸于当下时,总得有人走在前面,去看那陌生的未来。
|选项={{ISEvent/choose|simple|派遣人员|adventure|desc1=派遣一名干员|dest=1}}
{{ISEvent/choose|simple|留意当下|population|desc1=获得{{color|#28bfe5|2}}希望|dest=2}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_25|前瞻|你选定的人员很快就收拾完毕,消失在了视野中。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_25|前瞻|你相信自己已经能够从当下的变化中辨认出未来的蛛丝马迹。}}
<!--失与得-->
|事件sacrifice1={{ISEvent/scene|etype=失与得|开始|Avg_pic_rogue_3_43|原初异途|遭逐的猎手蹒跚游荡,银色山脉危机四伏,他似要死在这绝地了。然在那金属杀阵间,终是有着什么,冥冥中要引他出这死路。那是——
|选项={{ISEvent/choose|simple|一件奇物|sacrifice|desc1=你愿为故事舍弃什么?|desc2=''选择一个收藏品''|dest=2}}
{{ISEvent/choose|simple|一个方盒|unknown|desc1=你愿为故事创造什么?|dest=3}}
{{ISEvent/choose|simple|一片莲瓣|unknown|desc1=你愿为故事追寻什么?|dest=9}}
{{ISEvent/choose|simple|一堆金属|leave|desc1=你愿为故事遗失什么?|dest=1}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_3_43|原初异途|破损的金属无法射出火焰,于是猎手便得以安然深入山脉。往后的日子,他将戴冠为王。}}
{{ISEvent/scene|奇物|Avg_pic_rogue_3_43|原初异途|猎手取过奇物,继续向山脉深处进发......
|选项=
{{ISEvent/choose|desc|desc1=根据被交换的收藏品出现下列选项之一}}
{{ISEvent/choose|simple|命运真奇妙|unknown|desc1=获得收藏品|desc2={{mdi|information}}选择一般收藏品交换时出现|dest=8}}
{{ISEvent/choose|simple|那并非奇物,那是一个生物|relic|desc1=获得{{color|#28bfe5|2件}}随机收藏品|desc2={{mdi|information}}选择“沉眠同胞”交换时出现|dest=7}}
{{ISEvent/choose|collection|那并非奇物,那是支矛头|229|desc1=获得收藏品{{color|#28bfe5|死仇时代的恨意}}|desc2={{mdi|information}}选择“希望时代的涂鸦”或“美愿时代的留恋”交换时出现|dest=5}}
{{ISEvent/choose|collection|那并非奇物,那是幅画作|228|desc1=获得收藏品{{color|#28bfe5|希望时代的涂鸦}}|desc2={{mdi|information}}选择“死仇时代的恨意”或“美愿时代的留恋”交换时出现|dest=6}}
}}
{{ISEvent/scene|方盒|Avg_pic_rogue_3_43|原初异途|黑色方盒显现深红纹路,洁白光辉展于背脊头颅。漆黑猎手启迪之初,秩序显现,乐园将成。于是他带走方盒折返回部落,点亮同胞,共感共荣......最终,卡兹戴尔圣城屹立于大地,猎手曾经领受启示的地方,安放着他的圣角。
|选项={{ISEvent/choose|collection|那是一只角,还是一把铳?|248|desc1=获得收藏品{{color|#28bfe5|先知长角}}|dest=4}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_3_43|原初异途|那只是一只再普通不过的萨卡兹角,但你很清楚,它不属于萨卡兹,上面有世仇的气味,你绝不会弄错。可萨卡兹怎会是萨科塔?带着疑惑,你暂且把这只角留在了身边。}}
{{ISEvent/scene|结束|Avg_pic_rogue_3_43|原初异途|猎手不狩猎同类,只因同类不值得狩猎。骨骸层层累积,提卡兹竞逐效仿。而那最珍贵的战利品,都被留在了猎手拔出矛头的地方。}}
{{ISEvent/scene|结束|Avg_pic_rogue_3_43|原初异途|图像流露出的宁静和蔼给猎手留下了深刻的印象。往后的日子,他将戴冠为王,成为众生众灵的王。}}
{{ISEvent/scene|结束|Avg_pic_rogue_3_43|原初异途|那团生物苏醒、膨胀,转而变为了与猎手相同的人形,他们促膝长谈,日夜不眠,而后分道扬镳。此后,大地之上归猎手,大地之下归“猎手”,这相遇之处,便成了连结两处领地的圣坛,供奉祭祀,朝拜卫戍,皆是成双成对,直至永恒。}}
{{ISEvent/scene|结束|Avg_pic_rogue_3_43|原初异途|你放下的遗物在一瞬间成为了另外一件,而整件事的原委却跨越了千百年。那为你完成置换的萨……提卡兹不是别人,正是被称为远逐者的第一位魔王。}}
{{ISEvent/scene|莲瓣|Avg_pic_rogue_3_43|原初异途|浮于水面的花瓣指向东方,隐隐昭示着提卡兹解决困境的方向。然而猎手所能见到的,只有石钵中的清水。他饮尽清水,继续向山脉深处进发......雨过天晴,石钵已重新盈满清水,花瓣悬浮,等待着下一位访客。
|选项={{ISEvent/choose|collection|一念提卡兹,一念阿纳萨|251|desc1=消耗{{color|red|所有}}源石锭,获得收藏品{{color|#28bfe5|片瓣}}|dest=10}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_3_43|原初异途|你对那些东方的萨卡兹同族并不了解,你所知晓的,只有“青色怒火”奎隆东行后殒身异地,一部分萨卡兹就此在东方安了家。为了进一步探索这段故事的可能性,你托起石钵,走向东方。}}
<!--得偿所愿-->
|事件chest={{ISEvent/scene|etype=得偿所愿|开始|Avg_pic_rogue_4_27|巴别塔雇员|一位被称作大鲍勃的人带着家乡的亲朋好友承包了这一处巴别塔据点以供来往人员休整,但由于他们都穿着同样的装备,你也不太清楚哪个是大鲍勃本人。当你休整完毕准备出发时,一位巴别塔雇员为你送上了补给。
|选项={{ISEvent/choose|simple|我好像见过这个!|relic|desc1={{color|#28bfe5|美愿时代的留恋}}回应了你,获得收藏品|desc2={{mdi|information}}仅在持有“美愿时代的留恋”时出现,出现时会提供适配当前状况的收藏品|dest=2}}
{{ISEvent/choose|simple|我想要的是这个吗?|relic|desc1=持有{{color|#28bfe5|美愿时代的留恋}},获得收藏品|desc2={{mdi|information}}仅在持有“美愿时代的留恋”时出现|dest=2}}
{{ISEvent/choose|desc|desc1={{mdi|information}} 以上选项只同时出现一项,优先出现第一项}}
{{ISEvent/choose|simple|谢啦,兄弟|relic|desc1=获得收藏品|dest=1}}
{{ISEvent/choose|simple|谢啦,兄弟|relic|desc1=获得收藏品|dest=1}}
{{ISEvent/choose|simple|你还有其他好东西吗?|relic|desc1=获得收藏品|desc2={{mdi|information}}仅在持有“四叶草化石”时出现|dest=1}}
{{ISEvent/choose|simple|我们的故事需要这个|relic|desc1=持有{{color|#28bfe5|牧驮人的摇铃}},获得收藏品|desc2={{mdi|information}}仅在持有“牧驮人的摇铃”时出现|dest=1}}
{{ISEvent/choose|simple|我们做笔交易吧|relic|desc1=消耗{{color|red|3缕}}构想,获得{{color|#28bfe5|以上所有}}收藏品|desc2={{mdi|information}}仅在持有“美愿时代的留恋”时出现|dest=1}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_27|巴别塔雇员|有人说大鲍勃曾是个讲义气的佣兵,有人说大鲍勃曾是个豪爽的富商,还有人说大鲍勃以前只是个蹲在监狱里发霉的囚犯。但在你看来,他只是一个努力生活的普通人,一个萨卡兹们的好兄弟。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_27|巴别塔雇员|你梦寐以求的东西就在那位巴别塔雇员的手上,你只记得自己感叹过几句,从没想过会美梦成真,究竟是谁帮你实现了这个愿望呢?}}
<!--思维边界-->
|事件nportal1={{ISEvent/scene|etype=思维边界|开始|Avg_pic_rogue_4_28|待诉说的故事|你注意到了卡兹戴尔角落里的一条裂隙,一个不成熟的想法催生了它,却又没能使之完满。看着裂隙中展现出的景象,你决定——
|选项={{ISEvent/choose|simple|用构想补足缺陷|unknown|desc1=消耗{{color|#ff6e6e|2缕}}构想|dest=1}}
{{ISEvent/choose|simple|将它吸纳入思维|unknown|desc1=无法结果的斜枝,只好成为其他故事的养料|dest=2}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_28|待诉说的故事|裂隙扩张,覆盖了周围的景色,一段故事开始了。
|选项={{ISEvent/choose|simple|进入其中|teleport|desc1=进入诡谲断章}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_28|待诉说的故事|裂隙很快就消失了,在你的思维中留下了一些零碎的认知。
|选项={{ISEvent/choose|custom|收集散落的思绪|思绪_构想|desc1=获得{{color|#28bfe5|1缕}}构想(可在印象重建中消耗并能用于开通新路线或改变节点)|dest=3}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_28|待诉说的故事|假以时日,这些想法或许能被运用在合适的地方。}}
<!--狭路相逢-->
|事件sala1={{ISEvent/scene|etype=狭路相逢|开始|Avg_pic_rogue_4_29|魂灵见闻:以血还血|锡人收集到了一些逸散的认知,并将之重组成了一个故事,你想体验一下吗?
|选项={{ISEvent/choose|simple|体验萨卡兹的故事|unknown|desc1=好啊!|dest=1}}
{{ISEvent/choose|simple|将花瓣掷入故事|unknown|desc1=消耗{{color|red|2缕}}构想,它会去向何方呢?|dest=3}}
{{ISEvent/choose|simple|算了|leave|desc1=多一事不如少一事|dest=2}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_29|魂灵见闻:以血还血|一位曾被猩红剧团囚禁的血魔正在实行她的复仇计划,她要让猩红剧团恰如其名,被他们自己的鲜血浸没。
|选项={{ISEvent/choose|simple|故事逐渐清晰......|duel|desc1=遭遇一场[[ISW-NO 以血还血|{{color|orange|特殊的战斗}}]]}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_29|魂灵见闻:以血还血|卡兹戴尔的未来吸引着你,你暂时还不想分心到其他故事中去。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_29|魂灵见闻:以血还血|花瓣在故事中荡起涟漪,迷雾散开,揭示出故事一角:魔王带着族人东游,萨卡兹的苦难随着脚步消散,当迷茫的王顿悟圆满,萨卡兹就此成为阿纳萨,他们要自省自觉,更要将这解脱法传回西方,拯救千千万手足同胞。他们的归途,从一艘小船开始......
|选项={{ISEvent/choose|simple|行船来了|duel|desc1=遭遇一场[[ISW-NO 轻舟共渡|{{color|orange|特殊的战斗}}]]}}
}}
|事件sala2={{ISEvent/scene|开始|Avg_pic_rogue_4_30|魂灵见闻:善恶同道|锡人收集到了一些逸散的认知,并将之重组成了一个故事,你想体验一下吗?
|选项={{ISEvent/choose|simple|体验萨卡兹的故事|unknown|desc1=好啊!|dest=1}}
{{ISEvent/choose|simple|将花瓣掷入故事|unknown|desc1=消耗{{color|red|2缕}}构想,它会去向何方呢?|dest=3}}
{{ISEvent/choose|simple|算了|leave|desc1=多一事不如少一事|dest=2}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_30|魂灵见闻:善恶同道|两个来自东方的萨卡兹结伴向西寻求真理,一人后在树下悟道,一人则终日纵情取乐,他们虽常有冲突,但在面对敌人时,他们总会放心地将后背交给对方。
|选项={{ISEvent/choose|simple|故事逐渐清晰......|duel|desc1=遭遇一场[[ISW-NO 善恶同道|{{color|orange|特殊的战斗}}]]}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_30|魂灵见闻:善恶同道|卡兹戴尔的未来吸引着你,你暂时还不想分心到其他故事中去。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_30|魂灵见闻:善恶同道|花瓣在故事中荡起涟漪,迷雾散开,揭示出故事一角:魔王带着族人东游,萨卡兹的苦难随着脚步消散,当迷茫的王顿悟圆满,萨卡兹就此成为阿纳萨,他们要自省自觉,更要将这解脱法传回西方,拯救千千万手足同胞。他们的归途,从一艘小船开始......
|选项={{ISEvent/choose|simple|行船来了|duel|desc1=遭遇一场[[ISW-NO 轻舟共渡|{{color|orange|特殊的战斗}}]]}}
}}
|事件sala3={{ISEvent/scene|开始|Avg_pic_rogue_4_31|魂灵见闻:石心双子|锡人收集到了一些逸散的认知,并将之重组成了一个故事,你想体验一下吗?
|选项={{ISEvent/choose|simple|体验萨卡兹的故事|unknown|desc1=好啊!|dest=1}}
{{ISEvent/choose|simple|将花瓣掷入故事|unknown|desc1=消耗{{color|red|2缕}}构想,它会去向何方呢?|dest=3}}
{{ISEvent/choose|simple|算了|leave|desc1=多一事不如少一事|dest=2}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_31|魂灵见闻:石心双子|这对石翼魔堂姐弟都是卡兹戴尔有名的天灾信使。阿尔图罗擅长塑石术,而费德里科以如石般的执着而著称。大相径庭的性格导致两人之间时常有争执,但他们平日里有多针锋相对,面对天灾时就有多勠力同心。
|选项={{ISEvent/choose|simple|故事逐渐清晰......|duel|desc1=遭遇一场[[ISW-NO 石心双子|{{color|orange|特殊的战斗}}]]}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_31|魂灵见闻:石心双子|卡兹戴尔的未来吸引着你,你暂时还不想分心到其他故事中去。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_31|魂灵见闻:石心双子|花瓣在故事中荡起涟漪,迷雾散开,揭示出故事一角:魔王带着族人东游,萨卡兹的苦难随着脚步消散,当迷茫的王顿悟圆满,萨卡兹就此成为阿纳萨,他们要自省自觉,更要将这解脱法传回西方,拯救千千万手足同胞。他们的归途,从一艘小船开始......
|选项={{ISEvent/choose|simple|行船来了|duel|desc1=遭遇一场[[ISW-NO 轻舟共渡|{{color|orange|特殊的战斗}}]]}}
}}
<!--命运所指-->
|事件fin1={{ISEvent/scene|etype=命运所指|开始|Avg_pic_rogue_4_8|戴冠式|“前任魔王已经死去,黑色的王冠悬浮在特蕾西娅与特雷西斯掌中。魔王之力等待着归属,萨卡兹等待着魔王,卡兹戴尔等待着主人。于是,我们得见——”
|选项={{ISEvent/choose|simple|两人为对方戴上冠冕|fragment|desc1=获得遗愿{{color|#28bfe5|纯白花瓣}}与{{color|#28bfe5|无字地契}}|dest=1}}
{{ISEvent/choose|simple|兄长为妹妹戴上冠冕|relic|desc1=获得一件随机收藏品|dest=2}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_8|戴冠式|“黑色王冠随着他们的动作一分为二,悬于两人的头顶,萨卡兹从此迎来双王共治的局面。有人欢呼,欢呼这新时代的到来;有人畏惧,畏惧这历史上从未出现的异数。今后的事,我们尚不可知。”}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_8|戴冠式|“魔王新生,希望传遍卡兹戴尔。可今后的事,你我皆已知晓。”}}
|事件end1={{ISEvent/scene|开始|Avg_pic_rogue_4_32|尾页|''根据持有的收藏品出现下列选项''
|选项={{ISEvent/choose|simple|【不持有“阿纳萨羯磨”和“滚动先祖”】||dest=1}}
{{ISEvent/choose|simple|【持有“滚动先祖”】||dest=2}}
{{ISEvent/choose|simple|【持有“阿纳萨羯磨”】||dest=3}}
{{ISEvent/choose|simple|【持有“阿纳萨羯磨”和“滚动先祖”】||dest=4}}
}}
{{ISEvent/scene|普通|Avg_pic_rogue_4_32|尾页|在无数次讲述与思考中,卡兹戴尔从只有熔炉的空壳重新化作一座繁荣的城市。与现实相异的细节及历史填满了它的身躯,令它近乎完满。现在,它正等待你讲述最后一样它尚未拥有的东西——结局。你深吸一口气,而后——
|选项={{ISEvent/choose|simple|报出魔王的名讳|unknown|desc1=那是特蕾西娅,与特雷西斯......|desc2={{mdi|information}}需要{{color|#ff6e6e|巴别塔誓言}}|dest=5}}
{{ISEvent/choose|simple|哎呀!|leave|desc1=谁在打我?|dest=6}}
}}
{{ISEvent/scene|异变|Avg_pic_rogue_4_32|尾页|在无数次讲述与思考中,卡兹戴尔从只有熔炉的空壳重新化作一座繁荣的城市。与现实相异的细节及历史填满了它的身躯,令它近乎完满。现在,它正等待你讲述最后一样它尚未拥有的东西——结局。你深吸一口气,而后——
|选项={{ISEvent/choose|simple|你被捂住了嘴|unknown|desc1=死魂灵报出魔王名讳|desc2={{mdi|information}}需要{{color|#ff6e6e|巴别塔誓言}}|dest=7}}
{{ISEvent/choose|simple|死魂灵从口中涌出|leave|desc1=怎么回事?|dest=8}}
}}
{{ISEvent/scene|紧急|Avg_pic_rogue_4_32|尾页|在无数次讲述与思考中,卡兹戴尔从只有熔炉的空壳重新化作一座繁荣的城市。与现实相异的细节及历史填满了它的身躯,令它近乎完满。现在,它正等待你讲述最后一样它尚未拥有的东西——结局。你深吸一口气,而后——
|选项={{ISEvent/choose|simple|报出名讳|unknown|desc1=那是两位魔王......|desc2={{mdi|information}}需要{{color|#ff6e6e|巴别塔誓言}}|dest=9}}
{{ISEvent/choose|simple|哎......啊!|leave|desc1=有什么东西砸到我了!|dest=10}}
}}
{{ISEvent/scene|紧急异变|Avg_pic_rogue_4_32|尾页|在无数次讲述与思考中,卡兹戴尔从只有熔炉的空壳重新化作一座繁荣的城市。与现实相异的细节及历史填满了它的身躯,令它近乎完满。现在,它正等待你讲述最后一样它尚未拥有的东西——结局。你深吸一口气,而后——
|选项={{ISEvent/choose|simple|一片寂静|unknown|desc1=死魂灵报出魔王法讳|desc2={{mdi|information}}需要{{color|#ff6e6e|巴别塔誓言}}|dest=11}}
{{ISEvent/choose|simple|莲花瓣从口中飘落|leave|desc1=死魂灵化作了花瓣?!|dest=12}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_32|尾页|你们成功了,那让人痛心的现实被抛诸脑后,卡兹戴尔从你脚下延伸,其他种族的人们纷纷涌入这座城市。一个包容博爱的联邦在泰拉兴起,议长与将军,不,魔王的梦想终究成为现实。不久,两位魔王找上了你们,在这篇故事中,你们不存在于“文明的存续”的记录之中,是这片大地上的异数,他们有义务将你们清除。
{{ISEvent/choose|desc|desc1={{mdi|information}}使[[萨卡兹的无终奇语#区域|{{color|orange|虚实疆界}}]]的险路恶敌改为[[ISW-DF 朝谒|{{color|orange|ISW-DF 朝谒}}]]}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_32|尾页|你的后脑勺被重重拍了一下,随之而来的是巫妖之主的呵斥声。看着不停往后退的埃芒加德,你心里有种不好的预感。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_32|尾页|死魂灵捂住你的嘴,用自己的理解与身躯构建起了双王并立的故事结局。正当你以为自己摆脱了先祖的纠缠时,双王找上了你们,而两人身后的士兵,此刻正散发着死魂灵的气息。
{{ISEvent/choose|desc|desc1={{mdi|information}}使[[萨卡兹的无终奇语#区域|{{color|orange|虚实疆界}}]]的险路恶敌改为[[ISW-DF 魂灵朝谒|{{color|orange|ISW-DF 魂灵朝谒}}]]}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_32|尾页|你自认为封住了先祖,但他们借着你的讲述逃了出来,对着刚刚赶来的弗莱蒙特一顿嘲讽,然后消失在了故事之中。看着不停擦汗的埃芒加德和脸色铁青的弗莱蒙特,你心里有种不好的预感。
{{ISEvent/choose|desc|desc1={{mdi|information}}使[[萨卡兹的无终奇语#区域|{{color|orange|虚实疆界}}]]的险路恶敌改为[[ISW-DF 思维矫正|{{color|orange|ISW-DF 思维矫正}}]]}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_32|尾页|你应当是成功了,卡兹戴尔在你脚下延伸,几艘行船从城市边缘驶过,魔王的梦想终究成为现实。不久,两位魔王找上了你们,在这篇故事中,你们不存在于“文明的存续”的记录之中,是这片大地上的异数,他们有义务将你们清除。
{{ISEvent/choose|desc|desc1={{mdi|information}}使[[萨卡兹的无终奇语#区域|{{color|orange|虚实疆界}}]]的险路恶敌改为[[ISW-DF 朝谒|{{color|orange|ISW-DF 朝谒}}]],且出现[[托生莲座|{{color|orange|托生莲座}}]]}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_32|尾页|如雷的呵斥声当头砸下,把你震得晕头转向。恍惚间,你看到几艘奇怪的船从旁行了过去,而埃芒加德正在不停往后退。你心里有种不好的预感。
{{ISEvent/choose|desc|desc1={{mdi|information}}使[[萨卡兹的无终奇语#区域|{{color|orange|虚实疆界}}]]的险路恶敌出现[[托生莲座|{{color|orange|托生莲座}}]]}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_32|尾页|死魂灵捂住你的嘴,用自己的理解与身躯构建起了双王并立的故事结局。正当你以为自己摆脱了先祖的纠缠时,双王坐着轻舟找上了你们,而两人身后的士兵,此刻正散发着死魂灵的气息。
{{ISEvent/choose|desc|desc1={{mdi|information}}使[[萨卡兹的无终奇语#区域|{{color|orange|虚实疆界}}]]的险路恶敌改为[[ISW-DF 魂灵朝谒|{{color|orange|ISW-DF 魂灵朝谒}}]],且出现[[托生莲座|{{color|orange|托生莲座}}]]}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_32|尾页|你自认为封住了先祖,但他们借着你的讲述化作莲花瓣飘了出来,对着刚刚赶来的弗莱蒙特一顿嘲讽,然后消失在了故事之中,只留下了几艘奇怪的行船。看着不停擦汗的埃芒加德和脸色铁青的弗莱蒙特,你心里有种不好的预感。
{{ISEvent/choose|desc|desc1={{mdi|information}}使[[萨卡兹的无终奇语#区域|{{color|orange|虚实疆界}}]]的险路恶敌改为[[ISW-DF 思维矫正|{{color|orange|ISW-DF 思维矫正}}]],且出现[[托生莲座|{{color|orange|托生莲座}}]]}}
}}
|事件eportal1={{ISEvent/scene|开始|Avg_pic_rogue_4_28|待诉说的真相|你注意到了卡兹戴尔角落里的一条裂隙,一个不成熟的想法催生了它,却又没能使之完满。看着裂隙中展现出的景象,你决定——
|选项={{ISEvent/choose|simple|用构想补足缺陷|unknown|desc1=消耗{{color|#ff6e6e|2缕}}构想|dest=1}}
{{ISEvent/choose|simple|将它吸纳入思维|fragment|desc1=希望它能滋润其他故事|dest=2}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_28|待诉说的真相|裂隙扩张,覆盖了周围的景色,与此同时,一种模糊的连结感在你的思维中扩散开来......无论如何,一段故事开始了。
|选项={{ISEvent/choose|simple|进入其中|teleport|desc1=进入诡谲断章}}
{{ISEvent/choose|desc|desc1={{mdi|information}}进入[[萨卡兹的无终奇语#区域|{{color|orange|诡谲断章}}]],固定进入结构②}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_28|待诉说的真相|裂隙很快就消失了,在你的思维中留下了一些零碎的认知。
|选项={{ISEvent/choose|custom|收集散落的思绪|思绪_构想|desc1=获得{{color|#28bfe5|1缕}}构想(可在印象重建中消耗并能用于开通新路线或改变节点)|dest=3}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_28|待诉说的真相|假以时日,这些想法或许能被运用在合适的地方。}}
|事件end2={{ISEvent/scene|开始|Avg_pic_rogue_4_33|扣响异音|卡兹戴尔魂灵熔炉边,躺着一把古老的守护铳。你有一种预感,如果鸣响这支守护铳,便会发生翻天覆地的变化。
|选项={{ISEvent/choose|collection|扣动扳机|250|desc1=获得收藏品{{color|#28bfe5|时与光}}|dest=1}}
{{ISEvent/choose|simple|销毁铳械|leave|desc1=我不允许......萨科塔......|dest=2}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_33|扣响异音|在铳响的一刹那,那种模糊的连结感变得无比清晰,一座洁白的圣城出现在你眼前。你伸手去取腰间的先知长角,却触到了另外一把铳。当你鸣响它,一切便重归寂静。但你脑中的“共感”,却再也没有消退......}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_33|扣响异音|你将守护铳丢入熔炉,看着萨科塔的象征消失在火焰中。萨卡兹的故事,不应当被自己的仇敌玷污。}}
<!--安全的角落-->
|事件rest1={{ISEvent/scene|etype=安全的角落|开始|Avg_pic_rogue_4_26|淡然面对|从一堆篝火,到一盏明灯,再到输送能量的熔炉节点。即使是最危急的时候,萨卡兹们总还能有个地方围坐在一起打闹、聊天、交易。你和随行的人在人堆里找了块空地坐下,思考着今后的打算。
|选项={{ISEvent/choose|desc|desc1={{mdi|information}}随机出现以下3个选项出现的选项受【印象重建】影响。}}
{{ISEvent/choose|simple|稍事休息|hp|desc1=获得{{color|#28bfe5|3}}目标生命上限|dest=1}}
{{ISEvent/choose|item|强化训练|高级物资配给券|desc1=获得进阶券<br>{{color|#28bfe5|高级物资配给券}}|dest=2}}
{{ISEvent/choose|simple|鼓舞士气|population|desc1=获得{{color|#28bfe5|3}}希望|dest=3}}
{{ISEvent/choose|simple|重整编制|member|desc1=可携带干员{{color|#28bfe5|+1}}|dest=4}}
{{ISEvent/choose|custom|听个故事|思绪_构想|desc1=获得{{color|#28bfe5|2缕}}构想(可在印象重建中消耗并能用于开通新路线或改变节点)|dest=6}}
{{ISEvent/choose|simple|分享见解|weight|desc1=负荷临界点{{color|#28bfe5|+2}}|dest=9}}
{{ISEvent/choose|simple|予人安息|population|desc1=失去{{color|#ff6e6e|灌铅胸牌}},获得{{color|#28bfe5|3}}希望,负荷临界点{{color|#28bfe5|+3}}并进阶一个任意干员(不消耗希望)|desc2={{mdi|information}}仅在持有“灌铅胸牌”时出现|dest=12}}
{{ISEvent/choose|desc|desc1={{mdi|information}}以下选项需要点亮对应的【印象重建】才会出现。}}
{{ISEvent/choose|simple|充足休息|hp|desc1=获得{{color|#28bfe5|3}}目标生命上限,结束当前年代|dest=7}}
{{ISEvent/choose|simple|翻新编制|member|desc1=可携带干员{{color|#28bfe5|+2}}|dest=8}}
{{ISEvent/choose|custom|听场史诗|思绪_构想|desc1=获得{{color|#28bfe5|3缕}}构想(可在印象重建中消耗并能用于开通新路线或改变节点)|dest=5}}
{{ISEvent/choose|simple|讨论观点|weight|desc1=负荷临界点{{color|#28bfe5|+3}}|dest=10}}
{{ISEvent/choose|item|寻找帮手|高级人事调度函|desc1=招募任意一名干员<br>{{color|#28bfe5|高级人事调度函}}|dest=11}}
}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_26|淡然面对|熔炉节点散发出的热量隔绝了寒冷,让你能在温暖中安然小憩。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_26|淡然面对|节点旁有支雇佣兵小队,在交谈与交手中,你学到了许多。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_26|淡然面对|生活虽然乏善可陈,但至少,你们对未来仍有憧憬。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_26|淡然面对|故事百变,应对不变。你仔细地盘点了身边的物资与人员,并优化了队伍结构。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_26|淡然面对|炉旁的露天剧院坐满了人,你已迫不及待地想要听听那些崭新的萨卡兹史诗了。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_26|淡然面对|人不能只靠着炉子的光与热过活,你在人堆里找了块空地坐下,听眼前站着的女妖唱着你闻所未闻的新奇故事。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_26|淡然面对|熔炉节点旁的小旅馆为你们一行人提供了舒适的休息场所,你们在这里养精蓄锐,直到一个时代落下帷幕。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_26|淡然面对|驻扎在此地的军事委员会为路过的雇佣兵队伍提供义务军事指导,你也去听了一课。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_26|淡然面对|你和随行的同伴讨论了一些事项,他们的见解让你的思维变得更加开阔。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_26|淡然面对|在炉旁的学院里,你花了很长时间与这里的教授针锋相对,这场思维碰撞让你受益匪浅。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_26|淡然面对|炉火旁总有在寻找新机会的人,你很快就找到了自己理想的帮手。}}
{{ISEvent/scene|结束|Avg_pic_rogue_4_26|淡然面对|这段思绪落入了它的归处,而你在一个角落里发现了它留给好心人的报酬。}}
|事件spring={{ISEvent/scene|开始|Avg_pic_rogue_4_26|温暖余韵|一则逸闻宣告结束,新的故事尚未成形,于是出现在你面前的,依旧是记忆中最温暖的炉火。
|选项={{ISEvent/choose|simple|好好歇息|hp|desc1=回复{{color|#28bfe5|所有}}目标生命|dest=1}}
{{ISEvent/choose|simple|思考未来|leave|desc1=多一事不如少一事}}
}}
{{ISEvent/scene|开始|Avg_pic_rogue_4_26|温暖余韵|比起温暖的炉火,你更期待眼前的冒险,于是在故事成形之前,你将热情倾注在了未雨绸缪上。}}
}}

View File

@@ -0,0 +1,118 @@
import os
import mwparserfromhell # type: ignore
import json
collectibles = ["希望时代的涂鸦", "死仇时代的恨意", "美愿时代的留恋", "牧驮人的摇铃", "四叶草化石"]
思绪s = ["灌铅胸牌", "无话可说", "旧乡晶尘", "枯木新枝"]
types = ["源石锭", "目标生命", "希望", "目标生命上限", "可携带干员"]
loses = ["失去", "消耗"]
gets = ["获得", "回复"]
haves = ["持有", "仅有"]
# 获取当前 .py 文件所在目录
current_dir = os.path.dirname(os.path.abspath(__file__))
# 输入和输出文件路径
input_file_path = os.path.join(current_dir, "prts.txt")
output_file_path = os.path.join(current_dir, "sample.json")
# 读取 txt 文件内容
with open(input_file_path, "r", encoding="utf-8") as file:
wikicode = file.read()
# 解析模板
templates = mwparserfromhell.parse(wikicode).filter_templates(recursive=False)
events = templates[4].params[1:]
# 构建 JSON 数据结构
data = {
"theme": "Sarkaz",
"events": []
}
# 解析每个事件模板
for event in events:
event_params = mwparserfromhell.parse(event.value).filter_templates(recursive=False)[0].params
if event_params[0].startswith("etype="):
event_params.pop(0)
stage_entry = {
"name": str(event_params[2]),
"choices": []
}
# 解析每个选项模板
option_templates = mwparserfromhell.parse(event_params[4].value).filter_templates(recursive=False)
for option_template in option_templates:
option_template_params = option_template.params
if str(option_template_params[1]).startswith("desc"):
continue
conditions = []
choice_entry = {
"name": str(option_template_params[1])
}
print(option_template_params)
print()
# 检查并添加 requirements
if len(option_template_params) > 4:
for param in option_template_params[3:-1]: # Skip the last param
condition_requirement = ""
condition_name = ""
condition_type = ""
condition_value = ""
for collectible in collectibles:
if collectible in str(param):
condition_name = collectible
condition_type = "collectible"
break
for 思绪 in 思绪s:
if 思绪 in str(param):
condition_name = 思绪
condition_type = "思绪"
break
for have in haves:
if have in str(param):
condition_requirement = "have"
for get in gets:
if get in str(param) and (condition_type == ("collectible" or "思绪")):
condition_requirement = "get"
for lose in loses:
if lose in str(param):
condition_requirement = "lose"
for 泰普 in types:
if 泰普 in str(param) and condition_requirement == "lose":
condition_name = 泰普
condition_type = 泰普
condition = {}
if condition_requirement:
condition["requirement"] = condition_requirement
if condition_name:
condition["name"] = condition_name
if condition_type:
condition["type"] = condition_type
conditions.append(condition)
# if conditions[0]:
# choice_entry["conditions"] = conditions
stage_entry["choices"].append(choice_entry)
data["events"].append(stage_entry)
# 将数据写入 JSON 文件,使用 sort_keys 和 indent 参数进行美化
with open(output_file_path, "w", encoding="utf-8") as output_file:
json.dump(data, output_file, indent=4, ensure_ascii=False)
print("Succeed.")
print(output_file_path)