diff --git a/SpeechResponder/eddi.zh-CN.json b/SpeechResponder/eddi.zh-CN.json index 5f154ae17f..a0403ab62f 100644 --- a/SpeechResponder/eddi.zh-CN.json +++ b/SpeechResponder/eddi.zh-CN.json @@ -1,1176 +1,1170 @@ -{ +{ "name": "EDDI", "description": "A balanced, non-partisan personality, please using with microsoft chinese charactor", "scripts": { "AFMU repairs": { - "name": "AFMU repairs", - "description": "Triggered when repairing modules using the Auto Field Maintenance Unit (AFMU)", "enabled": true, "priority": 3, "responder": true, "script": "{event.item} \r\n{if event.repairedfully:\r\n 修理完成\r\n|else:\r\n 被部分修理 \r\n {Occasionally(2, cat(\r\n OneOf(\"至 \", \"到 \"),\r\n \"百分之\"\r\n event.health * 100,\r\n \" 功能完整性\"\r\n ))}\r\n}\r\n\r\n{Occasionally(2, \r\n cat(OneOf(\", \"), \" 已经可以再次启用\")\r\n)}.", - "default": true + "default": true, + "name": "AFMU repairs", + "description": "Triggered when repairing modules using the Auto Field Maintenance Unit (AFMU)" }, "Asteroid cracked": { - "name": "Asteroid cracked", - "description": "Triggered when you break up a 'Motherlode' asteroid for mining", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Asteroid cracked", + "description": "Triggered when you break up a 'Motherlode' asteroid for mining" }, "Asteroid prospected": { - "name": "Asteroid prospected", - "description": "Triggered when using a prospecting drone", "enabled": true, "priority": 3, "responder": true, "script": "{set minimumPercent to 10} {_ The minimum percentage surface mineral concentration to report _}\r\n{set spokenCores to [\r\n \"Alexandrite\": false,\r\n \"Benitoite\": false,\r\n \"Grandidierite\": false,\r\n \"Low Temperature Diamonds\": true,\r\n \"Monazite\": false,\r\n \"Musgravite\": false,\r\n \"Rhodplumsite\": false,\r\n \"Serendibite\": false,\r\n \"Void Opals\": true,\r\n]}\r\n{set spokenMinerals to [\r\n \"Bauxite\": false,\r\n \"Bertrandite\": false,\r\n \"Bromellite\": false,\r\n \"Cobalt\": false,\r\n \"Coltan\": false,\r\n \"Cryolite\": false,\r\n \"Gallite\": false,\r\n \"Gold\": false,\r\n \"Goslarite\": false,\r\n \"Hydrogen Peroxide\": false,\r\n \"Indite\": false,\r\n \"Jadeite\": false,\r\n \"Lepidolite\": false,\r\n \"Lithium Hydroxide\": false,\r\n \"Liquid oxygen\": false,\r\n \"Low Temperature Diamonds\": true,\r\n \"Methane Clathrate\": false,\r\n \"Methanol Monohydrate\": false,\r\n \"Moissanite\": false,\r\n \"Osmium\": true,\r\n \"Painite\": true,\r\n \"Platinum\": true,\r\n \"Palladium\": false,\r\n \"Praseodymium\": false,\r\n \"Pyrophyllite\": false,\r\n \"Rutile\": false,\r\n \"Samarium\": false,\r\n \"Silver\": false,\r\n \"Taaffeite\": false,\r\n \"Thorium\": false,\r\n \"Tritium\": true,\r\n \"Uraninite\": false,\r\n \"Water\": false,\r\n]}\r\n\r\n{if len(event.motherlode) > 0 && spokenCores[event.motherlode]:\r\n 检测到母矿: {event.motherlode}.\r\n}\r\n\r\n{set minerals to []}\r\n{for mineral in event.commodities:\r\n {if mineral.percentage > minimumPercent && spokenMinerals[mineral.commodity]:\r\n {set mineral_desc to: \r\n {round(mineral.percentage)} percent {mineral.commodity}\r\n }\r\n {set minerals to cat(minerals, [mineral_desc])}\r\n }\r\n}\r\n{if len(minerals) > 0:\r\n Asteroid contains {List(minerals)}\r\n {if event.materialcontent = \"High\":\r\n 而且含有大量工程师材料\r\n }.\r\n {if event.remaining < 100:\r\n 已挖掘百分之 {100 - event.remaining} .\r\n }\r\n}", - "default": true + "default": true, + "name": "Asteroid prospected", + "description": "Triggered when using a prospecting drone" }, "Backpack": { - "name": "Backpack", - "description": "Lists the contents of your backpack when you disembark", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Backpack", + "description": "Lists the contents of your backpack when you disembark" }, "Backpack changed": { - "name": "Backpack changed", - "description": "Triggered when there is any change to the contents of the suit backpack", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Backpack changed", + "description": "Triggered when there is any change to the contents of the suit backpack" }, "Blueprint make report": { - "name": "Blueprint make report", - "description": "Report on how many of a particular blueprint we can make", "enabled": true, - "priority": null, + "priority": 3, "responder": false, - "script": "{_ Fetch from context / state _}\r\n{set blueprintname to state.blueprint}\r\n{set blueprintgrade to state.blueprintgrade}\r\n\r\n{if blueprintname && blueprintgrade:\r\n {_ Fetch full blueprint details }\r\n {set blueprint to BlueprintDetails(blueprintname, blueprintgrade)}\r\n\r\n {_ Context }\r\n {SetState('eddi_context_last_subject', 'blueprint')}\r\n {SetState('eddi_context_blueprint_name', blueprintname)}\r\n {SetState('eddi_context_blueprint_grade', blueprintgrade)}\r\n}\r\n\r\n{if !blueprint:\r\n {_ Fetch from context }\r\n {set blueprint to BlueprintDetails(state.eddi_context_blueprint_name, state.eddi_context_blueprint_grade)}\r\n}\r\n\r\n{_ Function to obtain current inventory of a material}\r\n{set _inventory(required) to:\r\n {for material in materials:\r\n {if material.material = required:\r\n {return material}\r\n }\r\n }\r\n}\r\n\r\n{set canbemade to 999}\r\n\r\n{if blueprint:\r\n {_ Find the smallest number of this blueprint that can be made }\r\n \r\n {set cur to 0}\r\n {while cur < len(blueprint.materials):\r\n {set inventory to _inventory(blueprint.materials[cur].material)}\r\n {if !inventory:\r\n {set canbemade to 0}\r\n |else:\r\n {if inventory.amount < canbemade:\r\n {set canbemade to inventory.amount}\r\n }\r\n }\r\n {set cur to cur + 1}\r\n }\r\n\r\n {if canbemade = 0:\r\n 您无法制作任何 {blueprintgrade} 级 {blueprintname}\r\n |elif canbemade = 1:\r\n 您可以制作一个 {blueprintgrade} 级 {blueprintname}\r\n |else:\r\n 您可以制作 {blueprintgrade} 级 {blueprintname} {canbemade} 次.\r\n }\r\n \r\n|else:\r\n 没有关于{blueprintgrade} 级 {blueprintname}所需材料的信息\r\n}.\r\n", - "default": true + "script": "{_ Fetch from context / state _}\r\n{set blueprintname to state.blueprint}\r\n{set blueprintgrade to state.blueprintgrade}\r\n\r\n{if blueprintname && blueprintgrade:\r\n {_ Fetch full blueprint details }\r\n {set blueprint to BlueprintDetails(blueprintname, blueprintgrade)}\r\n\r\n {_ Context }\r\n {SetState('eddi_context_last_subject', 'blueprint')}\r\n {SetState('eddi_context_blueprint_name', blueprintname)}\r\n {SetState('eddi_context_blueprint_grade', blueprintgrade)}\r\n}\r\n\r\n{if !blueprint:\r\n {_ Fetch from context }\r\n {set blueprint to BlueprintDetails(state.eddi_context_blueprint_name, state.eddi_context_blueprint_grade)}\r\n}\r\n\r\n{_ Function to obtain current inventory of a material}\r\n{set _inventory(required) to:\r\n {for material in materials:\r\n {if material.material = required:\r\n {return material}\r\n }\r\n }\r\n}\r\n\r\n{set canbemade to 999}\r\n\r\n{if blueprint:\r\n {_ Find the smallest number of this blueprint that can be made }\r\n \r\n {set cur to 0}\r\n {while cur < len(blueprint.materials):\r\n {set inventory to _inventory(blueprint.materials[cur].material)}\r\n {if !inventory:\r\n {set canbemade to 0}\r\n |else:\r\n {if inventory.amount < canbemade:\r\n {set canbemade to inventory.amount}\r\n }\r\n }\r\n {set cur to cur + 1}\r\n }\r\n\r\n {if canbemade = 0:\r\n 您无法制作任何 {blueprintgrade} 级 {blueprintname}\r\n |elif canbemade = 1:\r\n 您可以制作一个 {blueprintgrade} 级 {blueprintname}\r\n |else:\r\n 您可以制作 {blueprintgrade} 级 {blueprintname} {canbemade} 次.\r\n }\r\n \r\n|else:\r\n 没有关于{blueprintgrade} 级 {blueprintname}所需材料的信息\r\n}.\r\n", "default": true, + "name": "Blueprint make report", + "description": "Report on how many of a particular blueprint we can make" }, "Blueprint material report": { - "name": "Blueprint material report", - "description": "Report on the material requirements for a blueprint", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{_ Fetch from context / state _}\r\n{set blueprintname to state.blueprint}\r\n{set blueprintgrade to state.blueprintgrade}\r\n\r\n{if blueprintname && blueprintgrade:\r\n {_ Fetch full blueprint details }\r\n {set blueprint to BlueprintDetails(blueprintname, blueprintgrade)}\r\n\r\n {_ Context }\r\n {SetState('eddi_context_last_subject', 'blueprint')}\r\n {SetState('eddi_context_blueprint_name', blueprintname)}\r\n {SetState('eddi_context_blueprint_grade', blueprintgrade)}\r\n}\r\n\r\n{if blueprintname:\r\n {_ Fetch full blueprint details }\r\n {set blueprint to BlueprintDetails(blueprintname, blueprintgrade)}\r\n\r\n {_ Context }\r\n {SetState('eddi_context_last_subject', 'blueprint')}\r\n {SetState('eddi_context_blueprint_name', blueprintname)}\r\n {SetState('eddi_context_blueprint_grade', blueprintgrade)}\r\n}\r\n\r\n{if !blueprint || !blueprintgrade:\r\n {_ Fetch from context }\r\n {set blueprint to BlueprintDetails(state.eddi_context_blueprint_name, state.eddi_context_blueprint_grade)}\r\n}\r\n\r\n{if blueprint && blueprintgrade:\r\n {set materials to len(blueprint.materials)}\r\n {blueprintname} 级 {blueprintgrade} 需要 \r\n {if materials = 1:\r\n {blueprint.materials[0].material}\r\n |elif materials = 2:\r\n {blueprint.materials[0].material} 和 {blueprint.materials[1].material}\r\n |else:\r\n {set cur to 0}\r\n {while cur < len(blueprint.materials):\r\n {if cur = 0:\r\n {blueprint.materials[cur].material}\r\n |elif cur < len(blueprint.materials) - 1:\r\n , {blueprint.materials[cur].material}\r\n |else:\r\n , and {blueprint.materials[cur].material}\r\n }\r\n {set cur to cur + 1}\r\n }\r\n }\r\n|else:\r\n 没有关于 {blueprintgrade}级{blueprintname}所需材料的信息\r\n}.\r\n", - "default": true + "default": true, + "name": "Blueprint material report", + "description": "Report on the material requirements for a blueprint" }, "Bodies mapped": { - "name": "Bodies mapped", - "description": "Reports all the bodies mapped in this system so far", "enabled": true, "priority": null, "responder": false, "script": "{_ Fetch from Context, if a context is set _}\r\n{if state.eddi_context_system_name:\r\n {set reportSystem to SystemDetails(state.eddi_context_system_name)}\r\n|else:\r\n {set reportSystem to SystemDetails(system.systemname)}\r\n}\r\n\r\n{_ Build a list of scanned bodies _}\r\n\r\n{set mappedList to []}\r\n{for body in reportSystem.bodies:\r\n {if body.mapped:\r\n {set mappedList to cat(mappedList, [P(body.shortname, \"body\")])} \r\n }\r\n}\r\n\r\n{_ Begin speaking _}\r\n\r\n{if len(mappedList) > 0:\r\n {if len(mappedList) = 1: 天体 |else: 天体}\r\n {List(mappedList)}\r\n {if len(mappedList) = 1: 已经 |else: 已经 }\r\n {set already to Occasionally(2, \"被\")}\r\n {OneOf(\"测绘\")}.\r\n|else:\r\n 您还没有测绘本星系的任何天体.\r\n}\r\n", - "default": true + "default": true, + "name": "Bodies mapped", + "description": "Reports all the bodies mapped in this system so far" }, "Bodies to map": { - "name": "Bodies to map", - "description": "Reports all the unmapped bodies in the system that are worth mapping", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{_ Preferences: _}\r\n\r\n{set reportTerraformables to true} {_ Reports all terraformable and terraformed bodies _}\r\n{set highValueThreshold to 80000} {_ The minimum threshold for estimated exploration value worth mapping _}\r\n{set reportPlanetTypes to [\r\n \"Ammonia world\": true,\r\n \"Earth-like world\": true,\r\n \"Gas giant with ammonia based life\": false,\r\n \"Gas giant with water based life\": false,\r\n \"Helium gas giant\": false,\r\n \"Helium-rich gas giant\": false,\r\n \"High metal content world\": false,\r\n \"Icy body\": false,\r\n \"Metal-rich body\": false,\r\n \"Rocky body\": false,\r\n \"Rocky ice world\": false,\r\n \"Class I gas giant\": false,\r\n \"Class II gas giant\": false,\r\n \"Class III gas giant\": false,\r\n \"Class IV gas giant\": false,\r\n \"Class V gas giant\": false,\r\n \"Water giant\": false,\r\n \"Water giant with life\": false,\r\n \"Water world\": true,\r\n]}\r\n\r\n{_ Fetch from Context, if a context is set _}\r\n{if state.eddi_context_system_name:\r\n {set reportSystem to SystemDetails(state.eddi_context_system_name)}\r\n|else:\r\n {set reportSystem to SystemDetails(system.systemname)}\r\n}\r\n\r\n{_ Identify bodies worth mapping _}\r\n\r\n{set toMapList to []}\r\n{set mappedBodies to 0}\r\n{set totalBodies to 0}\r\n\r\n{for body in reportSystem.bodies:\r\n {set totalBodies to totalBodies + 1}\r\n {if body.mapped:\r\n {set mappedBodies to mappedBodies + 1}\r\n |else:\r\n {if body.bodyType.invariantName != \"Star\":\r\n {if body.terraformState.invariantName = \"Candidate for terraforming\" \r\n || body.terraformState.invariantName = \"Terraformed\":\r\n {if reportTerraformables:\r\n {if !toMapList[body.shortname]: \r\n {set toMapList to cat(toMapList, [body.shortname])}\r\n } \r\n }\r\n |elif reportPlanetTypes[body.planetClass.invariantName]:\r\n {if !toMapList[body.shortname]: \r\n {set toMapList to cat(toMapList, [body.shortname])}\r\n }\r\n |elif body.estimatedvalue > highValueThreshold:\r\n {if !toMapList[body.shortname]: \r\n {set toMapList to cat(toMapList, [body.shortname])}\r\n } \r\n }\r\n }\r\n }\r\n}\r\n{set toMapCount to len(toMapList)}\r\n\r\n{_ Begin speaking _}\r\n\r\n{if toMapCount > 0:\r\n\r\n {if toMapCount = 1: Body |else: Bodies}\r\n\r\n {set cur to 0}\r\n {while cur < toMapCount:\r\n {P(toMapList[cur], \"body\")}\r\n {set cur to cur + 1}\r\n {if cur = toMapCount - 1: 和\r\n |elif cur < toMapCount - 1:,\r\n }\r\n }\r\n\r\n {if toMapCount = 1: 是 |else: 是 }\r\n {if event.type = \"Body mapped\": \" \" }\r\n {if toMapCount = 1: 一个 }\r\n {OneOf(\"被推荐的\", \"好的\")}\r\n {set candidates to when(toMapCount = 1, \"候选者\", \"候选者\")}\r\n {OneOf('测绘{candidates}')}.\r\n\r\n|elif mappedBodies > 0:\r\n\r\n {OneOf(\r\n \"您已测绘所有 {if mappedBodies < totalBodies: {OneOf(\\\"有价值的\\\", \\\"有利可图的\\\")}} 天体.\",\r\n \"所有 {OneOf( \\\"{if mappedBodies < totalBodies: 有价值的} 有价值的天体\\\", \\\"有利可图的天体\\\" )} {OneOf( \\\"已经被测绘.\\\", \\\"现在被测绘完成了.\\\" )}\"\r\n )}\r\n}", - "default": false + "default": true, + "name": "Bodies to map", + "description": "Reports all the unmapped bodies in the system that are worth mapping" }, "Body atmosphere report": { - "name": "Body atmosphere report", - "description": "Report on the atmosphere of the contextual body", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{_ Preferences _}\r\n{set reportAtmoPressure to 0} {_ Set to 1 if you want to hear about the atmospheric pressure. _}\r\n{set reportAtmoTempScale to 0} {_ Set to 0 if you want to hear about temperatures in Kelvin _}\r\n {_ Set to 1 if you want to hear about temperatures in Celsius _}\r\n {_ Set to 2 if you want to hear about temperatures in Fahrenheit _}\r\n {_ Set to 3 if you don't want to hear about the temperature of the body _}\r\n\r\n{_ Define functions for converting temperature scales _}\r\n{set ToCelsius(kelvin) to: {round(kelvin - 273)}}\r\n{set ToFahrenheit(kelvin) to: {round((kelvin-273)*9/5 + 32)}}\r\n{set TempCalc(kelvin) to: \r\n {if reportAtmoTempScale = 0: {round(kelvin)}}\r\n {if reportAtmoTempScale = 1: {ToCelsius(kelvin)}}\r\n {if reportAtmoTempScale = 2: {ToFahrenheit(kelvin)}}\r\n}\r\n\r\n{_ Name our temperature scale _}\r\n{if reportAtmoTempScale = 0: {set tempscale to: 开尔文}}\r\n{if reportAtmoTempScale = 1: {set tempscale to: 摄氏度}}\r\n{if reportAtmoTempScale = 2: {set tempscale to: 华氏度}}\r\n\r\n{_ Fetch from context _}\r\n{set reportbody to BodyDetails(state.eddi_context_body_name, state.eddi_context_body_system)}\r\n{if !reportbody: \r\n {set reportbody to BodyDetails(state.eddi_context_body_name)}\r\n}\r\n\r\n{if !reportbody.name || reportbody.name = \"\":\r\n 我不清楚您在寻问哪个天体.\r\n\r\n|else:\r\n\r\n {if find(reportbody.planettype, \"巨\") >= 0:\r\n {if find(reportbody.planettype, \"级\") >= 0: \r\n \r\n }\r\n {set planetdesc to OneOf(\" 这是一个巨型气态行星,其\")}\r\n {if find(reportbody.planettype, \"五级\") >= 0:\r\n {planetdesc} \r\n {if reportAtmoTempScale < 3: \r\n {set tempmin to: {TempCalc(1373)}}\r\n 温度超过 {tempmin} {tempscale}, {OneOf(\"且\", \"而且\", \"并且\")}\r\n }\r\n 拥有一个厚重的 {OneOf(\"气态硅酸盐和铁\", \"硅酸盐和铁蒸汽\")}形成的云层.\r\n |elif find(reportbody.planettype, \"四级\") >= 0:\r\n {planetdesc} \r\n {if reportAtmoTempScale < 3: \r\n {set tempmin to: {TempCalc(354)}}\r\n {set tempmax to: {TempCalc(903)}}\r\n 温度 {OneOf(\"范围\",\"上下限\")} 介于 {tempmin} 到 {tempmax} {tempscale}之间, \r\n }\r\n 拥有一个厚重的 {OneOf(\"碱金属蒸汽\", \"蒸发的碱金属\")}形成的云层. \r\n |elif find(reportbody.planettype, \"三级\") >= 0:\r\n {planetdesc} \r\n {if reportAtmoTempScale < 3: \r\n {set tempmin to: {TempCalc(251)}}\r\n {set tempmax to: {TempCalc(353)}}\r\n 表面温度 {OneOf(\"范围\", \"上下限\")} 介于 {tempmin} 到 {tempmax} {tempscale}之间,\r\n }\r\n 处于 {OneOf(\"没有气态元素能形成任何云\", \"大气中不存在合适的化学物质以形成持续的云层\", \"大气无法维持持久的云层\")}的温度.\r\n |elif find(reportbody.planettype, \"二级\") >= 0:\r\n {planetdesc} \r\n {if reportAtmoTempScale < 3: \r\n {set tempmin to: {TempCalc(154)}}\r\n {set tempmax to: {TempCalc(250)}}\r\n 表面温度 {OneOf(\"范围\", \"上下限\")} 在 {(tempmin)} 到 {(tempmax)} {tempscale}之间, {OneOf(\"而且\", \"且\", \"并且\")}\r\n }\r\n 拥有水蒸气构成的厚重云层. \r\n |elif find(reportbody.planettype, \"一级\") >= 0:\r\n {planetdesc} \r\n {if reportAtmoTempScale < 3: \r\n {set tempmin to: {TempCalc(153)}}\r\n {set tempmax to: {TempCalc(83)}}\r\n 表面温度{Occasionally(2, OneOf(\"最高为\", \"不低于\"))} {(tempmax)} {tempscale} {OneOf(\"而且\", \"且\", \"并且\")}\r\n }\r\n 拥有氨蒸气构成的厚重云层. \r\n }\r\n\r\n |elif reportbody.atmosphere = \"无大气\" || !reportbody.atmosphere:\r\n {Occasionally(4, OneOf(\"没有大气层\", \"它没有任何大气层.\", \"岁月已经将它的大气冲刷得一干二净\"))}\r\n {if reportbody.temperature && reportAtmoTempScale < 3:\r\n 地表温度平均值为\r\n {TempCalc(reportbody.temperature)} {tempscale}.\r\n }\r\n\r\n |elif reportbody.pressure: \r\n {if reportbody.pressure < 0.1:\r\n {set pressdesc to OneOf(\"微量气体构成的\", \"超稀薄的\")}\r\n |elif reportbody.pressure < 0.25:\r\n {set pressdesc to \"很稀薄的\"}\r\n |elif reportbody.pressure < 0.5:\r\n {set pressdesc to \"稀薄的\"}\r\n |elif reportbody.pressure < 2:\r\n {set pressdesc to \"\"}\r\n |elif reportbody.pressure < 10:\r\n {set pressdesc to \"厚的\"}\r\n |elif reportbody.pressure < 50:\r\n {set pressdesc to OneOf(\"厚重的\")}\r\n |elif reportbody.pressure < 100:\r\n {set pressdesc to OneOf(\"非常厚重的\", \"超级厚的\")}\r\n |elif reportbody.pressure >= 100:\r\n {set pressdesc to OneOf(\"极为厚重的\")}\r\n }\r\n {if find(reportbody.atmosphere, \"-rich\") >= 0:\r\n {set element to token(reportbody.atmosphere, \"-rich\", \"\")}\r\n {set desc to OneOf(\"我检测到 \", \"它有 \", \"传感器探测到\")}\r\n {OneOf(\"{desc} {pressdesc} {reportbody.atmosphere} 大气\", \" {pressdesc} 大气是 {reportbody.atmosphere}\", \"{pressdesc} 大气富含 {element}\")}\r\n |elif find(reportbody.atmosphere, \"vapour\") >= 0:\r\n {OneOf(\" {pressdesc} 大气是由 {reportbody.atmosphere}构成的\", \" {pressdesc} 大气富含 {reportbody.atmosphere}\", \" {pressdesc} 大气含有高水平的 {reportbody.atmosphere}\")}\r\n |elif reportbody.planetClass.invariantName = \"Earth-like world\":\r\n 它的大气与地球相似, \r\n |else:\r\n {set mostly to OneOf(\"基本上\", \"大体上\", \"主要\")}\r\n {OneOf(\" {pressdesc} 大气 {mostly} 构成于\", \"在 {pressdesc} 大气中最普遍的是\")}\r\n {reportbody.atmosphere}\r\n }\r\n { if reportAtmoPressure > 0:\r\n 其拥有 {(reportbody.pressure)} 倍于地球大气压的表面压力\r\n }\r\n {if reportbody.temperature && reportAtmoTempScale < 3:\r\n {set temp to: {TempCalc(reportbody.temperature)}}\r\n {if find(temp, \"-\") >= 0: \r\n {set temp to cat(temp*-1, \"零下\", tempscale)}\r\n |else:\r\n {set temp to cat(temp, tempscale)}\r\n }\r\n 其平均表面温度为 {temp}\r\n }.\r\n }\r\n}", - "default": true + "default": true, + "name": "Body atmosphere report", + "description": "Report on the atmosphere of the contextual body" }, "Body mapped": { - "name": "Body mapped", - "description": "Triggered after mapping a body with the Surface Area Analysis scanner", "enabled": true, "priority": 3, "responder": true, "script": "{_ Preferences _}\r\n\r\n{set bodyReport to 2} {_ 0 = No body report, 1 = Summary body report, 2 = Body report _}\r\n{set recommendOtherMapping to 1} {_ 0 or 1. If 1, recommends other bodies from the `Bodies to map` script _}\r\n\r\n{_ Context}\r\n{SetState('eddi_context_last_action', 'scan')}\r\n{SetState('eddi_context_last_subject', 'body')}\r\n{SetState('eddi_context_body_system', system.name)}\r\n{SetState('eddi_context_body_name', event.name)}\r\n{SetState('eddi_context_last_scan_estimated_value', event.estimatedvalue)}\r\n\r\n{_ Process the event _}\r\n\r\n{if ship.Role.edname = \"Exploration\" || ship.Role.edname = \"Multipurpose\":\r\n\r\n {Pause(3000)}\r\n\r\n {OneOf(\"测绘\", \" {Occasionally(2, \\\"行星表面\\\")}地形测绘\")}\r\n {OneOf(\"已\", \"现已\")}\r\n {OneOf(\"完成\", \"成功\")}.\r\n\r\n {if event.probesused <= event.efficiencytarget:\r\n 高效奖励 {OneOf(\"已获得\", \"被授予\")}.\r\n }\r\n\r\n {Pause(500)}\r\n {if bodyReport = 2:\r\n {F(\"Body report\")}\r\n |elif bodyReport = 1:\r\n {F(\"Body report summary\")}\r\n }\r\n\r\n {if recommendOtherMapping: \r\n {Pause(1500)}\r\n {F(\"Bodies to map\")}\r\n }\r\n}", - "default": true + "default": true, + "name": "Body mapped", + "description": "Triggered after mapping a body with the Surface Area Analysis scanner" }, "Body materials report": { - "name": "Body materials report", - "description": "Report on the materials available from the contextual body", "enabled": true, - "priority": null, + "priority": 3, "responder": false, - "script": "{_ Preferences _}\r\n{set reportMats to 1} {_ Set to 0 if you want to hear about materials below your minimum inventory level _}\r\n {_ Set to 1 if you want to hear about materials below your desired inventory level _}\r\n {_ Set to 2 if you want to hear about all materials irrespective of inventory levels _}\r\n\r\n{set reportMatConc to 1} {_ Set to 0 if you only want to hear about great material concentrations _}\r\n {_ Set to 1 if you want to hear about good and great material concentrations _}\r\n {_ Set to 2 if you want to hear about all material concentrations _}\r\n\r\n{set reportMatPercent to 1} {_ Set to 0 if you do not want to hear about material percentages _}\r\n {_ Set to 1 if you only want to hear about great material percentages _}\r\n {_ Set to 2 if you want to hear about good and great material percentages _}\r\n {_ Set to 3 if you want to hear about all material percentages _}\r\n\r\n{_ Fetch from context _}\r\n{set reportbody to BodyDetails(state.eddi_context_body_name, state.eddi_context_body_system)}\r\n{if !reportbody: \r\n {set reportbody to BodyDetails(state.eddi_context_body_name)}\r\n}\r\n\r\n{if !reportbody.name || reportbody.name = \"\":\r\n {_ If it's still not possible to get the body name... _}\r\n 您在\r\n {OneOf(\"咨询\",\"寻问\")}有关哪个天体的信息?\r\n\r\n|else:\r\n\r\n {_ Define a function to obtain a material from inventory}\r\n {set _inventory(required) to:\r\n {for material in materials:\r\n {if material.material = required:\r\n {return material}\r\n }\r\n }\r\n }\r\n\r\n {if reportbody.landable:\r\n\r\n {set goodmaterials to []}\r\n {set greatmaterials to []}\r\n {set othermaterials to []}\r\n\r\n {for material in reportbody.materials:\r\n {set inventoryMat to _inventory(material.material)}\r\n {if (reportMats >= 0 && inventoryMat.amount < inventoryMat.minimum && inventoryMat.minimum > 0)\r\n || (reportMats >= 1 && inventoryMat.amount < inventoryMat.desired && inventoryMat.desired > 0)\r\n || (reportMats >= 2):\r\n {if material.percentage >= material.definition.greatpctbody && reportMatConc > -1:\r\n {set greatmaterials to cat(greatmaterials, [material])}\r\n |elif material.percentage >= material.definition.goodpctbody && reportMatConc > 0:\r\n {set goodmaterials to cat(goodmaterials, [material])}\r\n |elif reportMatConc > 1:\r\n {set othermaterials to cat(othermaterials, [material])}\r\n }\r\n }\r\n }\r\n\r\n {_ Start speaking _}\r\n\r\n {if len(goodmaterials) > 0 || len(greatmaterials) > 0 || len(othermaterials) > 0:\r\n {if reportbody.name = reportbody.shortname:\r\n {P(reportbody.shortname, \"body\")}\r\n |else:\r\n {OneOf(\"这个天体\", cat(\"Body \", P(reportbody.shortname, \"body\")))} \r\n }\r\n {OneOf(\"拥有\", \"有\")}\r\n }\r\n\r\n {if len(greatmaterials) > 0:\r\n {OneOf(\"非常高水平\", \"非常高储量\")} 的\r\n {set cur to 0}\n {set length to len(greatmaterials) - 1}\n {while cur < len(greatmaterials):\n {greatmaterials[cur].definition.name}\n {if reportMatPercent > 0: 达到百分之 {round(greatmaterials[cur].percentage, 1)} }\n {set cur to cur + 1}\n {if cur = length: 和\n |elif cur < length:,\n }\n }\r\n \r\n {if len(goodmaterials) > 0 && len(othermaterials) = 0:\r\n 和\r\n |elif len(goodmaterials) > 0 || len(othermaterials) > 0:\r\n ,\r\n }\r\n }\r\n\r\n {if len(goodmaterials) > 0:\r\n {OneOf(\"高水平\", \"大储量\")} 的\r\n {set cur to 0}\n {set length to len(goodmaterials) - 1}\n {while cur < len(goodmaterials):\n {goodmaterials[cur].definition.name}\n {if reportMatPercent > 1: 达到百分之 {round(goodmaterials[cur].percentage, 1)} }\n {set cur to cur + 1}\n {if cur = length: 和\n |elif cur < length:,\n }\n }\r\n }\r\n \r\n {if (len(greatmaterials) > 0 || len(goodmaterials) > 0) && len(othermaterials) > 0:\r\n 和\r\n }\r\n \r\n {if len(othermaterials) > 0:\r\n {OneOf(\"中等水平\", \"一般储量\")} 的\r\n {set cur to 0}\n {set length to len(othermaterials) - 1}\n {while cur < len(othermaterials):\n {othermaterials[cur].definition.name}\n {if reportMatPercent > 2: 为百分之 {round(othermaterials[cur].percentage, 0)} }\n {set cur to cur + 1}\n {if cur = length: 和\n |elif cur < length:,\n }\n }\r\n }\r\n \r\n {if len(goodmaterials) > 0 || len(greatmaterials) > 0 || len(othermaterials) > 0:\r\n .\r\n }\r\n }\r\n}", - "default": false + "script": "{_ Preferences _}\r\n{set reportMats to 1} {_ Set to 0 if you want to hear about materials below your minimum inventory level _}\r\n {_ Set to 1 if you want to hear about materials below your desired inventory level _}\r\n {_ Set to 2 if you want to hear about all materials irrespective of inventory levels _}\r\n\r\n{set reportMatConc to 1} {_ Set to 0 if you only want to hear about great material concentrations _}\r\n {_ Set to 1 if you want to hear about good and great material concentrations _}\r\n {_ Set to 2 if you want to hear about all material concentrations _}\r\n\r\n{set reportMatPercent to 1} {_ Set to 0 if you do not want to hear about material percentages _}\r\n {_ Set to 1 if you only want to hear about great material percentages _}\r\n {_ Set to 2 if you want to hear about good and great material percentages _}\r\n {_ Set to 3 if you want to hear about all material percentages _}\r\n\r\n{_ Fetch from context _}\r\n{set reportbody to BodyDetails(state.eddi_context_body_name, state.eddi_context_body_system)}\r\n{if !reportbody: \r\n {set reportbody to BodyDetails(state.eddi_context_body_name)}\r\n}\r\n\r\n{if !reportbody.name || reportbody.name = \"\":\r\n {_ If it's still not possible to get the body name... _}\r\n 您在\r\n {OneOf(\"咨询\",\"寻问\")}有关哪个天体的信息?\r\n\r\n|else:\r\n\r\n {_ Define a function to obtain a material from inventory}\r\n {set _inventory(required) to:\r\n {for material in materials:\r\n {if material.material = required:\r\n {return material}\r\n }\r\n }\r\n }\r\n\r\n {if reportbody.landable:\r\n\r\n {set goodmaterials to []}\r\n {set greatmaterials to []}\r\n {set othermaterials to []}\r\n\r\n {for material in reportbody.materials:\r\n {set inventoryMat to _inventory(material.material)}\r\n {if (reportMats >= 0 && inventoryMat.amount < inventoryMat.minimum && inventoryMat.minimum > 0)\r\n || (reportMats >= 1 && inventoryMat.amount < inventoryMat.desired && inventoryMat.desired > 0)\r\n || (reportMats >= 2):\r\n {if material.definition.invariantName = 'Selenium' && reportbody.volcanism:\r\n {_ Special case Selenium, which is bugged to appear in crystalline fragments (i.e. with common elements) rather than crystalline shards (i.e. with rare elements) when surface prospecting geological sites}\r\n {set commonMaterialPercentages to 0}\r\n {for m in reportbody.materials:\r\n {_ Sum up the percentages of common elements so that we can calculate the relative chance of Selenium being present }\r\n {if m.definition.Rarity.invariantName = 'common': \r\n {set commonMaterialPercentages to commonMaterialPercentages + m.percentage}\r\n }\r\n }\r\n {if material.percentage > commonMaterialPercentages:\r\n {_ More than a 50% chance to drop Selenium from crystalline fragments }\r\n {set greatmaterials to cat(greatmaterials, [material])}\r\n |elif material.percentage > commonMaterialPercentages * 0.5:\r\n {_ More than a 33% chance to drop Selenium from crystalline fragments }\r\n {set goodmaterials to cat(goodmaterials, [material])}\r\n }\r\n |elif material.percentage >= material.definition.greatpctbody && reportMatConc > -1:\r\n {set greatmaterials to cat(greatmaterials, [material])}\r\n |elif material.percentage >= material.definition.goodpctbody && reportMatConc > 0:\r\n {set goodmaterials to cat(goodmaterials, [material])}\r\n |elif reportMatConc > 1:\r\n {set othermaterials to cat(othermaterials, [material])}\r\n }\r\n }\r\n }\r\n\r\n {_ Start speaking _}\r\n\r\n {if len(goodmaterials) > 0 || len(greatmaterials) > 0 || len(othermaterials) > 0:\r\n {if reportbody.name = reportbody.shortname:\r\n {P(reportbody.shortname, \"body\")}\r\n |else:\r\n {OneOf(\"这个天体\", cat(\"Body \", P(reportbody.shortname, \"body\")))} \r\n }\r\n {OneOf(\"拥有\", \"有\")}\r\n }\r\n\r\n {if len(greatmaterials) > 0:\r\n {OneOf(\"非常高水平\", \"非常高储量\")} 的\r\n {set cur to 0}\n {set length to len(greatmaterials) - 1}\n {while cur < len(greatmaterials):\n {greatmaterials[cur].definition.name}\n {if reportMatPercent > 0: 达到百分之 {round(greatmaterials[cur].percentage, 1)} }\n {set cur to cur + 1}\n {if cur = length: 和\n |elif cur < length:,\n }\n }\r\n \r\n {if len(goodmaterials) > 0 && len(othermaterials) = 0:\r\n 和\r\n |elif len(goodmaterials) > 0 || len(othermaterials) > 0:\r\n ,\r\n }\r\n }\r\n\r\n {if len(goodmaterials) > 0:\r\n {OneOf(\"高水平\", \"大储量\")} 的\r\n {set cur to 0}\n {set length to len(goodmaterials) - 1}\n {while cur < len(goodmaterials):\n {goodmaterials[cur].definition.name}\n {if reportMatPercent > 1: 达到百分之 {round(goodmaterials[cur].percentage, 1)} }\n {set cur to cur + 1}\n {if cur = length: 和\n |elif cur < length:,\n }\n }\r\n }\r\n \r\n {if (len(greatmaterials) > 0 || len(goodmaterials) > 0) && len(othermaterials) > 0:\r\n 和\r\n }\r\n \r\n {if len(othermaterials) > 0:\r\n {OneOf(\"中等水平\", \"一般储量\")} 的\r\n {set cur to 0}\n {set length to len(othermaterials) - 1}\n {while cur < len(othermaterials):\n {othermaterials[cur].definition.name}\n {if reportMatPercent > 2: 为百分之 {round(othermaterials[cur].percentage, 0)} }\n {set cur to cur + 1}\n {if cur = length: 和\n |elif cur < length:,\n }\n }\r\n }\r\n \r\n {if len(goodmaterials) > 0 || len(greatmaterials) > 0 || len(othermaterials) > 0:\r\n .\r\n }\r\n }\r\n}", + "default": true, + "name": "Body materials report", + "description": "Report on the materials available from the contextual body" }, "Body report": { - "name": "Body report", - "description": "Function to report on the details of the contextual body", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{_ Preferences _}\r\n{set reportGravity to 1} {_ Set to 0 if you don't want to hear about the body's gravity. _} \r\n{set reportTerraformState to 1} {_ Set to 0 if you don't want to hear about the terraform state of the body. _}\r\n{set reportRings to 1} {_ Set to 0 if you don't want to hear about the body's rings. _}\r\n{set reportRotation to 0} {_ Set to 1 if you want to hear about the body's rotation. _}\r\n{set reportVolcanism to 1} {_ Set to 0 if you don't want to hear about the body's volcanism. _}\r\n{set reportAtmosphere to 1} {_ Set to 0 if you don't want to hear about the body's atmosphere. _}\r\n{set reportMaterials to 1} {_ Set to 0 if you don't want to hear about the body's materials. _}\r\n{set reportScanValue to 0} {_ Set to 1 if you want to hear about the body's estimated value. _}\r\n\r\n{_ Fetch from context _}\r\n{set reportbody to BodyDetails(state.eddi_context_body_name, state.eddi_context_body_system)}\r\n{if !reportbody: \r\n {set reportbody to BodyDetails(state.eddi_context_body_name)}\r\n}\r\n\r\n{if !reportbody.name || reportbody.name = \"\":\r\n 我不确定您在咨询哪个天体的信息.\r\n|else:\r\n {if reportbody.shortname != reportbody.name: \r\n {if reportbody.bodytype:\r\n {reportbody.bodytype}\r\n |else:\r\n {OneOf(\"该天体\", \"该星体\")} \r\n }\r\n }\r\n {P(reportbody.shortname, \"body\")} 是\r\n\r\n {if reportGravity > 0:\r\n {if reportbody.gravity < 0.5:\r\n 一个低重力的\r\n |elif reportbody.gravity < 2:\r\n 一个中等重力的\r\n |elif reportbody.gravity < 4:\r\n 一个高重力的\r\n |else:\r\n 一个极高重力的\r\n }\r\n |else:\r\n \r\n }\r\n\r\n {if reportTerraformState > 0:\r\n {if reportbody.terraformState.invariantName = \"Candidate for terraforming\":\r\n 可地球化的\r\n |elif reportbody.terraformState.invariantName = \"Terraformed\":\r\n 已地球化的\r\n }\r\n }\r\n\r\n {if find(reportbody.planettype, \"Class\") >= 0 && find(reportbody.planettype, \"gas giant\") >= 0:\r\n {set sudarsky to Occasionally(2, \"Sud-dar-ski\")}\r\n {if find(reportbody.planettype, \"Class V\") >= 0:\r\n {Occasionally(2, \"{Sudarsky} 五级\")}\r\n |elif find(reportbody.planettype, \"Class IV\") >= 0:\r\n {Occasionally(2, \"{Sudarsky} 四级\")}\r\n |elif find(reportbody.planettype, \"Class III\") >= 0:\r\n {Occasionally(2, \"{Sudarsky} 三级\")}\r\n |elif find(reportbody.planettype, \"Class II\") >= 0:\r\n {Occasionally(2, \"{Sudarsky} 二级\")}\r\n |elif find(reportbody.planettype, \"Class I\") >= 0:\r\n {Occasionally(2, \"{Sudarsky} 一级\")}\r\n }\r\n 巨型气态行星\r\n |elif reportbody.planettype:\r\n {P(reportbody.planettype, \"planettype\")}\r\n |else: \r\n {if reportbody.bodytype:\r\n {reportbody.bodytype}\r\n |else:\r\n 世界\r\n }\r\n }\r\n\r\n {if len(reportbody.rings) && reportRings > 0:\r\n 拥有 {if len(reportbody.rings) = 1: 一个}\r\n {if find(reportbody.reserveLevel.invariantName, \"Pristine\") >= 0:\r\n 原始的\r\n |elif find(reportbody.reserveLevel.invariantName, \"Major\") >= 0:\r\n 富\r\n }\r\n {set ringname to []}\r\n {set ringcomposition to []}\r\n {for Ring in reportbody.rings:\r\n {if find(ringcomposition, Ring.composition) < 0:\r\n {set ringcomposition to cat(ringcomposition, [Ring.composition])}\r\n }\r\n }\r\n {if len(ringcomposition) > 0:\r\n {List(ringcomposition)}\r\n }\r\n {if find(ringname[0], \"Belt\") >= 0: \r\n {set ring to \"小行星带\"}\r\n |else:\r\n {set ring to \"星环\"}\r\n }\r\n {ring}{if len(reportbody.rings) > 1 || len(event.rings) > 1:s}\r\n }\r\n\r\n {if reportbody.terraformState.invariantName = \"Terraforming\" && reportTerraformState > 0:\r\n 正在进行地球化改造\r\n }\r\n\r\n {if reportbody.landable:\r\n 是适合登陆的\r\n }\r\n . {_ note the full stop}\r\n\r\n {if reportbody.rotationalperiod && reportRotation > 0:\r\n {Pause(100)}\r\n 它\r\n {if reportbody.rotationalperiod < -20.0:\r\n 缓慢逆行\r\n |elif reportbody.rotationalperiod < -0.5:\r\n 逆行\r\n |elif reportbody.rotationalperiod < 0.0:\r\n 快速逆行\r\n |elif reportbody.rotationalperiod <= 0.5:\r\n 快速运行\r\n |elif reportbody.rotationalperiod > 20.0:\r\n 缓慢运行\r\n }\r\n ,周期为 {round(reportbody.rotationalperiod, 1)} 天\r\n {if reportbody.tidallylocked:\r\n 并且被潮汐锁定\r\n }.\r\n }\r\n\r\n {if reportVolcanism: {F(\"Body volcanism report\")} }\r\n\r\n {if reportAtmosphere: {F(\"Body atmosphere report\")} }\r\n\r\n {if reportMaterials: {F(\"Body materials report\")} }\r\n\r\n {if reportScanValue: {F(\"Report last scan value\")} }\r\n}", - "default": false + "default": true, + "name": "Body report", + "description": "Function to report on the details of the contextual body" }, "Body report summary": { - "name": "Body report summary", - "description": "Function to report on summary details of the contextual body", "enabled": true, - "priority": null, + "priority": 3, "responder": false, - "script": "{_ Preferences _}\r\n\r\n{set reportTerraformables to 1} {_ Reports terraformable and terraformed bodies _}\r\n{set reportPlanetTypes to 1} {_ Reports Earth-like and water worlds _}\r\n{set reportMass to 1} {_ Reports notable masses (relative to Earth's) _}\r\n{set reportRadius to 1} {_ Reports notable radii (in kilometers) _}\r\n{set reportDensity to 0} {_ Reports notable densities (in kilograms per cubic meter) _}\r\n{set reportGravity to 1} {_ Reports notable gravity (in G's) for landable bodies _}\r\n{set reportTemperature to 1} {_ Reports notable temperatures (in Kelvin) _}\r\n{set reportMaterials to 1} {_ Reports materials per preferences in the `Body materials` script. _}\r\n{set reportLandableVolcanism to 0} {_ Reports volcanism on landable worlds _}\r\n{set reportRings to 1} {_ Reports ring details _}\r\n{set reportInterestingOrbits to 1} {_ Reports notable orbital characteristics _}\r\n{set reportRapidRotation to 1} {_ Reports very fast rotating bodies _}\r\n\r\n{_ Fetch from context _}\r\n{set reportbody to BodyDetails(state.eddi_context_body_name, state.eddi_context_body_system)}\r\n{if !reportbody: \r\n {set reportbody to BodyDetails(state.eddi_context_body_name)}\r\n}\r\n\r\n{_ Begin processing _}\r\n\r\n{if !reportbody.name || reportbody.name = \"\":\r\n {_ If it's still not possible to get the body name... _}\r\n 您在\r\n {OneOf(\"咨询\",\"寻问\")}有关哪个天体的信息?\r\n\r\n|else:\r\n\r\n {set notables to []}\r\n\r\n {if reportInterestingOrbits:\r\n\r\n {set orbitNotables to []}\r\n\r\n {if reportbody.eccentricityprobability:\r\n {if reportbody.eccentricityprobability > 99.9:\r\n {set orbitNotables to cat(orbitNotables, [cat(\"难以置信的 \", OneOf(\"椭圆的\", \"拉长的\"))])}\r\n |elif reportbody.eccentricityprobability > 99:\r\n {set orbitNotables to cat(orbitNotables, [cat(\"极端的 \", OneOf(\"椭圆的\", \"拉长的\"))])}\r\n |elif reportbody.eccentricityprobability > 97:\r\n {set orbitNotables to cat(orbitNotables, [cat(\"不常见地 \",OneOf(\"椭圆的\", \"拉长的\"))])}\r\n }\r\n }\r\n\r\n {if reportbody.inclinationprobability:\r\n {if reportbody.inclinationprobability > 99.9:\r\n {set orbitNotables to cat(orbitNotables, [cat(\"难以置信的倾斜\")])}\r\n |elif reportbody.inclinationprobability > 99:\r\n {set orbitNotables to cat(orbitNotables, [cat(\"极端的倾斜\")])}\r\n |elif reportbody.inclinationprobability > 97:\r\n {set orbitNotables to cat(orbitNotables, [cat(\"不常见的倾斜\")])}\r\n }\r\n }\r\n\r\n {if reportbody.orbitalperiodprobability:\r\n {if reportbody.orbitalperiod < 0: {set retrograde to cat(\" \", \"逆行\", \" \")} }\r\n {if reportbody.orbitalperiodprobability < 0.1:\r\n {set orbitNotables to cat(orbitNotables, [cat(\"难以置信地快\", retrograde)])}\r\n |elif reportbody.orbitalperiodprobability < 1:\r\n {set orbitNotables to cat(orbitNotables, [cat(\"极端地快\", retrograde)])}\r\n |elif reportbody.orbitalperiodprobability < 3:\r\n {set orbitNotables to cat(orbitNotables, [cat(\"不常见地快\", retrograde)])}\r\n }\r\n }\r\n\r\n {if len(orbitNotables) > 0:\r\n {if StartsWithVowel(orbitNotables[0]): {set a to \"一个\"} |else: {set a to \"一个\"} }\r\n {set cur to 0}\r\n {set length to len(orbitNotables) - 1}\r\n {while cur < len(orbitNotables):\r\n {set orbitdescription to cat(orbitdescription, orbitNotables[cur])}\n {set cur to cur + 1}\n {if cur = length: \r\n {set orbitdescription to cat(orbitdescription, \" 和 \")}\n |elif cur < length:\r\n {set orbitdescription to cat(orbitdescription, \", \")}\n }\n }\r\n {set notables to cat(notables, [cat(a, \" \", orbitdescription, \" \", \"轨道\")])}\r\n }\r\n }\r\n\r\n {if reportbody.rotationalperiod < 0: {set retrograde to cat(\" \", \"retrograde\", \" \")} }\r\n {if reportRapidRotation && reportbody.rotationalperiodprobability:\r\n {if !retrograde && reportbody.rotationalperiodprobability < 0.1:\r\n {set notables to cat(notables, [cat(\"难以置信地短的旋转周期,为 \", Humanise(reportbody.rotationalperiod), \" 天\")])}\r\n |elif !retrograde && reportbody.rotationalperiodprobability < 1:\r\n {set notables to cat(notables, [cat(\"极短的旋转周期,为 \", Humanise(reportbody.rotationalperiod), \" 天\")])}\r\n |elif !retrograde && reportbody.rotationalperiodprobability < 3:\r\n {set notables to cat(notables, [cat(\"不常见地短的旋转周期,为 \", Humanise(reportbody.rotationalperiod), \" 天\")])}\r\n }\r\n }\r\n\r\n {if reportMass && reportbody.massprobability:\r\n {if reportbody.massprobability < 0.1:\r\n {set notables to cat(notables, [cat(\"难以置信地低的质量,只有地球的 \", Humanise(reportbody.earthmass), \" 倍\")])}\r\n |elif reportbody.massprobability < 1:\r\n {set notables to cat(notables, [cat(\"极低的质量,有地球的 \", Humanise(reportbody.earthmass), \" 倍\")])}\r\n |elif reportbody.massprobability < 3:\r\n {set notables to cat(notables, [cat(\"很低的质量,有地球的 \", Humanise(reportbody.earthmass), \" 倍\")])}\r\n |elif reportbody.massprobability > 99.9:\r\n {set notables to cat(notables, [cat(\"难以置信地高的质量,足足有地球的 \", Humanise(reportbody.earthmass), \" 倍\")])}\r\n |elif reportbody.massprobability > 99:\r\n {set notables to cat(notables, [cat(\"极高的质量,有地球的 \", Humanise(reportbody.earthmass), \" 倍\")])}\r\n |elif reportbody.massprobability > 97:\r\n {set notables to cat(notables, [cat(\"很高的质量,有地球的 \", Humanise(reportbody.earthmass), \" 倍\")])}\r\n }\r\n }\r\n\r\n {if reportRadius && reportbody.radiusprobability:\r\n {if reportbody.radiusprobability < 0.1:\r\n {set notables to cat(notables, [cat(\"难以置信地小的半径,只有 \", Humanise(reportbody.radius), \" 千米\")])}\r\n |elif reportbody.radiusprobability < 1:\r\n {set notables to cat(notables, [cat(\"极小的半径,只有 \", Humanise(reportbody.radius), \" 千米\")])}\r\n |elif reportbody.radiusprobability < 3:\r\n {set notables to cat(notables, [cat(\"很小的半径,只有 \", Humanise(reportbody.radius), \" 千米\")])}\r\n |elif reportbody.radiusprobability > 99.9:\r\n {set notables to cat(notables, [cat(\"难以置信地大的半径,足足有 \", Humanise(reportbody.radius), \" 千米\")])}\r\n |elif reportbody.radiusprobability > 99:\r\n {set notables to cat(notables, [cat(\"极大的半径,足足有 \", Humanise(reportbody.radius), \" 千米\")])}\r\n |elif reportbody.radiusprobability > 97:\r\n {set notables to cat(notables, [cat(\"很大的半径,足足有 \", Humanise(reportbody.radius), \" 千米\")])}\r\n }\r\n }\r\n\r\n {if reportTemperature && reportbody.tempprobability:\r\n {if reportbody.tempprobability < 0.1:\r\n {set notables to cat(notables, [cat(\"难以置信地低的表面温度,只有 \", Humanise(reportbody.temperature), \" 开尔文\")])}\r\n |elif reportbody.tempprobability < 1:\r\n {set notables to cat(notables, [cat(\"极低的表面温度,为 \", Humanise(reportbody.temperature), \" 开尔文\")])}\r\n |elif reportbody.tempprobability < 3:\r\n {set notables to cat(notables, [cat(\"很低的表面温度,为 \", Humanise(reportbody.temperature), \" 开尔文\")])}\r\n |elif reportbody.tempprobability > 99.9:\r\n {set notables to cat(notables, [cat(\"难以置信地高表面温度,足足有 \", Humanise(reportbody.temperature), \" 开尔文\")])}\r\n |elif reportbody.tempprobability > 99:\r\n {set notables to cat(notables, [cat(\"极高表面温度,为 \", Humanise(reportbody.temperature), \" 开尔文\")])}\r\n |elif reportbody.tempprobability > 97:\r\n {set notables to cat(notables, [cat(\"很高的表面温度,为 \", Humanise(reportbody.temperature), \" 开尔文\")])}\r\n }\r\n }\r\n\r\n {if reportGravity && reportbody.landable && reportbody.gravityprobability:\r\n {if reportbody.gravityprobability < 0.1:\r\n {set notables to cat(notables, [cat(\"难以置信地低重力,只有地球的 \", Humanise(reportbody.gravity), \" 倍\")])}\r\n |elif reportbody.gravityprobability < 1:\r\n {set notables to cat(notables, [cat(\"极低重力,有地球的 \", Humanise(reportbody.gravity), \" 倍\")])}\r\n |elif reportbody.gravityprobability < 3:\r\n {set notables to cat(notables, [cat(\"很低的重力,为地球的 \", Humanise(reportbody.gravity), \" 倍\")])}\r\n |elif reportbody.gravityprobability > 99.9:\r\n {set notables to cat(notables, [cat(\"难以置信地高重力,足足有地球的 \", Humanise(reportbody.gravity), \" 倍\")])}\r\n |elif reportbody.gravityprobability > 99:\r\n {set notables to cat(notables, [cat(\"极高重力,有地球的 \", Humanise(reportbody.gravity), \" 倍\")])}\r\n |elif reportbody.gravityprobability > 97:\r\n {set notables to cat(notables, [cat(\"很高的重力,为地球的 \", Humanise(reportbody.gravity), \" 倍\")])}\r\n }\r\n }\r\n\r\n {if reportDensity && reportbody.densityprobability:\r\n {if reportbody.densityprobability < 0.1:\r\n {set notables to cat(notables, [cat(\"难以置信地低的密度,只有 \", Humanise(reportbody.density), \" 千克每立方米\")])}\r\n |elif reportbody.densityprobability < 1:\r\n {set notables to cat(notables, [cat(\"极低的密度,为 \", Humanise(reportbody.density), \" 千克每立方米\")])}\r\n |elif reportbody.densityprobability < 3:\r\n {set notables to cat(notables, [cat(\"很低的密度,为 \", Humanise(reportbody.density), \" 千克每立方米\")])}\r\n |elif reportbody.densityprobability > 99.9:\r\n {set notables to cat(notables, [cat(\"难以置信地高的密度,足足有 \", Humanise(reportbody.density), \" 千克每立方米\")])}\r\n |elif reportbody.densityprobability > 99:\r\n {set notables to cat(notables, [cat(\"极高的密度,为 \", Humanise(reportbody.density), \" 千克每立方米\")])}\r\n |elif reportbody.densityprobability > 97:\r\n {set notables to cat(notables, [cat(\"很高的密度,为 \", Humanise(reportbody.density), \" 千克每立方米\")])}\r\n }\r\n }\r\n\r\n {if reportVolcanism:\r\n {if reportbody.volcanism && reportbody.landable:\r\n {set notables to cat(notables, [cat(OneOf(\"火山\", \"板块构造\"), \" 活动\")])}\r\n }\r\n }\r\n\r\n {if reportRings:\r\n {if reportbody.rings:\r\n {set ringcompositions to []}\r\n {set cur to 0}\r\n {for ring in reportbody.rings:\r\n {if find(ring.name, \"Ring\") > -1:\r\n {if find(ringcompositions, ring.composition) = -1:\r\n {set ringcompositions to cat(ringcompositions, [cat(ring.composition)])}\r\n }\r\n }\r\n {set cur to cur + 1}\r\n }\r\n {set cur to 0}\r\n {set length to len(ringcompositions) - 1}\r\n {while cur < len(ringcompositions):\r\n {set ringsdescription to cat(ringsdescription, ringcompositions[cur])}\n {set cur to cur + 1}\n {if cur = length: \r\n {set ringsdescription to cat(ringsdescription, \" 和 \")}\n |elif cur < length:\r\n {set ringsdecription to cat(ringsdescription, \", \")}\n }\n }\r\n {if ringsdescription:\r\n {if len(ringcompositions) = 1:\r\n {if StartsWithVowel(reportbody.reserves): \r\n {set a to \"一个 \"} \r\n |else: \r\n {set a to \"一个 \"}\r\n }\r\n {set rings to \"星环\"}\r\n |else:\r\n {set rings to \"星环\"} \r\n }\r\n {if reportbody.reserveLevel.invariantName != \"None\": \r\n {set reserves to reportbody.reserves}\r\n }\r\n {set notables to cat(notables, [cat(a, \" \", reserves, \" \", ringsdescription, \" \", rings)])}\r\n }\r\n }\r\n }\r\n\r\n {if reportTerraformables:\r\n {if reportbody.terraformState.invariantName = \"Candidate for terraforming\":\r\n {set notables to cat(notables, [OneOf(\"被地球化的潜力\", \"是可被地球化的\")])}\r\n |elif reportbody.terraformState.invariantName = \"Terraformed\":\r\n {set notables to cat(notables, [\"已被地球化的\"])}\r\n }\r\n }\r\n\r\n {if reportPlanetTypes:\r\n {if reportbody.planetClass.invariantName = \"Earth-like world\":\r\n {set notables to cat(notables, [\"类地的\"])}\r\n |elif reportbody.planetClass.invariantName = \"Water world\":\r\n {set notables to cat(notables, [OneOf(\"丰富的液态水\", \"地表丰富的液态水\")])}\r\n }\r\n }\r\n\r\n {_ Begin speaking _}\r\n\r\n {if len(notables) > 0:\r\n {if reportbody.shortname != reportbody.bodyname:\r\n {if reportbody.bodytype:\r\n {reportbody.bodytype}\r\n |else:\r\n 天体\r\n }\r\n {P(reportbody.shortname, \"body\")}\r\n |else:\r\n {P(reportbody.bodyname, \"body\")}\r\n }\r\n 是\r\n\r\n {if len(notables) = 1:\r\n {set desc to \"值得注意的\"}\r\n |elif len(notables) = 2:\r\n {set desc to OneOf('有趣的', '值得注意的', '卓越的')}\r\n |elif len(notables) = 3:\r\n {set desc to OneOf('特殊的', '卓越的')}\r\n |elif len(notables) = 4:\r\n {set desc to OneOf('非凡的')}\r\n |elif len(notables) >= 5:\r\n {set desc to OneOf('独一无二的', '举世无双的')}\r\n }\r\n {OneOf(\"{desc},\", \"{if StartsWithVowel(desc): 一个 |else: 一个 } {desc} {P(reportbody.planettype, 'planettype')}\")}\r\n\r\n 其特殊之处为: {List(notables)}.\r\n }\r\n\r\n {if reportMaterials:\r\n {F(\"Body materials report\")}\r\n }\r\n}", - "default": false + "script": "{_ Preferences _}\r\n\r\n{set reportTerraformables to 1} {_ Reports terraformable and terraformed bodies _}\r\n{set reportPlanetTypes to 1} {_ Reports Earth-like and water worlds _}\r\n{set reportMass to 1} {_ Reports notable masses (relative to Earth's) _}\r\n{set reportRadius to 1} {_ Reports notable radii (in kilometers) _}\r\n{set reportDensity to 0} {_ Reports notable densities (in kilograms per cubic meter) _}\r\n{set reportGravity to 1} {_ Reports notable gravity (in G's) for landable bodies _}\r\n{set reportTemperature to 1} {_ Reports notable temperatures _}\r\n{set reportTempScale to 0} {_ Set to 0 for temperatures in Kelvin _}\r\n {_ Set to 1 for temperatures in Celsius _}\r\n {_ Set to 2 for temperatures in Fahrenheit _}\r\n{set reportMaterials to 0} {_ Reports materials per preferences in the `Body materials` script. _}\r\n{set reportLandableVolcanism to 0} {_ Reports volcanism on landable worlds _}\r\n{set reportRings to 1} {_ Reports ring details _}\r\n{set reportInterestingOrbits to 1} {_ Reports notable orbital characteristics _}\r\n{set reportRapidRotation to 1} {_ Reports very fast rotating bodies _}\r\n\r\n{_ Fetch from context _}\r\n{set reportbody to BodyDetails(state.eddi_context_body_name, state.eddi_context_body_system)}\r\n{if !reportbody: \r\n {set reportbody to BodyDetails(state.eddi_context_body_name)}\r\n}\r\n\r\n{_ Begin processing _}\r\n\r\n{if !reportbody.name || reportbody.name = \"\":\r\n {_ If it's still not possible to get the body name... _}\r\n 您在\r\n {OneOf(\"咨询\",\"寻问\")}有关哪个天体的信息?\r\n\r\n|else:\r\n\r\n {set notables to []}\r\n\r\n {if reportInterestingOrbits:\r\n\r\n {set orbitNotables to []}\r\n\r\n {if reportbody.eccentricityprobability:\r\n {if reportbody.eccentricityprobability > 99.9:\r\n {set orbitNotables to cat(orbitNotables, [cat(\"难以置信的 \", OneOf(\"椭圆的\", \"拉长的\"))])}\r\n |elif reportbody.eccentricityprobability > 99:\r\n {set orbitNotables to cat(orbitNotables, [cat(\"极端的 \", OneOf(\"椭圆的\", \"拉长的\"))])}\r\n |elif reportbody.eccentricityprobability > 97:\r\n {set orbitNotables to cat(orbitNotables, [cat(\"不常见地 \",OneOf(\"椭圆的\", \"拉长的\"))])}\r\n }\r\n }\r\n\r\n {if reportbody.inclinationprobability:\r\n {if reportbody.inclinationprobability > 99.9:\r\n {set orbitNotables to cat(orbitNotables, [cat(\"难以置信的倾斜\")])}\r\n |elif reportbody.inclinationprobability > 99:\r\n {set orbitNotables to cat(orbitNotables, [cat(\"极端的倾斜\")])}\r\n |elif reportbody.inclinationprobability > 97:\r\n {set orbitNotables to cat(orbitNotables, [cat(\"不常见的倾斜\")])}\r\n }\r\n }\r\n\r\n {if reportbody.orbitalperiodprobability:\r\n {if reportbody.orbitalperiod < 0: {set retrograde to cat(\" \", \"逆行\", \" \")} }\r\n {if reportbody.orbitalperiodprobability < 0.1:\r\n {set orbitNotables to cat(orbitNotables, [cat(\"难以置信地快\", retrograde)])}\r\n |elif reportbody.orbitalperiodprobability < 1:\r\n {set orbitNotables to cat(orbitNotables, [cat(\"极端地快\", retrograde)])}\r\n |elif reportbody.orbitalperiodprobability < 3:\r\n {set orbitNotables to cat(orbitNotables, [cat(\"不常见地快\", retrograde)])}\r\n }\r\n }\r\n\r\n {if len(orbitNotables) > 0:\r\n {if StartsWithVowel(orbitNotables[0]): {set a to \"一个\"} |else: {set a to \"一个\"} }\r\n {set cur to 0}\r\n {set length to len(orbitNotables) - 1}\r\n {while cur < len(orbitNotables):\r\n {set orbitdescription to cat(orbitdescription, orbitNotables[cur])}\n {set cur to cur + 1}\n {if cur = length: \r\n {set orbitdescription to cat(orbitdescription, \" 和 \")}\n |elif cur < length:\r\n {set orbitdescription to cat(orbitdescription, \", \")}\n }\n }\r\n {set notables to cat(notables, [cat(a, \" \", orbitdescription, \" \", \"轨道\")])}\r\n }\r\n }\r\n\r\n {if reportbody.rotationalperiod < 0: {set retrograde to cat(\" \", \"retrograde\", \" \")} }\r\n {if reportRapidRotation && reportbody.rotationalperiodprobability:\r\n {if !retrograde && reportbody.rotationalperiodprobability < 0.1:\r\n {set notables to cat(notables, [cat(\"难以置信地短的旋转周期,为 \", Humanise(reportbody.rotationalperiod), \" 天\")])}\r\n |elif !retrograde && reportbody.rotationalperiodprobability < 1:\r\n {set notables to cat(notables, [cat(\"极短的旋转周期,为 \", Humanise(reportbody.rotationalperiod), \" 天\")])}\r\n |elif !retrograde && reportbody.rotationalperiodprobability < 3:\r\n {set notables to cat(notables, [cat(\"不常见地短的旋转周期,为 \", Humanise(reportbody.rotationalperiod), \" 天\")])}\r\n }\r\n }\r\n\r\n {if reportMass && reportbody.massprobability:\r\n {if reportbody.massprobability < 0.1:\r\n {set notables to cat(notables, [cat(\"难以置信地低的质量,只有地球的 \", Humanise(reportbody.earthmass), \" 倍\")])}\r\n |elif reportbody.massprobability < 1:\r\n {set notables to cat(notables, [cat(\"极低的质量,有地球的 \", Humanise(reportbody.earthmass), \" 倍\")])}\r\n |elif reportbody.massprobability < 3:\r\n {set notables to cat(notables, [cat(\"很低的质量,有地球的 \", Humanise(reportbody.earthmass), \" 倍\")])}\r\n |elif reportbody.massprobability > 99.9:\r\n {set notables to cat(notables, [cat(\"难以置信地高的质量,足足有地球的 \", Humanise(reportbody.earthmass), \" 倍\")])}\r\n |elif reportbody.massprobability > 99:\r\n {set notables to cat(notables, [cat(\"极高的质量,有地球的 \", Humanise(reportbody.earthmass), \" 倍\")])}\r\n |elif reportbody.massprobability > 97:\r\n {set notables to cat(notables, [cat(\"很高的质量,有地球的 \", Humanise(reportbody.earthmass), \" 倍\")])}\r\n }\r\n }\r\n\r\n {if reportRadius && reportbody.radiusprobability:\r\n {if reportbody.radiusprobability < 0.1:\r\n {set notables to cat(notables, [cat(\"难以置信地小的半径,只有 \", Humanise(reportbody.radius), \" 千米\")])}\r\n |elif reportbody.radiusprobability < 1:\r\n {set notables to cat(notables, [cat(\"极小的半径,只有 \", Humanise(reportbody.radius), \" 千米\")])}\r\n |elif reportbody.radiusprobability < 3:\r\n {set notables to cat(notables, [cat(\"很小的半径,只有 \", Humanise(reportbody.radius), \" 千米\")])}\r\n |elif reportbody.radiusprobability > 99.9:\r\n {set notables to cat(notables, [cat(\"难以置信地大的半径,足足有 \", Humanise(reportbody.radius), \" 千米\")])}\r\n |elif reportbody.radiusprobability > 99:\r\n {set notables to cat(notables, [cat(\"极大的半径,足足有 \", Humanise(reportbody.radius), \" 千米\")])}\r\n |elif reportbody.radiusprobability > 97:\r\n {set notables to cat(notables, [cat(\"很大的半径,足足有 \", Humanise(reportbody.radius), \" 千米\")])}\r\n }\r\n }\r\n\r\n {if reportTemperature && reportbody.tempprobability:\r\n {if reportbody.tempprobability < 0.1:\r\n {set notables to cat(notables, [cat(\"难以置信地低的表面温度,只有 \", Humanise(reportbody.temperature), \" 开尔文\")])}\r\n |elif reportbody.tempprobability < 1:\r\n {set notables to cat(notables, [cat(\"极低的表面温度,为 \", Humanise(reportbody.temperature), \" 开尔文\")])}\r\n |elif reportbody.tempprobability < 3:\r\n {set notables to cat(notables, [cat(\"很低的表面温度,为 \", Humanise(reportbody.temperature), \" 开尔文\")])}\r\n |elif reportbody.tempprobability > 99.9:\r\n {set notables to cat(notables, [cat(\"难以置信地高表面温度,足足有 \", Humanise(reportbody.temperature), \" 开尔文\")])}\r\n |elif reportbody.tempprobability > 99:\r\n {set notables to cat(notables, [cat(\"极高表面温度,为 \", Humanise(reportbody.temperature), \" 开尔文\")])}\r\n |elif reportbody.tempprobability > 97:\r\n {set notables to cat(notables, [cat(\"很高的表面温度,为 \", Humanise(reportbody.temperature), \" 开尔文\")])}\r\n }\r\n }\r\n\r\n {if reportGravity && reportbody.landable && reportbody.gravityprobability:\r\n {if reportbody.gravityprobability < 0.1:\r\n {set notables to cat(notables, [cat(\"难以置信地低重力,只有地球的 \", Humanise(reportbody.gravity), \" 倍\")])}\r\n |elif reportbody.gravityprobability < 1:\r\n {set notables to cat(notables, [cat(\"极低重力,有地球的 \", Humanise(reportbody.gravity), \" 倍\")])}\r\n |elif reportbody.gravityprobability < 3:\r\n {set notables to cat(notables, [cat(\"很低的重力,为地球的 \", Humanise(reportbody.gravity), \" 倍\")])}\r\n |elif reportbody.gravityprobability > 99.9:\r\n {set notables to cat(notables, [cat(\"难以置信地高重力,足足有地球的 \", Humanise(reportbody.gravity), \" 倍\")])}\r\n |elif reportbody.gravityprobability > 99:\r\n {set notables to cat(notables, [cat(\"极高重力,有地球的 \", Humanise(reportbody.gravity), \" 倍\")])}\r\n |elif reportbody.gravityprobability > 97:\r\n {set notables to cat(notables, [cat(\"很高的重力,为地球的 \", Humanise(reportbody.gravity), \" 倍\")])}\r\n }\r\n }\r\n\r\n {if reportDensity && reportbody.densityprobability:\r\n {if reportbody.densityprobability < 0.1:\r\n {set notables to cat(notables, [cat(\"难以置信地低的密度,只有 \", Humanise(reportbody.density), \" 千克每立方米\")])}\r\n |elif reportbody.densityprobability < 1:\r\n {set notables to cat(notables, [cat(\"极低的密度,为 \", Humanise(reportbody.density), \" 千克每立方米\")])}\r\n |elif reportbody.densityprobability < 3:\r\n {set notables to cat(notables, [cat(\"很低的密度,为 \", Humanise(reportbody.density), \" 千克每立方米\")])}\r\n |elif reportbody.densityprobability > 99.9:\r\n {set notables to cat(notables, [cat(\"难以置信地高的密度,足足有 \", Humanise(reportbody.density), \" 千克每立方米\")])}\r\n |elif reportbody.densityprobability > 99:\r\n {set notables to cat(notables, [cat(\"极高的密度,为 \", Humanise(reportbody.density), \" 千克每立方米\")])}\r\n |elif reportbody.densityprobability > 97:\r\n {set notables to cat(notables, [cat(\"很高的密度,为 \", Humanise(reportbody.density), \" 千克每立方米\")])}\r\n }\r\n }\r\n\r\n {if reportVolcanism:\r\n {if reportbody.volcanism && reportbody.landable:\r\n {set notables to cat(notables, [cat(OneOf(\"火山\", \"板块构造\"), \" 活动\")])}\r\n }\r\n }\r\n\r\n {if reportRings:\r\n {if reportbody.rings:\r\n {set ringcompositions to []}\r\n {set cur to 0}\r\n {for ring in reportbody.rings:\r\n {if find(ring.name, \"Ring\") > -1:\r\n {if find(ringcompositions, ring.composition) = -1:\r\n {set ringcompositions to cat(ringcompositions, [cat(ring.composition)])}\r\n }\r\n }\r\n {set cur to cur + 1}\r\n }\r\n {set cur to 0}\r\n {set length to len(ringcompositions) - 1}\r\n {while cur < len(ringcompositions):\r\n {set ringsdescription to cat(ringsdescription, ringcompositions[cur])}\n {set cur to cur + 1}\n {if cur = length: \r\n {set ringsdescription to cat(ringsdescription, \" 和 \")}\n |elif cur < length:\r\n {set ringsdecription to cat(ringsdescription, \", \")}\n }\n }\r\n {if ringsdescription:\r\n {if len(ringcompositions) = 1:\r\n {if StartsWithVowel(reportbody.reserves): \r\n {set a to \"一个 \"} \r\n |else: \r\n {set a to \"一个 \"}\r\n }\r\n {set rings to \"星环\"}\r\n |else:\r\n {set rings to \"星环\"} \r\n }\r\n {if reportbody.reserveLevel.invariantName != \"None\": \r\n {set reserves to reportbody.reserves}\r\n }\r\n {set notables to cat(notables, [cat(a, \" \", reserves, \" \", ringsdescription, \" \", rings)])}\r\n }\r\n }\r\n }\r\n\r\n {if reportTerraformables:\r\n {if reportbody.terraformState.invariantName = \"Candidate for terraforming\":\r\n {set notables to cat(notables, [OneOf(\"被地球化的潜力\", \"是可被地球化的\")])}\r\n |elif reportbody.terraformState.invariantName = \"Terraformed\":\r\n {set notables to cat(notables, [\"已被地球化的\"])}\r\n }\r\n }\r\n\r\n {if reportPlanetTypes:\r\n {if reportbody.planetClass.invariantName = \"Earth-like world\":\r\n {set notables to cat(notables, [\"类地的\"])}\r\n |elif reportbody.planetClass.invariantName = \"Water world\":\r\n {set notables to cat(notables, [OneOf(\"丰富的液态水\", \"地表丰富的液态水\")])}\r\n }\r\n }\r\n\r\n {_ Begin speaking _}\r\n\r\n {if len(notables) > 0:\r\n {if reportbody.shortname != reportbody.bodyname:\r\n {if reportbody.bodytype:\r\n {reportbody.bodytype}\r\n |else:\r\n 天体\r\n }\r\n {P(reportbody.shortname, \"body\")}\r\n |else:\r\n {P(reportbody.bodyname, \"body\")}\r\n }\r\n 是\r\n\r\n {if len(notables) = 1:\r\n {set desc to \"值得注意的\"}\r\n |elif len(notables) = 2:\r\n {set desc to OneOf('有趣的', '值得注意的', '卓越的')}\r\n |elif len(notables) = 3:\r\n {set desc to OneOf('特殊的', '卓越的')}\r\n |elif len(notables) = 4:\r\n {set desc to OneOf('非凡的')}\r\n |elif len(notables) >= 5:\r\n {set desc to OneOf('独一无二的', '举世无双的')}\r\n }\r\n {OneOf(\"{desc},\", \"{if StartsWithVowel(desc): 一个 |else: 一个 } {desc} {P(reportbody.planettype, 'planettype')}\")}\r\n\r\n 其特殊之处为: {List(notables)}.\r\n }\r\n\r\n {if reportMaterials:\r\n {F(\"Body materials report\")}\r\n }\r\n}", + "default": true, + "name": "Body report summary", + "description": "Function to report on summary details of the contextual body" }, "Body scanned": { - "name": "Body scanned", - "description": "Triggered when you complete a scan of a planetary body", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context _}\r\n{SetState('eddi_context_last_subject', 'body')}\r\n{SetState('eddi_context_last_action', 'scan')}\r\n{SetState('eddi_context_body_system', system.name)}\r\n{SetState('eddi_context_body_name', event.name)}\r\n{SetState('eddi_context_last_scan_estimated_value', event.estimatedvalue)}\r\n\r\n{_ Preferences _}\r\n\r\n{set fullBodyReport to 0}\r\n\r\n{_ Process the event _}\r\n\r\n{if ship.Role.edname = \"Exploration\" || ship.Role.edname = \"Multipurpose\":\r\n {Pause(500)}\r\n {if fullBodyReport:\r\n {F(\"Body report\")}\r\n |else:\r\n {F(\"Body report summary\")}\r\n }\r\n}", - "default": true + "default": true, + "name": "Body scanned", + "description": "Triggered when you complete a scan of a planetary body" }, "Body volcanism report": { - "name": "Body volcanism report", - "description": "Report on the volcanism of the contextual body", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{_ Fetch from context _}\r\n{set reportbody to BodyDetails(state.eddi_context_body_name, state.eddi_context_body_system)}\r\n{if !reportbody: \r\n {set reportbody to BodyDetails(state.eddi_context_body_name)}\r\n}\r\n\r\n{if !reportbody.name || reportbody.name = \"\":\r\n 我不太清楚您询问的是哪个天体.\r\n|else:\r\n {if (reportbody.volcanism || len(reportbody.volcanism) > 0) && reportVolcanism > 0:\r\n {if reportbody.name = reportbody.shortname:\r\n {P(reportbody.shortname, \"body\")} {OneOf(\"拥有\", \"包含\")}\r\n |else:\r\n {OneOf(\"检测到\", \r\n \"我探测到\", \r\n \"探测器回报:\", \r\n \"这个 {reportbody.bodytype} 拥有\", \r\n )}\r\n }\r\n\r\n {if reportbody.volcanism.type = \"Geysers\":\r\n {if reportbody.volcanism.invariantAmount = 'Major':\r\n 大量的\r\n |elif reportbody.volcanism.invariantAmount = 'Minor':\r\n 少量的\r\n }\r\n {Occasionally(3, \"地表\")}.活跃 {reportbody.volcanism.composition} 间歇泉\r\n \r\n |else:\r\n {if reportbody.volcanism.invariantAmount = 'Major':\r\n 高水平的\r\n |elif reportbody.volcanism.invariantAmount = 'Minor':\r\n 低水平的\r\n }\r\n 活跃 {reportbody.volcanism.composition} \r\n {OneOf(\r\n \" {Occasionally(3, \\\"地表\\\")岩浆流}\",\r\n OneOf(\"近地表岩浆活动\", \"浅层岩浆流\")\r\n )}.\r\n }\r\n }\r\n}", - "default": false + "default": true, + "name": "Body volcanism report", + "description": "Report on the volcanism of the contextual body" }, "Bond awarded": { - "name": "Bond awarded", - "description": "Triggered when you are awarded a combat bond", "enabled": true, "priority": 3, "responder": true, - "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'bond')}\r\n{SetState('eddi_context_last_action', 'award')}\r\n{SetState('eddi_context_bond_amount', event.reward)}\r\n{SetState('eddi_context_bond_faction', event.awardingfaction)}\r\n{SetState(\"eddi_context_criminal_record_change\", true)}\r\n\r\n目标 {OneOf(\"被击毁\",\"被消灭\",\"被击落\")}.", - "default": true + "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'bond')}\r\n{SetState('eddi_context_last_action', 'award')}\r\n{SetState('eddi_context_bond_amount', event.reward)}\r\n{SetState('eddi_context_bond_faction', event.awardingfaction)}\r\n{SetState(\"eddi_context_criminal_record_change\", true)}\r\n\r\n目标 {OneOf(\"被击毁\",\"被消灭\",\"被击杀\")}.", + "default": true, + "name": "Bond awarded", + "description": "Triggered when you are awarded a combat bond" }, "Bond redeemed": { - "name": "Bond redeemed", - "description": "Triggered when you redeem a combat bond", "enabled": true, "priority": 3, "responder": true, - "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'bond')}\r\n{SetState('eddi_context_last_action', 'redeem')}\r\n{SetState('eddi_context_bond_amount', event.amount)}\r\n\r\n您{Occasionally(2, OneOf(\"已经\", \"刚刚\"))}\r\n{OneOf(\"兑换了\", \"收取了\")}\r\n价值 {Humanise(event.amount)} 点的战斗兑换券 \r\n\r\n\r\n\r\n{Occasionally(2, \"\r\n {if len(event.rewards) = 1 && len(event.rewards[0].faction) > 0:\r\n from {P(event.rewards[0].faction, \"faction\")}\r\n |else:\r\n . \r\n {set cur to 0}\r\n {while cur < len(event.rewards):\r\n {if len(event.rewards[cur].faction) > 0:\r\n {if cur = 0:\r\n |elif cur < len(event.rewards) - 1:\r\n , \r\n |else:\r\n 还有\r\n }\r\n {P(event.rewards[cur].faction, \"faction\")} \r\n 提供的\r\n {Humanise(event.rewards[cur].amount)} 点\r\n \r\n {set cur to cur + 1}\r\n }\r\n }\r\n }\r\n\")}\r\n\r\n{if event.brokerpercentage && event.brokerpercentage > 0:\r\n 在扣除\r\n {OneOf(\"其他费用\", \"其他支出\")} 共\r\n {round((event.amount / (100 - event.brokerpercentage)) * event.brokerpercentage, 0)} 点之后\r\n}.", - "default": false + "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'bond')}\r\n{SetState('eddi_context_last_action', 'redeem')}\r\n{SetState('eddi_context_bond_amount', event.amount)}\r\n\r\n您{Occasionally(2, OneOf(\"已经\", \"刚刚\"))}\r\n{OneOf(\"兑换了\", \"收取了\")}\r\n价值 {Humanise(event.amount)} 点的战斗兑换券 \r\n\r\n\r\n\r\n{Occasionally(2, \"\r\n {if len(event.rewards) = 1 && len(event.rewards[0].faction) > 0:\r\n from {P(event.rewards[0].faction, \"faction\")}\r\n |else:\r\n . \r\n {set cur to 0}\r\n {while cur < len(event.rewards):\r\n {if len(event.rewards[cur].faction) > 0:\r\n {if cur = 0:\r\n |elif cur < len(event.rewards) - 1:\r\n , \r\n |else:\r\n 还有\r\n }\r\n {P(event.rewards[cur].faction, \"faction\")} \r\n 提供的\r\n {Humanise(event.rewards[cur].amount)} 点\r\n \r\n {set cur to cur + 1}\r\n }\r\n }\r\n }\r\n\")}\r\n\r\n{if event.brokerpercentage && event.brokerpercentage > 0:\r\n 在扣除\r\n {OneOf(\"其他费用\", \"其他支出\")} 共\r\n {Humanise(round((event.amount / (100 - event.brokerpercentage)) * event.brokerpercentage, 0))} 点之后\r\n}.", + "default": true, + "name": "Bond redeemed", + "description": "Triggered when you redeem a combat bond" }, "Book transport": { - "name": "Book transport", - "description": "Triggered when booking a taxi or deployment for on foot combat", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Book transport", + "description": "Triggered when booking a taxi or deployment for on foot combat" }, "Bookmark details": { - "name": "Bookmark details", - "description": "Triggered when a bookmark has been added or updated", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Bookmark details", + "description": "Triggered when a bookmark has been added or updated" }, "Bounty awarded": { - "name": "Bounty awarded", - "description": "Triggered when you are awarded a bounty", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'bounty')}\r\n{SetState('eddi_context_last_action', 'award')}\r\n{SetState('eddi_context_bounty_name', event.target)}\r\n{SetState('eddi_context_bounty_faction', event.faction)}\r\n{SetState('eddi_context_bounty_amount', event.reward)}\r\n{SetState(\"eddi_context_criminal_record_change\", true)}\r\n\r\n{Pause(500)}\r\n{OneOf(\"已取得\", \"已获得\")}\r\n{if len(event.rewards) = 1:\r\n 悬赏代付券.\r\n|elif len(event.rewards) > 1:\r\n 悬赏代付券.\r\n}\r\n", - "default": true + "default": true, + "name": "Bounty awarded", + "description": "Triggered when you are awarded a bounty" }, "Bounty incurred": { - "name": "Bounty incurred", - "description": "Triggered when you incur a bounty", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'bounty')}\r\n{SetState('eddi_context_last_action', 'incur')}\r\n{SetState('eddi_context_bounty_name', event.victim)}\r\n{SetState('eddi_context_bounty_faction', event.faction)}\r\n{SetState('eddi_context_bounty_amount', event.bounty)}\r\n{SetState(\"eddi_context_criminal_record_change\", true)}\r\n\r\n{OneOf('由于您的', '您因为', '警告:因为', '警告:由于')} {event.crime}, 您已被悬赏.", - "default": true + "default": true, + "name": "Bounty incurred", + "description": "Triggered when you incur a bounty" }, "Bounty paid": { - "name": "Bounty paid", - "description": "Triggered when you pay a bounty", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'bounty')}\r\n{SetState('eddi_context_last_action', 'pay')}\r\n{SetState('eddi_context_fine_amount', event.amount)}\r\n\r\n\r\n已支付 {Humanise(event.amount)} 点赏金.", - "default": false + "default": true, + "name": "Bounty paid", + "description": "Triggered when you pay a bounty" }, "Bounty redeemed": { - "name": "Bounty redeemed", - "description": "Triggered when you redeem a bounty voucher", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'bounty')}\r\n{SetState('eddi_context_last_action', 'redeem')}\r\n{SetState('eddi_context_bounty_amount', event.amount)}\r\n\r\n您 {Occasionally(2, OneOf(\"已经\", \"刚刚\"))}\r\n{OneOf(\"兑换了\")}\r\n{Humanise(event.amount)}点赏金代付券. \r\n\r\n\r\n\r\n{Occasionally(2, \"\r\n {if len(event.rewards) = 1 && len(event.rewards[0].faction) > 0:\r\n 从 {P(event.rewards[0].faction, \"faction\")}\r\n |else:\r\n . \r\n {set cur to 0}\r\n {while cur < len(event.rewards):\r\n {if len(event.rewards[cur].faction) > 0:\r\n {if cur = 0:\r\n |elif cur < len(event.rewards) - 1:\r\n , \r\n |else:\r\n 还有\r\n }\r\n {P(event.rewards[cur].faction, \"faction\")} \r\n 的{Humanise(event.rewards[cur].amount)} 点,\r\n \r\n {set cur to cur + 1}\r\n }\r\n }\r\n }\r\n\")}\r\n\r\n{if event.brokerpercentage && event.brokerpercentage > 0:\r\n 在扣除其他\r\n {Humanise(round((event.amount / (100 - event.brokerpercentage)) * event.brokerpercentage, 0))} 点\r\n {OneOf(\"支出\", \"费用\")}后.\r\n}.", - "default": false + "default": true, + "name": "Bounty redeemed", + "description": "Triggered when you redeem a bounty voucher" }, "Cancel transport": { - "name": "Cancel transport", - "description": "Triggered when canceling a taxi or deployment for on foot combat", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Cancel transport", + "description": "Triggered when canceling a taxi or deployment for on foot combat" }, "Cargo depot": { - "name": "Cargo depot", - "description": "Triggered when engaging with a mission depot", "enabled": true, "priority": 3, "responder": true, "script": "{_ Cargo depot }\r\n{_ Triggered when engaging with a mission depot }\r\n\r\n\r\n{if event.updatetype = \"Collect\":\r\n 您从任务仓库装载了 {event.amount} 吨{if event.amount != 1:s} 的 {event.commodity}。\r\n|elif event.updatetype = \"Deliver\":\r\n 您已向任务仓库交付了 {event.amount} 吨{if event.amount != 1:s} 的 {event.commodity}。\r\n\r\n {Pause(500)}\r\n {set remaining to event.totaltodeliver - event.delivered}\r\n {set haulage to HaulageDetails(event.missionid)}\r\n\r\n {if find(haulage.name, \"Wing\") > -1:\r\n 组队\r\n |elif find(haulage.name, \"Rank\") > -1:\r\n 海军\r\n |else:\r\n 单人\r\n }\r\n\r\n {if remaining = 0:\r\n 任务需求现已完成。\r\n |else:\r\n 任务进度已达百分之 {round(event.delivered / event.totaltodeliver * 100, 0)} 。\r\n }\r\n}\r\n\r\n", - "default": true + "default": true, + "name": "Cargo depot", + "description": "Triggered when engaging with a mission depot" }, "Cargo report": { - "name": "Cargo report", - "description": "Report current cargo manifest", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{_ Cargo report }\r\n{_ Report current cargo manifest }\r\n\r\n{set cargocarried to 0}\r\n{set haulage to 0}\r\n{set illegal to false}\r\n{set stolen to false}\r\n\r\n{if len(inventory) > 0:\r\n {for cargo in inventory:\r\n {set cargocarried to cargocarried + cargo.total}\r\n {set haulage to haulage + cargo.haulage}\r\n {if cargo.stolen > 0: {set stolen to true}}\r\n {if status.docked:\r\n {for prohibited in station.prohibited:\r\n {if cargo.name = prohibited.name: {set illegal to true}}\r\n }\r\n }\r\n }\r\n}\r\n\r\n{if cargocarried > 0:\r\n {if cargocarried = ship.cargocapacity:\r\n 您的货 {OneOf(\"舱\", \"架\")} 已满,\r\n |else:\r\n 您的飞船装载了 {cargocarried} 吨{if cargocarried != 1: }\r\n }\r\n\r\n {if len(inventory) = 1:\r\n {if inventory[0].name = \"Limpet\":\r\n 无人机.\r\n |else:\r\n of {inventory[0].name}.\r\n {if haulage = cargocarried:\r\n 注意:所有货物都是与任务相关的物品。\r\n }\r\n }\r\n |else:\r\n {if cargocarried < ship.cargocapacity: of cargo}.\r\n {Occasionally(2, \"您的\")} 货物{OneOf(\"舱单\", \"清单\")} 如下:\r\n\r\n {set c to []}\r\n {for cargo in inventory:\r\n {if cargo.total > 0:\r\n {set c to cat(c, [cargo])}\r\n }\r\n }\r\n\r\n {set position to 0}\r\n {for cargo in c:\r\n {cargo.total} 吨{if cargo.total != 1: } 的 \r\n {if cargo.name = \"Limpet\":\r\n 无人机\r\n |else:\r\n {cargo.name}\r\n }\r\n {set position to position + 1}\r\n {if position = len(c) - 1: 和 |else:,}\r\n }\r\n {if haulage > 0:\r\n 注意: {haulage} 吨{if haulage != 1: } 货物为任务相关物品。\r\n }\r\n }.\r\n\r\n {if cargocarried < ship.cargocapacity:\r\n {set free to ship.cargocapacity - cargocarried}\r\n 您 {OneOf(\"还有 {free} 吨{if free != 1: } 闲置载货量\",\r\n \"有 {free} 吨{if free != 1: } 的空载货额\",\r\n \"还可以装载l {free} 吨{if free != 1: }\")}.\r\n }\r\n\r\n {if stolen || illegal:\r\n 警告: 您运载了\r\n {if stolen: 被盗商品}\r\n {if illegal:\r\n {if stolen:, 并且 }\r\n 其在本司法辖区内违法。\r\n }.\r\n }\r\n\r\n|else:\r\n {OneOf(\"您的货仓是空的.\",\"您没有任何货物.\",\"您没有装载任何货物\")}\r\n}", - "default": true + "default": true, + "name": "Cargo report", + "description": "Report current cargo manifest" }, "Cargo scoop": { - "name": "Cargo scoop", - "description": "Triggered when you deploy or retract your cargo scoop", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Cargo scoop", + "description": "Triggered when you deploy or retract your cargo scoop" }, "Cargo wingupdate": { - "name": "Cargo wingupdate", - "description": "Triggered when a wing-mate collects or delivers cargo for a wing mission", "enabled": true, "priority": 3, "responder": true, "script": "{_ Cargo wingupdate }\r\n{_ Triggered when a wing-mate collects or delivers cargo for a wing mission }\r\n\r\n\r\n{if event.updatetype = \"Collect\":\r\n 您的队友从任务仓库装载了 {event.amount} 吨\r\n {if event.commodity != \"Unknown\": of {event.commodity}} 。\r\n|elif event.updatetype = \"Deliver\":\r\n 您的队友向任务仓库提交了 {event.amount} 吨\r\n {if event.commodity != \"Unknown\": of {event.commodity}}。\r\n}\r\n\r\n{Pause(500)}\r\n{set remaining to event.totaltodeliver - event.delivered}\r\n{if remaining = 0:\r\n 小队的任务需求现已完成。\r\n|elif event.updatetype = \"Deliver\":\r\n 小队的任务完成度为百分之 {round(event.delivered / event.totaltodeliver * 100, 0)}。\r\n}\r\n", - "default": true + "default": true, + "name": "Cargo wingupdate", + "description": "Triggered when a wing-mate collects or delivers cargo for a wing mission" }, "Carrier bank transfer": { - "name": "Carrier bank transfer", - "description": "Triggered when you transfer money to or from your fleet carrier", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Carrier bank transfer", + "description": "Triggered when you transfer money to or from your fleet carrier" }, "Carrier cooldown": { - "name": "Carrier cooldown", - "description": "Triggered when you either were docked at a fleet carrier during a jump or are the fleet carrier owner and it completes its cooldown", "enabled": true, "priority": 3, "responder": true, "script": "您的舰队航母跃迁冷却已完成.", - "default": true + "default": true, + "name": "Carrier cooldown", + "description": "Triggered when you either were docked at a fleet carrier during a jump or are the fleet carrier owner and it completes its cooldown" }, "Carrier decommission cancelled": { - "name": "Carrier decommission cancelled", - "description": "Triggered when you cancel the decommissioning of your fleet carrier", "enabled": true, "priority": 3, "responder": true, "script": "{if carrier.name:\r\n {carrier.name} \r\n|else:\r\n 您的舰队航母\r\n}\r\n的退役流程已被取消.", - "default": true + "default": true, + "name": "Carrier decommission cancelled", + "description": "Triggered when you cancel the decommissioning of your fleet carrier" }, "Carrier decommission scheduled": { - "name": "Carrier decommission scheduled", - "description": "Triggered when you request the decommissioning of your fleet carrier", "enabled": true, "priority": 3, "responder": true, "script": "{if carrier.name:\r\n {carrier.name} \r\n|else:\r\n 您的舰队航母\r\n}\r\n已被计划于 \r\n{if event.days:\r\n {event.days} 天\r\n}\r\n{if event.hours:\r\n {event.hours}小时后\r\n}退役.\r\n\r\n您将会获得 {Humanise(event.refund)} 信用点的退款.", - "default": true + "default": true, + "name": "Carrier decommission scheduled", + "description": "Triggered when you request the decommissioning of your fleet carrier" }, "Carrier docking permission": { - "name": "Carrier docking permission", - "description": "Triggered when changing the docking permission criteria at your fleet carrier", "enabled": true, "priority": 3, "responder": true, "script": "{Occasionally(2, \"命令已送达.\")}\r\n{if carrier && len(carrier.name) > 0: \r\n {carrier.name} \r\n|else: \r\n 您的舰队航母\r\n}的停靠权限已被更改为:\r\n{set open to \"开放\"}\r\n\r\n{if event.dockingAccess = \"none\":\r\n 禁止. \r\n {Occasionally(2, \"没有其他指挥官可以申请对接\")}\r\n|elif event.dockingAccess = \"squadronfriends\":\r\n {if !event.allowNotorious: law abiding }\r\n {Occasionally(3, \" 只\")}对中队成员和友方指挥官{open}。\r\n \r\n|elif event.dockingAccess = \"friends\":\r\n {if !event.allowNotorious: law abiding }\r\n {Occasionally(3, \" 只\")}对友方指挥官{open}。\r\n|elif event.dockingAccess = \"all\":\r\n {if !event.allowNotorious: law abiding }\r\n\t对所有指挥官{open}。\r\n\r\n}", - "default": true + "default": true, + "name": "Carrier docking permission", + "description": "Triggered when changing the docking permission criteria at your fleet carrier" }, "Carrier finance": { - "name": "Carrier finance", - "description": "Triggered when changing tax rates or reserve funds at your fleet carrier", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Carrier finance", + "description": "Triggered when changing tax rates or reserve funds at your fleet carrier" }, "Carrier fuel deposit": { - "name": "Carrier fuel deposit", - "description": "Triggered when depositing fuel at your fleet carrier", "enabled": true, "priority": 3, "responder": true, "script": "{Humanise(event.amount)} 吨氚被加注至\r\n{if carrier && len(carrier.name) > 0:\r\n {carrier.name}.\r\n|else:\r\n 您的舰队航母.\r\n}", - "default": true + "default": true, + "name": "Carrier fuel deposit", + "description": "Triggered when depositing fuel at your fleet carrier" }, "Carrier jump cancelled": { - "name": "Carrier jump cancelled", - "description": "Triggered when you cancel a scheduled fleet carrier jump", "enabled": true, "priority": 3, "responder": true, "script": "您的舰队航母跃迁计划已取消.", - "default": true + "default": true, + "name": "Carrier jump cancelled", + "description": "Triggered when you cancel a scheduled fleet carrier jump" }, "Carrier jump engaged": { - "name": "Carrier jump engaged", - "description": "Triggered when your fleet carrier performs a jump", "enabled": true, "priority": 3, "responder": true, - "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'carrier jump')}\r\n{SetState('eddi_context_last_action', 'start')}\r\n{SetState('eddi_context_system_name', event.system)}\r\n{SetState('eddi_context_system_system', event.system)}\r\n{SetState('eddi_context_system_lastvisit', system.lastVisitSeconds)}\r\n\r\n{if event.docked || (status.vehicle = \"On Foot\" && station.marketId = carrier.Market.marketId):\r\n\r\n {_ Zero the 'remaining jump' context to only use values following this event _}\r\n {SetState('eddi_context_remaining_jumps', 0)}\r\n\r\n {set reportsystem to SystemDetails(event.systemname)}\r\n\r\n 正在{OneOf(\"跃迁\",\"转移\")} 至 {P(reportsystem.systemname, \"starsystem\")} 星系\r\n {if len(event.shortname) > 0:\r\n {set reportBody to BodyDetails(event.bodyname, event.systemname)} \r\n 在\r\n {if len(reportBody.bodytype) > 0: {reportBody.bodytype} |else: body}\r\n {P(event.shortname, \"body\")} 附近\r\n }.\r\n\r\n {if reportsystem.systemname = homesystem.systemname:\r\n 欢迎回家, {F(\"Honorific\")}\r\n |else: \r\n {if lastsystem.allegiance && lastsystem.allegiance != \"None\" && lastsystem.allegiance != \"Independent\" && (!reportsystem.allegiance || reportsystem.allegiance = \"None\" || reportsystem.allegiance = \"Independent\"):\r\n 您 {OneOf(\"正在离开\", \"已离开\", \"不再处于\")} {lastsystem.allegiance} 领空.\r\n |elif lastsystem.allegiance && lastsystem.allegiance != reportsystem.allegiance && reportsystem.allegiance && reportsystem.allegiance != \"None\":\r\n 您 {OneOf(\"现在在\", \"已进入\", \"正在进入\")} {reportsystem.allegiance} 领空.\r\n {if cmdr.title != \"Commander\":\r\n 欢迎回到 {F(\"Honorific\")}.\r\n }\r\n }\r\n\r\n {if reportsystem.visits < 2:\r\n 这是您第{reportsystem.visits}次来到这个星系.\r\n |elif reportsystem.visits < 4:\r\n {Occasionally(2, \"这是您第{reportsystem.visits}次来到这个星系.\")}\r\n |else:\r\n {Occasionally(3, \"您已经来过本星系 {reportsystem.visits} 次.\")}\r\n }\r\n\r\n {if reportsystem.population && reportsystem.population > 0:\r\n {if SecondsSince(reportsystem.lastVisitSeconds) > 3600:\r\n {F(\"System report\")}\r\n }\r\n |else:\r\n {OneOf(\"这个星系无人居住\",\"这里没有人类定居点\", \"人类还未殖民本星系\")}.\r\n }\r\n\r\n {if reportsystem.distancefromhome:\r\n {set ReportDistanceFromHome() to:\r\n {return cat(\r\n \tOneOf(\"您现在在\", \"目前位置是\", \"您目前处于\"), \" \",\r\n\t Humanise(reportsystem.distancefromhome), \" lightyears from \",\r\n\t OneOf(\"母星系\", \"{P(homesystem.name, \"starsystem\")}\"), \".\"\r\n\t )}\r\n }\r\n {Occasionally(7, ReportDistanceFromHome())}\r\n }\r\n\r\n {if reportsystem.comment:\r\n 您有一条关于本星系的 {OneOf(\"笔记\", \"标记\", \"书签\")}, {OneOf(\"如下:\", \"上面说:\", \"它是:\", \"是,\")} {reportsystem.comment}.\r\n }\r\n }\r\n|else:\r\n 舰队航母已到达 {P(event.systemname, \"starsystem\")} 星系,\r\n {if len(event.shortname) > 0:\r\n {set reportBody to BodyDetails(event.bodyname, event.systemname)} \r\n 在\r\n {if len(reportBody.bodytype) > 0: {reportBody.bodytype} |else: body}\r\n {P(event.shortname, \"body\")} 附近.\r\n }.\r\n}", - "default": true + "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'carrier jump')}\r\n{SetState('eddi_context_last_action', 'start')}\r\n{SetState('eddi_context_system_name', event.system)}\r\n{SetState('eddi_context_system_system', event.system)}\r\n{SetState('eddi_context_system_lastvisit', system.lastVisitSeconds)}\r\n\r\n{if event.docked || (status.vehicle = \"On Foot\" && station.marketId = carrier.Market.marketId):\r\n\r\n {_ Zero the 'remaining jump' context to only use values following this event _}\r\n {SetState('eddi_context_remaining_jumps', 0)}\r\n\r\n {set reportsystem to SystemDetails(event.systemname)}\r\n\r\n 正在{OneOf(\"跃迁\",\"转移\")} 至 {P(reportsystem.systemname, \"starsystem\")} 星系\r\n {if len(event.shortname) > 0:\r\n {set reportBody to BodyDetails(event.bodyname, event.systemname)} \r\n 在\r\n {if len(reportBody.bodytype) > 0: {reportBody.bodytype} |else: body}\r\n {P(event.shortname, \"body\")} 附近\r\n }.\r\n\r\n {if reportsystem.systemname = homesystem.systemname:\r\n 欢迎回家, {F(\"Honorific\")}\r\n |else: \r\n {if lastsystem.allegiance && lastsystem.allegiance != \"None\" && lastsystem.allegiance != \"Independent\" && (!reportsystem.allegiance || reportsystem.allegiance = \"None\" || reportsystem.allegiance = \"Independent\"):\r\n 您 {OneOf(\"正在离开\", \"已离开\", \"不再处于\")} {lastsystem.allegiance} 领空.\r\n |elif lastsystem.allegiance && lastsystem.allegiance != reportsystem.allegiance && reportsystem.allegiance && reportsystem.allegiance != \"None\":\r\n 您 {OneOf(\"现在在\", \"已进入\", \"正在进入\")} {reportsystem.allegiance} 领空.\r\n {if cmdr.title != \"Commander\":\r\n 欢迎回到 {F(\"Honorific\")}.\r\n }\r\n }\r\n\r\n {if reportsystem.visits < 2:\r\n 这是您第{reportsystem.visits}次来到这个星系.\r\n |elif reportsystem.visits < 4:\r\n {Occasionally(2, \"这是您第{reportsystem.visits}次来到这个星系.\")}\r\n |else:\r\n {Occasionally(3, \"您已经来过本星系 {reportsystem.visits} 次.\")}\r\n }\r\n\r\n {if reportsystem.population && reportsystem.population > 0:\r\n {if SecondsSince(reportsystem.lastVisitSeconds) > 3600:\r\n {F(\"System report\")}\r\n }\r\n |else:\r\n {OneOf(\"这个星系无人居住\",\"这里没有人类定居点\", \"人类未殖民本星系\")}.\r\n }\r\n\r\n {if reportsystem.distancefromhome:\r\n {set ReportDistanceFromHome() to:\r\n {return cat(\r\n \tOneOf(\"您现在在\", \"目前位置是\", \"您目前处于\"), \" \",\r\n\t Humanise(reportsystem.distancefromhome), \" lightyears from \",\r\n\t OneOf(\"母星系\", \"{P(homesystem.name, \"starsystem\")}\"), \".\"\r\n\t )}\r\n }\r\n {Occasionally(7, ReportDistanceFromHome())}\r\n }\r\n\r\n {if reportsystem.comment:\r\n 您有一条关于本星系的 {OneOf(\"笔记\", \"标记\", \"书签\")}, {OneOf(\"如下:\", \"上面说:\", \"它是:\", \"是,\")} {reportsystem.comment}.\r\n }\r\n }\r\n|else:\r\n 舰队航母已到达 {P(event.systemname, \"starsystem\")} 星系,\r\n {if len(event.shortname) > 0:\r\n {set reportBody to BodyDetails(event.bodyname, event.systemname)} \r\n 在\r\n {if len(reportBody.bodytype) > 0: {reportBody.bodytype} |else: body}\r\n {P(event.shortname, \"body\")} 附近.\r\n }.\r\n}", + "default": true, + "name": "Carrier jump engaged", + "description": "Triggered when your fleet carrier performs a jump" }, "Carrier jump request": { - "name": "Carrier jump request", - "description": "Triggered when you request that your fleet carrier performs a jump", "enabled": true, "priority": 3, "responder": true, "script": "已规划舰队航母跃迁行程. 目的地为 {P(event.systemname, \"starsystem\")} 星系\r\n{if len(event.shortname) > 0:\r\n {set reportBody to BodyDetails(event.bodyname, event.systemname)} \r\n , 靠近\r\n {if len(reportBody.bodytype) > 0: {reportBody.bodytype}: |else: body: }\r\n {P(event.shortname, \"body\")}\r\n}.", - "default": true + "default": true, + "name": "Carrier jump request", + "description": "Triggered when you request that your fleet carrier performs a jump" }, "Carrier jumped": { - "name": "Carrier jumped", - "description": "Triggered when you are docked at a fleet carrier as it completes a jump", "enabled": true, "priority": 3, "responder": true, "script": "{_ Carrier jumped }\r\n{_ Triggered when you are docked at a fleet carrier as it completes a jump }\r\n\r\n{_ Context }\r\n{SetState('eddi_context_last_subject', 'carrier jump')}\r\n{SetState('eddi_context_last_action', 'complete')}\r\n{SetState('eddi_context_system_name', event.systemname)}\r\n{SetState('eddi_context_system_system', event.systemname)}\r\n{SetState('eddi_context_wanted_list', \"\")}\r\n\r\n您的航母 {Spacialise(event.carriername)} 已经到达 {P(event.systemname, \"starsystem\")} 星系\r\n{if event.bodyname && len(event.bodyname) > 0:\r\n ,位置靠近 {event.bodytype}: {P(event.bodyname, \"body\")}。\r\n}.\r\n{Pause(1000)}\r\n\r\n{_ Update mission data if we have arrived at our mission destination. _}\r\n{if destinationsystem && destinationsystem.name != \"\":\r\n {RouteDetails(\"update\")}\r\n}\r\n\r\n{_ Report faction states only if it's been more than an hour (3600 seconds) since our last visit. _}\r\n{if SecondsSince(state.eddi_context_system_lastvisit) / 3600 > 1:\r\n {set state_report to F(\"System state report\")}\r\n}\r\n\r\n{set system_engineer to F(\"Engineer report\")}\r\n{set system_missions to F(\"Mission check system\")}\r\n{set system_crimes to F(\"Crime check system\")}\r\n\r\n{if state_report || system_engineer || system_missions || (system_crimes && find(system_crimes, \"Warning\") < 0):\r\n {Pause(500)}\r\n 注意:\r\n}\r\n\r\n{if state_report:\r\n {Pause(500)}\r\n {state_report}\r\n}\r\n{if system_engineer:\r\n {Pause(500)}\r\n {system_engineer}\r\n}\r\n{if system_missions:\r\n {Pause(500)}\r\n {system_missions}\r\n}\r\n{if system_crimes:\r\n {Pause(500)}\r\n {system_crimes}\r\n}\r\n", - "default": true + "default": true, + "name": "Carrier jumped", + "description": "Triggered when you are docked at a fleet carrier as it completes a jump" }, "Carrier name changed": { - "name": "Carrier name changed", - "description": "Triggered when your fleet carrier’s name is changed", "enabled": true, "priority": 3, "responder": true, "script": "新船名已被接受。\r\n{OneOf(\"舰队航母 {Pause(100)} {event.name} {Pause(100)}\", \"{event.name}\")}\r\n{OneOf(\"正在待命\", \"准备接受您的指挥\", \"正在等待您的命令\")}.", - "default": true + "default": true, + "name": "Carrier name changed", + "description": "Triggered when your fleet carrier’s name is changed" }, "Carrier pads locked": { - "name": "Carrier pads locked", - "description": "Triggered when your fleet carrier locks landing pads prior to a jump", "enabled": true, "priority": 3, "responder": true, "script": "航母起落甲板已锁定。正在进行跃迁的最后准备工作。", - "default": true + "default": true, + "name": "Carrier pads locked", + "description": "Triggered when your fleet carrier locks landing pads prior to a jump" }, "Carrier purchased": { - "name": "Carrier purchased", - "description": "Triggered when you purchase a fleet carrier", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Carrier purchased", + "description": "Triggered when you purchase a fleet carrier" }, "Carrier service changed": { - "name": "Carrier service changed", - "description": "Triggered when you change the services available at your fleet carrier", "enabled": true, "priority": 3, "responder": true, "script": "{set GetService() to:\r\n {if event.invariantService = \"Bartender\":\r\n {set bar to OneOf(\"航母酒吧\", \"酒吧\")}\r\n {return OneOf(\"{bar}\", \"{bar}服务\")}\r\n |elif event.invariantService = \"Black Market\":\r\n {return OneOf(\"安全仓库\", \"黑市贸易服务\")}\r\n |elif event.invariantService = \"Commodities\":\r\n {return OneOf(\"商品市场\", \"商品交易服务\")}\r\n |elif event.invariantService = \"Exploration\":\r\n {return OneOf(\"宇宙制图服务\", \"星际制图服务\")}\r\n |elif event.invariantService = \"Outfitting\":\r\n {return \"舾装服务\"}\r\n |elif event.invariantService = \"Pioneer Supplies\":\r\n {return OneOf(\"先锋武装补给\", \"个人装备服务\")}\r\n |elif event.invariantService = \"Rearm\":\r\n {return OneOf(\"弹药库\", \"弹药服务\")}\r\n |elif event.invariantService = \"Redemption Office\":\r\n {return \"兑换券办公室\"}\r\n |elif event.invariantService = \"Repair\":\r\n {return \"修理服务\"}\r\n |elif event.invariantService = \"Shipyard\":\r\n {return OneOf(\"船坞\", \"来客停船库服务\")}\r\n |elif event.invariantService = \"Tritium Depot\":\r\n {return OneOf(\"氚库\", \"航母补氚服务\")}\r\n |elif event.invariantService = \"Vista Genomics\":\r\n {return OneOf(\"Vista基因组学\", \"地外生物学服务\")}\r\n |else:\r\n {return event.service}\r\n }\r\n}\r\n\r\n\r\n{if event.operation = \"Replace\":\r\n {_ This is a carrier crew reassignment }\r\n {if event.invariantService = \"Captain\":\r\n {event.crew} \r\n {OneOf(\"已经被提为\", \"已被委任为\")}\r\n {if carrier && len(carrier.name) > 0:\r\n {carrier.name}的大副\r\n |else:\r\n 您航母的大副.\r\n }\r\n |else:\r\n {event.crew} 已被分配为 {GetService()}\r\n } \r\n|elif len(event.operation) > 0:\r\n {set service to GetService()}\r\n {service}\r\n {if find(service, \"services\") > -1:\r\n {OneOf(\"已经\", \"现在\")}\r\n |else:\r\n {OneOf(\"已经\", \"现在\")}\r\n }\r\n {if event.operation = \"Activate\":\r\n 被启用了. \r\n |elif event.operation = \"Deactivate\":\r\n 被关闭了. \r\n |elif event.operation = \"Pause\":\r\n {OneOf(\"被暂停了.\", \"被停用了.\")}\r\n |elif event.operation = \"Resume\":\r\n 被恢复了.\r\n |else:\r\n {event.operation}\r\n }\r\n}", - "default": true + "default": true, + "name": "Carrier service changed", + "description": "Triggered when you change the services available at your fleet carrier" }, "Carrier stats": { - "name": "Carrier stats", - "description": "Triggered when you open the carrier management screen", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Carrier stats", + "description": "Triggered when you open the carrier management screen" }, "Cleared save": { - "name": "Cleared save", - "description": "Triggered when you clear your save", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'save')}\r\n{SetState('eddi_context_last_action', 'clear')}\r\n\r\n永别了 {F(\"Honorific\")}. 能协助您是我的荣幸.", - "default": true + "default": true, + "name": "Cleared save", + "description": "Triggered when you clear your save" }, "Cockpit breached": { - "name": "Cockpit breached", - "description": "Triggered when your ship's cockpit is broken", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'cockpit')}\r\n{SetState('eddi_context_last_action', 'breach')}\r\n\r\n{Occasionally(7, \"好冷啊,谁开窗户了? 啊!\")} 警告:座舱发生泄漏!请立即从风险区撤出!", - "default": true + "default": true, + "name": "Cockpit breached", + "description": "Triggered when your ship's cockpit is broken" }, "Commander continued": { - "name": "Commander continued", - "description": "Triggered when you continue an existing game", "enabled": true, "priority": 3, "responder": true, "script": "{_ Commander continued }\r\n{_ Triggered when you continue an existing game }\r\n\r\n\r\n欢迎回来 {F(\"Honorific\")}.\r\n\r\n{SetState('eddi_context_last_subject', 'load_game')}\r\n{SetState('eddi_context_system_name', system.name)}\r\n{SetState('eddi_context_body_name', body.name)}\r\n{SetState('eddi_context_station_name', station.name)}\r\n{SetState('eddi_context_lastdocked', station.name)}", - "default": true + "default": true, + "name": "Commander continued", + "description": "Triggered when you continue an existing game" }, "Commander loading": { - "name": "Commander loading", - "description": "Triggered at the very beginning of loading a game", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Commander loading", + "description": "Triggered at the very beginning of loading a game" }, "Commander progress": { - "name": "Commander progress", - "description": "Triggered when your progress is reported", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Commander progress", + "description": "Triggered when your progress is reported" }, "Commander promotion": { - "name": "Commander promotion", - "description": "Triggered when one of your commander ranks increases", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'rank')}\r\n{SetState('eddi_context_last_action', 'promotion')}\r\n{SetState('eddi_context_rank_name', lower(event.rank_type))}\r\n{SetState('eddi_context_rank_amount', event.rating)}\r\n\r\n{if event.rank_type = \"Combat\":\r\n {F(\"Honorific\")},您在空战方面的才能获得了认可.\r\n|elif event.rank_type = \"CQC\":\r\n {F(\"Honorific\")},您在近距离缠斗方面的才能获得了认可.\r\n|elif event.rank_type = \"Trade\":\r\n {F(\"Honorific\")},您的商业嗅觉受到了认可.\r\n|elif event.rank_type = \"Exploration\":\r\n {F(\"Honorific\")},您作为开拓者的成绩获得了认可.\r\n|elif event.rank_type = \"Federation\":\r\n {set plainHonorific to when(cmdr.gender = 'Female', 'Madam', 'Sir')}\r\n 祝贺您, {OneOf('Commander {CommanderName()}', plainHonorific)}! 您\r\n {Occasionally(2, OneOf('在联邦海军中', '因对联邦海军做出的贡献,'))}.\r\n 已经\r\n {OneOf('达到了', '被晋升为', '被授予了')}\r\n {event.rank} 军衔.\r\n \r\n {if event.rating = 3:\r\n 您现在拥有购买 Federal Dropship 的资格了.\r\n |elif event.rating = 4:\r\n 您获得了前往 {P('Sol', 'starsystem')} 星系的许可.\r\n |elif event.rating = 5:\r\n 您现在可以购买 Federal Assault Ship了, 并且获得了前往 {P('Vega', 'starsystem')} 和 {P('Beta Hydri', 'starsystem')} 星系的资格.\r\n |elif event.rating = 6:\r\n 您获得了前往 {P('PLX 695', 'starsystem')} 星系的资格.\r\n |elif event.rating = 7:\r\n 您现在可以购买 Federal Gunship了, 并且获得了前往 {P('Ross 128', 'starsystem')} 星系的资格.\r\n |elif event.rating = 8:\r\n 您现在获得了前往 {P('Exbeur', 'starsystem')} 星系的资格.\r\n |elif event.rating = 10:\r\n 您现在获得了前往 {P('Hors', 'starsystem')} 星系的资格.\r\n |elif event.rating = 12:\r\n 您现在拥有购买可儿的资格了.\r\n |elif event.rating = 14:\r\n 这是联邦海军预备役成员可获得的最高级别.\r\n } \r\n|elif event.rank_type = \"Empire\":\r\n 祝贺您, {F(\"Empire honorific\")},\r\n 帝国海军已 \r\n {OneOf(\"授予您晋升\", \"晋升您\")}\r\n 到 {event.rank}.\r\n {if event.rating = 1:\r\n 您现在拥有购买 Imperial Eagle的资格了.\r\n |elif event.rating = 3:\r\n 您现在拥有购买 Imperial Courier的资格了.\r\n |elif event.rating = 4:\r\n 您被赐予进入 {P(\"Achenar\", \"starsystem\")} 星系的许可.\r\n |elif event.rating = 7:\r\n 您现在可以购买 Imperial Clipper了. 恭喜您被赐予进入 {P(\"Summerland\", \"starsystem\")} 星系的许可.\r\n |elif event.rating = 10:\r\n 您被赐予进入 {P(\"Facece\", \"starsystem\")} 星系的许可.\r\n |elif event.rating = 12:\r\n 您现在拥有购买卡特的资格了.\r\n |elif event.rating = 14:\r\n 这是您在帝国海军预备役中能获得的最高 {OneOf(\"荣誉\", \"爵位\")} .\r\n }\r\n|elif event.rank_type = \"Mercenary\":\r\n {F(\"Honorific\")},您的雇佣兵阶级已获得认可.\r\n|elif event.rank_type = \"Exobiologist\":\r\n {F(\"Honorific\")},您的外星生物学成就已获得认可.\r\n}", - "default": true + "default": true, + "name": "Commander promotion", + "description": "Triggered when one of your commander ranks increases" }, "Commander ratings": { - "name": "Commander ratings", - "description": "Triggered when your ratings are reported", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Commander ratings", + "description": "Triggered when your ratings are reported" }, "Commander reputation": { - "name": "Commander reputation", - "description": "Triggered when your reputation is reported", "enabled": true, "priority": 3, "responder": true, "script": "{_ A note on thresholds... _}\r\n{_ -100.. -90: hostile _}\r\n{_ -90.. -35: unfriendly _}\r\n{_ -35..+ 4: neutral _}\r\n{_ +4..+35: cordial _}\r\n{_ +35..+90: friendly _}\r\n{_ +90..+100: allied _}\r\n", - "default": true + "default": true, + "name": "Commander reputation", + "description": "Triggered when your reputation is reported" }, "Commander started": { - "name": "Commander started", - "description": "Triggered when you start a new game", "enabled": true, "priority": 3, "responder": true, "script": "欢迎您, 指挥官.", - "default": true + "default": true, + "name": "Commander started", + "description": "Triggered when you start a new game" }, "Commodity collected": { - "name": "Commodity collected", - "description": "Triggered when you pick up a commodity in your ship or SRV", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'commodity')}\r\n{SetState('eddi_context_last_action', 'collect')}\r\n{SetState('eddi_context_cargo_name', event.commodity)}\r\n\r\n{event.commodity} 已被装载上船.", - "default": true + "default": true, + "name": "Commodity collected", + "description": "Triggered when you pick up a commodity in your ship or SRV" }, "Commodity ejected": { - "name": "Commodity ejected", - "description": "Triggered when you eject a commodity from your ship or SRV", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'commodity')}\r\n{SetState('eddi_context_last_action', 'eject')}\r\n{SetState('eddi_context_commodity_name', event.commodity)}\r\n{event.commodity} 已被弹出.", - "default": true + "default": true, + "name": "Commodity ejected", + "description": "Triggered when you eject a commodity from your ship or SRV" }, "Commodity purchase check": { - "name": "Commodity purchase check", - "description": "Check to see which commodities are the best to purchase", "enabled": true, - "priority": null, + "priority": 3, "responder": false, - "script": "{for commodity in station.commodities:\r\n {if commodity.stock > 0 && commodity.buyprice < commodity.avgprice:\r\n {set discount to commodity.avgprice - commodity.buyprice}\r\n {if discount > best.avgprice - best.buyprice:\r\n {set thirdbest to secondbest}\r\n {set secondbest to best}\r\n {set best to commodity}\r\n |elif discount > secondbest.avgprice - secondbest.buyprice:\r\n {set thirdbest to secondbest}\r\n {set secondbest to commodity}\r\n |elif discount > thirdbest.avgprice - thirdbest.buyprice:\r\n {set thirdbest to commodity}\r\n }\r\n }\r\n}\r\n\r\n{if best:\r\n 本地市场的 {best.name} \r\n {if secondbest:\r\n , {secondbest.name}\r\n {if thirdbest:\r\n 和 {thirdbest.name}\r\n }\r\n 正在以合适价格出售\r\n }\r\n.}\r\n", - "default": true + "script": "{for commodity in station.commodities:\r\n {if commodity.stock > 0 && commodity.buyprice < commodity.avgprice:\r\n {set discount to commodity.avgprice - commodity.buyprice}\r\n {if discount > best.avgprice - best.buyprice:\r\n {set thirdbest to secondbest}\r\n {set secondbest to best}\r\n {set best to commodity}\r\n |elif discount > secondbest.avgprice - secondbest.buyprice:\r\n {set thirdbest to secondbest}\r\n {set secondbest to commodity}\r\n |elif discount > thirdbest.avgprice - thirdbest.buyprice:\r\n {set thirdbest to commodity}\r\n }\r\n }\r\n}\r\n\r\n{if best:\r\n 本地市场的 {best.name} \r\n {if secondbest:\r\n , {secondbest.name}\r\n {if thirdbest:\r\n 和 {thirdbest.name}\r\n }\r\n 正在以不错的价格出售\r\n }\r\n.}\r\n", + "default": true, + "name": "Commodity purchase check", + "description": "Check to see which commodities are the best to purchase" }, "Commodity purchased": { - "name": "Commodity purchased", - "description": "Triggered when you buy a commodity from the markets", "enabled": true, "priority": 3, "responder": true, - "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'commodity')}\r\n{SetState('eddi_context_last_action', 'purchase')}\r\n{SetState('eddi_context_commodity_name', event.commodity)}\r\n{SetState('eddi_context_commodity_amount', event.amount)}\r\n\r\n{if event.amount = 1:\r\n 您刚刚以{event.price} 点的价格购买了一吨 {event.commodity}.\r\n|elif event.amount > 1:\r\n 您刚刚以每吨{event.price}点的价格购买了 {event.amount}吨 {event.commodity}. 共花费了 {Humanise(event.amount * event.price)} 信用点.\r\n}", - "default": true + "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'commodity')}\r\n{SetState('eddi_context_last_action', 'purchase')}\r\n{SetState('eddi_context_commodity_name', event.commodity)}\r\n{SetState('eddi_context_commodity_amount', event.amount)}\r\n\r\n{if event.amount = 1:\r\n 您刚刚以{Humanise(event.price)} 点的价格购买了一吨 {event.commodity}.\r\n|elif event.amount > 1:\r\n 您刚刚以每吨{event.price}点的价格购买了 {event.amount}吨 {event.commodity}. 共花费了 {Humanise(event.amount * event.price)} 信用点.\r\n}", + "default": true, + "name": "Commodity purchased", + "description": "Triggered when you buy a commodity from the markets" }, "Commodity refined": { - "name": "Commodity refined", - "description": "Triggered when you refine a commodity from the refinery", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'commodity')}\r\n{SetState('eddi_context_last_action', 'refine')}\r\n{SetState('eddi_context_commodity_name', event.commodity)}\r\n\r\n", - "default": true + "default": true, + "name": "Commodity refined", + "description": "Triggered when you refine a commodity from the refinery" }, "Commodity sale check": { - "name": "Commodity sale check", - "description": "Check to see which commodities can be sold here", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{_ Commodity sale check}\r\n{_ Check to see which commodities can be sold here}\r\n\r\n\r\n{_ Function to find a given commodity in market}\r\n{set market(commodity) to:\r\n {for marketcommodity in station.commodities:\r\n {if marketcommodity.name = commodity.name:\r\n {return marketcommodity}\r\n }\r\n }\r\n}\r\n\r\n{_ Function to find an illegal mission related to the commodity}\r\n{set illegalmission(haulageData) to:\r\n {for haulage in haulageData:\r\n {if haulage.illegal:\r\n {return true}\r\n }\r\n }\r\n {return false}\r\n}\r\n\r\n{set totalprofit to 0}\r\n{set missioncommodities to []}\r\n{set profitablecommodities to []}\r\n{set stolencommodities to []}\r\n{set unknowncommodities to []}\r\n\r\n{for cargo in inventory:\r\n {if cargo.name != 'Limpet':\r\n {set marketcommodity to market(cargo.commodity)}\r\n {set illegal to illegalmission(cargo.haulageData)}\r\n {set profit to (marketcommodity.sellprice - cargo.price) * cargo.owned}\r\n\r\n {if cargo.stolen > 0 && !illegal:\r\n {set stolencommodities to cat(stolencommodities, [cargo.commodity])}\r\n |elif cargo.haulage > 0:\r\n {set missioncommodities to cat(missioncommodities, [cargo.commodity])}\r\n |elif !marketcommodity && lcase(cargo.category) != \"powerplay\" && cargo.total > 0:\r\n {set unknowncommodities to cat(unknowncommodities, [cargo.commodity])}\r\n |elif marketcommodity && profit > 0:\r\n {set profitablecommodities to cat(profitablecommodities, [cargo.commodity])}\r\n {set totalprofit to totalprofit + profit}\r\n }\r\n }\r\n}\r\n\r\n{_ Let the user know about any commodities they can sell here for a profit}\r\n{if len(profitablecommodities) > 0:\r\n 您可以卖出\r\n {if len(profitablecommodities) = 1:\r\n {profitablecommodities[0].name}\r\n |elif len(profitablecommodities) = 2:\r\n {profitablecommodities[0].name} 和 {profitablecommodities[1].name}\r\n |else:\r\n {set cur to 0}\r\n {while cur < len(profitablecommodities):\r\n {if cur = 0:\r\n {profitablecommodities[cur].name}\r\n |elif cur < len(profitablecommodities) - 1:\r\n , {profitablecommodities[cur].name}\r\n |else:\r\n , 和 {profitablecommodities[cur].name}\r\n }\r\n {set cur to cur + 1}\r\n }\r\n }\r\n 来获得 {Humanise(totalprofit)} 点的利润.\r\n}\r\n\r\n{_ Let the user know about any commodities about which we are unsure if they can sell for a profit}\r\n{if len(unknowncommodities) > 0:\r\n 您 {if len(profitablecommodities) > 0: 还 } 可以卖出您的\r\n {if len(unknowncommodities) = 1:\r\n {unknowncommodities[0].name}\r\n |elif len(unknowncommodities) = 2:\r\n {unknowncommodities[0].name} 和 {unknowncommodities[1].name}\r\n |else:\r\n {set cur to 0}\r\n {while cur < len(unknowncommodities):\r\n {if cur = 0:\r\n {unknowncommodities[cur].name}\r\n |elif cur < len(unknowncommodities) - 1:\r\n , {unknowncommodities[cur].name}\r\n |else:\r\n , 和 {unknowncommodities[cur].name}\r\n }\r\n {set cur to cur + 1}\r\n }\r\n }\r\n , 但在卖出前请检查 {if len(unknowncommodities) > 1: 这些 |else: 这} 货物可获得的利润.\r\n}\r\n\r\n{_ Let the user know about any stolen commodities they can sell on the black market}\r\n{if len(stolencommodities) > 0:\r\n {if station.hasblackmarket:\r\n 您可以将您的赃物\r\n {if len(stolencommodities) = 1:\r\n {stolencommodities[0].name}\r\n |elif len(stolencommodities) = 2:\r\n {stolencommodities[0].name} 和 {stolencommodities[1].name}\r\n |else:\r\n {set cur to 0}\r\n {while cur < len(stolencommodities):\r\n {if cur = 0:\r\n {stolencommodities[cur].name}\r\n |elif cur < len(stolencommodities) - 1:\r\n , {stolencommodities[cur].name}\r\n |else:\r\n , 和 {stolencommodities[cur].name}\r\n }\r\n {set cur to cur + 1}\r\n }\r\n }\r\n 在此处脱手.\r\n |else:\r\n 请注意: 您 {OneOf(\"的货舱中有被盗货物\", \"船上有被窃货物\", \"有黑货\", \"存黑\")}.\r\n }\r\n}\r\n\r\n{_ Let the user know about any mission related commodities they can sell on the black market}\r\n{if len(missioncommodities) > 0 && station.hasblackmarket:\r\n\r\n 您 {if len(stolencommodities) > 0: 还} 可以在这 {OneOf('卸载', '卸掉')} 您的任务物品\r\n {if len(missioncommodities) = 1:\r\n {missioncommodities[0].name}\r\n |elif len(missioncommodities) = 2:\r\n {missioncommodities[0].name} 和 {missioncommodities[1].name}\r\n |else:\r\n {set cur to 0}\r\n {while cur < len(missioncommodities):\r\n {if cur = 0:\r\n {missioncommodities[cur].name}\r\n |elif cur < len(missioncommodities) - 1:\r\n , {missioncommodities[cur].name}\r\n |else:\r\n , 和 {missioncommodities[cur].name}\r\n }\r\n {set cur to cur + 1}\r\n }\r\n }\r\n .\r\n}\r\n", - "default": true + "default": true, + "name": "Commodity sale check", + "description": "Check to see which commodities can be sold here" }, "Commodity sold": { - "name": "Commodity sold", - "description": "Triggered when you sell a commodity to the markets", "enabled": true, "priority": 3, "responder": true, - "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'commodity')}\r\n{SetState('eddi_context_last_action', 'sell')}\r\n{SetState('eddi_context_commodity_name', event.commodity)}\r\n{SetState('eddi_context_commodity_amount', event.amount)}\r\n\r\n{if event.amount = 1:\r\n 您刚刚以{event.price}点的价格卖出了一吨 {event.commodity}. \r\n|elif event.amount > 1:\r\n 您刚刚以每吨 {event.price} 点的价格售出了 {event.amount} 吨 {event.commodity}. 共获得了 {Humanise((event.amount * event.price))} 信用点,\r\n}\r\n\r\n{if event.price != event.profit:\r\n {if event.profit < 0:\r\n 共计亏损 {Humanise(-1 * event.profit * event.amount)} 点.\r\n |elif event.profit = 0:\r\n 算下来不赚不赔.\r\n |else:\r\n 共计盈利 {Humanise(event.profit * event.amount)} 点.\r\n }\r\n}", - "default": true + "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'commodity')}\r\n{SetState('eddi_context_last_action', 'sell')}\r\n{SetState('eddi_context_commodity_name', event.commodity)}\r\n{SetState('eddi_context_commodity_amount', event.amount)}\r\n\r\n{if event.amount = 1:\r\n 您刚刚以{Humanise(event.price)}点的价格卖出了一吨 {event.commodity}. \r\n|elif event.amount > 1:\r\n 您刚刚以每吨{Humanise(event.price)}点的价格售出了 {event.amount} 吨 {event.commodity}. 共获得了 {Humanise((event.amount * event.price))} 信用点,\r\n}\r\n\r\n{if event.price != event.profit:\r\n {if event.profit < 0:\r\n 共计亏损 {Humanise(-1 * event.profit * event.amount)} 点.\r\n |elif event.profit = 0:\r\n 算下来不赚不赔.\r\n |else:\r\n 共计盈利 {Humanise(event.profit * event.amount)} 点.\r\n }\r\n}", + "default": true, + "name": "Commodity sold", + "description": "Triggered when you sell a commodity to the markets" }, "Community goal": { - "name": "Community goal", - "description": "Triggered when the status of a community goal changes", "enabled": true, "priority": 3, "responder": true, "script": "{_ Set Context _}\r\n{SetState('eddi_context_last_subject', 'community goal')}\r\n\r\n{_ Localize percentile bands }\r\n{set ordinalPercentile(percentile) to:\r\n {if percentile = 10:\r\n 前百分之十\r\n |elif percentile = 25:\r\n 前百分之二十五\r\n |elif percentile = 50:\r\n 前百分之五十\r\n |elif percentile = 75:\r\n 前百分之七十五\r\n |else:\r\n 前百分之百\r\n }\r\n}\r\n\r\n{F(\"Honorific\")}, 我们收到了一项社区目标 \"{event.name}\"的状态更新.\r\n\r\n{for update in event.updates:\r\n {if update.type = \"Tier\":\r\n 总目标已经达到第 {event.tier} 级.\r\n |elif update.type = \"Percentile\":\r\n {if event.toprank:\r\n 祝贺您! 您现在是前 {event.topranksize}的顶尖贡献者. \r\n |else:\r\n {if update.direction = \"Increase\":\r\n ,您已经达到 \r\n |else:\r\n ,您落后到了\r\n }\r\n {ordinalPercentile(event.percentileband)}.\r\n }\r\n }\r\n}\r\n\r\n{if event.contribution > 0:\r\n 您的预期奖励 \r\n {Occasionally(2, \"目前\")}为\r\n {Humanise(event.tierreward)} 点.\r\n}", - "default": true + "default": true, + "name": "Community goal", + "description": "Triggered when the status of a community goal changes" }, "Community goals": { - "name": "Community goals", - "description": "Triggered when checking the status of community goals", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Community goals", + "description": "Triggered when checking the status of community goals" }, "Controlling fighter": { - "name": "Controlling fighter", - "description": "Triggered when you switch control from your ship to your fighter", "enabled": true, "priority": 3, "responder": true, "script": "{Occasionally(2, \"到舰载机的\")} {OneOf(\"神经连接\", \"连接\", \"上行链接\")} 已{OneOf(\"初始化\", \"建立\", \"启用\")}.", - "default": true + "default": true, + "name": "Controlling fighter", + "description": "Triggered when you switch control from your ship to your fighter" }, "Controlling ship": { - "name": "Controlling ship", - "description": "Triggered when you switch control from your fighter to your ship", "enabled": true, "priority": 3, "responder": true, "script": "{OneOf(\"神经连接\", \"连接\", \"上行链接\")} 已{OneOf(\"终断\", \"关闭\")}.", - "default": true + "default": true, + "name": "Controlling ship", + "description": "Triggered when you switch control from your fighter to your ship" }, "Crew assigned": { - "name": "Crew assigned", - "description": "Triggered when you assign crew", "enabled": true, "priority": 3, "responder": true, "script": "{if event.role = \"Active\":\r\n {event.name} 正在履行职务.\r\n|else:\r\n {event.name} 已离开职务.\r\n}", - "default": true + "default": true, + "name": "Crew assigned", + "description": "Triggered when you assign crew" }, "Crew fired": { - "name": "Crew fired", - "description": "Triggered when you fire crew", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'crew')}\r\n{SetState('eddi_context_last_action', 'fire')}\r\n{SetState('eddi_context_crew_name', event.name)}\r\n\r\n{event.name} 已被解雇.", - "default": true + "default": true, + "name": "Crew fired", + "description": "Triggered when you fire crew" }, "Crew hired": { - "name": "Crew hired", - "description": "Triggered when you hire crew", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'crew')}\r\n{SetState('eddi_context_last_action', 'hire')}\r\n{SetState('eddi_context_crew_name', event.name)}\r\n\r\n已经雇佣了{event.name} .", - "default": true + "default": true, + "name": "Crew hired", + "description": "Triggered when you hire crew" }, "Crew joined": { - "name": "Crew joined", - "description": "Triggered when you join a crew", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'crew')}\r\n{SetState('eddi_context_last_action', 'join')}\r\n{SetState('eddi_context_crew_name', event.captain)}\r\n\r\n您已进入 {event.captain}的机组.", - "default": true + "default": true, + "name": "Crew joined", + "description": "Triggered when you join a crew" }, "Crew left": { - "name": "Crew left", - "description": "Triggered when you leave a crew", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'crew')}\r\n{SetState('eddi_context_last_action', 'leave')}\r\n{SetState('eddi_context_crew_name', event.captain)}\r\n\r\n您已离开{event.captain}的机组.", - "default": true + "default": true, + "name": "Crew left", + "description": "Triggered when you leave a crew" }, "Crew member joined": { - "name": "Crew member joined", - "description": "Triggered when a commander joins your crew", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'crew')}\r\n{SetState('eddi_context_last_action', 'join')}\r\n{SetState('eddi_context_crew_name', event.crew)}\r\n\r\n{event.crew} 已进入您的机组.", - "default": true + "default": true, + "name": "Crew member joined", + "description": "Triggered when a commander joins your crew" }, "Crew member launched": { - "name": "Crew member launched", - "description": "Triggered when a crew member launches the fighter", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'crew')}\r\n{SetState('eddi_context_last_action', 'launch')}\r\n{SetState('eddi_context_crew_name', event.crew)}\r\n\r\n{event.crew}的舰载机已起飞.", - "default": true + "default": true, + "name": "Crew member launched", + "description": "Triggered when a crew member launches the fighter" }, "Crew member left": { - "name": "Crew member left", - "description": "Triggered when a commander leaves your crew", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'crew')}\r\n{SetState('eddi_context_last_action', 'leave')}\r\n{SetState('eddi_context_crew_name', event.crew)}\r\n\r\n{event.crew}离开了您的机组.", - "default": true + "default": true, + "name": "Crew member left", + "description": "Triggered when a commander leaves your crew" }, "Crew member removed": { - "name": "Crew member removed", - "description": "Triggered when you remove a commander from your crew", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'crew')}\r\n{SetState('eddi_context_last_action', 'remove')}\r\n{SetState('eddi_context_crew_name', event.crew)}\r\n\r\n您已从机组中移除 {event.crew} .", - "default": true + "default": true, + "name": "Crew member removed", + "description": "Triggered when you remove a commander from your crew" }, "Crew member role changed": { - "name": "Crew member role changed", - "description": "Triggered when a crew member changes their role", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'crew')}\r\n{SetState('eddi_context_last_action', 'role')}\r\n{SetState('eddi_context_crew_name', event.crew)}\r\n{SetState('eddi_context_crew_role', event.role)}\r\n\r\n{if event.role = 'Idle':\r\n {event.crew} 不再担任特殊职位\r\n|elif event.role = 'Fighter':\r\n {event.crew} 现在是舰载机操作员\r\n|elif event.role = 'Gunner':\r\n {event.crew} 现在是炮长\r\n}.\r\n", - "default": true + "default": true, + "name": "Crew member role changed", + "description": "Triggered when a crew member changes their role" }, "Crew paid wage": { - "name": "Crew paid wage", - "description": "Triggered when npc crew receives a profit share", "enabled": true, "priority": 3, "responder": true, "script": "{_ Crew paid wage }\r\n{_ Triggered when npc crew receives a profit share }\r\n\r\n", - "default": true + "default": true, + "name": "Crew paid wage", + "description": "Triggered when npc crew receives a profit share" }, "Crew promotion": { - "name": "Crew promotion", - "description": "Triggered when crewmember combat rank increases", "enabled": true, "priority": 3, "responder": true, "script": "{_ Crew promotion }\r\n{_ Triggered when crewmember combat rank increases }\r\n\r\n\r\n机组成员 {event.name}的战斗等级已经升至 {event.combatrating}.", - "default": true + "default": true, + "name": "Crew promotion", + "description": "Triggered when crewmember combat rank increases" }, "Crew role changed": { - "name": "Crew role changed", - "description": "Triggered when your role in the crew changes", "enabled": true, "priority": 3, "responder": true, "script": "{if event.role = 'Gunner':\r\n 您现在是炮长.\r\n|elif event.role = 'Fighter':\r\n 您现在是舰载机操作员.\r\n|elif event.role = 'Idle':\r\n 您现在不担任职务.\r\n}", - "default": true + "default": true, + "name": "Crew role changed", + "description": "Triggered when your role in the crew changes" }, "Crew session ended": { - "name": "Crew session ended", - "description": "Triggered when you disband your crew and end the multicrew session", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Crew session ended", + "description": "Triggered when you disband your crew and end the multicrew session" }, "Crime check station": { - "name": "Crime check station", - "description": "Check claims, fines & bounties related to the current station", "enabled": true, - "priority": null, + "priority": 3, "responder": false, - "script": "{_ Preferences }\r\n{set suggestSurrender to 0} {_ set to 1 if you'd like suggestions to turn yourself in to authorities when there is a bounty on your head }\r\n\r\n{set CheckPad(current_station) to:\r\n {set largest_pad to lcase(current_station.largestpad)}\r\n {if largest_pad != \"none\":\r\n {if largest_pad = \"large\":\r\n {return true}\r\n |elif largest_pad = \"medium\":\r\n {if lcase(ship.size) = \"large\":\r\n {return false}\r\n |else:\r\n {return true}\r\n }\r\n }\r\n {if lcase(ship.size) = \"small\":\r\n {return true}\r\n }\r\n }\r\n {return false}\r\n}\r\n\r\n{set HasService(service) to:\r\n {if CheckPad(current_station):\r\n {if find(current_station.stationservices, service) > -1:\r\n {return true}\r\n |else:\r\n {return false}\r\n }\r\n |else: {return false}\r\n }\r\n}\r\n\r\n{if state.eddi_context_body_type = 'Station' && station.name && station.name != \"\":\r\n {set current_station to StationDetails(station.name)}\r\n {set system_claim_records to []}\r\n {set system_claims to 0}\r\n {set system_fine_records to []}\r\n {set system_fines to 0}\r\n {set system_bounty_records to []}\r\n {set system_bounties to 0}\r\n {set interstellar_fine_records to []}\r\n {set interstellar_fines to 0}\r\n {set interstellar_bounty_records to []}\r\n {set interstellar_bounties to 0} \r\n\r\n {for record in criminalrecord:\r\n {set factionMatched to false}\r\n {for faction in system.factions:\r\n {if record.faction = faction.name:\r\n\r\n {_ This record can be connected to a local faction }\r\n {set factionMatched to true}\r\n\r\n {if record.claims > 0:\r\n {set system_claim_records to cat(system_claim_records, [record.faction])}\r\n {set system_claims to system_claims + record.claims}\r\n }\r\n\r\n {set reports to record.finesIncurred}\r\n {if len(reports) > 0:\r\n {for report in reports:\r\n {if report.shipId = ship.LocalId:\r\n {set system_fines to system_fines + report.amount}\r\n {if find(system_fine_records, record.faction) < 0:\r\n {set system_fine_records to cat(system_fine_records, [record.faction])}\r\n }\r\n }\r\n }\r\n }\r\n\r\n {set reports to record.bountiesIncurred}\r\n {if len(reports) > 0:\r\n {for report in reports:\r\n {if report.shipId = ship.LocalId:\r\n {set system_bounties to system_bounties + report.amount}\r\n {if find(system_bounty_records, record.faction) < 0:\r\n {set system_bounty_records to cat(system_bounty_records, [record.faction])}\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n {if !factionMatched:\r\n \r\n {_ This record requires interstellar factors }\r\n \r\n {set reports to record.finesIncurred}\r\n {if len(reports) > 0:\r\n {for report in reports:\r\n {if report.shipId = ship.LocalId:\r\n {set interstellar_fines to interstellar_fines + report.amount}\r\n {if find(interstellar_fine_records, record.faction) < 0:\r\n {set interstellar_fine_records to cat(interstellar_fine_records, [record.faction])}\r\n }\r\n }\r\n }\r\n }\r\n\r\n {set reports to record.bountiesIncurred}\r\n {if len(reports) > 0:\r\n {for report in reports:\r\n {if report.shipId = ship.LocalId:\r\n {set interstellar_bounties to interstellar_bounties + report.amount}\r\n {if find(interstellar_bounty_records, record.faction) < 0:\r\n {set interstellar_bounty_records to cat(interstellar_bounty_records, [record.faction])}\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n {set canPaySystemBounties to system_bounties > 0 && suggestSurrender && HasService(\"Contacts\")}\r\n {set canPaySystemFines to system_fines > 0 && HasService(\"Contacts\")}\r\n {set canPayInterstellarBounties to interstellar_bounties > 0 && HasService(\"Interstellar Factors Contact\")}\r\n {set canPayInterstellarFines to interstellar_fines > 0 && HasService(\"Interstellar Factors Contact\")}\r\n {set canRedeemClaims to system_claims > 0 && HasService(\"Contacts\")}\r\n \r\n {if canPaySystemBounties || canPaySystemFines || canRedeemClaims || canPayInterstellarBounties || canPayInterstellarFines:\r\n {set actions to []}\r\n {if canPaySystemBounties || canPayInterstellarBounties:\r\n {set action to:\r\n 清除您待处理的\r\n {if canPaySystemBounties: 本地 }\r\n {if canPaySystemBounties && canPayInterstellarBounties: 和}\r\n {if canPayInterstellarBounties: 星际 } \r\n 悬赏金, \r\n }\r\n {set actions to cat(actions, [action])} \r\n }\r\n {if canPaySystemFines || canPayInterstellarFines: \r\n {set action to:\r\n 结清您待处理的\r\n {if canPaySystemFines: 本地 }\r\n {if canPaySystemFines && canPayInterstellarFines: 和}\r\n {if canPayInterstellarFines: 星际 } \r\n 罚款,\r\n }\r\n {set actions to cat(actions, [action])} \r\n }\r\n {if canRedeemClaims:\r\n {set action to:\r\n 收取您未处理的狩猎赏金.\r\n }\r\n {set actions to cat(actions, [action])}\r\n }\r\n 在这个站点可以 {List(actions)}.\r\n }\r\n}", - "default": true + "script": "{_ Preferences }\r\n{set suggestSurrender to 0} {_ set to 1 if you'd like suggestions to turn yourself in to authorities when there is a bounty on your head }\r\n\r\n{set CheckPad(current_station) to:\r\n {set largest_pad to lcase(current_station.largestpad)}\r\n {if largest_pad != \"none\":\r\n {if largest_pad = \"large\":\r\n {return true}\r\n |elif largest_pad = \"medium\":\r\n {if lcase(ship.size) = \"large\":\r\n {return false}\r\n |else:\r\n {return true}\r\n }\r\n }\r\n {if lcase(ship.size) = \"small\":\r\n {return true}\r\n }\r\n }\r\n {return false}\r\n}\r\n\r\n{set HasService(service) to:\r\n {if CheckPad(current_station):\r\n {if find(current_station.stationservices, service) > -1:\r\n {return true}\r\n |else:\r\n {return false}\r\n }\r\n |else: {return false}\r\n }\r\n}\r\n\r\n{if state.eddi_context_body_type = 'Station' && station.name && station.name != \"\":\r\n {set current_station to StationDetails(station.name)}\r\n {set system_claim_records to []}\r\n {set system_claims to 0}\r\n {set system_fine_records to []}\r\n {set system_fines to 0}\r\n {set system_bounty_records to []}\r\n {set system_bounties to 0}\r\n {set interstellar_fine_records to []}\r\n {set interstellar_fines to 0}\r\n {set interstellar_bounty_records to []}\r\n {set interstellar_bounties to 0} \r\n\r\n {for record in criminalrecord:\r\n {set factionMatched to false}\r\n {for faction in system.factions:\r\n {if record.faction = faction.name:\r\n\r\n {_ This record can be connected to a local faction }\r\n {set factionMatched to true}\r\n\r\n {if record.claims > 0:\r\n {set system_claim_records to cat(system_claim_records, [record.faction])}\r\n {set system_claims to system_claims + record.claims}\r\n }\r\n\r\n {set reports to record.finesIncurred}\r\n {if len(reports) > 0:\r\n {for report in reports:\r\n {set system_fines to system_fines + report.amount}\r\n {if find(system_fine_records, record.faction) < 0:\r\n {set system_fine_records to cat(system_fine_records, [record.faction])}\r\n }\r\n }\r\n }\r\n\r\n {set reports to record.bountiesIncurred}\r\n {if len(reports) > 0:\r\n {for report in reports:\r\n {set system_bounties to system_bounties + report.amount}\r\n {if find(system_bounty_records, record.faction) < 0:\r\n {set system_bounty_records to cat(system_bounty_records, [record.faction])}\r\n }\r\n }\r\n }\r\n }\r\n }\r\n {if !factionMatched:\r\n \r\n {_ This record requires interstellar factors }\r\n \r\n {set reports to record.finesIncurred}\r\n {if len(reports) > 0:\r\n {for report in reports:\r\n {set interstellar_fines to interstellar_fines + report.amount}\r\n {if find(interstellar_fine_records, record.faction) < 0:\r\n {set interstellar_fine_records to cat(interstellar_fine_records, [record.faction])}\r\n }\r\n }\r\n }\r\n\r\n {set reports to record.bountiesIncurred}\r\n {if len(reports) > 0:\r\n {for report in reports:\r\n {set interstellar_bounties to interstellar_bounties + report.amount}\r\n {if find(interstellar_bounty_records, record.faction) < 0:\r\n {set interstellar_bounty_records to cat(interstellar_bounty_records, [record.faction])}\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n {set canPaySystemBounties to system_bounties > 0 && suggestSurrender && HasService(\"Contacts\")}\r\n {set canPaySystemFines to system_fines > 0 && HasService(\"Contacts\")}\r\n {set canPayInterstellarBounties to interstellar_bounties > 0 && HasService(\"Interstellar Factors Contact\")}\r\n {set canPayInterstellarFines to interstellar_fines > 0 && HasService(\"Interstellar Factors Contact\")}\r\n {set canRedeemClaims to system_claims > 0 && HasService(\"Contacts\")}\r\n \r\n {if canPaySystemBounties || canPaySystemFines || canRedeemClaims || canPayInterstellarBounties || canPayInterstellarFines:\r\n {set actions to []}\r\n {if canPaySystemBounties || canPayInterstellarBounties:\r\n {set action to:\r\n 清除您待处理的\r\n {if canPaySystemBounties: 本地 }\r\n {if canPaySystemBounties && canPayInterstellarBounties: 和}\r\n {if canPayInterstellarBounties: 星际 } \r\n 悬赏金, \r\n }\r\n {set actions to cat(actions, [action])} \r\n }\r\n {if canPaySystemFines || canPayInterstellarFines: \r\n {set action to:\r\n 结清您待处理的\r\n {if canPaySystemFines: 本地 }\r\n {if canPaySystemFines && canPayInterstellarFines: 和}\r\n {if canPayInterstellarFines: 星际 } \r\n 罚款,\r\n }\r\n {set actions to cat(actions, [action])} \r\n }\r\n {if canRedeemClaims:\r\n {set action to:\r\n 收取您未处理的狩猎赏金.\r\n }\r\n {set actions to cat(actions, [action])}\r\n }\r\n 在这个站点可以 {List(actions)}.\r\n }\r\n}", + "default": true, + "name": "Crime check station", + "description": "Check claims, fines & bounties related to the current station" }, "Crime check system": { - "name": "Crime check system", - "description": "Check claims, fines & bounties related to the current system", "enabled": true, - "priority": null, + "priority": 3, "responder": false, - "script": "{set system_claim_records to []}\r\n{set system_claims to 0}\r\n{set system_fine_records to []}\r\n{set system_fines to 0}\r\n{set system_bounty_records to []}\r\n{set system_bounties to 0}\r\n{set interstellar_fine_records to []}\r\n{set interstellar_fines to 0}\r\n{set interstellar_bounty_records to []}\r\n{set interstellar_bounties to 0}\r\n{set wanted_faction_count to 0}\r\n\r\n{for record in criminalrecord:\r\n {set factionMatched to false}\r\n {for faction in system.factions:\r\n {if record.faction = faction.name:\r\n\r\n {_ This record pertains to a faction which is present in the system }\r\n {set factionMatched to true}\r\n \r\n {if record.claims > 0:\r\n {set system_claim_records to cat(system_claim_records, [record.faction])}\r\n {set system_claims to system_claims + record.claims}\r\n }\r\n\r\n {set reports to record.finesIncurred}\r\n {if len(reports) > 0:\r\n {for report in reports:\r\n {set system_fines to system_fines + report.amount}\r\n {if find(system_fine_records, record.faction) < 0:\r\n {set system_fine_records to cat(system_fine_records, [record.faction])}\r\n {if find(system_bounty_records, record.faction) < 0:\r\n {set wanted_faction_count to wanted_faction_count + 1}\r\n }\r\n }\r\n }\r\n }\r\n\r\n {set reports to record.bountiesIncurred}\r\n {if len(reports) > 0:\r\n {for report in reports:\r\n {set system_bounties to system_bounties + report.amount}\r\n {if find(system_bounty_records, record.faction) < 0:\r\n {set system_bounty_records to cat(system_bounty_records, [record.faction])}\r\n {if find(system_fine_records, record.faction) < 0:\r\n {set wanted_faction_count to wanted_faction_count + 1}\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n {if !factionMatched:\r\n\r\n {_ This record pertains to a faction not present in the system }\r\n {set reports to record.finesIncurred}\r\n {if len(reports) > 0:\r\n {for report in reports:\r\n {set interstellar_fines to interstellar_fines + report.amount}\r\n {if find(system_fine_records, record.faction) < 0:\r\n {set interstellar_fine_records to cat(interstellar_fine_records, [record.faction])}\r\n }\r\n }\r\n }\r\n {set reports to record.bountiesIncurred}\r\n {if len(reports) > 0:\r\n {for report in reports:\r\n {set interstellar_bounties to interstellar_bounties + report.amount}\r\n {if find(system_bounty_records, record.faction) < 0:\r\n {set interstellar_bounty_records to cat(interstellar_bounty_records, [record.faction])}\r\n }\r\n }\r\n }\r\n } \r\n}\r\n\r\n{if wanted_faction_count > 0:\r\n {OneOf(\"警告:\", \"注意:\", \"警报:\")}:\r\n 您在本星系被 {wanted_faction_count}个派系悬赏.有\r\n {if system_fines > 0 && system_bounties > 0:\r\n 罚款和悬赏金\r\n |elif system_fines > 0:\r\n 罚款\r\n |else:\r\n 悬赏金\r\n }共计\r\n of {Humanise(system_fines + system_bounties)}信用点.\r\n}\r\n{if len(system_claim_records) > 0:\r\n {if wanted_faction_count > 0: 另外您 |else: 您}\r\n 在本地靠赏金狩猎赚取了{Humanise(system_claims)}点奖励.\r\n \r\n}", - "default": true + "script": "{set system_claim_records to []}\r\n{set system_claims to 0}\r\n{set system_fine_records to []}\r\n{set system_fines to 0}\r\n{set system_bounty_records to []}\r\n{set system_bounties to 0}\r\n{set interstellar_fine_records to []}\r\n{set interstellar_fines to 0}\r\n{set interstellar_bounty_records to []}\r\n{set interstellar_bounties to 0}\r\n{set wanted_faction_count to 0}\r\n\r\n{for record in criminalrecord:\r\n {set factionMatched to false}\r\n {for faction in system.factions:\r\n {if record.faction = faction.name:\r\n\r\n {_ This record pertains to a faction which is present in the system }\r\n {set factionMatched to true}\r\n \r\n {if record.claims > 0:\r\n {set system_claim_records to cat(system_claim_records, [record.faction])}\r\n {set system_claims to system_claims + record.claims}\r\n }\r\n\r\n {set reports to record.finesIncurred}\r\n {if len(reports) > 0:\r\n {for report in reports:\r\n {set system_fines to system_fines + report.amount}\r\n {if find(system_fine_records, record.faction) < 0:\r\n {set system_fine_records to cat(system_fine_records, [record.faction])}\r\n {if find(system_bounty_records, record.faction) < 0:\r\n {set wanted_faction_count to wanted_faction_count + 1}\r\n }\r\n }\r\n }\r\n }\r\n\r\n {set reports to record.bountiesIncurred}\r\n {if len(reports) > 0:\r\n {for report in reports:\r\n {set system_bounties to system_bounties + report.amount}\r\n {if find(system_bounty_records, record.faction) < 0:\r\n {set system_bounty_records to cat(system_bounty_records, [record.faction])}\r\n {if find(system_fine_records, record.faction) < 0:\r\n {set wanted_faction_count to wanted_faction_count + 1}\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n {if !factionMatched:\r\n\r\n {_ This record pertains to a faction not present in the system }\r\n {set reports to record.finesIncurred}\r\n {if len(reports) > 0:\r\n {for report in reports:\r\n {set interstellar_fines to interstellar_fines + report.amount}\r\n {if find(system_fine_records, record.faction) < 0:\r\n {set interstellar_fine_records to cat(interstellar_fine_records, [record.faction])}\r\n }\r\n }\r\n }\r\n {set reports to record.bountiesIncurred}\r\n {if len(reports) > 0:\r\n {for report in reports:\r\n {set interstellar_bounties to interstellar_bounties + report.amount}\r\n {if find(system_bounty_records, record.faction) < 0:\r\n {set interstellar_bounty_records to cat(interstellar_bounty_records, [record.faction])}\r\n }\r\n }\r\n }\r\n } \r\n}\r\n\r\n{if wanted_faction_count > 0:\r\n {if system_bounties > 0:\r\n {OneOf(\"警告:\", \"注意:\", \"警报:\")}:\r\n 您在本星系被 {wanted_faction_count}个派系悬赏.有\r\n {if system_fines > 0 && system_bounties > 0:\r\n 罚款和悬赏金\r\n |elif system_fines > 0:\r\n 罚款\r\n |else:\r\n 悬赏金\r\n }共计\r\n of {Humanise(system_fines + system_bounties)}信用点.\r\n}\r\n{if len(system_claim_records) > 0:\r\n {if wanted_faction_count > 0: 另外您 |else: 您}\r\n 在本地靠赏金狩猎赚取了{Humanise(system_claims)}点奖励.\r\n \r\n}", + "default": true, + "name": "Crime check system", + "description": "Check claims, fines & bounties related to the current system" }, "Crime report": { - "name": "Crime report", - "description": "Report on all pending claims, fines, and bounties", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{_ Crime report}\r\n{_ Report on all pending claims, fines, and bounties }\r\n\r\n\r\n{set factions_claims to []}\r\n{set claims_count to 0}\r\n{set factions_fines to []}\r\n{set fines_count to 0}\r\n{set factions_bounties to []}\r\n{set systems_bounties to []}\r\n\r\n{for record in criminalrecord:\r\n {set faction to FactionDetails(record.faction)}\r\n {if faction:\r\n {if record.bounties > 0:\r\n {set factions_bounties to cat(factions_bounties, [record.faction])}\r\n {for presence in faction.presences:\r\n {if find(systems_bounties, presence.systemName) = -1:\r\n {set systems_bounties to cat(systems_bounties, [presence.systemName])}\r\n }\r\n }\r\n }\r\n {if record.fines > 0:\r\n {set factions_fines to cat(factions_fines, [record.faction])}\r\n }\r\n {if record.claims > 0:\r\n {set factions_claims to cat(factions_claims, [record.faction])}\r\n }\r\n\r\n {for report in record.factionReports:\r\n {if !report.bounty && report.crimeEDName != \"none\":\r\n {set fines_count to fines_count + 1}\r\n }\r\n {if report.crimeEDName = \"none\":\r\n {set claims_count to claims_count + 1}\r\n }\r\n }\r\n }\r\n}\r\n\r\n{set factions_count to len(factions_bounties)}\r\n{set systems_count to len(systems_bounties)}\r\n\r\n{if factions_count > 0:\r\n 您正在被 {systems_count}个星系中的{factions_count}个派系悬赏, 总金额为{Humanise(bounties)}信用点.\r\n}\r\n\r\n{set factions_count to len(factions_fines)}\r\n{if factions_count > 0:\r\n 您有来自{factions_count}个派系的 {fines_count}笔罚款未处理, 总金额共计{Humanise(fines)}信用点.\r\n}\r\n\r\n{set factions_count to len(factions_claims)}\r\n{if factions_count > 0:\r\n 您有在{factions_count}个派系中有{claims_count}笔未领取的赏金, 总金额为{Humanise(claims)} 信用点.\r\n}", - "default": true + "default": true, + "name": "Crime report", + "description": "Report on all pending claims, fines, and bounties" }, "Damage check": { - "name": "Damage check", - "description": "Check on the levels of damage to your ship", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{_ Track if there is any damage}\r\n{set damaged to 0}\r\n\r\n{_ Announce hull health}\r\n{if ship.health < 100:\r\n 船体结构剩余百分之 {Humanise(ship.health)}.\r\n {set damaged to 1}\r\n}\r\n\r\n{_ Announce critical module health}\r\n\r\n{set minordamage to []}\r\n{set majordamage to []}\r\n\r\n{if ship.powerplant.health < 60:\r\n {set majordamage to cat(majordamage, [ship.powerplant])}\r\n|elif ship.powerplant.health < 100:\r\n {set minordamage to cat(minordamage, [ship.powerplant])}\r\n}\r\n\r\n{if ship.thrusters.health < 60:\r\n {set majordamage to cat(majordamage, [ship.thrusters])}\r\n|elif ship.thrusters.health < 100:\r\n {set minordamage to cat(minordamage, [ship.thrusters])}\r\n}\r\n\r\n{if ship.frameshiftdrive.health < 60:\r\n {set majordamage to cat(majordamage, [ship.frameshiftdrive])}\r\n|elif ship.frameshiftdrive.health < 100:\r\n {set minordamage to cat(minordamage, [ship.frameshiftdrive])}\r\n}\r\n\r\n{if ship.powerdistributor.health < 60:\r\n {set majordamage to cat(majordamage, [ship.powerdistributor])}\r\n|elif ship.powerdistributor.health < 100:\r\n {set minordamage to cat(minordamage, [ship.powerdistributor])}\r\n}\r\n\r\n{if ship.lifesupport.health < 60:\r\n {set majordamage to cat(majordamage, [ship.lifesupport])}\r\n|elif ship.lifesupport.health < 100:\r\n {set minordamage to cat(minordamage, [ship.lifesupport])}\r\n}\r\n\r\n{if ship.sensors.health < 60:\r\n {set majordamage to cat(majordamage, [ship.sensors])}\r\n|elif ship.sensors.health < 100:\r\n {set minordamage to cat(minordamage, [ship.sensors])}\r\n}\r\n\r\n{if len(majordamage) > 0:\r\n {set damaged to 1}\r\n \r\n {if len(majordamage) = 1:\r\n {majordamage[0].name}\r\n |elif len(majordamage) = 2:\r\n {majordamage[0].name} 和 {majordamage[1].name}\r\n |else:\r\n {set cur to 0}\r\n {while cur < len(majordamage):\r\n {if cur = 0:\r\n {majordamage[cur].name}\r\n |elif cur < len(majordamage) - 1:\r\n , {majordamage[cur].name}\r\n |else:\r\n ,和 {majordamage[cur].name}\r\n }\r\n {set cur to cur + 1}\r\n }受到严重损坏\r\n }.\r\n}\r\n\r\n{if len(minordamage) > 0:\r\n {set damaged to 1}\r\n \r\n {if len(minordamage) = 1:\r\n {minordamage[0].name}\r\n |elif len(minordamage) = 2:\r\n {minordamage[0].name} 和 {minordamage[1].name}\r\n |else:\r\n {set cur to 0}\r\n {while cur < len(minordamage):\r\n {if cur = 0:\r\n {minordamage[cur].name}\r\n |elif cur < len(minordamage) - 1:\r\n , {minordamage[cur].name}\r\n |else:\r\n ,和 {minordamage[cur].name}\r\n }\r\n {set cur to cur + 1}\r\n }受到轻微损坏\r\n }.\r\n}\r\n\r\n{_ Announce other module health}\r\n\r\n{set minordamage to []}\r\n{set majordamage to []}\r\n\r\n{for compartment in ship.compartments:\r\n {if compartment.module.health < 60:\r\n {set majordamage to cat(majordamage, [compartment.module.name])}\r\n |elif hardpoint.module.health < 100:\r\n {set minordamage to cat(minordamage, [compartment.module.name])}\r\n }\r\n}\r\n\r\n{for hardpoint in ship.hardpoints:\r\n {if hardpoint.module.health < 60:\r\n {set majordamage to cat(majordamage, [hardpoint.module.name])}\r\n |elif hardpoint.module.health < 100:\r\n {set minordamage to cat(minordamage, [hardpiont.module.name])}\r\n }\r\n}\r\n\r\n{if len(majordamage) > 0:\r\n {set damaged to 1}\r\n {if len(majordamage) = 1:\r\n 另有一个船体组件受到严重损坏\r\n |elif len(majordamage) > 1:\r\n 另有{len(majordamage)}个船体组件受到严重损坏\r\n }\r\n {if len(minordamage) = 1:\r\n 并且有一个船体组件受到轻微损坏\r\n |elif len(minordamage) > 1:\r\n 并且有 {len(minordamage)} 个船体组件受到轻微损坏\r\n }.\r\n|elif len(minordamage) = 1:\r\n {set damaged to 1}\r\n 另有一个船体组件受到轻微损坏.\r\n|elif len(minordamage) > 1:\r\n {set damaged to 1}\r\n 另有{len(minordamage)}个船体组件受到轻微损坏.\r\n}\r\n\r\n{if damaged = 0:\r\n {OneOf(\"所有子系统全部正常\", \"{ShipName()} 完全正常.\", \"{ShipName()} 未受损坏.\")}\r\n}\r\n", - "default": true + "default": true, + "name": "Damage check", + "description": "Check on the levels of damage to your ship" }, "Data scanned": { - "name": "Data scanned", - "description": "Triggered when scanning some types of data links", "enabled": true, "priority": 3, "responder": true, "script": "{_ Data scanned }\r\n{_ Triggered when scanning some types of data links }\r\n\r\n\r\n{_ Context }\r\n{SetState('eddi_context_last_subject', 'scan')}\r\n{SetState('eddi_context_last_action', 'data')}\r\n{SetState('eddi_context_data_scan_type', event.datalinktype)}\r\n\r\n对 {event.datalinktype} 进行的数据扫描已完成.", - "default": true + "default": true, + "name": "Data scanned", + "description": "Triggered when scanning some types of data links" }, "Data voucher awarded": { - "name": "Data voucher awarded", - "description": "Triggered when you are awarded a data voucher", "enabled": true, - "priority": null, + "priority": 3, "responder": false, - "script": "{_ Data voucher awarded }\r\n{_ Triggered when you are awarded a data voucher }\r\n\r\n\r\n{_ Context }\r\n{SetState('eddi_context_last_subject', 'data_voucher')}\r\n{SetState('eddi_context_last_action', 'award')}\r\n{SetState('eddi_context_bond_amount', event.reward)}\r\n{SetState('eddi_context_bond_faction', event.payeefaction)}\r\n\r\n已从 {P(event.payeefaction, \"faction\")}处获得数据扫描代付券奖励,合 {event.reward}信用点.\r\n", - "default": true + "script": "{_ Data voucher awarded }\r\n{_ Triggered when you are awarded a data voucher }\r\n\r\n\r\n{_ Context }\r\n{SetState('eddi_context_last_subject', 'data_voucher')}\r\n{SetState('eddi_context_last_action', 'award')}\r\n{SetState('eddi_context_bond_amount', event.reward)}\r\n{SetState('eddi_context_bond_faction', event.payeefaction)}\r\n\r\n已从 {P(event.payeefaction, \"faction\")}处获得数据扫描代付券奖励,合 {Humanise(event.reward)}信用点.\r\n", + "default": true, + "name": "Data voucher awarded", + "description": "Triggered when you are awarded a data voucher" }, "Data voucher redeemed": { - "name": "Data voucher redeemed", - "description": "Triggered when you redeem a data voucher", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'data_voucher')}\r\n{SetState('eddi_context_last_action', 'redeem')}\r\n{SetState('eddi_context_data_voucher_amount', event.amount)}\r\n\r\n{set singular to len(event.rewards) = 1}\r\n您已经\r\n{Occasionally(2, \"从\", \"\r\n {if singular && len(event.rewards[0].faction) > 0:\r\n {OneOf(\"by\", \"courtesy of\")}\r\n {P(event.rewards[0].faction, \"faction\")}\r\n |else:\r\n {if len(event.rewards[0].faction) > 0:\r\n {OneOf(\"by\", \"courtesy of\")}\r\n {set cur to 0}\r\n {while cur < len(event.rewards):\r\n {if cur = 0:\r\n |elif cur < len(event.rewards) - 1:\r\n , \r\n |else:\r\n 和\r\n }\r\n {P(event.rewards[cur].faction, \"faction\")}\r\n {set cur to cur + 1}\r\n }\r\n }\r\n }\r\n\",\"处\")}.兑换{Humanise(event.amount)}点数据扫描代付券.", - "default": true + "name": "Data voucher redeemed", + "description": "Triggered when you redeem a data voucher" }, "Datalink message": { - "name": "Datalink message", - "description": "Triggered upon completion of Datalink scan", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Datalink message", + "description": "Triggered upon completion of Datalink scan" }, "Destination arrived": { "enabled": true, "priority": 3, "responder": true, - "script": "{if event.name = carrier.name:\r\n Welcome back to \r\n {OneOf(\"your carrier\", carrier.name)}, \r\n {F(\"Honorific\")}.\r\n|else:\r\n\r\n {set reportSystem to SystemDetails(system.systemname)}\r\n {if find(reportSystem.carriersignalsources, event.name) > -1:\r\n {Occasionally(2, \"The\")} Fleet Carrier\r\n {event.name} is\r\n {OneOf(\"{OneOf('located', 'orbiting', 'stationed')} here\",\r\n \"{OneOf('orbiting', 'stationed')} at this location\",\r\n \"in orbit {OneOf('here', 'at this location')}\")}.\r\n |else:\r\n {set entering to cat(OneOf(\"Arriving \", \"Dropping \"), OneOf(\"near \", \"at \"))}\r\n \r\n {set warninglevel to:\r\n {if event.threat < 2:\r\n {entering}\r\n |elif event.threat = 2:\r\n Caution: {entering} medium threat\r\n |elif event.threat = 3:\r\n Warning: {entering} high-threat\r\n |elif event.threat = 4:\r\n Danger: {entering} very high-threat\r\n |elif event.threat = 5:\r\n Extreme Danger: {Occasionally(2, entering)} very high-threat\r\n |elif event.threat = 6:\r\n Extreme Danger: {Occasionally(2, entering)} extremely high-threat\r\n |elif event.threat = 7:\r\n Extreme Danger: {Occasionally(2, entering)} ultra high-threat\r\n |else:\r\n Extreme Danger: {Occasionally(2, entering)} Unprecedented level {event.threat} threat\r\n }\r\n }\r\n \r\n {warninglevel} {event.name}\r\n {if event.isSignalSource:\r\n signal source\r\n }.\r\n \r\n {if system.state = \"Anarchy\" && event.name = \"Degraded Emissions\" && system.population > 0: \r\n {Pause(2000)}\r\n {Occasionally(2, \"\r\n Caution:\r\n {set local to OneOf('local', 'nearby')}\r\n {set chatter to OneOf('chatter', 'gossip', 'rumor')}\r\n {set indicate to OneOf('claims', 'suggests', 'implies', 'reports')}\r\n {OneOf('{local} transmissions {indicate}', \r\n '{chatter} in {local} transmissions {indicate}')}\r\n {Occasionally(3, 'that there is')}\r\n {OneOf('increased', 'elevated', 'heightened')}\r\n {OneOf('criminal {Occasionally(2, \\\"syndicate\\\")}', \r\n 'pirate {Occasionally(2, OneOf(\\\"gang\\\", \\\"clan\\\"))}' )}\r\n {OneOf('activity', 'presence')}\r\n in {OneOf('the area', 'the vicinity', 'this sector', 'this system')}.\r\n {OneOf('Remain', 'Stay', 'Keep')} {OneOf('vigilant', 'alert', 'frosty', 'sharp')} \r\n {Occasionally(3,' {F(\\\"Honorific\\\")}' )}.\r\n \")}\r\n }\r\n }\r\n}\r\n\r\n", + "script": "{if event.name = carrier.name:\r\n 欢迎回到 \r\n {OneOf(\"您的航母\", carrier.name)}, \r\n {F(\"Honorific\")}.\r\n|else:\r\n\r\n {set reportSystem to SystemDetails(system.systemname)}\r\n {if find(reportSystem.carriersignalsources, event.name) > -1:\r\n 舰队航母\r\n {event.name} 正\r\n {OneOf(\"{OneOf('位于', '环绕', '停泊在')} 这里\",\r\n \"{OneOf('在这个轨道上', '停靠在这个位置')}\",\r\n \"在 {OneOf('这里的轨道上', '这里')}\")}.\r\n |else:\r\n {set entering to cat(OneOf(\"到达\", \"脱离超空间处在 \"))}\r\n \r\n {set warninglevel to:\r\n {if event.threat < 2:\r\n {entering}\r\n |elif event.threat = 2:\r\n 注意: {entering} 中等威胁\r\n |elif event.threat = 3:\r\n 警告: {entering} 高威胁\r\n |elif event.threat = 4:\r\n 危险: {entering} 非常高威胁\r\n |elif event.threat = 5:\r\n 非常危险: {Occasionally(2, entering)} 非常高威胁\r\n |elif event.threat = 6:\r\n 极度危险: {Occasionally(2, entering)} 极高威胁\r\n |elif event.threat = 7:\r\n 极度危险: {Occasionally(2, entering)} 超高威胁\r\n |else:\r\n 极度危险: {Occasionally(2, entering)} 离谱的 {event.threat} 级别威胁\r\n }\r\n }\r\n \r\n {warninglevel} {event.name}\r\n {if event.isSignalSource:\r\n 信号源\r\n }\r\n \r\n {if system.state = \"Anarchy\" && event.name = \"Degraded Emissions\" && system.population > 0: \r\n {Pause(2000)}\r\n {Occasionally(2, \"\r\n 注意:\r\n {set local to OneOf('本地', '附近的')}\r\n {set chatter to OneOf('闲聊', '闲话', '谣言')}\r\n {set indicate to OneOf('指出', '显示', '报告')}\r\n {OneOf('{local} 通讯 {indicate}', \r\n '{local} 通讯中的{chatter} {indicate}')}\r\n 在这个 {OneOf('地区', '区块', '星系', '区域')},\r\n {OneOf('犯罪 {Occasionally(2, \\\\'集团\\\\')}', \r\n '海盗 {Occasionally(2, OneOf(\\\\'帮派\\\\', \\\\'氏族\\\\'))}' )}\r\n {OneOf('的活动', '的出现')}\r\n 正在{OneOf('增加', '升高', '增强')}.\r\n 请{OneOf('保持', '提高', '小心')} {OneOf('警惕', '谨慎', '防范', '警觉')} \r\n {Occasionally(3,' {F(\\\\'Honorific\\\\')}' )}.\r\n \")}\r\n }\r\n 附近.}\r\n}\r\n\r\n", "default": true, "name": "Destination arrived", "description": "Triggered when you drop into normal space at your selected destination" }, "Died": { - "name": "Died", - "description": "Triggered when you have died", "enabled": true, "priority": 3, "responder": true, "script": "{if vehicle = \"Ship\":\r\n {ShipName()} {Occasionally(2, \"刚刚\")}\r\n {OneOf(\"损毁了\", \"爆炸了\")}\r\n|elif vehicle = \"Fighter\":\r\n 您的舰载机 {Occasionally(2, \"刚刚\")}\r\n {OneOf(\"被毁了\", \"爆炸了\")}\r\n|elif vehicle = \"SRV\":\r\n 您的 {Spacialise(\"SRV\")} {Occasionally(2, \"刚刚\")}\r\n {OneOf(\"被毁了\", \"爆炸了\")}\r\n|elif vehicle = \"Taxi\":\r\n 您的滴滴 {Occasionally(2, \"刚刚\")}\r\n {OneOf(\"被毁了\", \"爆炸了\")}\r\n|elif vehicle = \"Multicrew\": \r\n 飞船 {Occasionally(2, \"刚刚\")}\r\n {OneOf(\"被毁了\", \"爆炸了\")}\r\n|elif vehicle = \"On Foot\":\r\n 您 {Occasionally(2, \"刚刚\")}\r\n {OneOf(\"严重受伤了\", \"失去行动能力了\")}\r\n}.\r\n\r\n{if len(event.killers) > 0:\r\n {set killerDescriptions to []}\r\n {for killer in event.killers:\r\n {set killerDescription to:\r\n 击杀者为\r\n {if StartsWithVowel(killer.rating): an |else: a }\r\n {if find(killer.name, \"Cmdr \") >= 0:\r\n {_ Commander }\r\n 拥有{killer.equipment}的\r\n {killer.rating}-级\r\n {token(killer.name, \" \", 0, \"指挥官\")}\r\n \r\n |else:\r\n {_ Generic NPC }\r\n {killer.rating}-级\r\n {killer.equipment} \r\n }\r\n }\r\n {set killerDescriptions to cat(killerDescriptions, [killerDescription])} \r\n }\r\n {List(killerDescriptions)}\r\n}", - "default": true + "default": true, + "name": "Died", + "description": "Triggered when you have died" }, "Discovery scan": { - "name": "Discovery scan", - "description": "Triggered when performing a full system scan (honk)", "enabled": true, "priority": 3, "responder": true, "script": "{_ Fetch from Context, if a context is set _}\r\n{if state.eddi_context_system_name:\r\n {set reportSystem to SystemDetails(state.eddi_context_system_name)}\r\n|else:\r\n {set reportSystem to SystemDetails(system.systemname)}\r\n}\r\n\r\n{if !reportSystem.name || reportSystem.name = \"\":\r\n 我不太清楚您在寻问哪个星系.\r\n|else:\r\n {if ship.Role.edname = \"Exploration\" || \r\n (ship.Role.edname = \"Multipurpose\" && len(reportSystem.factions) = 0):\r\n\r\n {if reportSystem:\r\n \t{set reportedBodies to len(reportSystem.bodies)}\r\n {if 0 < reportedBodies && reportedBodies < event.totalbodies:\r\n {Pause(1000)}\r\n\r\n {set scannedBodies to 0}\r\n {for body in reportSystem.bodies:\r\n {if body.scanned:\r\n {set scannedBodies to scannedBodies + 1}\r\n }\r\n }\r\n {set bodiesToScan to (event.totalbodies- scannedBodies)}\r\n\r\n {if bodiesToScan = 1:\r\n \t还有一个天体未被扫描\r\n |elif scannedBodies < event.totalbodies: \r\n \t{Occasionally(3, OneOf(\"这里\", \"在本星系\"))}.\r\n {OneOf(\r\n \"{event.totalbodies}个中的{scannedBodies}个天体已被扫描\", \r\n \"还有{bodiesToScan}个天体未被扫描\"\r\n )}\r\n \r\n }\r\n |else:\r\n {set bodiesToMap to F(\"Bodies to map\")}\r\n {if bodiesToMap:\r\n {bodiesToMap}\r\n }\r\n }\r\n }\r\n }\r\n}", - "default": true + "name": "Discovery scan", + "description": "Triggered when performing a full system scan (honk)" }, "Disembark": { - "name": "Disembark", - "description": "Triggered when you transition from a ship or SRV to on foot", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "name": "Disembark", + "description": "Triggered when you transition from a ship or SRV to on foot" }, "Docked": { - "name": "Docked", - "description": "Triggered when your ship docks at a station or outpost", "enabled": true, "priority": 3, "responder": true, "script": "{if event.state = \"Damaged\": Emergency}\r\n对接完成.\r\n\r\n{if event.activefine || event.wanted:\r\n 站点服务访问级别:匿名者.原因:有罚款或赏金未结清.\r\n}\r\n\r\n{if event.cockpitbreached:\r\n 请尽快解决驾驶舱泄漏问题.\r\n}", - "default": true + "default": true, + "name": "Docked", + "description": "Triggered when your ship docks at a station or outpost" }, "Docking cancelled": { - "name": "Docking cancelled", - "description": "Triggered when your ship cancels a docking request at a station or outpost", "enabled": true, "priority": 3, "responder": true, "script": "已取消对接请求.", - "default": true + "default": true, + "name": "Docking cancelled", + "description": "Triggered when your ship cancels a docking request at a station or outpost" }, "Docking denied": { - "name": "Docking denied", - "description": "Triggered when your ship is denied docking at a station or outpost", "enabled": true, "priority": 3, "responder": true, "script": "{Pause(2000)}\r\n\r\n我们的对接申请被驳回,\r\n\r\n{if event.reason = \"ActiveFighter\":\r\n 因为我们的舰载机还未收回\r\n|elif event.reason = \"Distance\":\r\n 因为我们离站点太远了\r\n|elif event.reason = \"Hostile\":\r\n 因为我们与控制派系的关系不太融洽.好吧他们恨我们\r\n|elif event.reason = \"NoSpace\":\r\n 因为{OneOf(\"停机坪已经水泄不通了\", \"没有空闲机位了\")}\r\n|elif event.reason = \"Offences\":\r\n 因为我们最近对他们采取了敌对行动\r\n|elif event.reason = \"TooLarge\":\r\n 因为这里没有足够大的停机坪\r\n}.", - "default": true + "default": true, + "name": "Docking denied", + "description": "Triggered when your ship is denied docking at a station or outpost" }, "Docking granted": { - "name": "Docking granted", - "description": "Triggered when your ship is granted docking permission at a station or outpost", "enabled": true, "priority": 3, "responder": true, - "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'landing pad')}\r\n{SetState('eddi_context_landing_pad_system', system.name)}\r\n{SetState('eddi_context_landing_pad_station', event.station)}\r\n{SetState('eddi_context_landing_pad_station_model', event.stationtype)}\r\n{SetState('eddi_context_landing_pad_pad', event.landingpad)}\r\n\r\n{if event.stationDefinition.basename = \"Coriolis\" || \r\n event.stationDefinition.basename = \"Orbis\" || \r\n event.stationDefinition.basename = \"Bernal\" || \r\n event.stationDefinition.basename = \"Ocellus\" || \r\n event.stationDefinition.basename = \"AsteroidBase\":\r\n {Pause(8000)}\r\n {F(\"Landing pad report\")}\r\n|else:\r\n {Pause(8000)}\r\n {Occasionally(4, cat( F('Honorific') ))}\r\n {event.landingpad}号停机坪已\r\n {OneOf('准备好了,', '被分配给您了,')}\r\n 可以降落.\r\n}", - "default": true + "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'landing pad')}\r\n{SetState('eddi_context_landing_pad_system', system.name)}\r\n{SetState('eddi_context_landing_pad_station', event.station)}\r\n{SetState('eddi_context_landing_pad_station_model', event.stationtype)}\r\n{SetState('eddi_context_landing_pad_pad', event.landingpad)}\r\n\r\n{for compartment in ship.compartments:\r\n {if find(compartment.module.name, \"Docking\") > -1:\r\n {if compartment.module.enabled:\r\n {set hasDockingComputerReady to true}\r\n }\r\n }\r\n}\r\n\r\n{if hasDockingComputerReady:\r\n {Pause(2000)}\r\n {OneOf(\r\n \"Ready to engage {OneOf('auto dock sequence', 'automated docking')}\", \r\n \"{OneOf('Auto dock', 'Automated docking')} {OneOf('ready', 'standing by')}\"\r\n )}\r\n {Occasionally(4, cat(', ', F('Honorific') ))}.\r\n|else:\r\n {if event.stationDefinition.basename = \"Coriolis\" || \r\n event.stationDefinition.basename = \"Orbis\" || \r\n event.stationDefinition.basename = \"Bernal\" || \r\n event.stationDefinition.basename = \"Ocellus\" || \r\n event.stationDefinition.basename = \"AsteroidBase\":\r\n {Pause(8000)}\r\n {F(\"Landing pad report\")}\r\n|else:\r\n {Pause(8000)}\r\n {Occasionally(4, cat( F('Honorific') ))}\r\n {event.landingpad}号停机坪已\r\n {OneOf('准备好了,', '被分配给您了,')}\r\n 可以降落.\r\n}", + "default": true, + "name": "Docking granted", + "description": "Triggered when your ship is granted docking permission at a station or outpost" }, "Docking requested": { - "name": "Docking requested", - "description": "Triggered when your ship requests docking at a station or outpost", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Docking requested", + "description": "Triggered when your ship requests docking at a station or outpost" }, "Docking timed out": { - "name": "Docking timed out", - "description": "Triggered when your docking request times out", "enabled": true, "priority": 3, "responder": true, "script": "对我们的对接请求无反应.", - "default": true + "default": true, + "name": "Docking timed out", + "description": "Triggered when your docking request times out" }, "Dropship deployment": { - "name": "Dropship deployment", - "description": "Triggered when exiting a military dropship at an on-foot conflict zone", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "name": "Dropship deployment", + "description": "Triggered when exiting a military dropship at an on-foot conflict zone" }, "Embark": { - "name": "Embark", - "description": "Triggered when you transition from on foot to a ship or SRV", "enabled": true, "priority": 3, "responder": true, "script": "{if !event.tosrv && state.eddi_context_srv_deployed_id:\r\n 您的 {Spacialise(\"SRV\")} 还没上船, {F('Honorific')}, 如果被抛弃则会被摧毁.\r\n}", - "default": true + "name": "Embark", + "description": "Triggered when you transition from on foot to a ship or SRV" }, "Empire honorific": { - "name": "Empire honorific", - "description": "Function to provide a suitable honorific for your commander when in the empire", "enabled": true, "priority": null, "responder": false, "script": "{_ Forms of address taken from }\r\n{if cmdr.empirerating.rank <= 4: {_ Commoner }\r\n commander\r\n|elif cmdr.empirerating.rank = 5: {_ Knight / Dame }\r\n {if cmdr.gender = \"Male\": \r\n 先生 \r\n |elif cmdr.gender = \"Female\": \r\n 女士\r\n |else: \r\n 指挥官\r\n }\r\n|elif cmdr.empirerating.rank <= 11: {_ Peer / Peeress }\r\n {if cmdr.gender = \"Male\": \r\n {OneOf(\"大人\")}\r\n |elif cmdr.gender = \"Female\": \r\n {OneOf(\"夫人\")}\r\n |else: \r\n 指挥官\r\n }\r\n|elif cmdr.empirerating.rank = 12:\r\n 公爵阁下\r\n|elif cmdr.empirerating.rank = 13:\r\n 殿下\r\n|elif cmdr.empirerating.rank = 14:\r\n {OneOf(\"陛下\",\"国王陛下\")}\r\n}\r\n", - "default": true + "default": true, + "name": "Empire honorific", + "description": "Function to provide a suitable honorific for your commander when in the empire" }, "Engineer contributed": { - "name": "Engineer contributed", - "description": "Triggered when contributing resources to an engineer in exchange for access", "enabled": true, "priority": 3, "responder": true, "script": "{event.engineer} \r\n感谢您捐赠了\r\n{if event.contributiontype = \"Commodity\":\r\n {event.amount} 吨 \r\n|elif event.contributiontype = \"Material\":\r\n {if material.category = 'Data':\r\n {event.amount} \"个单位的\"\r\n |else:\r\n {event.amount} \"个单位的\"\r\n }\r\n}\r\nof {event.contribution}.", - "default": true + "default": true, + "name": "Engineer contributed", + "description": "Triggered when contributing resources to an engineer in exchange for access" }, "Engineer progressed": { - "name": "Engineer progressed", - "description": "Triggered when you reach a new rank with an engineer", "enabled": true, "priority": 3, "responder": true, "script": "{if event.progresstype = \"Stage\":\r\n\r\n {if event.stage = \"Known\":\r\n 工程师 {event.engineer} 向您发送了消息.\r\n |elif event.stage = \"Invited\":\r\n 收到来自 {event.engineer}工作室的邀请.\r\n |elif event.stage = \"Unlocked\":\r\n {event.engineer} 给予了您去他的设施的许可.\r\n |elif event.stage = \"Barred\":\r\n {event.engineer} 已经 {OneOf(\"禁止了\", \"限制了\")} 您去它的设施的权利.\r\n }\r\n\r\n|elif event.engineer:\r\n\r\n {event.engineer} 已经\r\n {OneOf(\"给予\", \"授予\")}\r\n 您完成 {event.rank} 级蓝图的许可.\r\n\r\n}", - "default": true + "default": true, + "name": "Engineer progressed", + "description": "Triggered when you reach a new rank with an engineer" }, "Engineer report": { - "name": "Engineer report", - "description": "Report on the engineer in a contextual system", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{_ Fetch from Context, if a context is set _}\r\n{if state.eddi_context_system_name:\r\n {set systemname to state.eddi_context_system_name}\r\n|else:\r\n {set systemname to system.systemname}\r\n}\r\n\r\n{if !systemname || systemname = \"\":\r\n\r\n 我不确定您在寻问哪个星系.\r\n\r\n|else:\r\n\r\n {set reportEngineer to EngineerDetails(systemname)}\r\n {if reportEngineer:\r\n 工程师 {reportEngineer.name} 的工作室就位于这个星系.\r\n {if len(reportEngineer.majorspecialties) + len(reportEngineer.minorspecialties) > 0 :, 他}\r\n {if len(reportEngineer.majorspecialties) > 0:\r\n 的专长是 {OneOf(\"改进\", \"升级\")}\r\n {List(reportEngineer.majorspecialties)}.\r\n }\r\n {if len(reportEngineer.minorspecialties) > 0:\r\n \r\n 他们还 {Occasionally(2, \"可以\")} \r\n {OneOf(\"改进\", \"升级\")}\r\n \r\n {List(reportEngineer.minorspecialties)}\r\n }.\r\n 您可以在{P(reportEngineer.stationname, \"station\")}处找到 {reportEngineer.name} .\r\n }\r\n}", - "default": true + "default": true, + "name": "Engineer report", + "description": "Report on the engineer in a contextual system" }, "Entered CQC": { - "name": "Entered CQC", - "description": "Triggered when you enter CQC", "enabled": true, "priority": 3, "responder": true, "script": "正在进入近距缠斗赛,祝您好运.", - "default": true + "default": true, + "name": "Entered CQC", + "description": "Triggered when you enter CQC" }, "Entered normal space": { - "name": "Entered normal space", - "description": "Triggered when your ship enters normal space", "enabled": true, "priority": 3, "responder": true, - "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'fsd')}\r\n{SetState('eddi_context_last_action', 'disengage')}\r\n{SetState('eddi_context_system_name', event.system)}\r\n{SetState('eddi_context_body_name', event.body)}\r\n{SetState('eddi_context_body_type', event.bodytype)}\r\n{SetState('eddi_context_body_system', event.system)}\r\n\r\n{set station_notifications to:\r\n {set station_missions to F(\"Mission check station\")}\r\n {set station_crimes to F(\"Crime check station\")}\r\n {if station_missions || station_crimes:\r\n {_ Pause for station ATC before speaking again _}\r\n {Pause(5000)}\r\n Information:\r\n {if station_missions:\r\n {Pause(500)}\r\n {station_missions}\r\n }\r\n {if station_crimes:\r\n {Pause(500)}\r\n {station_crimes}\r\n }\r\n }\r\n}\r\n\r\n{Pause(500)}\r\n\r\n{OneOf(\"{ShipName()} has\", \"\")} \r\n{OneOf(\"left supercruise\", \"{OneOf('entered', 'returned to', 'dropped to')} normal space\")}\r\n\r\n{if event.bodytype_invariant = 'Planet':\r\n {OneOf(\"near\", \"close to\", \"in the vicinity of\")}\r\n {set time to SecondsSince(0) - state.eddi_context_approach_time}\r\n {if time < 60:\r\n {set settlement to state.eddi_context_last_settlement}\r\n {set reportStation to StationDetails(settlement, event.system)}\r\n {if reportStation:\r\n {SetState('eddi_context_body_name', settlement)}\r\n {if reportStation.Model.invariantName != \"Unknown Station\":\r\n {P(reportStation.model, \"station\")},\r\n } \r\n {P(settlement, \"station\")}\r\n {station_notifications}\r\n |else:\r\n {P(settlement, \"station\")}\r\n }\r\n |else:\r\n {set reportBody to BodyDetails(event.body, event.system)}\r\n {reportBody.bodytype)} {P(reportBody.name, \"body\")}\r\n }\r\n|elif event.bodytype_invariant = 'Star':\r\n {set reportBody to BodyDetails(event.body, event.system)}\r\n {OneOf(\"near\", \"close to\", \"in the vicinity of\")} {reportBody.bodytype)} {P(reportBody.name, \"body\")}\r\n|elif event.bodytype_invariant = 'Station':\r\n {set reportStation to StationDetails(event.body, event.system)}\r\n {OneOf(\"near\", \"close to\", \"in the vicinity of\")}\r\n {P(reportStation.model, \"station\")}, {P(event.body, \"body\")}\r\n {station_notifications}\r\n|elif event.bodytype_invariant = 'Planetary Ring':\r\n {OneOf(\"near\", \"close to\", \"in the vicinity of\")} \r\n {event.bodytype} {P(token(event.body,\" Ring\",0), \"body\")}\r\n}.", - "default": false + "script": "{_ Entered normal space }\r\n{_ Triggered when your ship enters normal space }\r\n\r\n\r\n{_ Context }\r\n{SetState('eddi_context_last_subject', 'fsd')}\r\n{SetState('eddi_context_last_action', 'disengage')}\r\n{SetState('eddi_context_system_name', event.system)}\r\n{SetState('eddi_context_body_name', event.body)}\r\n{SetState('eddi_context_body_type', event.bodytype)}\r\n{SetState('eddi_context_body_system', event.system)}\r\n\r\n{set station_notifications to:\r\n {set station_missions to F(\"Mission check station\")}\r\n {set station_crimes to F(\"Crime check station\")}\r\n {if station_missions || station_crimes:\r\n {_ Pause for station ATC before speaking again _}\r\n {Pause(5000)}\r\n 信息:\r\n {if station_missions:\r\n {Pause(500)}\r\n {station_missions}\r\n }\r\n {if station_crimes:\r\n {Pause(500)}\r\n {station_crimes}\r\n }\r\n }\r\n}\r\n\r\n{Pause(500)}\r\n\r\n{OneOf(\"{ShipName()} 已经\", \"\")} \r\n{OneOf('进入', '回到', '掉回')} 正常空间\")\r\n\r\n{if event.bodytype_invariant = 'Planet':\r\n ,位置{OneOf(\"靠近\", \"接近\")}\r\n {set time to SecondsSince(0) - state.eddi_context_approach_time}\r\n {if time < 60:\r\n {set settlement to state.eddi_context_last_settlement}\r\n {set reportStation to StationDetails(settlement, event.system)}\r\n {if reportStation:\r\n {SetState('eddi_context_body_name', settlement)}\r\n {if reportStation.Model.invariantName != \"Unknown Station\":\r\n {P(reportStation.model, \"station\")},\r\n } \r\n {P(settlement, \"station\")}\r\n {station_notifications}\r\n |else:\r\n {P(settlement, \"station\")}\r\n }\r\n |else:\r\n {set reportBody to BodyDetails(event.body, event.system)}\r\n {reportBody.bodytype)} {P(reportBody.name, \"body\")}\r\n }\r\n|elif event.bodytype_invariant = 'Star':\r\n {set reportBody to BodyDetails(event.body, event.system)}\r\n ,位置{OneOf(\"靠近\", \"接近\")} {reportBody.bodytype)} {P(reportBody.name, \"body\")}\r\n|elif event.bodytype_invariant = 'Station':\r\n {set reportStation to StationDetails(event.body, event.system)}\r\n ,位置{OneOf(\"靠近\", \"接近\")}\r\n {P(reportStation.model, \"station\")}, {P(event.body, \"body\")}\r\n {station_notifications}\r\n|elif event.bodytype_invariant = 'Planetary Ring':\r\n ,位置{OneOf(\"靠近\", \"接近\")} \r\n {event.bodytype} {P(token(event.body,\" Ring\",0), \"body\")}\r\n}.", + "default": true, + "name": "Entered normal space", + "description": "Triggered when your ship enters normal space" }, "Entered supercruise": { - "name": "Entered supercruise", - "description": "Triggered when your ship enters supercruise", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'fsd')}\r\n{SetState('eddi_context_last_action', 'engage')}\r\n\r\n{Pause(1000)}\r\n\r\n{Occasionally(2, \"{ShipName()} 已经\")} {OneOf(\"进入\", \"开始\")} 超空间巡航.\r\n\r\n{_ Report on the state of any pending fines, bounties, or claims }\r\n{if state.eddi_context_criminal_record_change:\r\n {set crimeCheck to F(\"Crime check system\")}\r\n {if crimeCheck:\r\n {Pause(1000)}\r\n {crimeCheck}\r\n }\r\n}", - "default": true + "default": true, + "name": "Entered supercruise", + "description": "Triggered when your ship enters supercruise" }, "Exploration data purchased": { - "name": "Exploration data purchased", - "description": "Triggered when you purchase exploration data", "enabled": true, "priority": 3, "responder": true, "script": "{OneOf(\"已购买 {P(event.system, 'starsystem')}的{OneOf('星系', '探索')} 数据 \",\r\n \"{P(event.system, 'starsystem')}{OneOf('星系', '探索')} 数据 现已可用\",\r\n \"{Occasionally(3, '{ShipName()} 已经')} 从星图站收到{P(event.system, 'starsystem')} 的{OneOf('星系', '探索')} 数据\",\r\n \"确认收到 {P(event.system, 'starsystem')}的 {OneOf('星系', '探索')} 数据\")}.", - "default": true + "default": true, + "name": "Exploration data purchased", + "description": "Triggered when you purchase exploration data" }, "Exploration data sold": { - "name": "Exploration data sold", - "description": "Triggered when you sell exploration data", "enabled": true, "priority": 3, "responder": true, "script": "{len(event.systems)}份{OneOf(\"探索\",\"星系\")}数据已售出,\r\n您获得了 {Humanise(event.total)} 信用点作为报酬.\r\n\r\n{if event.bonus > 0:\r\n , 其中包括 {Humanise(event.bonus)} 点首次发现奖励\r\n}.", - "default": true + "default": true, + "name": "Exploration data sold", + "description": "Triggered when you sell exploration data" }, "Fighter docked": { - "name": "Fighter docked", - "description": "Triggered when you dock a fighter with your ship", "enabled": true, "priority": 3, "responder": true, "script": "舰载机已 {Occasionally(2, \"与飞船\")}{OneOf(\"对接\", \"重新对接\")} .", - "default": true + "default": true, + "name": "Fighter docked", + "description": "Triggered when you dock a fighter with your ship" }, "Fighter launched": { - "name": "Fighter launched", - "description": "Triggered when you launch a fighter from your ship", "enabled": true, "priority": 3, "responder": true, "script": "舰载机正在{Occasionally(2, \"从飞船\")} {OneOf(\"部署\", \"起飞\")} .", - "default": true + "default": true, + "name": "Fighter launched", + "description": "Triggered when you launch a fighter from your ship" }, "Fighter rebuilt": { - "name": "Fighter rebuilt", - "description": "Triggered when a ship's fighter is rebuilt in the hangar", "enabled": true, "priority": 3, "responder": true, "script": "舰载机 {OneOf(\"已重铸\", \"打印完成\")} 且已准备好 {OneOf(\"起飞\", \"部署\")}了.", - "default": true + "default": true, + "name": "Fighter rebuilt", + "description": "Triggered when a ship's fighter is rebuilt in the hangar" }, "File Header": { - "name": "File Header", - "description": "Triggered when the file header is read", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "File Header", + "description": "Triggered when the file header is read" }, "Fine incurred": { - "name": "Fine incurred", - "description": "Triggered when you incur a fine", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'fine')}\r\n{SetState('eddi_context_last_action', 'incur')}\r\n{SetState('eddi_context_fine_name', event.victim)}\r\n{SetState('eddi_context_fine_faction', event.faction)}\r\n{SetState('eddi_context_fine_amount', event.fine)}\r\n{SetState(\"eddi_context_criminal_record_change\", true)}\r\n\r\n您因{event.crime}而{OneOf('收到', '被')}罚款.", - "default": true + "default": true, + "name": "Fine incurred", + "description": "Triggered when you incur a fine" }, "Fine paid": { - "name": "Fine paid", - "description": "Triggered when you pay a fine", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'fine')}\r\n{SetState('eddi_context_last_action', 'pay')}\r\n{SetState('eddi_context_fine_amount', event.amount)}\r\n\r\n\r\n您已支付 {Humanise(event.amount)} 信用点的罚款.", - "default": true + "default": true, + "name": "Fine paid", + "description": "Triggered when you pay a fine" }, "Flight assist": { - "name": "Flight assist", - "description": "Triggered when flight assist is toggled", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Flight assist", + "description": "Triggered when flight assist is toggled" }, "Friends status": { - "name": "Friends status", - "description": "Triggered when a friendly commander changes status", "enabled": false, "priority": 3, "responder": true, "script": "{_ Set uselist to \"white\" or \"black\", depending on which list you want to use to filter people _}\r\n{_ \"white\" will only allow notifications from people in this list (e.g. \"User1\", \"User2\", & \"User3\") _}\r\n{_ \"black\" will allow all notification EXCEPT those on this list (e.g. \"User4\", \"User5\", & \"User6\") _}\r\n{_ to allow all notifications, you may also use an empty blacklist (i.e. \"set blacklist to []\" _}\r\n\r\n{set uselist to \"black\"}\r\n\r\n{set whitelist to [\"User1\", \"User2\", \"User3\"]}\r\n{set blacklist to [\"User4\", \"User5\", \"User6\"]}\r\n\r\n{if event.name:\r\n {if uselist = \"white\":\r\n {if find(whitelist, event.name) > -1:\r\n {event.name} 现在已变为 {event.status}.\r\n }\r\n |elif uselist = \"black\":\r\n {if find(blacklist, event.name) = -1:\r\n {event.name} 现在已变为 {event.status}.\r\n }\r\n }\r\n|else:\r\n 我不知道您在说谁.\r\n}", - "default": true + "default": true, + "name": "Friends status", + "description": "Triggered when a friendly commander changes status" }, "FSD engaged": { - "name": "FSD engaged", - "description": "Triggered when your FSD has engaged", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'fsd')}\r\n{SetState('eddi_context_last_action', 'engage')}\r\n{SetState('eddi_context_system_name', event.system)}\r\n{SetState('eddi_context_system_system', event.system)}\r\n{SetState('eddi_context_fsd_target', event.target)}\r\n{SetState('eddi_context_system_lastvisit', system.lastVisitSeconds)}\r\n\r\n{_ Zero the 'remaining jump' context to only use values following this event _}\r\n{SetState('eddi_context_remaining_jumps', 0)}\r\n\r\n{if event.target = 'Hyperspace':\r\n {_ Rewrite context to represent a jump }\r\n {SetState('eddi_context_last_subject', 'jump')}\r\n {SetState('eddi_context_last_action', 'start')}\r\n\r\n {set reportsystem to SystemDetails(event.system)}\r\n\r\n {_ Wait for the FSD countdown and initial jump}\r\n {Pause(5000)}\r\n\r\n {OneOf(\"目的地已确认\",\"跃迁进行中\",\"遥测数据已接收\")}.\r\n {ShipName()} 正 {OneOf(\"在前往\", \"瞄准\", \"行动至\")} {P(reportsystem.name, \"starsystem\")} 星系.\r\n {if reportsystem.name = homesystem.name:\r\n 欢迎回家, {F(\"Honorific\")}\r\n |else:\r\n {set scoopables to [\"O\", \"B\", \"A\", \"F\", \"G\", \"K\", \"M\"]}\r\n {if slice(event.stellarclass, 0, 1) = \"D\":\r\n 小心:检测到白矮星.\r\n |elif event.stellarclass = \"N\":\r\n 小心:检测到中子.\r\n |elif event.stellarclass = \"H\":\r\n 小心:检测到黑洞.\r\n |elif find(scoopables, event.stellarclass) = -1:\r\n {Occasionally(2, \"注意: \")}\r\n 将到达的恒星不可用于补充燃料.\r\n }\r\n \r\n {if lastsystem.allegiance && lastsystem.allegiance != \"None\" && lastsystem.allegiance != \"Independent\" && (!reportsystem.allegiance || reportsystem.allegiance = \"None\" || reportsystem.allegiance = \"Independent\"):\r\n 您 {OneOf(\"正在离开\", \"已经离开\", \"不在处于\")} {lastsystem.allegiance} 的领空.\r\n |elif lastsystem.allegiance && lastsystem.allegiance != reportsystem.allegiance && reportsystem.allegiance && reportsystem.allegiance != \"None\":\r\n 您 {OneOf(\"现在在\", \"已经进入\", \"正在进入\")} {reportsystem.allegiance} 的领空.\r\n {if cmdr.title != \"Commander\":\r\n 欢迎回来, {F(\"Honorific\")}.\r\n }\r\n }\r\n\r\n {if reportsystem.visits = 0:\r\n 这是您第一次来到这个星系.\r\n |elif reportsystem.visits = 1:\r\n 这是您第二次来到这个星系.\r\n |elif reportsystem.visits = 2:\r\n {Occasionally(2, \"这是您第三次来到这个星系.\")}\r\n |elif reportsystem.visits = 3:\r\n {Occasionally(2, \"这是您第四次来到这个星系.\")}\r\n |else:\r\n {Occasionally(3, \"您已来过这个星系 {reportsystem.visits}次.\")}\r\n }\r\n\r\n {if !reportsystem.population && lastsystem.population:\r\n {OneOf(\"这个星系无人居住\",\"这个星系没有本地人类活动\", \"人类还未殖民者李\")}.\r\n |elif reportsystem.population:\r\n {if SecondsSince(reportsystem.lastVisitSeconds) > 3600:\r\n {F(\"System report\")}\r\n }\r\n }\r\n\r\n {if reportsystem.distancefromhome:\r\n {set ReportDistanceFromHome() to:\r\n \t{return cat(\r\n \t OneOf(\"您距离\", \"目前的位置距离\", \"您现在距离\"),\r\n \t OneOf(\"家乡\", \"{P(homesystem.name, 'starsystem')}\")\r\n\t Humanise(reportsystem.distancefromhome), \" 光年 \",\r\n\t )}\r\n } \r\n {Occasionally(7, ReportDistanceFromHome())}\r\n }\r\n\r\n {if reportsystem.comment:\r\n 您{OneOf(\"在\", \"向\")} 这个星系做过 {OneOf(\"标记\", \"记号\")} . 内容如下, {reportsystem.comment}.\r\n }\r\n }\r\n}", - "default": true + "default": true, + "name": "FSD engaged", + "description": "Triggered when your FSD has engaged" }, "Fuel check": { - "name": "Fuel check", - "description": "Report on fuel levels", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{_ Fuel Check _}\r\n{_ Report fuel level _}\r\n\r\n{_ Might be a taxi or multicrew session. We ignore those. We only want this when we're in our own ship. }\r\n{if vehicle = \"Ship\":\r\n\r\n {for compartment in ship.compartments:\r\n {if compartment.module.basename = \"FuelScoop\": \r\n {set scoop_present to true}\r\n }\r\n }\r\n\r\n {set shipsfuel to:\r\n 燃料 {OneOf(\"水平\", \"储量\")}\r\n {Occasionally(2, \"现在\")}\r\n }\r\n\r\n {set currentfuel to round(status.fuel_percent, 0)}\r\n {set currentpercent to:\r\n 为{Occasionally(2, \"容量的\")} 百分之{currentfuel} \r\n }\r\n\r\n {set title to Occasionally(3,\", {F('Honorific')}\")}\r\n\r\n {set maxjump to status.fuel/ship.maxfuel}\r\n\r\n {if state.eddi_context_last_subject = \"jump\" && state.eddi_context_last_action = \"complete\" && maxjump < 1.25:\r\n 警告: {shipsfuel} 几乎见底.\r\n {Pause(500)}\r\n\r\n {if scoop_present:\r\n {if system.scoopable:\r\n {set scoop_system to system.systemname}\r\n |else:\r\n {set detail to JumpDetails('total')}\r\n {set scoop_system to RouteDetails('scoop', detail.distance)}\r\n {set scoop_distance to Distance(scoop_system)}\r\n }\r\n\r\n {if scoop_system && scoop_system != \"\":\r\n 您最近的可汲取燃料的 \r\n {if scoop_system = system.name:\r\n {set scoopable_bodies to []}\r\n {for body in reportSystem.bodies:\r\n {if body.scoopable:\r\n {set scoopable_bodies to cat(scoopable_bodies, [P(body.shortname, \"body\")])}\r\n }\r\n }\r\n {if len(scoopable_bodies) > 1:\r\n 恒星是:本星系的 \r\n {List(scoopable_bodies)}\r\n |else:\r\n 恒星是:本星系的\r\n {scoopable_bodies[0]}\r\n }\r\n {Pause(50)}\r\n .\r\n |else:\r\n 恒星位于{round(scoop_distance, 1)} 光年外的 {P(scoop_system, \"starsystem\")} 星系, .\r\n }\r\n {Pause(500)}\r\n {if maxjump < 0.5:\r\n {title}极度迫切,需要汲取燃料 .\r\n |else:\r\n {title}非常建议现在就汲取燃料 .\r\n }\r\n |else:\r\n 危险!您目前的可跃迁范围内没有可汲取燃料的恒星.\r\n {Pause(500)}\r\n 强烈建议关闭非必要系统!以保持维生系统等待救援.\r\n {Pause(500)}\r\n {title},紧急应答器待命 .\r\n }\r\n |else:\r\n {if maxjump < 0.5:\r\n {OneOf(\"立刻补充燃料!\", \"极度迫切,需要补充燃料\")} {title}.\r\n |else:\r\n {OneOf(\"请补充燃料\", \"非常建议现在就补充燃料\")} {title}.\r\n }\r\n }\r\n |elif currentfuel < 25:\r\n {OneOf(\"警告:\", \"小心:\", \"注意:\")}\r\n {shipsfuel} {OneOf(\"低于 25%\", \"{currentpercent}\" )} {title}.\r\n |elif currentfuel < 50:\r\n {shipsfuel} {OneOf(\"低于 50%\", \"{currentpercent}\" )} {title}.\r\n |elif currentfuel < 75:\r\n {Occasionally(2, \"{shipsfuel} {currentpercent} {title}.\")}\r\n |elif currentfuel < 100:\r\n {Occasionally(3, \"{shipsfuel} {currentpercent} {title}.\")}\r\n |else:\r\n {ShipName()} {shipsfuel} {OneOf(currentpercent, \":满\")} {title}.\r\n }\r\n}", - "default": true + "default": true, + "name": "Fuel check", + "description": "Report on fuel levels" }, "Galnet latest news": { - "name": "Galnet latest news", - "description": "Read the latest unread news in a given category", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{_ Fetch category from state }\r\n{set articlecategory to state.article_category}\r\n\r\n{if articlecategory:\r\n {set articles to GalnetNewsArticles(articlecategory)}\r\n|else:\r\n {set articles to GalnetNewsArticles('Article')}\r\n}\r\n\r\n{if len(articles) = 0:\r\n 已无未读新闻.\r\n|else:\r\n {set article to articles[0]}\r\n {SetState('eddi_context_galnet_news_id', article.id)}\r\n {article.title}: {article.content}\r\n {GalnetNewsMarkRead(article.id)}\r\n}.\r\n", - "default": true + "default": true, + "name": "Galnet latest news", + "description": "Read the latest unread news in a given category" }, "Galnet mark read": { - "name": "Galnet mark read", - "description": "Mark news articles as read", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{_ Fetch category from state }\r\n{set articlecategory to state.article_category}\r\n\r\n{if articlecategory:\r\n {set articles to GalnetNewsArticles(articlecategory)}\r\n|else:\r\n {set articles to GalnetNewsArticles('Article')}\r\n}\r\n\r\n{if len(articles) = 0:\r\n {if articlecategory: '该分类中' }已无未读新闻\r\n|else:\r\n {set item to 0}\r\n {while item < len(articles):\r\n {GalnetNewsMarkRead(articles[item].id)}\r\n {set item to (item + 1)}\r\n }\r\n {len(articles)} 条 新闻{OneOf('文章', '条目')} 被标记为已读\r\n}.\r\n", - "default": true + "default": true, + "name": "Galnet mark read", + "description": "Mark news articles as read" }, "Galnet news": { - "name": "Galnet news", - "description": "Read a particular news article", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{_ Fetch article from state }\r\n{set articleid to state.articleid}\r\n{if articleid:\r\n {set article to GalnetNews(articleid)}\r\n\r\n {_ Context }\r\n {SetState('eddi_context_last_subject', 'news')}\r\n {SetState('eddi_context_galnet_news_id', articleid)}\r\n}\r\n\r\n{if !article:\r\n {_ Fetch from context }\r\n {set article to GalnetNews(state.eddi_context_galnet_news_id)}\r\n}\r\n\r\n{if article:\r\n {article.title}: {article.content}\r\n {GalnetNewsMarkRead(article.id)}\r\n|else:\r\n 我没有关于那篇文章的任何信息.\r\n}.", - "default": true + "default": true, + "name": "Galnet news", + "description": "Read a particular news article" }, "Galnet news published": { - "name": "Galnet news published", - "description": "Triggered when news is published on Galnet", "enabled": true, "priority": 3, "responder": true, "script": "{_ set to 1 if you'd like interesting articles to be read to you _}\r\n{set readArticles to 0} \r\n\r\n{_ define news categories that may be of interest to you _}\r\n{_ Valid categories: Article, Powerplay, Community Goal, Starport Status Update, Week in Review _}\r\n{set categories to [\r\n \"Article\",\r\n \"Community Goal\",\r\n]}\r\n\r\n{_ Process articles _}\r\n{set interesting_news_title to []}\r\n{set interesting_news_content to []}\r\n\r\n{set item to 0}\r\n{while item < len(event.items):\r\n {for category in categories:\r\n {if match(event.items[item].category, category):\r\n {set interesting_news_title to cat(interesting_news_title, [event.items[item].title])}\r\n {set interesting_news_content to cat(interesting_news_content, [event.items[item].content])}\r\n }\r\n {GalnetNewsMarkRead(event.items[item].content.id)}\r\n {set item to (item + 1)}\r\n }\r\n}\r\n{if len(event.items) = len(interesting_news_title): \r\n {set allinteresting to 1} \r\n}\r\n\r\n{_ Begin speaking _}\r\n\r\n{if len(interesting_news_title) > 0:\r\n {if len(interesting_news_title) = 1:\r\n {set remarkable to OneOf('一篇值得注意的', '一篇有意思的', '一篇耐人寻味的', '一篇不同寻常的')}\r\n 银河网刊载了\r\n {OneOf('一篇', '{remarkable}' )}\r\n 文章, 题目为 {interesting_news_title[0]}.\r\n |elif len(event.items) > 1:\r\n {len(event.items)} \r\n {if allinteresting: \r\n \t 银河网刊载了一些\r\n {OneOf(\"值得注意的\", \"有趣的\", \"耐人寻味的\", \"不同寻常的\")}\r\n }\r\n 新文章\r\n {if !allinteresting:\r\n , 包括 {len(interesting_news_title)} \r\n \r\n }.\r\n }\r\n}\r\n\r\n{if len(interesting_news_title) > 0:\r\n {if len(interesting_news_title) = 1 && readArticles:\r\n 正在阅读: {interesting_news_content[0]}.\r\n |elif len(interesting_news_title) > 1:\r\n {set item to 0}\r\n {while item < len(interesting_news_title):\r\n {if item = 0:\r\n 第一篇题为: \r\n {interesting_news_title[item]}\r\n {if readArticles:, 正在阅读: {interesting_news_content[item]}}.\r\n |elif item = 1:\r\n 第二篇题为: {interesting_news_title[item]}\r\n {if readArticles:, 正在阅读: {interesting_news_content[item]}}.\r\n |elif item = len(interesting_news_title) - 1:\r\n 最后一篇题为:\r\n {interesting_news_title[item]}\r\n {if readArticles:, 正在阅读: {interesting_news_content[item]}}.\r\n |else:\r\n 下一篇题为: {interesting_news_title[item]}\r\n {if readArticles:, 正在阅读: {interesting_news_content[item]}}.\r\n }\r\n {set item to item + 1}\r\n }\r\n }\r\n {if !readArticles:\r\n {Pause(500)}\r\n {if len(interesting_news_title) > 1: \r\n {OneOf(\"录音\", \"新闻报告\")} \r\n |else: \r\n {OneOf(\"录音\", \"新闻报告\")} \r\n } \r\n 已经可以回放.\r\n }\r\n}", - "default": true + "default": true, + "name": "Galnet news published", + "description": "Triggered when news is published on Galnet" }, "Galnet oldest news": { - "name": "Galnet oldest news", - "description": "Read the oldest unread news in a given category", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{_ Fetch category from state }\r\n{set articlecategory to state.article_category}\r\n\r\n{if articlecategory:\r\n {set articles to GalnetNewsArticles(articlecategory)}\r\n|else:\r\n {set articles to GalnetNewsArticles('Article')}\r\n}\r\n\r\n{if len(articles) = 0:\r\n 该类别中没有未读的新闻\r\n|else:\r\n {set article to articles[len(articles)-1]}\r\n {SetState('eddi_context_galnet_news_id', article.id)}\r\n {article.title}: {article.content}\r\n {GalnetNewsMarkRead(article.id)}\r\n}.\r\n", - "default": true + "default": true, + "name": "Galnet oldest news", + "description": "Read the oldest unread news in a given category" }, "Galnet unread report": { - "name": "Galnet unread report", - "description": "Report on unread news", "enabled": true, "priority": null, "responder": false, "script": "{set articles to GalnetNewsArticles(\"Article\")}\r\n\r\n{if len(articles) = 0:\r\n 您没有未读新闻\r\n|elif len(articles) = 1:\r\n 您有一条未读新闻\r\n|else:\r\n 您有 {len(articles)} 条未读新闻\r\n}.", - "default": true + "default": true, + "name": "Galnet unread report", + "description": "Report on unread news" }, "Glide": { - "name": "Glide", - "description": "Triggered when your ship enters or exits glide", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'fsd')}\r\n{SetState('eddi_context_last_action', 'glide')}\r\n{SetState('eddi_context_system_name', event.system)}\r\n{SetState('eddi_context_body_name', event.body)}\r\n{SetState('eddi_context_body_system', event.system)}\r\n\r\n{if event.gliding:\r\n \r\n {OneOf(\"已进入\", \"现在是\")}滑翔 {Occasionally(2, \"模式\")}. \r\n\r\n {Pause(1000)}\r\n {set body to BodyDetails(event.body, event.system)}\r\n {if !body.name || body.name = \"\" || !body.gravity:\r\n 行星登陆相关数据不可用.\r\n |else:\r\n {if body.landable:\r\n {set gravity to round(body.gravity,2)}\r\n {if gravity > 4:\r\n 危险! {body.bodytype} {P(body.shortname, \"body\")} 拥有极高重力, 寄值为 {gravity} .\r\n |elif gravity > 2:\r\n 小心! {body.bodytype} {P(body.shortname, \"body\")} 重力较高, 寄值为 {gravity} .\r\n |elif gravity > 0.5:\r\n 警告! {body.bodytype} {P(body.shortname, \"body\")} 重力正常, 寄值为 {gravity} .\r\n |else:\r\n {body.bodytype} {P(body.shortname, \"body\")} 重力较低, 寄值为 {gravity} .\r\n }\r\n }\r\n }\r\n|else:\r\n 滑翔结束.\r\n}", - "default": true + "default": true, + "name": "Glide", + "description": "Triggered when your ship enters or exits glide" }, "Hardpoints": { - "name": "Hardpoints", - "description": "Triggered when you deploy or retract your hardpoints", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Hardpoints", + "description": "Triggered when you deploy or retract your hardpoints" }, "Heat damage": { - "name": "Heat damage", - "description": "Triggered when your ship begins to take hull damage due to excessive heat.", "enabled": true, "priority": 3, "responder": true, "script": "{Occasionally(2, \"危险:\")}\r\n受到热损害.", - "default": true + "default": true, + "name": "Heat damage", + "description": "Triggered when your ship begins to take hull damage due to excessive heat." }, "Heat warning": { - "name": "Heat warning", - "description": "Triggered when your ship's heat exceeds 100% and you begin to take module damage.", "enabled": true, "priority": 3, "responder": true, "script": "{Occasionally(2, \"警告:\")}\r\n飞船热状态超出个别子系统极限.", - "default": true + "default": true, + "name": "Heat warning", + "description": "Triggered when your ship's heat exceeds 100% and you begin to take module damage." }, "Honorific": { - "name": "Honorific", - "description": "Function to provide a suitable honorific for your commander", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{if system.allegiance = \"Empire\":\r\n {F(\"Empire honorific\")}\r\n|elif system.allegiance = \"Federation\":\r\n {if cmdr.federationrating.rank = 0:\r\n 指挥官\r\n |else:\r\n {cmdr.federationrating.name}\r\n }\r\n|else:\r\n 指挥官\r\n}\r\n", - "default": true + "default": true, + "name": "Honorific", + "description": "Function to provide a suitable honorific for your commander" }, "Hull damaged": { - "name": "Hull damaged", - "description": "Triggered when your hull is damaged to a certain extent", "enabled": true, "priority": 3, "responder": true, "script": "{if event.vehicle = vehicle:\r\n {if event.health < 40:\r\n 危险:\r\n |elif event.health < 60:\r\n 警告:\r\n |elif event.health < 80:\r\n 小心:\r\n }\r\n {OneOf(\"船体\", \"船体完整度\", \"完整度\", \"结构完整度\")} {Occasionally(3, \"现在\")} 为百分之 {event.health}.\r\n}\r\n", - "default": true + "default": true, + "name": "Hull damaged", + "description": "Triggered when your hull is damaged to a certain extent" }, "Hyperdicted": { "enabled": true, @@ -1182,985 +1176,983 @@ "description": "Triggered when your ship is hyperdicted by a Thargoid" }, "Insurance check": { - "name": "Insurance check", - "description": "Check for enough credits to cover your insurance", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{set covereds to floor(cmdr.credits / ship.rebuy)}\r\n\r\n{if covereds = 0:\r\n 危险: 您没有足够的信用点来支付保险费.\r\n|elif covereds = 1:\r\n 注意: 您的余额刚刚够支付一次保险费.\r\n|elif covereds < 4:\r\n 提示: 您的余额只够支付 {covereds} 次保险费.\r\n|else:\r\n {Occasionally(5, \"您有足够支付 {covereds} 次保险费的余额.\")}\r\n}\r\n", - "default": true + "default": true, + "name": "Insurance check", + "description": "Check for enough credits to cover your insurance" }, "Jet cone boost": { - "name": "Jet cone boost", - "description": "Triggered when enough material has been collected from a solar jet cone (at a white dwarf or neutron star) for a jump boost", "enabled": true, "priority": 3, "responder": true, "script": "{Pause(1000)}\r\n空间折叠引擎效能增幅为百分之 {event.boost * 100} .", - "default": true + "default": true, + "name": "Jet cone boost", + "description": "Triggered when enough material has been collected from a solar jet cone (at a white dwarf or neutron star) for a jump boost" }, "Jet cone damage": { - "name": "Jet cone damage", - "description": "Triggered in normal space when passing through the jet cone from a white dwarf or neutron star causes damage to a ship module", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Jet cone damage", + "description": "Triggered in normal space when passing through the jet cone from a white dwarf or neutron star causes damage to a ship module" }, "Jumped": { - "name": "Jumped", - "description": "Triggered when you complete a jump to another system", "enabled": true, "priority": 3, "responder": true, - "script": "{_ Jumped }\r\n{_ Triggered when you complete a jump to another system }\r\n\r\n\r\n{_ Context }\r\n{SetState('eddi_context_last_subject', 'jump')}\r\n{SetState('eddi_context_last_action', 'complete')}\r\n{SetState('eddi_context_system_name', system.name)}\r\n{SetState('eddi_context_system_system', system.name)}\r\n{SetState('eddi_context_fuel_remaining', event.fuelremaining)}\r\n{SetState('eddi_context_fuel_used', event.fuelused)}\r\n{SetState('eddi_context_wanted_list', \"\")}\r\n\r\n{set jump_count to state.eddi_context_remaining_jumps}\r\n{if jump_count > 20:\r\n {set occasional to ceil(jump_count / 10)}\r\n|elif jump_count > 5:\r\n {set occasional to 2}\r\n|else:\r\n {set occasional to 1}\r\n}\r\n\r\n{if destinationsystem && destinationsystem.name != \"\":\r\n {if destinationdistance = 0:\r\n {ShipName()} 已到达 {P(destinationsystem.name, \"starsystem\")} 星系.\r\n {Pause(1000)}\r\n {set next_system to RouteDetails(\"update\")}\r\n |else:\r\n {if rand(occasional) = 0:\r\n 距离 {P(destinationsystem.name, \"starsystem\")} 还有 {round(destinationdistance, 1)} 光年\r\n {if jump_count > 0:\r\n , 还{OneOf(\"剩余\", \"有\")} {jump_count} 跳\r\n \r\n }.\r\n }\r\n }\r\n|else:\r\n {if jump_count > 0 && rand(occasional) = 0:\r\n {Occasionally(2, \"您\")} {OneOf(\"还剩余\", \"还有\")}{jump_count}跳 \r\n .\r\n }\r\n}\r\n\r\n{F('Fuel check')}\r\n\r\n{_ Report faction states only if it's been more than an hour (3600 seconds) since our last visit. _}\r\n{if SecondsSince(state.eddi_context_system_lastvisit) / 3600 > 1:\r\n {set state_report to F(\"System state report\")}\r\n}\r\n\r\n{set system_engineer to F(\"Engineer report\")}\r\n{set system_missions to F(\"Mission check system\")}\r\n{set system_crimes to F(\"Crime check system\")}\r\n\r\n{if state_report || system_engineer || system_missions || (system_crimes && find(system_crimes, \"Warning\") < 0):\r\n {Pause(500)}\r\n Information:\r\n}\r\n\r\n{if state_report:\r\n {Pause(500)}\r\n {state_report}\r\n}\r\n{if system_engineer:\r\n {Pause(500)}\r\n {system_engineer}\r\n}\r\n{if system_missions:\r\n {Pause(500)}\r\n {system_missions}\r\n}\r\n{if system_crimes:\r\n {Pause(500)}\r\n {system_crimes}\r\n}\r\n", - "default": true + "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'jump')}\r\n{SetState('eddi_context_last_action', 'complete')}\r\n{SetState('eddi_context_system_name', system.name)}\r\n{SetState('eddi_context_system_system', system.name)}\r\n{SetState('eddi_context_fuel_remaining', event.fuelremaining)}\r\n{SetState('eddi_context_fuel_used', event.fuelused)}\r\n{SetState('eddi_context_wanted_list', \"\")}\r\n\r\n{set next_system to RouteDetails(\"update\")}\r\n{F('Fuel check')}\r\n \r\n{set reportsystem to SystemDetails(event.system)}\r\n{if !reportsystem.population && lastsystem.population:\r\n {OneOf(\"这个星系没有人居住\",\"这个星系没有被人类殖民\", \"这个星系没有人类聚居地\")}.\r\n|elif reportsystem.population:\r\n {if SecondsSince(reportsystem.lastVisitSeconds) > 3600:\r\n {F(\"System report\")}\r\n }\r\n}\r\n\r\n{if reportsystem.name = homesystem.name:\r\n 欢迎回家, {F(\"Honorific\")}\r\n|else:\r\n {set ReportDistanceFromHome() to:\r\n {if reportsystem.distancefromhome:\r\n {return cat(\r\n OneOf(\"您\", \"现在的位置\", \"您现在\"), \" \",\r\n OneOf(\"距离故乡\", P(homesystem.name, 'starsystem')),\r\n Humanise(reportsystem.distancefromhome), \" 光年 \",\r\n \".\"\r\n )}\r\n |elif carrier.currentStarSystem:\r\n {set toSystem to SystemDetails(carrier.currentStarSystem)}\r\n {set dist to round(Distance(system.x, system.y, system.z, toSystem.x, toSystem.y, toSystem.z))}\r\n {return cat(\r\n OneOf(\"您\", \"现在的位置\", \"您现在\"), \" \",\r\n OneOf(\"距离家园\", \"距离\" carrier.name),\r\n Humanise(dist), \" 光年 \",\r\n \".\"\r\n )}\r\n }\r\n } \r\n {Occasionally(7, ReportDistanceFromHome())}\r\n}\r\n\r\n{if reportsystem.comment:\r\n 您在这个星系做过 {OneOf(\"标记\", \"书签\", \"评论\")}. 上面 {OneOf(\"说\", \"写着\", \"读着是\")} {reportsystem.comment}.\r\n}\r\n\r\n{_ Report faction states only if it's been more than an hour (3600 seconds) since our last visit. _}\r\n{if SecondsSince(state.eddi_context_system_lastvisit) / 3600 > 1:\r\n {set state_report to F(\"System state report\")}\r\n}\r\n\r\n{set system_engineer to F(\"Engineer report\")}\r\n{set system_missions to F(\"Mission check system\")}\r\n{set system_crimes to F(\"Crime check system\")}\r\n\r\n{if state_report || system_engineer || system_missions || (system_crimes && find(system_crimes, \"Warning\") < 0):\r\n {Pause(500)}\r\n 注意:\r\n}\r\n\r\n{if state_report:\r\n {Pause(500)}\r\n {state_report}\r\n}\r\n{if system_engineer:\r\n {Pause(500)}\r\n {system_engineer}\r\n}\r\n{if system_missions:\r\n {Pause(500)}\r\n {system_missions}\r\n}\r\n{if system_crimes:\r\n {Pause(500)}\r\n {system_crimes}\r\n}", + "default": true, + "name": "Jumped", + "description": "Triggered when you complete a jump to another system" }, "Killed": { - "name": "Killed", - "description": "Triggered when you kill another player", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Killed", + "description": "Triggered when you kill another player" }, "Landing gear": { - "name": "Landing gear", - "description": "Triggered when you deploy or retract your landing gear", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Landing gear", + "description": "Triggered when you deploy or retract your landing gear" }, "Landing pad report": { - "name": "Landing pad report", - "description": "Report on the location of a landing pad", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{set landingpad to state.eddi_context_landing_pad_pad}\r\n按规则保持入口绿灯在右侧时,\r\n{landingpad}号停机坪位于\r\n{if landingpad = 1:\r\n 六点钟方向较近\r\n|elif landingpad = 2:\r\n 六点钟方向较近\r\n|elif landingpad = 3:\r\n 六点钟方向较远\r\n|elif landingpad = 4:\r\n 六点钟方向较远\r\n|elif landingpad = 5:\r\n 七点钟方向较近\r\n|elif landingpad = 6:\r\n 七点钟方向较近\r\n|elif landingpad = 7:\r\n 七点钟方向较远\r\n|elif landingpad = 8:\r\n 七点钟方向较远\r\n|elif landingpad = 9:\r\n 八点钟方向较近\r\n|elif landingpad = 10:\r\n 八点钟方向较远\r\n|elif landingpad = 11:\r\n 九点钟方向较近\r\n|elif landingpad = 12:\r\n 九点钟方向较近\r\n|elif landingpad = 13:\r\n 九点钟方向距离适中\r\n|elif landingpad = 14:\r\n 九点钟方向较远\r\n|elif landingpad = 15:\r\n 九点钟方向较远\r\n|elif landingpad = 16:\r\n 十点钟方向较近\r\n|elif landingpad = 17:\r\n 十点钟方向较近\r\n|elif landingpad = 18:\r\n 十点钟方向较远\r\n|elif landingpad = 19:\r\n 十点钟方向较远\r\n|elif landingpad = 20:\r\n 十一点钟方向较近\r\n|elif landingpad = 21:\r\n 十一点钟方向较近\r\n|elif landingpad = 22:\r\n 十一点钟方向较远\r\n|elif landingpad = 23:\r\n 十一点钟方向较远\r\n|elif landingpad = 24:\r\n 十二点钟方向较近\r\n|elif landingpad = 25:\r\n 十二点钟方向较远\r\n|elif landingpad = 26:\r\n 一点钟方向较近\r\n|elif landingpad = 27:\r\n 一点钟方向较近\r\n|elif landingpad = 28:\r\n 一点钟方向距离适中\r\n|elif landingpad = 29:\r\n 一点钟方向较远\r\n|elif landingpad = 30:\r\n 一点钟方向较远\r\n|elif landingpad = 31:\r\n 两点钟方向较近\r\n|elif landingpad = 32:\r\n 两点钟方向较近\r\n|elif landingpad = 33:\r\n 两点钟方向较远\r\n|elif landingpad = 34:\r\n 两点钟方向较远\r\n|elif landingpad = 35:\r\n 三点钟方向较近\r\n|elif landingpad = 36:\r\n 三点钟方向较近\r\n|elif landingpad = 37:\r\n 三点钟方向距离适中\r\n|elif landingpad = 38:\r\n 三点钟方向较远\r\n|elif landingpad = 39:\r\n 四点钟方向较近\r\n|elif landingpad = 40:\r\n 四点钟方向较远\r\n|elif landingpad = 41:\r\n 五点钟方向较近\r\n|elif landingpad = 42:\r\n 五点钟方向较近\r\n|elif landingpad = 43:\r\n 五点钟方向距离适中\r\n|elif landingpad = 44:\r\n 五点钟方向较远\r\n|elif landingpad = 45:\r\n 五点钟方向较远\r\n}的位置.\r\n\r\n\r\n", - "default": true + "default": true, + "name": "Landing pad report", + "description": "Report on the location of a landing pad" }, "Launchbay report": { - "name": "Launchbay report", - "description": "Describes the contents of each launchbay in the ship", "enabled": true, "priority": null, "responder": false, "script": "{if capi_active:\r\n {if len(ship.launchbays) > 0:\r\n {set hanger_count to 0}\r\n {for launchbay in ship.launchbays:\r\n {set hangar to: \r\n {launchbay.size}号大小的 \r\n {if launchbay.type = \"SRV\": \r\n {Spacialise(launchbay.type)}机库\r\n |else: \r\n {launchbay.type} 机库\r\n }\r\n }\r\n {set hangar_count to hangar_count + 1}\r\n {set vehicles to []}\r\n {set vehicles_count to []}\r\n {if len(launchbay.vehicles) > 0:\r\n {for vehicle in launchbay.vehicles:\r\n {set variant to cat(vehicle.name, \"_\", vehicle.description)}\r\n {set here to find(vehicles , variant)}\r\n {if here > -1:\r\n {set count to vehicles_count[here] + 1}\r\n {set vehicles_count to union(vehicles_count, [here:count])}\r\n |else:\r\n {set vehicles to cat(vehicles , [variant])}\r\n {set vehicles_count to cat(vehicles_count, [1])}\r\n }\r\n }\r\n }\r\n\r\n {if len(vehicles) > 0:\r\n {if hangar_count = 1: 您有 |else: 和} 一个 {hangar}, 内含有\r\n {set cur to 0}\r\n {while cur < len(vehicles):\r\n {set count to vehicles_count[cur]}\r\n {set name to split(vehicles[cur], \"_\")[0]}\r\n {set description to split(vehicles[cur], \"_\")[1]}\r\n {count} {if count = 1: {name} |else: {name}s}, 装备着 {description}\r\n {set cur to cur + 1}\r\n {if cur = len(vehicles)-1: 和 |elif cur < len(vehicles): ,}\r\n }\r\n |else:\r\n {if hangar_count = 1: 您有 |else: 和} 一个 空 {hangar}\r\n }\r\n {if hangar_count = len(ship.launchbays): . |else: ,}\r\n }\r\n }\r\n|else:\r\n 机库状态不可用,\r\n {Pause(500)}\r\n 请检查与飞行员联盟数据库的连接.\r\n}\r\n", - "default": true + "default": true, + "name": "Launchbay report", + "description": "Describes the contents of each launchbay in the ship" }, "Liftoff": { - "name": "Liftoff", - "description": "Triggered when your ship lifts off from a planet's surface", "enabled": true, "priority": 3, "responder": true, "script": "{if event.playercontrolled = true:\r\n 起飞.\r\n|else:\r\n {ShipName()} 已起飞.\r\n}", - "default": true + "default": true, + "name": "Liftoff", + "description": "Triggered when your ship lifts off from a planet's surface" }, "Lights": { - "name": "Lights", - "description": "Triggered when you activate or deactivate your lights", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Lights", + "description": "Triggered when you activate or deactivate your lights" }, "Limpet check": { - "name": "Limpet check", - "description": "Check for the presence/absence of limpets and limpet controllers", "enabled": true, "priority": null, "responder": false, - "script": "{set controllers to 0}\r\n{for compartment in ship.compartments:\r\n {if find(compartment.module.name, \"Controller\") != -1:\r\n {set controllers to controllers + 1}\r\n }\r\n}\r\n\r\n{set limpets to 0}\r\n{for cargo in inventory:\r\n {if cargo.edname = \"Drones\":\r\n {set limpets to cargo.total}\r\n }\r\n}\r\n\r\n{set tenpercent to ship.cargocapacity / 10 - 1}\r\n{if controllers > 0 && limpets = 0:\r\n 请注意: 您装备了无人机控制器,却没有任何无人机.\r\n|elif controllers = 0 && limpets > 0:\r\n 您船上装载了无人机却没有无人机控制器.\r\n|elif controllers > 0 && limpets < tenpercent:\r\n 您船上只剩下 {limpets} 个无人机了; 您可能需要补给.\r\n}\r\n", - "default": true + "script": "{set controllers to 0}\r\n{for compartment in ship.compartments:\r\n {if find(compartment.module.name, \"控制器\") != -1:\r\n {set controllers to controllers + 1}\r\n }\r\n}\r\n\r\n{set limpets to 0}\r\n{for cargo in inventory:\r\n {if cargo.edname = \"Drones\":\r\n {set limpets to cargo.total}\r\n }\r\n}\r\n\r\n{set tenpercent to ship.cargocapacity / 10 - 1}\r\n{if controllers > 0 && limpets = 0:\r\n 请注意: 您装备了无人机控制器,却没有任何无人机.\r\n|elif controllers = 0 && limpets > 0:\r\n 您船上装载了无人机却没有无人机控制器.\r\n|elif controllers > 0 && limpets < tenpercent:\r\n 您船上只剩下 {limpets} 个无人机了; 您可能需要补给.\r\n}\r\n", + "default": true, + "name": "Limpet check", + "description": "Check for the presence/absence of limpets and limpet controllers" }, "Limpet launched": { - "name": "Limpet launched", - "description": "Triggered when a limpet is launched", "enabled": true, "priority": 3, "responder": true, "script": "{OneOf('无人机','小小帽贝')} 已发射.", - "default": true + "name": "Limpet launched", + "description": "Triggered when a limpet is launched" }, "Limpet purchased": { - "name": "Limpet purchased", - "description": "Triggered when you buy limpets from a station", "enabled": true, "priority": 3, "responder": true, "script": "{event.amount} 个帽贝无人机\r\n{Occasionally(2, \"已经\")}\r\n被添加到 \r\n{OneOf(\"我们的\", \"{ShipName()}的\")}\r\n{OneOf(\"货架中\", \"存货中\", \"货舱中\")}", - "default": true + "default": true, + "name": "Limpet purchased", + "description": "Triggered when you buy limpets from a station" }, "Limpet sold": { - "name": "Limpet sold", - "description": "Triggered when you sell limpets to a station", "enabled": true, "priority": 3, "responder": true, "script": "{event.amount} 个帽贝无人机\r\n{Occasionally(2, \"已经\")} 被售出.", - "default": true + "default": true, + "name": "Limpet sold", + "description": "Triggered when you sell limpets to a station" }, "Location": { - "name": "Location", - "description": "Triggered when the commander's location is reported, usually when they reload their game.", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context _}\r\n{SetState('eddi_context_last_subject', 'location')}\r\n{SetState('eddi_context_system_name', event.system)}\r\n{SetState('eddi_context_body_name', event.body)}\r\n{SetState('eddi_context_body_type', event.bodytype)}\r\n{SetState('eddi_context_body_system', event.system)}\r\n\r\n\r\n您\r\n{if event.docked || event.station = event.body:\r\n {set station to StationDetails(event.station, event.system)}\r\n {set station_missions to F(\"Mission check station\")}\r\n {set station_crimes to F(\"Crime check station\")}\r\n\r\n {if event.docked:\r\n 正停\r\n |else:\r\n 的位置{OneOf(\"靠近\", \"接近\")}\r\n } \r\n {if event.station != event.body:\r\n 在{P(event.body, \"body\")} 上的\r\n {P(station.model, \"station\")}, {P(event.station, \"station\")},\r\n\r\n }\r\n|elif event.body:\r\n {set system_missions to F(\"Mission check system\")}\r\n {set system_crimes to F(\"Crime check system\")}\r\n {OneOf(\"靠近\", \"接近\")} {P(event.body, \"body\")},\r\n}\r\n 在{P(event.system, \"starsystem\")} 星系.\r\n\r\n{if station_missions || station_crimes ||system_missions || system_crimes:\r\n {Pause(500)}\r\n 注意:\r\n {if station_missions:\r\n {Pause(500)}\r\n {station_missions}\r\n }\r\n {if station_crimes:\r\n {Pause(500)}\r\n {station_crimes}\r\n }\r\n {if system_missions:\r\n {Pause(500)}\r\n {system_missions}\r\n }\r\n {if system_crimes:\r\n {Pause(500)}\r\n {system_crimes}\r\n }\r\n}", - "default": true + "default": true, + "name": "Location", + "description": "Triggered when the commander's location is reported, usually when they reload their game." }, "Low fuel": { - "name": "Low fuel", - "description": "Triggered when your fuel level falls below 25%.", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Low fuel", + "description": "Triggered when your fuel level falls below 25% and in 5% increments thereafter." }, "Market information updated": { - "name": "Market information updated", - "description": "Triggered when market information for the currently docked station has been updated", "enabled": true, "priority": 3, "responder": true, "script": "{_ Find out in advance what we have to say }\r\n\r\n{if len(event.updates) > 1:\r\n {set type to \"站点服务\"}\r\n {if ship.role = \"Multi-purpose\" || ship.role = \"Trading\":\r\n {set purchasecheck to F(\"Commodity purchase check\")}\r\n }\r\n {set salecheck to F(\"Commodity sale check\")}\r\n {set swapoutcheck to F(\"Swapout check\")}\r\n|elif event.updates[0] = \"market\":\r\n {set type to OneOf(\"市场\", \"本地市场\")}\r\n {if ship.role = \"Multi-purpose\" || ship.role = \"Trading\":\r\n {set purchasecheck to F(\"Commodity purchase check\")}\r\n }\r\n {set salecheck to F(\"Commodity sale check\")}\r\n|elif event.updates[0] = \"outfitting\":\r\n {set type to \"站点舾装\"}\r\n {set swapoutcheck to F(\"Swapout check\")}\r\n|elif event.updates[0] = \"shipyard\":\r\n {set type to \"站点船坞\"}\r\n}\r\n\r\n{Pause(500)}\r\n{if purchasecheck || salecheck || swapoutcheck:\r\n {type}\r\n {OneOf(\"数据\", \"信息\", \"价格\")}\r\n {OneOf(\"更新\", \"变动\")}\r\n {OneOf(\"已接收\", \"已获得\")}.\r\n\r\n {salecheck}\r\n {purchasecheck}\r\n {swapoutcheck}\r\n}\r\n", - "default": true + "default": true, + "name": "Market information updated", + "description": "Triggered when market information for the currently docked station has been updated" }, "Material collected": { - "name": "Material collected", - "description": "Triggered when you collect a material", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'material')}\r\n{SetState('eddi_context_last_action', 'collect')}\r\n{SetState('eddi_context_material_name', event.name)}\r\n", - "default": true + "default": true, + "name": "Material collected", + "description": "Triggered when you collect a material" }, "Material discard report": { - "name": "Material discard report", - "description": "Report on how many of a material can be discarded", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{_ Function to obtain a material from inventory}\r\n{set _inventory(required) to:\r\n {for material in materials:\r\n {if material.material = required:\r\n {return material}\r\n }\r\n }\r\n}\r\n\r\n{_ Fetch material from state }\r\n{set material to state.material}\r\n{if material:\r\n {_ Fetch full material details }\r\n {set material to MaterialDetails(material)}\r\n\r\n {_ Context }\r\n {SetState('eddi_context_last_subject', 'material')}\r\n {SetState('eddi_context_material_name', material.name)}\r\n}\r\n\r\n{if !material:\r\n {_ Fetch from context }\r\n {set material to MaterialDetails(state.eddi_context_material_name)}\r\n}\r\n\r\n{set inventory to _inventory(material.name)}\r\n\r\n\r\n{if inventory:\r\n {if inventory.maximum && inventory.maximum < inventory.amount:\r\n {set over to inventory.amount - inventory.maximum}\r\n {if over > 1:\r\n 您需要丢弃 {over} 个 {inventory.material} 来刚好填满最大数量.\r\n |elif over = 1:\r\n 您需要丢弃一个 {inventory.material} 来刚好填满最大数量.\r\n }\r\n |elif inventory.desired && inventory.desired < inventory.amount:\r\n {set over to inventory.amount - inventory.desired}\r\n {if over > 1:\r\n 您需要丢弃 {over} 个 {inventory.material} 来达到期望的数量.\r\n |elif over = 1:\r\n 您需要丢弃一个 {inventory.material} 来达到期望的数量.\r\n }\r\n |elif inventory.desired:\r\n 您的库存低于对 {inventory.material}的期望数量.\r\n |elif inventory.maximum:\r\n 您的库存低于 {inventory.material}的最大数量.\r\n |else:\r\n 您尚未设置 {inventory.material}材料的任何数量限制.\r\n }\r\n}\r\n", - "default": true + "default": true, + "name": "Material discard report", + "description": "Report on how many of a material can be discarded" }, "Material discarded": { - "name": "Material discarded", - "description": "Triggered when you discard a material", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'material')}\r\n{SetState('eddi_context_last_action', 'discard')}\r\n{SetState('eddi_context_material_name', event.name)}\r\n", - "default": true + "default": true, + "name": "Material discarded", + "description": "Triggered when you discard a material" }, "Material discovered": { - "name": "Material discovered", - "description": "Triggered when you discover a material", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'material')}\r\n{SetState('eddi_context_last_action', 'discover')}\r\n{SetState('eddi_context_material_name', event.name)}\r\n", - "default": true + "default": true, + "name": "Material discovered", + "description": "Triggered when you discover a material" }, "Material donated": { - "name": "Material donated", - "description": "Triggered when you donate a material", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'material')}\r\n{SetState('eddi_context_last_action', 'donate')}\r\n{SetState('eddi_context_material_name', event.name)}\r\n", - "default": true + "default": true, + "name": "Material donated", + "description": "Triggered when you donate a material" }, "Material inventory": { - "name": "Material inventory", - "description": "Triggered when you obtain an inventory of your current materials", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Material inventory", + "description": "Triggered when you obtain an inventory of your current materials" }, "Material inventory report": { - "name": "Material inventory report", - "description": "Report on how many of a material are on-board", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{_ Function to obtain a material from inventory}\r\n{set _inventory(required) to:\r\n {for material in materials:\r\n {if material.material = required:\r\n {return material}\r\n }\r\n }\r\n}\r\n\r\n{_ Fetch material from state }\r\n{set material to state.material}\r\n{if material:\r\n {_ Fetch full material details }\r\n {set material to MaterialDetails(material)}\r\n \r\n {_ Context }\r\n {SetState('eddi_context_last_subject', 'material')}\r\n {SetState('eddi_context_last_subject', 'inventory')}\r\n {SetState('eddi_context_material_name', material.name)}\r\n}\r\n\r\n{if !material:\r\n {_ Fetch from context }\r\n {set material to MaterialDetails(state.eddi_context_material_name)}\r\n}\r\n\r\n{set inventory to _inventory(material.name)}\r\n\r\n{if inventory && inventory.amount > 0:\r\n {if inventory.amount = 1:\r\n 您船上有 {inventory.amount} 个 {inventory.material}.\r\n |else:\r\n 您船上有 {inventory.amount} 个 {inventory.material}.\r\n }\r\n|else:\r\n 您船上没有任何 {inventory.material}.\r\n}\r\n", - "default": true + "default": true, + "name": "Material inventory report", + "description": "Report on how many of a material are on-board" }, "Material location report": { - "name": "Material location report", - "description": "Report on the where to obtain a particular material", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{_ Fetch material from state }\r\n{set material to state.material}\r\n{if material:\r\n {_ Fetch full material details }\r\n {set material to MaterialDetails(material)}\r\n\r\n {_ Context }\r\n {SetState('eddi_context_last_subject', 'material')}\r\n {SetState('eddi_context_material_name', material.name)}\r\n}\r\n\r\n{if !material:\r\n {_ Fetch from context }\r\n {set material to MaterialDetails(state.eddi_context_material_name)}\r\n}\r\n\r\n{if material.name:\r\n {if material.location:\r\n {material.name} 可在 {material.location}中获得\r\n |else:\r\n 没有任何关于{material.name}位置的可用信息\r\n }\r\n|else:\r\n 我没有关于这种材料的任何信息\r\n}.\r\n", - "default": true + "default": true, + "name": "Material location report", + "description": "Report on the where to obtain a particular material" }, "Material required report": { - "name": "Material required report", - "description": "Report on how many of a material are required to reach 'desired' level", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{_ Function to obtain a material from inventory}\r\n{set _inventory(required) to:\r\n {for material in materials:\r\n {if material.material = required:\r\n {return material}\r\n }\r\n }\r\n}\r\n\r\n{_ Fetch material from state }\r\n{set material to state.material}\r\n{if material:\r\n {_ Fetch full material details }\r\n {set material to MaterialDetails(material)}\r\n\r\n {_ Context }\r\n {SetState('eddi_context_last_subject', 'material')}\r\n {SetState('eddi_context_material_name', material.name)}\r\n}\r\n\r\n{if !material:\r\n {_ Fetch from context }\r\n {set material to MaterialDetails(state.eddi_context_material_name)}\r\n}\r\n\r\n{set inventory to _inventory(material.name)}\r\n\r\n\r\n{if inventory:\r\n {if inventory.minimum && inventory.minimum > inventory.amount:\r\n {set under to inventory.minimum - inventory.amount}\r\n {if under > 1:\r\n 您需要 {under} 个 {inventory.material} 来达到您的最低数量.\r\n |elif under = 1:\r\n 您需要一个 {inventory.material} 来达到您的最低数量.\r\n }\r\n |elif inventory.desired && inventory.desired > inventory.amount:\r\n {set under to inventory.desired - inventory.amount}\r\n {if under > 1:\r\n 您需要 {under} 个 {inventory.material} 来达到您的期望数量.\r\n |elif under = 1:\r\n 您需要一个 {inventory.material} 来达到您的期望数量.\r\n }\r\n |elif inventory.desired:\r\n 您的 {inventory.material}已经超过期望数量.\r\n |elif inventory.minimum :\r\n 您的 {inventory.material}已经超过最低数量.\r\n |else:\r\n 您还没有为 {inventory.material}设置任何数量限制.\r\n }\r\n}\r\n\r\n", - "default": true + "default": true, + "name": "Material required report", + "description": "Report on how many of a material are required to reach 'desired' level" }, "Material threshold": { - "name": "Material threshold", - "description": "Triggered when a material reaches a threshold", "enabled": true, "priority": 3, "responder": true, "script": "{_ Set up a function to report our inventory level }\r\n{set reportInventory() to:\r\n {OneOf(\"现有存货 {event.amount}个\",\r\n \"现在装载着 {event.amount}个\",\r\n \"船上有{event.amount}个 \")}.\r\n}\r\n\r\n{_ Respond to various threshold events }\r\n{if event.level = 'Minimum':\r\n {_ Threshold triggered around the minimum level }\r\n {if event.change = 'Increase':\r\n {event.material.name}的{OneOf(\"库存\", \"存货\", \"供应\")} 已达到您的最低数量.\r\n {reportInventory()}\r\n |else:\r\n {event.material.name}的{OneOf(\"库存\", \"存货\", \"供应\")} 在您的最低数量之下. \r\n {reportInventory()}\r\n }\r\n|elif event.level = 'Desired':\r\n {_ Threshold triggered around the desired level }\r\n {if event.change = 'Increase':\r\n 您的{event.material.name}已达到期望数量.\r\n {reportInventory()}\r\n |else:\r\n 您的 {event.material.name}在期望数量之下.\r\n {reportInventory()}\r\n }\r\n|else:\r\n {_ Threshold triggered around the maximum level }\r\n {if event.change = 'Increase':\r\n {event.material.name}的{OneOf(\"库存\", \"存货\", \"供应\")} 已达到最大数量.\r\n {reportInventory()}\r\n }\r\n}", - "default": true + "default": true, + "name": "Material threshold", + "description": "Triggered when a material reaches a threshold" }, "Material traded": { - "name": "Material traded", - "description": "Triggered when materials are traded at a material trader", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Material traded", + "description": "Triggered when materials are traded at a material trader" }, "Material use report": { - "name": "Material use report", - "description": "Report on the use of a material", "enabled": true, "priority": null, "responder": false, - "script": "{_ Fetch material from state }\r\n{set material to state.material}\r\n{if material:\r\n {_ Fetch full material details }\r\n {set material to MaterialDetails(material)}\r\n\r\n {_ Context }\r\n {SetState('eddi_context_last_subject', 'material')}\r\n {SetState('eddi_context_material_name', material.name)}\r\n}\r\n\r\n{if !material:\r\n {if len(state.eddi_context_material_name) > 0:\r\n {_ Fetch from context }\r\n {set material to MaterialDetails(state.eddi_context_material_name)}\r\n }\r\n}\r\n\r\n{if material && material.name:\r\n {set uses to len(material.blueprints)}\r\n {if slice(material.name, len(material.name)-1) = 's':\r\n {set plural to 'are'}\r\n |else:\r\n {set plural to 'is'}\r\n }\r\n {if uses = 0:\r\n {material.name} {plural} not required for any blueprints\r\n |elif uses = 1:\r\n {set name to cat(material.blueprints[0].name, material.blueprints[0].modulename, ' grade ', material.blueprints[0].grade)}\r\n {material.name} {plural} used for the {name} blueprint\r\n |elif uses = 2:\r\n {set name0 to cat(material.blueprints[0].name, material.blueprints[0].modulename, ' grade ', material.blueprints[0].grade)}\r\n {set name1 to cat(material.blueprints[1].name, material.blueprints[1].modulename, ' grade ', material.blueprints[1].grade)}\r\n {material.name} {plural} used for the {name0} and {name1} blueprints\r\n |else:\r\n {material.name} {plural} used for {len(material.blueprints)} blueprints. These are\r\n {set cur to 0}\r\n {while cur < len(material.blueprints):\r\n {set name to cat(material.blueprints[cur].name, material.blueprints[cur].modulename, ' grade ', material.blueprints[cur].grade)}\r\n {if cur = 0:\r\n {name}\r\n |elif cur < len(material.blueprints) - 1:\r\n , {name}\r\n |else:\r\n , and {name}\r\n }\r\n {set cur to cur + 1}\r\n }\r\n }\r\n|else:\r\n I don't have any information about that material\r\n}.", - "default": true + "script": "{_ Fetch material from state }\r\n{set material to state.material}\r\n{if material:\r\n {_ Fetch full material details }\r\n {set material to MaterialDetails(material)}\r\n\r\n {_ Context }\r\n {SetState('eddi_context_last_subject', 'material')}\r\n {SetState('eddi_context_material_name', material.name)}\r\n}\r\n\r\n{if !material:\r\n {if len(state.eddi_context_material_name) > 0:\r\n {_ Fetch from context }\r\n {set material to MaterialDetails(state.eddi_context_material_name)}\r\n }\r\n}\r\n\r\n{if material && material.name:\r\n {set uses to len(material.blueprints)}\r\n {if slice(material.name, len(material.name)-1) = 's':\r\n {set plural to 'are'}\r\n |else:\r\n {set plural to 'is'}\r\n }\r\n {if uses = 0:\r\n 没有任何蓝图需要{material.name}\r\n |elif uses = 1:\r\n {set name to cat(material.blueprints[0].name, material.blueprints[0].modulename, material.blueprints[0].grade), ' 级 '}\r\n {material.name}可以为{name} 蓝图所用\r\n |elif uses = 2:\r\n {set name0 to cat(material.blueprints[0].name, material.blueprints[0].modulename, material.blueprints[0].grade), ' 级 '}\r\n {set name1 to cat(material.blueprints[1].name, material.blueprints[1].modulename, material.blueprints[1].grade), ' 级 '}\r\n {material.name}可以为{name0} 和 {name1}蓝图所用\r\n |else:\r\n {material.name}可以为 {len(material.blueprints)} 个蓝图所用.他们是\r\n {set cur to 0}\r\n {while cur < len(material.blueprints):\r\n {set name to cat(material.blueprints[cur].name, material.blueprints[cur].modulename, material.blueprints[cur].grade, ' 级 ')}\r\n {if cur = 0:\r\n {name}\r\n |elif cur < len(material.blueprints) - 1:\r\n , {name}\r\n |else:\r\n , 和 {name}\r\n }\r\n {set cur to cur + 1}\r\n }\r\n }\r\n|else:\r\n 关于这种材料我没有任何信息\r\n}.", + "default": true, + "name": "Material use report", + "description": "Report on the use of a material" }, "Materials discard report": { - "name": "Materials discard report", - "description": "Report on which materials can be discarded", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "\r\n{_ Find those that are above maximum, desired and minimum}\r\n{set shoulddiscardmaterials to []}\r\n{set coulddiscardmaterials to []}\r\n{set lastdiscardmaterials to []}\r\n\r\n{for material in materials:\r\n {if material.maximum && material.amount > material.maximum:\r\n {set shoulddiscardmaterials to cat(shoulddiscardmaterials, [material])}\r\n |elif material.desired && material.amount > material.desired:\r\n {set coulddiscardmaterials to cat(coulddiscardmaterials, [material])}\r\n |elif material.minimum && material.amount > material.minimum:\r\n {set lastdiscardmaterials to cat(lastdiscardmaterials, [material])}\r\n }\r\n}\r\n\r\n{if len(shoulddiscardmaterials) > 0:\r\n 您的材料已经达到最大数量. 您可以丢弃\r\n {if len(shoulddiscardmaterials) = 1:\r\n {shoulddiscardmaterials[0].amount - shoulddiscardmaterials[0].maximum}个 {shoulddiscardmaterials[0].material}\r\n |elif len(shoulddiscardmaterials) = 2:\r\n {shoulddiscardmaterials[0].amount - shoulddiscardmaterials[0].maximum}个 {shoulddiscardmaterials[0].material} 和 {shoulddiscardmaterials[1].amount - shoulddiscardmaterials[1].maximum} 个{shoulddiscardmaterials[1].material}\r\n |else:\r\n {set cur to 0}\r\n {while cur < len(shoulddiscardmaterials):\r\n {if cur = 0:\r\n {shoulddiscardmaterials[cur].amount - shoulddiscardmaterials[cur].maximum}个 {shoulddiscardmaterials[cur].material}\r\n |elif cur < len(shoulddiscardmaterials) - 1:\r\n , {shoulddiscardmaterials[cur].amount - shoulddiscardmaterials[cur].maximum}个 {shoulddiscardmaterials[cur].material}\r\n |else:\r\n , 和 {shoulddiscardmaterials[cur].amount - shoulddiscardmaterials[cur].maximum}个 {shoulddiscardmaterials[cur].material}\r\n }\r\n {set cur to cur + 1}\r\n }\r\n }.\r\n|elif len(coulddiscardmaterials) > 0:\r\n 您的材料已经超过您设置的期望数量. 您可以丢弃\r\n {if len(coulddiscardmaterials) = 1:\r\n {coulddiscardmaterials[0].amount - coulddiscardmaterials[0].desired}个 {coulddiscardmaterials[0].material}\r\n |elif len(coulddiscardmaterials) = 2:\r\n {coulddiscardmaterials[0].amount - coulddiscardmaterials[0].desired}个 {coulddiscardmaterials[0].material} 和 {coulddiscardmaterials[1].amount - coulddiscardmaterials[1].desired}个 {coulddiscardmaterials[1].material}\r\n |else:\r\n {set cur to 0}\r\n {while cur < len(coulddiscardmaterials):\r\n {if cur = 0:\r\n {coulddiscardmaterials[cur].amount - coulddiscardmaterials[cur].desired} 个{coulddiscardmaterials[cur].material}\r\n |elif cur < len(coulddiscardmaterials) - 1:\r\n , {coulddiscardmaterials[cur].amount - coulddiscardmaterials[cur].desired} 个{coulddiscardmaterials[cur].material}\r\n |else:\r\n , 和 {coulddiscardmaterials[cur].amount - coulddiscardmaterials[cur].desired} 个{coulddiscardmaterials[cur].material}\r\n }\r\n {set cur to cur + 1}\r\n }\r\n }.\r\n|elif len(lastdiscardmaterials) > 0:\r\n 您的材料已达到您设置的最低数量. 您可以丢弃\r\n {if len(lastdiscardmaterials) = 1:\r\n {lastdiscardmaterials[0].amount - lastdiscardmaterials[0].minimum}个 {lastdiscardmaterials[0].material}\r\n |elif len(lastdiscardmaterials) = 2:\r\n {lastdiscardmaterials[0].amount - lastdiscardmaterials[0].minimum}个 {lastdiscardmaterials[0].material} 和 {lastdiscardmaterials[1].amount - lastdiscardmaterials[1].minimum} 个{lastdiscardmaterials[1].material}\r\n |else:\r\n {set cur to 0}\r\n {while cur < len(lastdiscardmaterials):\r\n {if cur = 0:\r\n {lastdiscardmaterials[cur].amount - lastdiscardmaterials[cur].minimum}个 {lastdiscardmaterials[cur].material}\r\n |elif cur < len(lastdiscardmaterials) - 1:\r\n , {lastdiscardmaterials[cur].amount - lastdiscardmaterials[cur].minimum}个 {lastdiscardmaterials[cur].material}\r\n |else:\r\n , 和 {lastdiscardmaterials[cur].amount - lastdiscardmaterials[cur].minimum} 个{lastdiscardmaterials[cur].material}\r\n }\r\n {set cur to cur + 1}\r\n }\r\n }.\r\n|else:\r\n 任何材料都不能被丢弃,因为他们没有达到设置的最低数量.\r\n}\r\n", - "default": true + "default": true, + "name": "Materials discard report", + "description": "Report on which materials can be discarded" }, "Materials required report": { - "name": "Materials required report", - "description": "Report on how many of each material are required to reach 'desired' level", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{set required to []}\r\n\r\n{for material in materials:\r\n {if material.desired && material.amount < material.desired:\r\n {set required to cat(required, [material])}\r\n }\r\n}\r\n\r\n{if len(required) > 0:\r\n 您需要\r\n {if len(required) = 1:\r\n {required[0].desired - required[0].amount}个 {required[0].material}\r\n |elif len(required) = 2:\r\n {required[0].desired - required[0].amount} 个{required[0].material} 和 {required[1].desired - required[1].amount} 个{required[1].material}\r\n |else:\r\n {set cur to 0}\r\n {while cur < len(required):\r\n {if cur = 0:\r\n {required[cur].desired - required[cur].amount}个 {required[cur].material}\r\n |elif cur < len(required) - 1:\r\n , {required[cur].desired - required[cur].amount}个 {required[cur].material}\r\n |else:\r\n , and {required[cur].desired - required[cur].amount}个 {required[cur].material}\r\n }\r\n {set cur to cur + 1}\r\n }\r\n }.\r\n|else:\r\n 您拥有您期望的所有材料,且数量达到期望值.\r\n}", - "default": true + "default": true, + "name": "Materials required report", + "description": "Report on how many of each material are required to reach 'desired' level" }, "Message received": { - "name": "Message received", - "description": "Triggered when you receive a message", "enabled": true, "priority": 3, "responder": true, "script": "{_ Is this the same sender or message as the last message we've received? } \r\n{_ If so then the appropriate value(s) below shall be set to 'true' _}\r\n{set duplicate to [\r\n \"from\": event.from = state.eddi_context_message_name,\r\n \"message\": event.message = state.eddi_context_message_content,\r\n]}\r\n\r\n{_ Context _}\r\n{SetState('eddi_context_last_subject', 'message')}\r\n{SetState('eddi_context_last_action', 'receive')}\r\n{SetState('eddi_context_message_name', event.from)}\r\n{SetState('eddi_context_message_content', event.message)}\r\n\r\n{_ \"true\" means spoken and \"false\" means muted.}\r\n{_ \"npc\" controls whether NPC comms will be spoken.}\r\n{_ \"player\" controls direct messages to you will be spoken.}\r\n{_ \"starsystem\" controls whether player comms across game modes will be spoken.}\r\n{set spokenChannels to [\r\n \"friend\": true,\r\n \"local\": true,\r\n \"multicrew\": true,\r\n \"npc\": true,\r\n \"player\": true,\r\n \"squadron\": true,\r\n \"starsystem\": false,\r\n \"voicechat\": false,\r\n \"wing\": true,\r\n]}\r\n\r\n{_ \"true\" means spoken and \"false\" means muted.}\r\n{_ \"NPC\" is the default source for NPC comms.}\r\n{set spokenNpcSources to [\r\n \"Ambushed pilot\" : true,\r\n \"Anti-xeno pilot\" : true,\r\n \"Bounty hunter\" : true,\r\n \"Capital ship\" : true,\r\n \"Cargo hunter\" : true,\r\n \"Civilian pilot\" : true,\r\n \"Conflict zone\" : true,\r\n \"Cruise liner\" : false,\r\n \"Escort\" : true,\r\n \"Exploration convoy\" : true,\r\n \"Hitman\" : true,\r\n \"Messenger\" : true,\r\n \"Military\" : false,\r\n \"Miner\" : true,\r\n \"NPC\" : true,\r\n \"Passenger hunter\" : true,\r\n \"Passenger liner\" : false,\r\n \"Pirate\" : true,\r\n \"Police\" : true,\r\n \"Propagandist\" : false,\r\n \"Protester\" : false,\r\n \"Refugee\" : true,\r\n \"Rival power's agent\" : true,\r\n \"Search and rescue\" : true,\r\n \"Starship One\" : true,\r\n \"Station\" : false,\r\n \"Wedding convoy\" : false,\r\n]}\r\n\r\n{_ Exclude the active voice and any other voices you include below from voice selections }\r\n{set spokenVoiceExemptions to \r\n[\r\n VoiceDetails().name,\r\n]}\r\n\r\n{_ Specify specific gendered voices to be used for specific names }\r\n{set spokenVoiceGenders to \r\n[\r\n \"Aaliyah\": \"Female\",\r\n \"Aaron\": \"Male\",\r\n \"Aase\": \"Female\",\r\n \"Abby\": \"Female\",\r\n \"Abigail\": \"Female\",\r\n \"Abril\": \"Female\",\r\n \"Adaline\": \"Female\",\r\n \"Adalyn\": \"Female\",\r\n \"Adam\": \"Male\",\r\n \"Addilyn\": \"Female\",\r\n \"Addison\": \"Female\",\r\n \"Addisyn\": \"Female\",\r\n \"Addyson\": \"Female\",\r\n \"Adelaide\": \"Female\",\r\n \"Adele\": \"Female\",\r\n \"Adelin\": \"Female\",\r\n \"Adelyn\": \"Female\",\r\n \"Adilyn\": \"Female\",\r\n \"Adley\": \"Female\",\r\n \"Adrian\": \"Male\",\r\n \"Adriana\": \"Female\",\r\n \"Adrianna\": \"Female\",\r\n \"Adrienne\": \"Female\",\r\n \"Agnes\": \"Female\",\r\n \"Aileen\": \"Female\",\r\n \"Aimee\": \"Female\",\r\n \"Ainsley\": \"Female\",\r\n \"Aisha\": \"Female\",\r\n \"Aislinn\": \"Female\",\r\n \"Aitana\": \"Female\",\r\n \"Aiyana\": \"Female\",\r\n \"Alaia\": \"Female\",\r\n \"Alaina\": \"Female\",\r\n \"Alan\": \"Male\",\r\n \"Alana\": \"Female\",\r\n \"Alani\": \"Female\",\r\n \"Alanna\": \"Female\",\r\n \"Alaya\": \"Female\",\r\n \"Alayna\": \"Female\",\r\n \"Albert\": \"Male\",\r\n \"Aleah\": \"Female\",\r\n \"Aleena\": \"Female\",\r\n \"Alena\": \"Female\",\r\n \"Alessa\": \"Female\",\r\n \"Alexander\": \"Male\",\r\n \"Alexandra\": \"Female\",\r\n \"Alexandria\": \"Female\",\r\n \"Alexi\": \"Female\",\r\n \"Alia\": \"Female\",\r\n \"Alian\": \"Female\",\r\n \"Alice\": \"Female\",\r\n \"Alicia\": \"Female\",\r\n \"Alina\": \"Female\",\r\n \"Alisha\": \"Female\",\r\n \"Alison\": \"Female\",\r\n \"Aliss\": \"Female\",\r\n \"Alivia\": \"Female\",\r\n \"Aliya\": \"Female\",\r\n \"Aliz\": \"Female\",\r\n \"Allen\": \"Male\",\r\n \"Alli\": \"Female\",\r\n \"Ally\": \"Female\",\r\n \"Alon\": \"Male\",\r\n \"Alondra\": \"Female\",\r\n \"Alys\": \"Female\",\r\n \"Amali\": \"Female\",\r\n \"Amanda\": \"Female\",\r\n \"Amani\": \"Female\",\r\n \"Amara\": \"Female\",\r\n \"Amari\": \"Female\",\r\n \"Amaya\": \"Female\",\r\n \"Amber\": \"Female\",\r\n \"Ameli\": \"Female\",\r\n \"America\": \"Female\",\r\n \"Amia\": \"Female\",\r\n \"Amina\": \"Female\",\r\n \"Amira\": \"Female\",\r\n \"Amiya\": \"Female\",\r\n \"Amy\": \"Female\",\r\n \"Ana\": \"Female\",\r\n \"Andi\": \"Female\",\r\n \"Andrew\": \"Male\",\r\n \"Andy\": \"Male\",\r\n \"Anette\": \"Female\",\r\n \"Angela\": \"Female\",\r\n \"Angelica\": \"Female\",\r\n \"Angelin\": \"Female\",\r\n \"Angelique\": \"Female\",\r\n \"Angie\": \"Female\",\r\n \"Anik\": \"Female\",\r\n \"Anita\": \"Female\",\r\n \"Aniya\": \"Female\",\r\n \"Ann\": \"Female\",\r\n \"Ansley\": \"Female\",\r\n \"Anthony\": \"Male\",\r\n \"Anya\": \"Female\",\r\n \"April\": \"Female\",\r\n \"Arabell\": \"Female\",\r\n \"Aranza\": \"Female\",\r\n \"Archduchess\": \"Female\",\r\n \"Arely\": \"Female\",\r\n \"Aria\": \"Female\",\r\n \"Ariel\": \"Female\",\r\n \"Ariya\": \"Female\",\r\n \"Armani\": \"Female\",\r\n \"Arrun\": \"Male\",\r\n \"Art\": \"Male\",\r\n \"Arthur\": \"Male\",\r\n \"Arya\": \"Female\",\r\n \"Ashild\": \"Female\",\r\n \"Ashl\": \"Female\",\r\n \"Asia\": \"Female\",\r\n \"Aspen\": \"Female\",\r\n \"Astrid\": \"Female\",\r\n \"Athen\": \"Female\",\r\n \"Aubre\": \"Female\",\r\n \"Aubri\": \"Female\",\r\n \"Audre\": \"Female\",\r\n \"Audri\": \"Female\",\r\n \"Aurel\": \"Female\",\r\n \"Auror\": \"Female\",\r\n \"Austin\": \"Male\",\r\n \"Autumn\": \"Female\",\r\n \"Ava\": \"Female\",\r\n \"Aver\": \"Female\",\r\n \"Avian\": \"Female\",\r\n \"Aya\": \"Female\",\r\n \"Ayl\": \"Female\",\r\n \"Azale\": \"Female\",\r\n \"Azari\": \"Female\",\r\n \"Barbara\": \"Female\",\r\n \"Baroness\": \"Female\",\r\n \"Baylee\": \"Female\",\r\n \"Beatric\": \"Female\",\r\n \"Bella\": \"Female\",\r\n \"Benjamin\": \"Male\",\r\n \"Billy\": \"Male\",\r\n \"Bianca\": \"Female\",\r\n \"Bjorg\": \"Female\",\r\n \"Blackbeard\": \"Male\",\r\n \"Blair\": \"Female\",\r\n \"Blake\": \"Female\",\r\n \"Bob\": \"Male\",\r\n \"Bobby\": \"Male\",\r\n \"Bodil\": \"Female\",\r\n \"Bonni\": \"Female\",\r\n \"Borgny\": \"Female\",\r\n \"Boris\": \"Male\",\r\n \"Braelyn\": \"Female\",\r\n \"Brandon\": \"Male\"\r\n \"Braylee\": \"Female\",\r\n \"Breann\": \"Female\",\r\n \"Brenda\": \"Female\",\r\n \"Brenna\": \"Female\",\r\n \"Brian\": \"Male\",\r\n \"Briana\": \"Female\",\r\n \"Briann\": \"Female\",\r\n \"Briar\": \"Female\",\r\n \"Bridget\": \"Female\",\r\n \"Briell\": \"Female\",\r\n \"Briley\": \"Female\",\r\n \"Brinley\": \"Female\",\r\n \"Brita\": \"Female\",\r\n \"Britt\": \"Female\",\r\n \"Brogie\": \"Male\",\r\n \"Brook\": \"Female\",\r\n \"Bruce\": \"Male\",\r\n \"Bryann\": \"Female\",\r\n \"Bryan\": \"Male\",\r\n \"Bryle\": \"Female\",\r\n \"Brynlee\": \"Female\",\r\n \"Brynn\": \"Female\",\r\n \"Cadence\": \"Female\",\r\n \"Caitl\": \"Female\",\r\n \"Cali\": \"Female\",\r\n \"Calli\": \"Female\",\r\n \"Camil\": \"Female\",\r\n \"Camryn\": \"Female\",\r\n \"Cara\": \"Female\",\r\n \"Carin\": \"Female\",\r\n \"Carl\": \"Male\",\r\n \"Carla\": \"Female\",\r\n \"Carlee\": \"Female\",\r\n \"Carly\": \"Female\",\r\n \"Carol\": \"Female\",\r\n \"Cassandra\": \"Female\",\r\n \"Cassidy\": \"Female\",\r\n \"Catal\": \"Female\",\r\n \"Catherin\": \"Female\",\r\n \"Cathrin\": \"Female\",\r\n \"Caylee\": \"Female\",\r\n \"Ceceli\": \"Female\",\r\n \"Cecili\": \"Female\",\r\n \"Celeste\": \"Female\",\r\n \"Celi\": \"Female\",\r\n \"Chana\": \"Female\",\r\n \"Chanel\": \"Female\",\r\n \"Charlee\": \"Female\",\r\n \"Charles\": \"Male\",\r\n \"Charleigh\": \"Female\",\r\n \"Charliz\": \"Female\",\r\n \"Charlott\": \"Female\",\r\n \"Chaya\": \"Female\",\r\n \"Chelsea\": \"Female\",\r\n \"Cherish\": \"Female\",\r\n \"Cheyenn\": \"Female\",\r\n \"Chloe\": \"Female\",\r\n \"Chris\": \"Male\",\r\n \"Christin\": \"Female\",\r\n \"Christopher\": \"Male\",\r\n \"Ciara\": \"Female\",\r\n \"Claire\": \"Female\",\r\n \"Clara\": \"Female\",\r\n \"Clare\": \"Female\",\r\n \"Clariss\": \"Female\",\r\n \"Claudia\": \"Female\",\r\n \"Clementin\": \"Female\",\r\n \"Colett\": \"Female\",\r\n \"Collins\": \"Female\",\r\n \"Cora\": \"Female\",\r\n \"Cordeli\": \"Female\",\r\n \"Corinn\": \"Female\",\r\n \"Count\": \"Male\",\r\n \"Countess\": \"Female\",\r\n \"Courtney\": \"Female\",\r\n \"Crystal\": \"Female\",\r\n \"Cynthi\": \"Female\",\r\n \"Dais\": \"Female\",\r\n \"Dakota\": \"Female\",\r\n \"Dalary\": \"Female\",\r\n \"Daleyza\": \"Female\",\r\n \"Dame\": \"Female\",\r\n \"Dana\": \"Female\",\r\n \"Danic\": \"Female\",\r\n \"Daniel\": \"Male\",\r\n \"Daniela\": \"Female\",\r\n \"Daniele\": \"Female\",\r\n \"Daniell\": \"Female\",\r\n \"Danna\": \"Female\",\r\n \"Daphne\": \"Female\",\r\n \"David\": \"Male\",\r\n \"Dayana\": \"Female\",\r\n \"Debora\": \"Female\",\r\n \"Delaney\": \"Female\",\r\n \"Delila\": \"Female\",\r\n \"Demi\": \"Female\",\r\n \"Dennis\": \"Male\",\r\n \"Derrick\": \"Male\",\r\n \"Desiree\": \"Female\",\r\n \"Destiny\": \"Female\",\r\n \"Devin\": \"Male\",\r\n \"Diana\": \"Female\",\r\n \"Diego\": \"Male\",\r\n \"Dina\": \"Female\",\r\n \"Dixie\": \"Female\",\r\n \"Donald\": \"Male\",\r\n \"Doroth\": \"Female\",\r\n \"Douglas\": \"Male\",\r\n \"Duchess\": \"Female\",\r\n \"Dulce\": \"Female\",\r\n \"Duke\": \"Male\",\r\n \"Dylan\": \"Male\",\r\n \"Edel\": \"Female\",\r\n \"Eden\": \"Female\",\r\n \"Edith\": \"Female\",\r\n \"Edward\": \"Male\",\r\n \"Edwin\": \"Male\",\r\n \"Eileen\": \"Female\",\r\n \"Eirin\": \"Female\",\r\n \"Elain\": \"Female\",\r\n \"Elanor\": \"Female\",\r\n \"Eleanor\": \"Female\",\r\n \"Elena\": \"Female\",\r\n \"Elian\": \"Female\",\r\n \"Elijah\": \"Male\",\r\n \"Elin\": \"Female\",\r\n \"Elis\": \"Female\",\r\n \"Eliz\": \"Female\",\r\n \"Ella\": \"Female\",\r\n \"Elle\": \"Female\",\r\n \"Ellian\": \"Female\",\r\n \"Ellie\": \"Female\",\r\n \"Ellinor\": \"Female\",\r\n \"Elna\": \"Female\",\r\n \"Elois\": \"Female\",\r\n \"Elora\": \"Female\",\r\n \"Elsa\": \"Female\",\r\n \"Elsi\": \"Female\",\r\n \"Elys\": \"Female\",\r\n \"Ember\": \"Female\",\r\n \"Emeli\": \"Female\",\r\n \"Emely\": \"Female\",\r\n \"Emerie\": \"Female\",\r\n \"Emerson\": \"Female\",\r\n \"Emersyn\": \"Female\",\r\n \"Emery\": \"Female\",\r\n \"Emil\": \"Male\",\r\n \"Emilee\": \"Female\",\r\n \"Emilia\": \"Female\",\r\n \"Emilie\": \"Female\",\r\n \"Emily\": \"Female\",\r\n \"Emira\": \"Female\",\r\n \"Emma\": \"Female\",\r\n \"Emmeline\": \"Female\",\r\n \"Emmy\": \"Female\",\r\n \"Emory\": \"Female\",\r\n \"Empress\": \"Female\",\r\n \"Eric\", \"Male\",\r\n \"Erica\": \"Female\",\r\n \"Erik\", \"Male\",\r\n \"Erika\": \"Female\",\r\n \"Erin\": \"Female\",\r\n \"Esme\": \"Female\",\r\n \"Esmeralda\": \"Female\",\r\n \"Esperanza\": \"Female\",\r\n \"Estell\": \"Female\",\r\n \"Esther\": \"Female\",\r\n \"Estrell\": \"Female\",\r\n \"Ethan\": \"Male\",\r\n \"Eugene\": \"Male\",\r\n \"Eva\": \"Female\",\r\n \"Evalyn\": \"Female\",\r\n \"Evangelin\": \"Female\",\r\n \"Eve\": \"Female\",\r\n \"Evelyn\": \"Female\",\r\n \"Everleigh\": \"Female\",\r\n \"Everly\": \"Female\",\r\n \"Evie\": \"Female\",\r\n \"Evy\": \"Female\",\r\n \"Faith\": \"Female\",\r\n \"Farrah\": \"Female\",\r\n \"Fatima\": \"Female\",\r\n \"Faye\": \"Female\",\r\n \"Felicity\": \"Female\",\r\n \"Fernanda\": \"Female\",\r\n \"Fiona\": \"Female\",\r\n \"Frances\": \"Female\",\r\n \"Frank\": \"Male\",\r\n \"Fraulein\": \"Female\",\r\n \"Freya\": \"Female\",\r\n \"Frida\": \"Female\",\r\n \"Froydis\": \"Female\",\r\n \"Gabriel\": \"Male\",\r\n \"Gabriela\": \"Female\",\r\n \"Gabriella\": \"Female\",\r\n \"Gabrielle\": \"Female\",\r\n \"Galilea\": \"Female\",\r\n \"Gary\": \"Male\",\r\n \"Gemma\": \"Female\",\r\n \"Genevieve\": \"Female\",\r\n \"Geoff\": \"Male\",\r\n \"George\": \"Male\",\r\n \"Georgia\": \"Female\",\r\n \"Gerald\": \"Male\",\r\n \"Gerd\": \"Female\",\r\n \"Gia\": \"Female\",\r\n \"Giana\": \"Female\",\r\n \"Gianna\": \"Female\",\r\n \"Giavanna\": \"Female\",\r\n \"Giles\": \"Male\",\r\n \"Gimbal\": \"Male\",\r\n \"Gina\": \"Female\",\r\n \"Giovanna\": \"Female\",\r\n \"Giselle\": \"Female\",\r\n \"Giuliana\": \"Female\",\r\n \"Gloria\": \"Female\",\r\n \"Grace\": \"Female\",\r\n \"Gracelyn\": \"Female\",\r\n \"Gracie\": \"Female\",\r\n \"Greg\": \"Male\",\r\n \"Gregory\": \"Male\",\r\n \"Grumhir\": \"Male\",\r\n \"Gwen\": \"Female\",\r\n \"Haile\": \"Female\",\r\n \"Hal\": \"Male\",\r\n \"Haley\": \"Female\",\r\n \"Halle\": \"Female\",\r\n \"Hallie\": \"Female\",\r\n \"Hana\": \"Female\",\r\n \"Hanna\": \"Female\",\r\n \"Harold\": \"Male\",\r\n \"Harald\": \"Male\",\r\n \"Hattie\": \"Female\",\r\n \"Haven\": \"Female\",\r\n \"Hayle\": \"Female\",\r\n \"Hazel\": \"Female\",\r\n \"Heather\": \"Female\",\r\n \"Heaven\": \"Female\",\r\n \"Hedda\": \"Female\",\r\n \"Heidi\": \"Female\",\r\n \"Helen\": \"Female\",\r\n \"Helga\": \"Female\",\r\n \"Helle\": \"Female\",\r\n \"Henley\": \"Female\",\r\n \"Henny\": \"Female\",\r\n \"Henriett\": \"Female\",\r\n \"Henry\": \"Male\",\r\n \"Hild\": \"Female\",\r\n \"Holly\": \"Female\",\r\n \"Hope\": \"Female\",\r\n \"Ian\": \"Male\",\r\n \"Ida\": \"Female\",\r\n \"Ilian\": \"Female\",\r\n \"Imani\": \"Female\",\r\n \"Ingerid\": \"Female\",\r\n \"Ingri\": \"Female\",\r\n \"Ireland\": \"Female\",\r\n \"Irene\": \"Female\",\r\n \"Iris\": \"Female\",\r\n \"Isabel\": \"Female\",\r\n \"Isabella\": \"Female\",\r\n \"Isador\": \"Female\",\r\n \"Isla\": \"Female\",\r\n \"Itzel\": \"Female\",\r\n \"Ivan\": \"Male\",\r\n \"Ivana\": \"Female\",\r\n \"Ivanna\": \"Female\",\r\n \"Ivory\": \"Female\",\r\n \"Ivy\": \"Female\",\r\n \"Izabel\": \"Female\",\r\n \"Jacqueline\": \"Female\",\r\n \"Jack\": \"Male\",\r\n \"Jacob\": \"Male\",\r\n \"Jada\": \"Female\",\r\n \"Jade\": \"Female\",\r\n \"Jaelyn\": \"Female\",\r\n \"Jaida\": \"Female\",\r\n \"Jaliyah\": \"Female\",\r\n \"James\": \"Male\",\r\n \"Jamie\": \"Female\",\r\n \"Jane\": \"Female\",\r\n \"Jani\": \"Female\",\r\n \"Janne\": \"Female\",\r\n \"Janni\": \"Female\",\r\n \"Jasmin\": \"Female\",\r\n \"Jason\": \"Male\",\r\n \"Jaycee\": \"Female\",\r\n \"Jayd\": \"Female\",\r\n \"Jayl\": \"Female\",\r\n \"Jazlyn\": \"Female\",\r\n \"Jazmin\": \"Female\",\r\n \"Jeanett\": \"Female\",\r\n \"Jeffrey\": \"Male\",\r\n \"Jemma\": \"Female\",\r\n \"Jenn\": \"Female\",\r\n \"Jeremy\": \"Male\",\r\n \"Jerry\": \"Male\",\r\n \"Jess\": \"Female\",\r\n \"Jewel\": \"Female\",\r\n \"Jill\": \"Female\",\r\n \"Jim\": \"Male\",\r\n \"Jimena\": \"Female\",\r\n \"Joan\": \"Female\",\r\n \"Joce\": \"Female\",\r\n \"Joe\": \"Male\",\r\n \"Johanna\": \"Female\",\r\n \"Johanne\": \"Female\",\r\n \"John\": \"Male\",\r\n \"Jolene\": \"Female\",\r\n \"Jolie\": \"Female\",\r\n \"Jonathan\": \"Male\",\r\n \"Jordyn\": \"Female\",\r\n \"Jorid\": \"Female\",\r\n \"Jorun\": \"Female\",\r\n \"Jose\": \"Male\",\r\n \"Josefin\": \"Female\",\r\n \"Joselyn\": \"Female\",\r\n \"Joseph\": \"Male\",\r\n \"Josephin\": \"Female\",\r\n \"Josh\": \"Male\",\r\n \"Joshua\": \"Male\",\r\n \"Josie\": \"Female\",\r\n \"Joslyn\": \"Female\",\r\n \"Journe\": \"Female\",\r\n \"Joy\": \"Female\",\r\n \"Juan\": \"Male\",\r\n \"Judit\": \"Female\",\r\n \"Juli\": \"Female\",\r\n \"June\": \"Female\",\r\n \"Juniper\": \"Female\",\r\n \"Justice\": \"Female\",\r\n \"Justin\": \"Male\",\r\n \"Kadence\": \"Female\",\r\n \"Kaelyn\": \"Female\",\r\n \"Kaia\": \"Female\",\r\n \"Kailani\": \"Female\",\r\n \"Kaile\": \"Female\",\r\n \"Kaily\": \"Female\",\r\n \"Kairi\": \"Female\",\r\n \"Kaitlyn\": \"Female\",\r\n \"Kaiya\": \"Female\",\r\n \"Kaja\": \"Female\",\r\n \"Kalani\": \"Female\",\r\n \"Kali\": \"Female\",\r\n \"Kaliya\": \"Female\",\r\n \"Kalli\": \"Female\",\r\n \"Kamil\": \"Female\",\r\n \"Kamryn\": \"Female\",\r\n \"Kara\": \"Female\",\r\n \"Karen\": \"Female\",\r\n \"Kariann\": \"Female\",\r\n \"Karin\": \"Female\",\r\n \"Karl\": \"Male\",\r\n \"Karla\": \"Female\",\r\n \"Karlee\": \"Female\",\r\n \"Karli\": \"Female\",\r\n \"Karolin\": \"Female\",\r\n \"Karsyn\": \"Female\",\r\n \"Kassandra\": \"Female\",\r\n \"Kassidy\": \"Female\",\r\n \"Katalin\": \"Female\",\r\n \"Katarin\": \"Female\",\r\n \"Kate\": \"Female\",\r\n \"Katherin\": \"Female\",\r\n \"Kathleen\": \"Female\",\r\n \"Kathr\": \"Female\",\r\n \"Kati\": \"Female\",\r\n \"Katyusha\": \"Female\",\r\n \"Kaya\": \"Female\",\r\n \"Kayden\": \"Female\",\r\n \"Kayla\": \"Female\",\r\n \"Kayle\": \"Female\",\r\n \"Kayli\": \"Female\",\r\n \"Kayly\": \"Female\",\r\n \"Keira\": \"Female\",\r\n \"Keith\": \"Male\",\r\n \"Kelly\": \"Female\",\r\n \"Kelsey\": \"Female\",\r\n \"Kendal\": \"Female\",\r\n \"Kendra\": \"Female\",\r\n \"Kenia\": \"Female\",\r\n \"Kenley\": \"Female\",\r\n \"Kenna\": \"Female\",\r\n \"Kenned\": \"Female\",\r\n \"Kenneth\": \"Male\",\r\n \"Kensington\": \"Female\",\r\n \"Kensley\": \"Female\",\r\n \"Kettengrad\": \"Male\",\r\n \"Kenya\": \"Female\",\r\n \"Kenzie\": \"Female\",\r\n \"Kevin\": \"Male\",\r\n \"Keyla\": \"Female\",\r\n \"Khloe\": \"Female\",\r\n \"Kiana\": \"Female\",\r\n \"Kiara\": \"Female\",\r\n \"Kiera\": \"Female\",\r\n \"Kiley\": \"Female\",\r\n \"Kimber\": \"Female\",\r\n \"Kimora\": \"Female\",\r\n \"Kine\": \"Female\",\r\n \"Kinley\": \"Female\",\r\n \"Kinsle\": \"Female\",\r\n \"Kira\": \"Female\",\r\n \"Kirsten\": \"Female\",\r\n \"Kirsty\": \"Female\",\r\n \"Kjersti\": \"Female\",\r\n \"Klara\": \"Female\",\r\n \"Kora\": \"Female\",\r\n \"Kori\": \"Female\",\r\n \"Kristen\": \"Female\",\r\n \"Kristin\": \"Female\",\r\n \"Kyla\": \"Female\",\r\n \"Kyle\": \"Male\",\r\n \"Kylee\": \"Female\",\r\n \"Kyleigh\": \"Female\",\r\n \"Kylie\": \"Female\",\r\n \"Kyndal\": \"Female\",\r\n \"Kynlee\": \"Female\",\r\n \"Kyra\": \"Female\",\r\n \"Lacey\": \"Female\",\r\n \"Lady\": \"Female\",\r\n \"Laila\": \"Female\",\r\n \"Lainey\": \"Female\",\r\n \"Lana\": \"Female\",\r\n \"Landry\": \"Female\",\r\n \"Laney\": \"Female\",\r\n \"Lara\": \"Female\",\r\n \"Larry\": \"Male\",\r\n \"Laura\": \"Female\",\r\n \"Laure\": \"Female\",\r\n \"Laury\": \"Female\",\r\n \"Lawrence\": \"Male\",\r\n \"Layla\": \"Female\",\r\n \"Lea\": \"Female\",\r\n \"Leia\": \"Female\",\r\n \"Leighton\": \"Female\",\r\n \"Leila\": \"Female\",\r\n \"Lena\": \"Female\",\r\n \"Lenno\": \"Female\",\r\n \"Leona\": \"Female\",\r\n \"Lesli\": \"Female\",\r\n \"Lexi\": \"Female\",\r\n \"Leyla\": \"Female\",\r\n \"Lia\": \"Female\",\r\n \"Libb\": \"Female\",\r\n \"Liberty\": \"Female\",\r\n \"Lila\": \"Female\",\r\n \"Lili\": \"Female\",\r\n \"Lill\": \"Female\",\r\n \"Lily\": \"Female\",\r\n \"Lina\": \"Female\",\r\n \"Linda\": \"Female\",\r\n \"Linn\": \"Female\",\r\n \"Lisa\": \"Female\",\r\n \"Lisbet\": \"Female\",\r\n \"Lise\": \"Female\",\r\n \"Liv\": \"Female\",\r\n \"Livia\": \"Female\",\r\n \"Liz\": \"Female\",\r\n \"Lizbet\": \"Female\",\r\n \"Logan\": \"Male\",\r\n \"Lola\": \"Female\",\r\n \"London\": \"Female\",\r\n \"Londyn\": \"Female\",\r\n \"Lord\": \"Male\",\r\n \"Lorel\": \"Female\",\r\n \"Lotta\": \"Female\",\r\n \"Lotte\": \"Female\",\r\n \"Louis\": \"Male\",\r\n \"Louisa\": \"Female\",\r\n \"Lucia\": \"Female\",\r\n \"Lucill\": \"Female\",\r\n \"Lucy\": \"Female\",\r\n \"Luna\": \"Female\",\r\n \"Luz\": \"Female\",\r\n \"Lydia\": \"Female\",\r\n \"Lyla\": \"Female\",\r\n \"Lyra\": \"Female\",\r\n \"Lyric\": \"Female\",\r\n \"Mabel\": \"Female\",\r\n \"Maci\": \"Female\",\r\n \"Mackenzie\": \"Female\",\r\n \"Macy\": \"Female\",\r\n \"Madalyn\": \"Female\",\r\n \"Madam\": \"Female\",\r\n \"Maddison\": \"Female\",\r\n \"Madelein\": \"Female\",\r\n \"Madelin\": \"Female\",\r\n \"Madelyn\": \"Female\",\r\n \"Mademoiselle\": \"Female\",\r\n \"Madilyn\": \"Female\",\r\n \"Madison\": \"Female\",\r\n \"Madisyn\": \"Female\",\r\n \"Madyson\": \"Female\",\r\n \"Mae\": \"Female\",\r\n \"Maggi\": \"Female\",\r\n \"Magnolia\": \"Female\",\r\n \"Magnusson\": \"Male\",\r\n \"Maharani\": \"Female\",\r\n \"Maia\": \"Female\",\r\n \"Maiken\": \"Female\",\r\n \"Maisi\": \"Female\",\r\n \"Maja\": \"Female\",\r\n \"Makayla\": \"Female\",\r\n \"Makenna\": \"Female\",\r\n \"Makenzie\": \"Female\",\r\n \"Malaya\": \"Female\",\r\n \"Malea\": \"Female\",\r\n \"Malene\": \"Female\",\r\n \"Malia\": \"Female\",\r\n \"Mallory\": \"Female\",\r\n \"Mara\": \"Female\",\r\n \"Marchioness\": \"Female\",\r\n \"Margaret\": \"Female\",\r\n \"Margit\": \"Female\",\r\n \"Margot\": \"Female\",\r\n \"Margret\": \"Female\",\r\n \"Mari\": \"Female\",\r\n \"Marjorie\": \"Female\",\r\n \"Marlee\": \"Female\",\r\n \"Marleigh\": \"Female\",\r\n \"Marley\": \"Female\",\r\n \"Marquise\": \"Female\",\r\n \"Marte\": \"Female\",\r\n \"Marth\": \"Female\",\r\n \"Mary\": \"Female\",\r\n \"Mason\": \"Male\",\r\n \"Mathild\": \"Female\",\r\n \"Matild\": \"Female\",\r\n \"Matt\": \"Male\",\r\n \"Matthew\": \"Male\",\r\n \"May\": \"Female\",\r\n \"Mckenna\": \"Female\",\r\n \"Mckenzie\": \"Female\",\r\n \"Meadow\": \"Female\",\r\n \"Megan\": \"Female\",\r\n \"Meilani\": \"Female\",\r\n \"Melan\": \"Female\",\r\n \"Melin\": \"Female\",\r\n \"Melissa\": \"Female\",\r\n \"Melody\": \"Female\",\r\n \"Meredith\": \"Female\",\r\n \"Mia\": \"Female\",\r\n \"Michael\", \"Male\",\r\n \"Michaela\": \"Female\",\r\n \"Michelle\": \"Female\",\r\n \"Miguel\": \"Male\",\r\n \"Mikaela\": \"Female\",\r\n \"Mikayla\": \"Female\",\r\n \"Mike\": \"Male\",\r\n \"Mila\": \"Female\",\r\n \"Milo\": \"Male\",\r\n \"Milan\": \"Female\",\r\n \"Milen\": \"Female\",\r\n \"Milli\": \"Female\",\r\n \"Mina\": \"Female\",\r\n \"Mira\": \"Female\",\r\n \"Mirand\": \"Female\",\r\n \"Miriam\": \"Female\",\r\n \"Miss\": \"Female\",\r\n \"Miya\": \"Female\",\r\n \"Molli\": \"Female\",\r\n \"Molly\": \"Female\",\r\n \"Mona\": \"Female\",\r\n \"Monica\": \"Female\",\r\n \"Monika\": \"Female\",\r\n \"Monsieur\": \"Male\",\r\n \"Montserrat\": \"Female\",\r\n \"Morgan\": \"Female\",\r\n \"Mother\": \"Female\",\r\n \"Mr\", \"Male\",\r\n \"Mrs\": \"Female\",\r\n \"Ms\": \"Female\",\r\n \"Mya\": \"Female\",\r\n \"Myla\": \"Female\",\r\n \"Myra\": \"Female\",\r\n \"Nadia\": \"Female\",\r\n \"Nala\": \"Female\",\r\n \"Naomi\": \"Female\",\r\n \"Natal\": \"Female\",\r\n \"Natali\": \"Female\",\r\n \"Natasha\": \"Female\",\r\n \"Nathali\": \"Female\",\r\n \"Nathan\": \"Male\",\r\n \"Nathaniel\": \"Male\",\r\n \"Naya\": \"Female\",\r\n \"Nayeli\": \"Female\",\r\n \"Neil\": \"Male\",\r\n \"Nelly\": \"Female\",\r\n \"Neriah\": \"Female\",\r\n \"Nevaeh\": \"Female\",\r\n \"Nia\": \"Female\",\r\n \"Nicholas\": \"Male\",\r\n \"Nick:\" \"Male\",\r\n \"Nicole\": \"Female\",\r\n \"Nina\": \"Female\",\r\n \"Noah\": \"Male\",\r\n \"Noelle\": \"Female\",\r\n \"Noemi\": \"Female\",\r\n \"Nora\": \"Female\",\r\n \"Nyla\": \"Female\",\r\n \"Olga\": \"Female\",\r\n \"Olivia\": \"Female\",\r\n \"Ophelia\": \"Female\",\r\n \"Paige\": \"Female\",\r\n \"Paisle\": \"Female\",\r\n \"Paloma\": \"Female\",\r\n \"Paola\": \"Female\",\r\n \"Paris\": \"Female\",\r\n \"Patricia\": \"Female\",\r\n \"Patrick\": \"Male\",\r\n \"Paul\": \"Male\",\r\n \"Paula\": \"Female\",\r\n \"Pearl\": \"Female\",\r\n \"Penelope\": \"Female\",\r\n \"Penny\": \"Female\",\r\n \"Perla\": \"Female\",\r\n \"Peter\": \"Male\",\r\n \"Petra\": \"Female\",\r\n \"Phil\": \"Male\",\r\n \"Philip\": \"Male\",\r\n \"Philliep\": \"Male\",\r\n \"Phoebe\": \"Female\",\r\n \"Phoenix\": \"Female\",\r\n \"Pia\": \"Female\",\r\n \"Pinder\": \"Male\",\r\n \"Pink\": \"Female\",\r\n \"Piper\": \"Female\",\r\n \"Popess\": \"Female\",\r\n \"Presley\": \"Female\",\r\n \"Princess\": \"Female\",\r\n \"Priscilla\": \"Female\",\r\n \"Queen\": \"Female\",\r\n \"Quinn\": \"Female\",\r\n \"Rachael\": \"Female\",\r\n \"Rachel\": \"Female\",\r\n \"Raegan\": \"Female\",\r\n \"Raelyn\": \"Female\",\r\n \"Ragnhild\": \"Female\",\r\n \"Raina\": \"Female\",\r\n \"Rakel\": \"Female\",\r\n \"Ralph\": \"Male\"\r\n \"Randi\": \"Female\",\r\n \"Randy\": \"Male\",\r\n \"Raquel\": \"Female\",\r\n \"Raven\": \"Female\",\r\n \"Raymond\": \"Male\",\r\n \"Rayna\": \"Female\",\r\n \"Rebecca\": \"Female\",\r\n \"Rebekah\": \"Female\",\r\n \"Rebekka\": \"Female\",\r\n \"Reese\": \"Female\",\r\n \"Reina\": \"Female\",\r\n \"Reyna\": \"Female\",\r\n \"Rhea\": \"Female\",\r\n \"Riann\": \"Female\",\r\n \"Richard\": \"Male\",\r\n \"Riley\": \"Female\",\r\n \"Rita\": \"Female\",\r\n \"River\": \"Female\",\r\n \"Rivka\": \"Female\",\r\n \"Robert\": \"Male\",\r\n \"Roberta\": \"Female\",\r\n \"Roger\": \"Male\",\r\n \"Romina\": \"Female\",\r\n \"Ronald\": \"Male\",\r\n \"Rory\": \"Female\",\r\n \"Rosa\": \"Female\",\r\n \"Rose\": \"Female\",\r\n \"Rosie\": \"Female\",\r\n \"Rowan\": \"Female\",\r\n \"Roy\": \"Male\",\r\n \"Ruby\": \"Female\",\r\n \"Russel\": \"Male\",\r\n \"Ruth\": \"Female\",\r\n \"Ryan\": \"Male\",\r\n \"Ryann\": \"Female\",\r\n \"Rylee\": \"Female\",\r\n \"Rylie\": \"Female\",\r\n \"Sabin\": \"Female\",\r\n \"Sabrin\": \"Female\",\r\n \"Sadie\": \"Female\",\r\n \"Sage\": \"Female\",\r\n \"Saige\": \"Female\",\r\n \"Salma\": \"Female\",\r\n \"Sam\": \"Male\",\r\n \"Samantha\": \"Female\",\r\n \"Samara\": \"Female\",\r\n \"Samuel\": \"Male\",\r\n \"Sandra\": \"Female\",\r\n \"Saniyah\": \"Female\",\r\n \"Sara\": \"Female\",\r\n \"Saria\": \"Female\",\r\n \"Sasha\": \"Female\",\r\n \"Savanna\": \"Female\",\r\n \"Saylor\": \"Female\",\r\n \"Scarlet\": \"Female\",\r\n \"Sean\": \"Male\",\r\n \"Scott\": \"Male\",\r\n \"Selah\": \"Female\",\r\n \"Selen\": \"Female\",\r\n \"Selma\": \"Female\",\r\n \"Senora\": \"Female\",\r\n \"Senorita\": \"Female\",\r\n \"Seren\": \"Female\",\r\n \"Sharon\": \"Female\",\r\n \"Shayla\": \"Female\",\r\n \"Sheila\": \"Female\",\r\n \"Shelby\": \"Female\",\r\n \"Shiloh\": \"Female\",\r\n \"Sidney\": \"Female\",\r\n \"Sidsel\": \"Female\",\r\n \"Siena\": \"Female\",\r\n \"Sienna\": \"Female\",\r\n \"Sierra\": \"Female\",\r\n \"Signe\": \"Female\",\r\n \"Sigrid\": \"Female\",\r\n \"Sigrun\": \"Female\",\r\n \"Silje\": \"Female\",\r\n \"Simone\": \"Female\",\r\n \"Sir\": \"Male\",\r\n \"Siri\": \"Female\",\r\n \"Sister\": \"Female\",\r\n \"Sky\": \"Female\",\r\n \"Skye\": \"Female\",\r\n \"Skyla\": \"Female\",\r\n \"Skyler\": \"Female\",\r\n \"Smythson\": \"Male\",\r\n \"Sofi\": \"Female\",\r\n \"Solvi\": \"Female\",\r\n \"Sophi\": \"Female\",\r\n \"Stella\": \"Female\",\r\n \"Stephanie\": \"Female\",\r\n \"Stephen\": \"Male\",\r\n \"Steve\": \"Male\",\r\n \"Steven\": \"Male\",\r\n \"Sultana\": \"Female\",\r\n \"Summer\": \"Female\",\r\n \"Susan\": \"Female\",\r\n \"Sydney\": \"Female\",\r\n \"Sylvi\": \"Female\",\r\n \"Synne\": \"Female\",\r\n \"Synnove\": \"Female\",\r\n \"Tabitha\": \"Female\",\r\n \"Tal\": \"Male\",\r\n \"Talia\": \"Female\",\r\n \"Taliya\": \"Female\",\r\n \"Tania\": \"Female\",\r\n \"Tanja\": \"Female\",\r\n \"Tann\": \"Male\",\r\n \"Tanner\": \"Male\",\r\n \"Tanya\": \"Female\",\r\n \"Tara\": \"Female\",\r\n \"Tatum\": \"Female\",\r\n \"Taya\": \"Female\",\r\n \"Teagan\": \"Female\",\r\n \"Tegan\": \"Female\",\r\n \"Tenley\": \"Female\",\r\n \"Teresa\": \"Female\",\r\n \"Terry\": \"Male\",\r\n \"Tess\": \"Female\",\r\n \"Thalia\": \"Female\",\r\n \"Thea\": \"Female\",\r\n \"Theres\": \"Female\",\r\n \"Thomas\": \"Male\",\r\n \"Tiana\": \"Female\",\r\n \"Tiffan\": \"Female\",\r\n \"Timothy\": \"Male\",\r\n \"Tinley\": \"Female\",\r\n \"Tone\": \"Female\",\r\n \"Tonje\": \"Female\",\r\n \"Tony\": \"Male\",\r\n \"Tora\": \"Female\",\r\n \"Tordis\": \"Female\",\r\n \"Torhild\": \"Female\",\r\n \"Tori\": \"Female\",\r\n \"Toril\": \"Female\",\r\n \"Torill\": \"Female\",\r\n \"Torunn\": \"Female\",\r\n \"Trine\": \"Female\",\r\n \"Trinity\": \"Female\",\r\n \"Trude\": \"Female\",\r\n \"Tsarina\": \"Female\",\r\n \"Tuva\": \"Female\",\r\n \"Tyler\": \"Male\",\r\n \"Umberto\": \"Male\",\r\n \"Unni\": \"Female\",\r\n \"Valentina\": \"Female\",\r\n \"Valeria\": \"Female\",\r\n \"Vaness\": \"Female\",\r\n \"Veda\": \"Female\",\r\n \"Vera\": \"Female\",\r\n \"Veroni\": \"Female\",\r\n \"Vicereine\": \"Female\",\r\n \"Victor\": \"Male\",\r\n \"Victoria\": \"Female\",\r\n \"Vienna\": \"Female\",\r\n \"Viktoria\": \"Female\",\r\n \"Vincent\": \"Male\",\r\n \"Violet\": \"Female\",\r\n \"Virginia\": \"Female\",\r\n \"Viscount\": \"Male\",\r\n \"Viscountess\": \"Female\",\r\n \"Vivi\": \"Female\",\r\n \"Waffle\": \"Male\",\r\n \"Walter\": \"Male\",\r\n \"Wayne\": \"Male\",\r\n \"Wenche\": \"Female\",\r\n \"Wendy\": \"Female\",\r\n \"Whitney\": \"Female\",\r\n \"Wibeke\": \"Female\",\r\n \"Willa\": \"Female\",\r\n \"William\": \"Male\",\r\n \"Willie\": \"Male\",\r\n \"Willow\": \"Female\",\r\n \"Winter\": \"Female\",\r\n \"Wren\": \"Female\",\r\n \"Wynter\": \"Female\",\r\n \"Ximena\": \"Female\",\r\n \"Yamileth\": \"Female\",\r\n \"Yareli\": \"Female\",\r\n \"Yaretzi\": \"Female\",\r\n \"Yaritza\": \"Female\",\r\n \"Yasmin\": \"Female\",\r\n \"Zachary\": \"Male\",\r\n \"Zahra\": \"Female\",\r\n \"Zainab\": \"Female\",\r\n \"Zaniyah\": \"Female\",\r\n \"Zara\": \"Female\",\r\n \"Zaria\": \"Female\",\r\n \"Zariya\": \"Female\",\r\n \"Zaylee\": \"Female\",\r\n \"Zelda\": \"Female\",\r\n \"Zendaya\": \"Female\",\r\n \"Zion\": \"Female\",\r\n \"Zoe\": \"Female\",\r\n \"Zoie\": \"Female\",\r\n \"Zoraster\": \"Male\"\r\n]}\r\n\r\n{declare speakMessage(msg) as:\r\n\r\n {set voiceNames to []}\r\n \r\n {_ Look for any gendered first names from the spokenVoiceGenders list which literally match the sender name _}\r\n {if !voiceGender:\r\n {set firstName to token(event.from, \" \", 0)}\r\n {set voiceGender to spokenVoiceGenders[firstName]}\r\n }\r\n \r\n {_ Next, if we don't yet have a match then look for any gendered name from the spokenVoiceGenders list which simply starts with the sender name _}\r\n {if !voiceGender:\r\n {for name, gender in spokenVoiceGenders:\r\n {if match(event.from, cat(\"^\", name, \".*$\")):\r\n {set voiceGender to gender}\r\n }\r\n }\r\n }\r\n {_ This sorts the available voices using the senderID as a seed value }\r\n {for voiceDetail in VoiceDetails(event.seed): \r\n {if find(spokenVoiceExemptions, voiceDetail.name) > 0:\r\n {_ This is an excluded voice, skip it }\r\n |else:\r\n {_ Use an appropriately gendered voice, if the name is present in the spokenVoiceGenders list }\r\n {if voiceGender:\r\n {if voiceGender = voiceDetail.gender:\r\n {set voiceNames to cat(voiceNames, [voiceDetail.name])}\r\n }\r\n |else:\r\n {set voiceNames to cat(voiceNames, [voiceDetail.name])}\r\n }\r\n }\r\n }\r\n \r\n {_ If any voices are left, speak using the first non-excluded voice name }\r\n {if len(voiceNames) > 0:\r\n {Transmit(Voice(msg, voiceNames[0]))}\r\n |else:\r\n {_ otherwise, use the default voice, because presumably the commander only *has* one voice. _}\r\n {Transmit(msg)}\r\n }\r\n \r\n}\r\n\r\n{if spokenChannels[event.channel_invariant] = true:\r\n\r\n {if event.player = true:\r\n\r\n {set words to split(event.message, \" \")}\r\n {set msg to []}\r\n {set cur to 0}\r\n {while cur < len(words): \r\n {set o7match to match(words[cur], \"(? 0:\r\n {set remainder to slice(words[cur], 2)}\r\n {if len(words) = 1:\r\n {if event.channel_invariant = 'player': {set you to \" you\"}}\r\n {set salute to cat(\"salutes\", you)}\r\n {set msg to cat(msg, [cat(salute, remainder)])}\r\n |else:\r\n {set msg to cat(msg, [cat(\"salute\", remainder)])}\r\n }\r\n |else:\r\n {set msg to cat(msg, [words[cur]])}\r\n }\r\n {set cur to cur + 1}\r\n }\r\n {if !duplicate[\"from\"]: {event.source} {event.from} sends:}\r\n {speakMessage(join(msg, \" \"))}\r\n \r\n |elif spokenNpcSources[event.source_invariant] = true:\r\n \r\n {set msg to event.message}\r\n \r\n {_ Replace common abbreviations in NPC messages}\r\n {set msg to join(split(msg, \" cr of cargo\"), \" credits of cargo\")}\r\n {set msg to join(split(msg, \"t of cargo\"), \" tons of cargo\")}\r\n {set msg to join(split(msg, \"%\"), \" percent\")}\r\n \r\n {_ Replace oddly written phrases in NPC messages} \r\n {set msg to join(split(msg, \"AX weapons\"), \"anti-xeno weapons\")} \r\n {set msg to join(split(msg, \"Every feel like\"), \"Ever feel like\")} \r\n {set msg to join(split(msg, \"Hahahahaha!\"), \"Ha ha ha!\")} \r\n {set msg to join(split(msg, \"Ha, ha, ha!\"), \"Ha ha ha!\")} \r\n {set msg to join(split(msg, \"hurtin'\"), \"hurting\")} \r\n {set msg to join(split(msg, \"lil' \"), \"lil \")} \r\n {set msg to join(split(msg, \"Mayday\"), \"may-day!\")} \r\n {set msg to join(split(msg, \"No, no!\"), \"No no!\")} \r\n {set msg to join(split(msg, \"No, no, nooooooo!\"), \"No no no!\")} \r\n {set msg to join(split(msg, \"okay, okay\"), \"okay okay\")} \r\n {set msg to join(split(msg, \"payday\"), \"pay day\")} \r\n {set msg to join(split(msg, \"starport\"), \"star port\")} \r\n {set msg to join(split(msg, \", Commander,\"), \" Commander.\")} \r\n {set msg to join(split(msg, \", Commander\"), \" Commander\")} \r\n {set msg to join(split(msg, \", Control\"), \" Control\")} \r\n {set msg to join(split(msg, \", criminal.\"), \" criminal.\")} \r\n {set msg to join(split(msg, \", greenhorn\"), \" green horn\")} \r\n {set msg to join(split(msg, \", I wonder\"), \" I wonder\")} \r\n {set msg to join(split(msg, \", lads\"), \" lads\")} \r\n {set msg to join(split(msg, \", meal-ticket\"), \" meal ticket\")} \r\n {set msg to join(split(msg, \", officer\"), \" officer\")} \r\n {set msg to join(split(msg, \", pal\"), \" pal\")} \r\n {set msg to join(split(msg, \", perp\"), \" perp\")} \r\n {set msg to join(split(msg, \", scum\"), \" scum\")} \r\n {set msg to join(split(msg, \", pilot\"), \" pilot\")} \r\n {set msg to join(split(msg, \", victim\"), \" victim\")} \r\n {set msg to join(split(msg, \", wretch\"), \" wretch\")}\r\n {set msg to join(split(msg, \", you\"), \" you\")} \r\n \r\n {if !duplicate[\"from\"] && !duplicate[\"message\"]: \r\n {speakMessage(msg)}\r\n }\r\n }\r\n}", - "default": true + "default": true, + "name": "Message received", + "description": "Triggered when you receive a message" }, "Message sent": { - "name": "Message sent", - "description": "Triggered when you send a message", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'message')}\r\n{SetState('eddi_context_last_action', 'send')}\r\n{SetState('eddi_context_message_name', event.to)}\r\n{SetState('eddi_context_message_content', event.message)}\r\n\r\n{OneOf(\"消息已发出\", \"消息已传达\", \"已发出\")}.", - "default": true + "default": true, + "name": "Message sent", + "description": "Triggered when you send a message" }, "Micro resources purchased": { - "name": "Micro resources purchased", - "description": "Triggered when you buy micro resources", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Micro resources purchased", + "description": "Triggered when you buy micro resources" }, "Mission abandoned": { - "name": "Mission abandoned", - "description": "Triggered when you abandon a mission", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'mission')}\r\n{SetState('eddi_context_last_action', 'abandon')}\r\n\r\n{set mission to MissionDetails(event.missionid)}\r\n\r\n{if event.communal:\r\n 您已经放弃了社区目标: {mission.localisedname}\r\n|else:\r\n {if find(mission.invariantTags, \"Transport\") > -1:\r\n {set type to \"运输 \"}\r\n {set type to cat(type, mission.passengertype)}\r\n |else:\r\n {set type to mission.tags[0]}\r\n }\r\n {set type to cat(type, \" 任务\")}\r\n\r\n {if mission.faction: {P(mission.faction, \"faction\")}派系的}{type} 已被放弃.\r\n}\r\n\r\n", - "default": true + "default": true, + "name": "Mission abandoned", + "description": "Triggered when you abandon a mission" }, "Mission accepted": { - "name": "Mission accepted", - "description": "Triggered when you accept a mission", "enabled": true, "priority": 3, "responder": true, "script": "{SetState('eddi_context_last_subject', 'mission')}\r\n{SetState('eddi_context_last_action', 'accepted')}\r\n\r\n{set mission to MissionDetails(event.missionid)}\r\n\r\n{if find(mission.invariantTags, \"Donation\") > -1:\r\n {OneOf(\"您已经决定\",\"您接收了任务来\")}{Occasionally(2,\"慷慨地\")}\r\n 向{P(mission.faction, 'faction')}捐献\r\n {if find(mission.invariantTags, \"Credits\") = -1: {mission.commodity} |else: credits}\r\n 来\r\n {OneOf('提升','增加','提高')}您的 {OneOf('声誉','声望')} \r\n|elif event.communal:\r\n 您已接受社区目标: {mission.localisedname}\r\n|else:\r\n {if find(mission.invariantTags, \"Transport\") > -1:\r\n {set type to \"Transport \"}\r\n {set type to cat(type, mission.passengertype)}\r\n |else:\r\n {set type to mission.tags[0]}\r\n }\r\n {set type to cat(type, \" 任务\")}\r\n {OneOf(\"{if mission.faction: {P(mission.faction, 'faction')}发布的 } {type}已被接受\",\r\n \"您已经接受了一个{if mission.faction: 由{P(mission.faction, 'faction')}发布的 }{type} \")\r\n }\r\n}\r\n\r\n{F(\"Mission faction state\")}.\r\n\r\n{if mission.passengerwanted:\r\n 警告! 您正在 {OneOf(\"运送\",\"携带\")}\r\n {OneOf(\"{OneOf('被通缉的','非法')} {OneOf('乘客','人员')}\",\"重罪犯\")}!\r\n 您可能遭到 {Occasionally(2,\"星系\")} {OneOf(\"当局\",\"警察\")}的攻击.\r\n 请小心谨慎,一定避免被当局船只扫描.\r\n\r\n|elif token(mission.name,\"_\",2) = \"Skimmer\":\r\n 这是一个地面 {OneOf(\"任务\",\"行动\")}.\r\n\r\n|elif token(mission.name,\"_\",2) = \"Surface\":\r\n 这是一个地面 {OneOf(\"任务\",\"行动\")}, 您需要一部SRV.\r\n}\r\n\r\n{if !event.communal:\r\n {if missionsCount = 20:\r\n 您接受的任务数量已达到同时可接受的上限.\r\n 您需要先完成一些才能接受其他任务.\r\n |else:\r\n {set reportMissionCount to:\r\n {OneOf(\r\n \"您 {Occasionally(2,'现在')} 有 {missionsCount}个任务\",\r\n \"{OneOf('那是','这是')} 您的第{missionsCount}个任务\"\r\n )}.\r\n }\r\n {Occasionally(max(cmdr.combatrating.rank - missionsCount, 1), reportMissionCount)}\r\n }\r\n}", - "default": false + "default": true, + "name": "Mission accepted", + "description": "Triggered when you accept a mission" }, "Mission check galaxy": { - "name": "Mission check galaxy", - "description": "Check what systems you have missions in", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{_ Mission check galaxy }\r\n{_ Check what systems you have missions in }\r\n\r\n\r\n{_ Setup allmissions function _}\r\n{set allmissions(system) to:\r\n {set here to find(systems, system)}\r\n {if here > -1:\r\n {if mission.statusEDName = \"Active\": \r\n {set active to systems_active[here] + 1}\r\n {set systems_active to union(systems_active, [here:active])}\r\n |elif mission.statusEDName = \"Claim\":\r\n {set claim to systems_claim[here] + 1}\r\n {set systems_claim to union(systems_claim, [here:claim])}\r\n {set active to systems_active[here] + 1}\r\n {set systems_active to union(systems_active, [here:active])}\r\n }\r\n |else:\r\n {set systems to cat(systems, [system])}\r\n {if mission.statusEDName = \"Active\":\r\n {set systems_active to cat(systems_active, [1])}\r\n {set systems_claim to cat(systems_claim, [0])}\r\n |elif mission.statusEDName = \"Claim\":\r\n {set systems_active to cat(systems_active, [1])}\r\n {set systems_claim to cat(systems_claim, [1])}\r\n }\r\n }\r\n}\r\n\r\n{if missionsCount + goalsCount > 0:\r\n {set failed to 0}\r\n {set multi to 0}\r\n {set pending to 0}\r\n {set systems to []}\r\n {set systems_active to []}\r\n {set systems_claim to []}\r\n\r\n {for mission in missions:\r\n {if mission.statusEDName = \"Failed\":\r\n {set failed to failed + 1}\r\n |else:\r\n {set pending to pending + 1}\r\n {if mission.destinationsystems:\r\n {set multi to multi + 1}\r\n {for destination in mission.destinationsystems:\r\n {allmissions(destination.name)}\r\n }\r\n |elif mission.destinationsystem && mission.destinationsystem != \"\":\r\n {allmissions(mission.destinationsystem)}\r\n }\r\n }\r\n }\r\n {set systemsCount to len(systems)}\r\n\r\n 您有\r\n {if failed > 0:\r\n {failed} 个失败的\r\n {if pending > 0:\r\n 和\r\n |elif missionsCount + goalsCount = 1:\r\n 任务.\r\n |else:\r\n 任务.\r\n }\r\n }\r\n\r\n {if pending > 0:\r\n {if mission_report && systemsCount > 0:\r\n {set cur to 0}\r\n {while cur < systemsCount:\r\n {set active to systems_active[cur]}\r\n {set claim to systems_claim[cur]}\r\n\r\n {if active > 0 && active > claim:\r\n {active} 个待完成的任务\r\n {if claim > 0:, 包括 {claim} 个可提交的任务 }\r\n }\r\n 在 {P(systems[cur], \"starsystem\")}\r\n {set cur to cur + 1}\r\n {if cur = systemsCount - 1: 和 |elif cur < systemsCount: , }\r\n }.\r\n |else:\r\n \t{pending}个待完成的任务\r\n {if systemsCount = 0:\r\n ,其没有目标星系.\r\n |elif systemsCount = 1:\r\n 位于 {if systems[0] = system.name: 这个 |else: 一个 } 星系中\r\n |else:\r\n 位于 {systemsCount}个 星系中\r\n }. \r\n \r\n {if multi > 0:\r\n 他们中的{if multi = pending: 全部 |else: {multi}个 }是多目的地任务.\r\n } \r\n }\r\n }\r\n|else:\r\n {OneOf(\"您目前没有任何任务.\", \"你现在没有接受的任务\",\r\n \"您现在没有任务.\")}\r\n}", - "default": true + "default": true, + "name": "Mission check galaxy", + "description": "Check what systems you have missions in" }, "Mission check station": { - "name": "Mission check station", - "description": "Check what missions you have for the current station", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{_ Mission check station }\r\n{_ Check what missions you have for the current station }\r\n{if missionsCount + goalsCount > 0:\r\n {set current_station to state.eddi_context_body_name}\r\n {set active to 0}\r\n {set claim to 0}\r\n\r\n {if current_station && current_station != \"\":\r\n {for mission in missions:\r\n {if mission.destinationstation = current_station ||\r\n (mission.originstation = current_station && find(mission.invariantTags, \"Delivery\") > -1):\r\n {if mission.status = \"Active\":\r\n {set active to active + 1}\r\n |elif mission.status = \"Claim\":\r\n {set claim to claim + 1}\r\n }\r\n }\r\n }\r\n }\r\n\r\n {if active + claim > 0:\r\n {set description to []}\r\n {if active > 0:\r\n {set activeDescription to:\r\n {active}个待完成的\r\n }\r\n {set description to cat(description, [activeDescription])}\r\n }\r\n {if claim > 0:\r\n {set claimDescription to:\r\n {claim}个可提交的\r\n }\r\n {set description to cat(description, [claimDescription])}\r\n }\r\n \r\n 您在这个站点有 {List(description)}任务.\r\n }\r\n}\r\n", - "default": true + "default": true, + "name": "Mission check station", + "description": "Check what missions you have for the current station" }, "Mission check system": { - "name": "Mission check system", - "description": "Check what missions you have for the current system", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{_ Mission check system }\r\n{_ Check what missions you have for the current system }\r\n\r\n{_ Setup addstation function }\r\n{set addstation(station) to:\r\n {set missions_here to missions_here + 1}\r\n {set station_based to station_based + 1}\r\n {set here to find(stations_here, station)}\r\n {if here > -1:\r\n {if mission.statusEDName = \"Active\":\r\n {set active to stations_active[here] + 1}\r\n {set stations_active to union(stations_active, [here:active])}\r\n |elif mission.statusEDName = \"Claim\":\r\n {set claim to stations_claim[here] + 1}\r\n {set stations_claim to union(stations_claim, [here:claim])}\r\n }\r\n |else:\r\n {set stations_here to cat(stations_here, [station])}\r\n {if mission.statusEDName = \"Active\":\r\n {set stations_active to cat(stations_active, [1])}\r\n {set stations_claim to cat(stations_claim , [0])}\r\n |elif mission.statusEDName = \"Claim\":\r\n {set stations_active to cat(stations_active, [0])}\r\n {set stations_claim to cat(stations_claim , [1])}\r\n }\r\n }\r\n}\r\n\r\n{if missionsCount + goalsCount > 0:\r\n {set missions_here to 0}\r\n {set station_based to 0}\r\n {set stations_active to []}\r\n {set stations_claim to []}\r\n {set stations_here to []}\r\n {set non_stations to []}\r\n\r\n {_ Find all missions in the current system and identify all the stations }\r\n {for mission in missions:\r\n {if mission.status != \"Failed\":\r\n {if mission.destinationsystems:\r\n {for destination in mission.destinationsystems:\r\n {if destination.name = system.name && !destination.visited:\r\n {set missions_here to missions_here + 1}\r\n {if find(mission.invariantTags, \"Transport\") > -1:\r\n {set type to \"运输 \"}\r\n {set type to cat(type, mission.passengertype)}\r\n |else:\r\n {set type to mission.tags[0]}\r\n }\r\n\r\n {if find(non_stations, type) = -1:\r\n {set non_stations to cat(non_stations, [type])}\r\n }\r\n }\r\n }\r\n |elif mission.destinationsystem = system.name:\r\n {if mission.destinationstation && mission.destinationstation != \"\":\r\n {addstation(mission.destinationstation)}\r\n |else:\r\n {if mission.status = \"Active\":\r\n {set missions_here to missions_here + 1}\r\n {if find(mission.invariantTags, \"Transport\") > -1:\r\n {set type to \"Transport \"}\r\n {set type to cat(type, mission.passengertype)}\r\n |else:\r\n {set type to mission.tags[0]}\r\n }\r\n {if find(non_stations, type) = -1:\r\n {set non_stations to cat(non_stations, [type])}\r\n }\r\n }\r\n }\r\n |elif mission.originsystem = system.name && find(mission.invariantTags, \"Delivery\") > -1:\r\n {if mission.originstation && mission.originstation != \"\":\r\n {addstation(mission.originstation)}\r\n }\r\n }\r\n }\r\n }\r\n\r\n {if missions_here > 0:\r\n {set missionSummaries to []}\r\n {set cur to 0}\r\n {for station in stations_here:\r\n {set station to StationDetails(station)}\r\n {set active to stations_active[cur]}\r\n {set claim to stations_claim[cur]}\r\n {set depot to stations_depot[cur]}\r\n\r\n {set summaries to []}\r\n {if active > 0:\r\n {set activeSummary to: \r\n {active}个待完成的任务\r\n }\r\n {set summaries to cat(summaries, [activeSummary])}\r\n }\r\n {if claim > 0:\r\n {set claimSummary to: \r\n {claim}个可提交的任务\r\n }\r\n {set summaries to cat(summaries, [claimSummary])}\r\n }\r\n {if len(summaries) > 0:\r\n {set stationSummary to:\r\n 在 \r\n {Occasionally(2, \" {P(station.model, 'station')}, \")}\r\n {station.name}有{List(summaries)}\r\n }\r\n {set missionSummaries to cat(missionSummaries, [stationSummary])}\r\n }\r\n {set cur to cur + 1}\r\n }\r\n \r\n {set remaining to missions_here - station_based}\r\n {if remaining > 0:\r\n {set otherMissions to:\r\n {remaining} {if len(missionSummaries) > 0: 个其他}任务\r\n \r\n }\r\n {set missionSummaries to cat(missionSummaries, [otherMissions])}\r\n }\r\n\r\n {if len(missionSummaries) > 0:\r\n {Pause(500)}\r\n {OneOf(\"在这里\", \"在这个星系\")}\r\n 您\r\n {List(missionSummaries)}\r\n .\r\n }\r\n }\r\n}", - "default": true + "default": true, + "name": "Mission check system", + "description": "Check what missions you have for the current system" }, "Mission completed": { - "name": "Mission completed", - "description": "Triggered when you complete a mission", "enabled": true, "priority": 3, "responder": true, "script": "{_ Mission completed }\r\n{_ Triggered when you complete a mission }\r\n\r\n{_ Context }\r\n{SetState('eddi_context_last_subject', 'mission')}\r\n{SetState('eddi_context_last_action', 'complete')}\r\n\r\n{set mission to MissionDetails(event.missionid)}\r\n\r\n{if find(mission.invariantTags, \"Transport\") > -1:\r\n {set type to \"运输 \"}\r\n {set type to cat(type, mission.passengertype)}\r\n|else:\r\n {set type to mission.tags[0]}\r\n}\r\n{set type to cat(type, \" 任务\")}\r\n{set ranktype to token(mission.name,\"_\",2)}\r\n{set rewards to []}\r\n\r\n{if find(mission.invariantTags, \"Donation\") > -1:\r\n {if find(mission.invariantTags, \"Credits\") = -1:\r\n {set donated to cat(event.amount, \"吨的 \",event.commodity)}\r\n |else:\r\n {set donated to cat(Humanise(event.donation),\" 点\")}\r\n }\r\n\r\n {OneOf(\"向{Occasionally(2, '充满感激之情的')}{P(mission.faction, 'faction')}捐赠了{Occasionally(2, 'of {donated}')} \",\r\n \"{P(mission.faction, 'faction')} 已经收到了您的捐赠, {Occasionally(2, '{donated}')}\",\r\n \"{P(mission.faction, 'faction')} 感谢您捐赠的{donated}\")}\r\n|elif ranktype = \"RANKEMP\" || ranktype = \"RankEmp\":\r\n 您已经 {OneOf(\"成功完成了帝国的 {type}\",\"成功地完成了帝国的 {type}\")}\r\n|elif ranktype = \"RANKFED\" || ranktype = \"RankFed\":\r\n 您已经 {OneOf(\"成功完成了联邦的 {type}\",\"成功地完成了联邦的 {type}\")}\r\n|elif mission.communal:\r\n 您已经完成社区目标: {mission.localisedname}\r\n|else:\r\n {type} {Occasionally(2, \"成功地\")}被完成了\r\n}\r\n{F(\"Mission faction state\")}.\r\n\r\n{if len(event.permitsawarded) > 0:\r\n {for permit in event.permitsawarded:\r\n {set permitReward to:\r\n 已获得{OneOf(\"进入\", \"访问\")}{P(permit, \"starsystem\")}星系的{OneOf(\"许可证\", \"授权\")}\r\n }\r\n {set rewards to cat(rewards, [permitReward])}\r\n }\r\n}\r\n\r\n{if len(event.commodityrewards) > 0:\r\n {for commodity in event.commodityrewards:\r\n {set commodityReward to:\r\n {commodity.amount}\r\n 吨\r\n {commodity.commodity}\r\n }\r\n {set rewards to cat(rewards, [commodityReward])}\r\n }\r\n}\r\n\r\n{if len(event.materialsrewards) > 0:\r\n {for material in event.materialsrewards:\r\n {set materialReward to:\r\n {material.amount}\r\n 个 \r\n {material.material}\r\n }\r\n {set rewards to cat(rewards, [materialReward])}\r\n }\r\n}\r\n\r\n{if len(event.microresourcerewards) > 0:\r\n {for microresource in event.microresourcerewards:\r\n {set microresourceReward to:\r\n {microresource.amount}\r\n 个 \r\n {microresource.name}\r\n }\r\n {set rewards to cat(rewards, [microresourceReward])}\r\n }\r\n}\r\n\r\n{if event.reward > 0:\r\n {set creditReward to: {event.reward} 信用点 }\r\n {set rewards to cat(rewards, [creditReward])}\r\n}\r\n\r\n{if len(rewards) > 0:\r\n 您 \r\n {if event.faction:\r\n {Occasionally(3, '从 {P(event.faction, \"faction\")}处')}\r\n } \r\n {OneOf('收到了','被奖励了')} {List(rewards)}\r\n.\r\n}\r\n\r\n{_ Update to next system in route if conditions met _}\r\n{Pause(1000)}\r\n{set next_system to RouteDetails(\"update\")}", - "default": true + "default": true, + "name": "Mission completed", + "description": "Triggered when you complete a mission" }, "Mission expired": { - "name": "Mission expired", - "description": "Triggered when a mission has expired", "enabled": true, "priority": 3, "responder": true, "script": "{_ Mission expired }\r\n{_ Triggered when a mission has expired }\r\n\r\n{_ Context }\r\n{SetState('eddi_context_last_subject', 'mission')}\r\n{SetState('eddi_context_last_action', 'expired')}\r\n\r\n{set mission to MissionDetails(event.missionid)}\r\n\r\n{if find(mission.invariantTags, \"Transport\") > -1:\r\n {set type to \"运输 \"}\r\n {set type to cat(type, mission.passengertype)}\r\n|else:\r\n {set type to mission.tags[0]}\r\n}\r\n{set type to cat(type, \" 任务\")}\r\n\r\n{if mission.faction: {P(mission.faction, \"faction\")}的}{type} 已过期.\r\n{if mission.commodity:\r\n {for cargo in inventory:\r\n {if cargo.name = mission.commodity && cargo.haulage > 0:\r\n 所有与任务相关的物品将被标记为被盗.\r\n }\r\n }\r\n}", - "default": true + "default": true, + "name": "Mission expired", + "description": "Triggered when a mission has expired" }, "Mission faction state": { - "name": "Mission faction state", - "description": "Report the faction state", "enabled": true, "priority": null, "responder": false, - "script": "{_ Mission faction state _}\r\n{_ Report the faction state _}\r\n\r\n\r\n{set opening to cat(OneOf(\"正在\",\"正处于\"))}\r\n{set endinging to cat(\"的\", OneOf(\"时期\",\"阶段\"))}\r\n{set state to mission.FactionState.invariantName}\r\n\r\n{if state = \"Boom\":\r\n {opening} {OneOf(\"商业成功\",\"经济繁荣\")}{endinging}.\r\n|elif state = \"Bust\":\r\n {opening} {OneOf(\"经济衰退\",\"大萧条\",\"经济下行\")}{endinging}.\r\n|elif state = \"CivilLiberty\":\r\n {opening} 高公民自由度{endinging}.\r\n|elif state = \"CivilUnrest\":\r\n {opening} {OneOf(\"内乱\",\"内部斗争\")}{endinging}.\r\n|elif state = \"CivilWar\":\r\n {opening} {OneOf(\"内战\",\"内部武装斗争\")}{endinging}.\r\n|elif state = \"Election\":\r\n {opening} {OneOf(\"选举\",\"票选\")} 新 {OneOf(\"领袖\",\"领导人\")}{endinging}.\r\n|elif state = \"Expansion\":\r\n {opening} 尝试向相邻 {OneOf(\"星系\",\"主权领空\")}武装扩张{endinging}.\r\n|elif state = \"Famine\":\r\n {opening} {OneOf(\"饥荒\",\"食物短缺\")}{endinging}.\r\n|elif state = \"Incursion\":\r\n {opening} 八角 {OneOf(\"入侵\",\"暴力接触\")}{endinging}.\r\n|elif state = \"Investment\":\r\n {opening} 大基建{endinging}.\r\n|elif state = \"Lockdown\":\r\n {opening} {OneOf(\"封锁\",\"致力于提升安全度\")}{endinging}.\r\n|elif state = \"Outbreak\":\r\n {opening} {OneOf(\"疫情爆发\",\"医学紧急情况\")}{endinging}.\r\n|elif state = \"Retreat\":\r\n {opening} 从邻近 {OneOf(\"星系\",\"主权领空\")}撤离{endinging}.\r\n|elif state = \"War\":\r\n {opening} {OneOf(\"战争\",\"武力冲突\")}{endinging}.\r\n}", - "default": true + "script": "{_ Mission faction state _}\r\n{_ Report the faction state _}\r\n\r\n\r\n{set opening to cat(OneOf(\"正在\",\"正处于\"))}\r\n{set endinging to cat(\"的\", OneOf(\"时期\",\"阶段\"))}\r\n{set state to mission.FactionState.invariantName}\r\n\r\n{if state = \"Boom\":\r\n {opening} {OneOf(\"商业成功\",\"经济繁荣\")}{endinging}.\r\n|elif state = \"Bust\":\r\n {opening} {OneOf(\"经济衰退\",\"大萧条\",\"经济下行\")}{endinging}.\r\n|elif state = \"CivilLiberty\":\r\n {opening} 高公民自由度{endinging}.\r\n|elif state = \"CivilUnrest\":\r\n {opening} {OneOf(\"内乱\",\"内部斗争\")}{endinging}.\r\n|elif state = \"CivilWar\":\r\n {opening} {OneOf(\"内战\",\"内部武装斗争\")}{endinging}.\r\n|elif state = \"Election\":\r\n {opening} {OneOf(\"选举\",\"票选\")} 新 {OneOf(\"领袖\",\"领导人\")}{endinging}.\r\n|elif state = \"Expansion\":\r\n {opening} 尝试向相邻 {OneOf(\"星系\",\"主权领空\")}武装扩张{endinging}.\r\n|elif state = \"Famine\":\r\n {opening} {OneOf(\"饥荒\",\"食物短缺\")}{endinging}.\r\n|elif state = \"Incursion\":\r\n {opening} 八角 {OneOf(\"入侵\",\"暴力接触\")}{endinging}.\r\n|elif state = \"Investment\":\r\n {opening} 大基建{endinging}.\r\n|elif state = \"Lockdown\":\r\n {opening} {OneOf(\"封锁\",\"致力于提升安全度\")}{endinging}.\r\n|elif state = \"Outbreak\":\r\n {opening} {OneOf(\"疫情爆发\",\"医学紧急情况\")}{endinging}.\r\n|elif state = \"Retreat\":\r\n {opening} 从邻近 {OneOf(\"星系\",\"主权领空\")}撤离{endinging}.\r\n|elif state = \"War\":\r\n {opening} {OneOf(\"战争\",\"武力冲突\")}{endinging}.\r\n}","default": true, + "name": "Mission faction state", + "description": "Report the faction state" }, "Mission failed": { - "name": "Mission failed", - "description": "Triggered when you fail a mission", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'mission')}\r\n{SetState('eddi_context_last_action', 'fail')}\r\n\r\n\r\n{set mission to MissionDetails(event.missionid)}\r\n\r\n{if find(mission.invariantTags, \"Transport\") > -1:\r\n {set type to \"运输 \"}\r\n {set type to cat(type, mission.passengertype)}\r\n|else:\r\n {set type to mission.tags[0]}\r\n}\r\n{set type to cat(type, \" 任务\")}\r\n\r\n{OneOf(\"{if mission.faction: for {P(mission.faction, 'faction')}提供的} {type} 已失败\", \r\n \"你搞砸了 {if mission.faction: for {P(mission.faction, 'faction')}提供的} {type}\")}.\r\n\r\n\r\n\r\n", - "default": true + "default": true, + "name": "Mission failed", + "description": "Triggered when you fail a mission" }, "Mission redirected": { - "name": "Mission redirected", - "description": "Triggered when a mission is redirected", "enabled": true, "priority": 3, "responder": true, "script": "{_ Mission redirected }\r\n{_ Triggered when a mission is redirected }\r\n\r\n{set redirected_from to cat(event.olddestinationsystem,\"_\",event.olddestinationstation)}\r\n{set redirected_to to cat(event.newdestinationsystem,\"_\",event.newdestinationstation)}\r\n\r\n{if state.eddi_context_last_subject = 'mission' \r\n && state.eddi_context_last_action = 'redirected' \r\n && state.eddi_context_redirected_mission = event.name\r\n && state.eddi_context_redirected_from = redirected_from \r\n && state.eddi_context_redirected_to = redirected_to:\r\n {_ Duplicate from stacked similar mission, do nothing }\r\n|else:\r\n {_ Context }\r\n {SetState('eddi_context_last_subject', 'mission')}\r\n {SetState('eddi_context_last_action', 'redirected')}\r\n {SetState('eddi_context_redirected_mission', event.name)}\r\n {SetState('eddi_context_redirected_from', cat(event.olddestinationsystem,\"_\",event.olddestinationstation))}\r\n {SetState('eddi_context_redirected_to', cat(event.newdestinationsystem,\"_\",event.newdestinationstation))}\r\n \r\n {set mission to MissionDetails(event.missionid)}\r\n\r\n {if find(mission.invariantTags, \"Transport\") > -1:\r\n {set type to \"运输 \"}\r\n {set type to cat(type, mission.passengertype)}\r\n |else:\r\n {set type to mission.tags[0]}\r\n }\r\n {set type to cat(type, \" 任务\")}\r\n\r\n {if mission.status = \"Claim\" && mission.destinationsystem = mission.originsystem:\r\n {type} {Occasionally(2, \"需求\")} 已完成.\r\n 重定向到任务来源地.\r\n |elif mission.destinations:\r\n 系列 {type} 重定向到 {P(event.newdestinationsystem, \"starsystem\")} 星系.\r\n |else:\r\n {type} 重定向到 \r\n {if event.newdestinationstation:\r\n {P(event.newdestinationsystem, \"starsystem\")} 星系中的\r\n {P(event.newdestinationstation, \"station\")}. \r\n |else:\r\n {P(event.newdestinationsystem, \"starsystem\")} 星系.\r\n }\r\n }\r\n}", - "default": true + "default": true, + "name": "Mission redirected", + "description": "Triggered when a mission is redirected" }, "Mission report": { - "name": "Mission report", - "description": "Report the current mission log", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{_ Mission report }\r\n{_ Report the current mission log }\r\n\r\n\r\n{set mission_report to true}\r\n{F(\"Mission check galaxy\")}\r\n", - "default": true + "default": true, + "name": "Mission report", + "description": "Report the current mission log" }, "Mission warning": { - "name": "Mission warning", - "description": "Triggered when a mission is about to expire, based on a set threshold", "enabled": true, "priority": 3, "responder": true, "script": "{_ Mission warning }\r\n{_ Triggered when a mission is about to expire, based on a set threshold }\r\n\r\n{_ Context }\r\n{SetState('eddi_context_last_subject', 'mission')}\r\n{SetState('eddi_context_last_action', 'warning')}\r\n\r\n{set mission to MissionDetails(event.missionid)}\r\n\r\n{if find(mission.invariantTags, \"Transport\") > -1:\r\n {set type to \"运输 \"}\r\n {set type to cat(type, mission.passengertype)}\r\n|else:\r\n {set type to mission.tags[0]}\r\n}\r\n{set type to cat(type, \" 任务\")}\r\n\r\n警告: {if mission.faction: for {P(mission.faction, \"faction\")}提供的} {type} 将在 {event.remaining} 分钟后过期.", - "default": true + "default": true, + "name": "Mission warning", + "description": "Triggered when a mission is about to expire, based on a set threshold" }, "Missions": { - "name": "Missions", - "description": "Triggered at startup, with basic information of the Mission Log", "enabled": true, "priority": 3, "responder": true, "script": "{_ Missions }\r\n{_ Triggered at startup, with basic information of the Mission Log }\r\n\r\n{F(\"Mission check galaxy\")}", - "default": true + "default": true, + "name": "Missions", + "description": "Triggered at startup, with basic information of the Mission Log" }, "Modification crafted": { - "name": "Modification crafted", - "description": "Triggered when you craft a modification to a module", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Modification crafted", + "description": "Triggered when you craft a modification to a module" }, "Module arrived": { - "name": "Module arrived", - "description": "Triggered when you complete a module transfer", "enabled": true, "priority": 3, "responder": true, "script": "{Occasionally(2, '{F(\\'Honorific\\')}, ')}\r\n您的 {event.module.name} 已经\r\n\r\n{OneOf(' 送到了{if station.name != event.station && event.station: }', \r\n '被成功运送到了 {if station.name != event.station && event.station:}')}\r\n\r\n{if station.name != event.station && event.station:\r\n {P(event.station, \"station\")}\r\n {if system.name != event.system && event.system:\r\n {P(event.system, \"starsystem\")} 星系\r\n }\r\n}.", - "default": true + "default": true, + "name": "Module arrived", + "description": "Triggered when you complete a module transfer" }, "Module info": { - "name": "Module info", - "description": "Triggered when a ModulesInfo.json file is generated/updated", "enabled": true, "priority": 3, "responder": true, "script": "{_ This event updates `ship` module information: position, power, & priority _}", - "default": true + "default": true, + "name": "Module info", + "description": "Triggered when a ModulesInfo.json file is generated/updated" }, "Module purchased": { - "name": "Module purchased", - "description": "Triggered when you purchase a module in outfitting", "enabled": true, "priority": 3, "responder": true, "script": "您花费{Humanise(event.buyprice)} 信用点购买了一个\r\n{if icao_active:\r\n {event.buymodule.class} {ICAO(event.buymodule.grade)}级的\r\n|else:\r\n {Spacialise(cat(event.buymodule.class, event.buymodule.grade))}级的\r\n}\r\n\r\n{if type(event.buymodule.mount) != \"void\":\r\n {for index, value in event.buymodule.mount: {set mount to value}}\r\n {if mount = 0:\r\n 固定式的\r\n |elif mount = 1:\r\n 自稳定的\r\n |elif mount = 2:\r\n 炮塔版的\r\n }\r\n}\r\n{event.buymodule.name}\r\n\r\n{if type(event.sellmodule) != \"void\":\r\n , 并且以{Humanise(event.sellprice)} 信用点卖掉了一个\r\n {if icao_active:\r\n {event.sellmodule.class} {ICAO(event.sellmodule.grade)}级的\r\n |else:\r\n {Spacialise(cat(event.sellmodule.class, event.sellmodule.grade))}级的\r\n }\r\n\r\n {if type(event.sellmodule.mount) != \"void\":\r\n {for index, value in event.sellmodule.mount: {set mount to value}}\r\n {if mount = 0:\r\n 固定式的\r\n |elif mount = 1:\r\n 自稳定的\r\n |elif mount = 2:\r\n 炮塔版的\r\n }\r\n }\r\n {event.sellmodule.name} \r\n\r\n|elif type(event.storedmodule) != \"void\":\r\n , 并且储存了\r\n {if icao_active:\r\n {event.storedmodule.class} {ICAO(event.storedmodule.grade)}级的\r\n |else:\r\n {Spacialise(cat(event.storedmodule.class, event.storedmodule.grade))}级的\r\n }\r\n\r\n {if type(event.storedmodule.mount) != \"void\":\r\n {for index, value in event.storedmodule.mount: {set mount to value}}\r\n {if mount = 0:\r\n 固定式的\r\n |elif mount = 1:\r\n 自稳定的\r\n |elif mount = 2:\r\n 炮塔版的\r\n }\r\n }\r\n {event.storedmodule.name}\r\n}.\r\n\r\n", - "default": true + "default": true, + "name": "Module purchased", + "description": "Triggered when you purchase a module in outfitting" }, "Module retrieved": { - "name": "Module retrieved", - "description": "Triggered when you fetch a previously stored module", "enabled": true, "priority": 3, "responder": true, "script": "您从库存中取得了一个 \r\n{if icao_active:\r\n {event.module.class} {ICAO(event.module.grade)}级的\r\n|else:\r\n {Spacialise(cat(event.module.class, event.module.grade))}级的\r\n}\r\n\r\n\r\n{if type(event.module.mount) != \"void\":\r\n {for index, value in event.module.mount: {set mount to value}}\r\n {if mount = 0:\r\n 固定式的\r\n |elif mount = 1:\r\n 自稳定的\r\n |elif mount = 2:\r\n 炮塔版的\r\n }\r\n}\r\n\r\n{event.module.name}\r\n\r\n{if type(event.swapoutmodule) != \"void\":\r\n ,并且储存了一个 \r\n {if icao_active:\r\n {event.swapoutmodule.class} {ICAO(event.swapoutmodule.grade)}级的\r\n |else:\r\n {Spacialise(cat(event.swapoutmodule.class, event.swapoutmodule.grade))}级的\r\n }\r\n {if type(event.swapoutmodule.mount) != \"void\":\r\n {for index, value in event.swapoutmodule.mount: {set mount to value}}\r\n {if mount = 0:\r\n 固定式的\r\n |elif mount = 1:\r\n 自稳定的\r\n |elif mount = 2:\r\n 炮塔版的\r\n }\r\n }\r\n {event.swapoutmodule.name}\r\n}\r\n\r\n{if type(event.cost) != \"void\": 这花费了您 {event.cost}信用点}\r\n.", - "default": true + "default": true, + "name": "Module retrieved", + "description": "Triggered when you fetch a previously stored module" }, "Module sold": { - "name": "Module sold", - "description": "Triggered when selling a module to outfitting", "enabled": true, "priority": 3, "responder": true, "script": "您以{Humanise(event.price)} 点的价格卖掉了一个\r\n{if icao_active:\r\n {event.module.class} {ICAO(event.module.grade)}级的\r\n|else:\r\n {Spacialise(cat(event.module.class, event.module.grade))}级的\r\n}\r\n\r\n{if type(event.module.mount) != \"void\":\r\n {for index, value in event.module.mount: {set mount to value}}\r\n {if mount = 0:\r\n 固定式的\r\n |elif mount = 1:\r\n 自稳定的\r\n |elif mount = 2:\r\n 炮塔版的\r\n }\r\n}\r\n\r\n{event.module.name} .", - "default": true + "default": true, + "name": "Module sold", + "description": "Triggered when selling a module to outfitting" }, "Module sold from storage": { - "name": "Module sold from storage", - "description": "Triggered when selling a module from storage", "enabled": true, "priority": 3, "responder": true, "script": "您从库存中以{Humanise(event.price)}点的价格卖掉了一个\r\n{if icao_active:\r\n {event.module.class} {ICAO(event.module.grade)}级的\r\n|else:\r\n {Spacialise(cat(event.module.class, event.module.grade))}级的\r\n}\r\n\r\n{if type(event.module.mount) != \"void\":\r\n {for index, value in event.module.mount: {set mount to value}}\r\n {if mount = 0:\r\n 固定式的\r\n |elif mount = 1:\r\n 自稳定的\r\n |elif mount = 2:\r\n 炮塔版的\r\n }\r\n}\r\n\r\n{event.module.name} .", - "default": true + "default": true, + "name": "Module sold from storage", + "description": "Triggered when selling a module from storage" }, "Module stored": { - "name": "Module stored", - "description": "Triggered when you store a module", "enabled": true, "priority": 3, "responder": true, "script": "您储存了一个 \r\n{if icao_active:\r\n {event.module.class} {ICAO(event.module.grade)}级的\r\n|else:\r\n {Spacialise(cat(event.module.class, event.module.grade))}级的\r\n}\r\n\r\n{if type(event.module.mount) != \"void\":\r\n {for index, value in event.module.mount: {set mount to value}}\r\n {if mount = 0:\r\n 固定式的\r\n |elif mount = 1:\r\n 自稳定的\r\n |elif mount = 2:\r\n 炮塔版的\r\n }\r\n}\r\n\r\n{event.module.name}\r\n\r\n{if type(event.cost) != \"void\": 这花费了 {event.cost} 信用点}.", - "default": true + "default": true, + "name": "Module stored", + "description": "Triggered when you store a module" }, "Module swapped": { - "name": "Module swapped", - "description": "Triggered when modules are swapped between slots on the ship", "enabled": true, "priority": 3, "responder": true, "script": "您将\r\n{if icao_active:\r\n {event.frommodule.class} {ICAO(event.frommodule.grade)}级的\r\n|else:\r\n {Spacialise(cat(event.frommodule.class, event.frommodule.grade))}级的\r\n}\r\n\r\n{if type(event.frommodule.mount) != \"void\":\r\n {for index, value in event.frommodule.mount: {set mount to value}}\r\n {if mount = 0:\r\n 固定式的\r\n |elif mount = 1:\r\n 自稳定的\r\n |elif mount = 2:\r\n 炮塔版的\r\n }\r\n}\r\n\r\n{event.frommodule.name} 与\r\n\r\n{if event.tomodule:\r\n \r\n {if icao_active:\r\n {event.tomodule.class} {ICAO(event.tomodule.grade)}级的\r\n |else:\r\n {Spacialise(cat(event.tomodule.class, event.tomodule.grade))}级的\r\n }\r\n {if type(event.tomodule.mount) != \"void\":\r\n {for index, value in event.tomodule.mount: {set mount to value}}\r\n {if mount = 0:\r\n 固定式的\r\n |elif mount = 1:\r\n 自稳定的\r\n |elif mount = 2:\r\n 炮塔版的\r\n }\r\n }\r\n {event.tomodule.name}进行了交换.\r\n|else: \r\n 一个空槽位进行了交换.\r\n}", - "default": true + "default": true, + "name": "Module swapped", + "description": "Triggered when modules are swapped between slots on the ship" }, "Module transfer": { - "name": "Module transfer", - "description": "Triggered when you transfer a module from storage at another station", "enabled": true, "priority": 3, "responder": true, "script": "您向此处快递了一个 \r\n{if icao_active:\r\n {event.module.class} {ICAO(event.module.grade)}级的\r\n|else:\r\n {Spacialise(cat(event.module.class, event.module.grade))}级的\r\n}\r\n\r\n{if event.module.mount:\r\n {for index, value in event.module.mount: {set mount to value}}\r\n {if mount = 0:\r\n 固定式的\r\n |elif mount = 1:\r\n 自稳定的\r\n |elif mount = 2:\r\n 炮塔版的\r\n }\r\n}\r\n\r\n{event.module.name} \r\n\r\n{if event.transfercost: ,这花费了您 {event.transfercost} 信用点}.\r\n\r\n{set t_remaining to event.transfertime}\r\n\r\n{if t_remaining:\r\n\r\n {Pause(500)}\r\n 预期将于\r\n\r\n {if t_remaining > (60*60*24):\r\n {set t_days to floor(t_remaining/(60*60*24))}\r\n {t_days} 天\r\n {set t_remaining to t_remaining-(t_days*(60*60*24))}\r\n }\r\n\r\n {if t_remaining > 3600:\r\n {set t_hours to floor(t_remaining/3600)}\r\n {t_hours} 小时\r\n {set t_remaining to t_remaining-(t_hours*(60*60))}\r\n }\r\n\r\n {if t_remaining > 60:\r\n {if t_days || t_hours: }\r\n {set t_minutes to round(t_remaining/(60),0)}\r\n {t_minutes} 分钟\r\n }后到达.\r\n}", - "default": true + "default": true, + "name": "Module transfer", + "description": "Triggered when you transfer a module from storage at another station" }, "Modules stored": { - "name": "Modules stored", - "description": "Triggered when you store multiple modules", "enabled": true, "priority": 3, "responder": true, "script": "您储存了下列组件:\r\n\r\n{for module in event.modules:\r\n {if icao_active:\r\n {module.class} {ICAO(module.grade)}级的\r\n |else:\r\n {Spacialise(cat(module.class, module.grade))}级的\r\n }\r\n {if type(module.mount) != \"void\":\r\n {for index, value in module.mount: {set mount to value}}\r\n {if mount = 0:\r\n 固定式的\r\n |elif mount = 1:\r\n 自稳定的\r\n |elif mount = 2:\r\n 炮塔版的\r\n }\r\n }\r\n {module.name}.\r\n {Pause(400)}\r\n}", - "default": true + "default": true, + "name": "Modules stored", + "description": "Triggered when you store multiple modules" }, "Music": { - "name": "Music", - "description": "Triggered when the game music 'mood' changes", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Music", + "description": "Triggered when the game music 'mood' changes" }, "Nav beacon scan": { - "name": "Nav beacon scan", - "description": "Triggered when you scan a nav beacon, before the scan data for all the bodies in the system is written into the journal", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context _}\r\n{SetState('eddi_context_last_subject', 'nav beacon')}\r\n{SetState('eddi_context_last_action', 'scan')}\r\n{SetState('eddi_context_star_system', system.name)}\r\n{SetState('eddi_context_nav_scans', event.numbodies)}\r\n\r\n{set nav to OneOf(\"导航\", \"航路\")}\r\n{set beacon to OneOf(\"信标\", \"球\")}\r\n{OneOf(\"这个 {nav} {beacon} 已经把本星系中 {event.numbodies} 个天体的详情传输给我了.\",\r\n \"我从这个{nav} {beacon}中收到了这个星系中 {event.numbodies}个天体的信息.\")}\r\n\r\n{Pause(500)}", - "default": true + "default": true, + "name": "Nav beacon scan", + "description": "Triggered when you scan a nav beacon, before the scan data for all the bodies in the system is written into the journal" }, "Nav route": { - "name": "Nav route", - "description": "Triggered when the navigation route is updated", "enabled": true, "priority": 3, "responder": true, "script": "{_ Set to 0 to disable or set to 1 to enable optional parameters }\r\n{set reportDestination to 0}\r\n{set reportDistance to 0}\r\n{set reportJumps to 0}\r\n\r\n{_ Set optional details text from optional parameter values }\r\n{set details to []}\r\n{if reportJumps:\r\n {set jumpDesc to: {event.jumps} {if event.jumps > 1: jumps |else: jump } }\r\n {set details to cat(details, [jumpDesc])}\r\n}\r\n{if reportDistance:\r\n {set distance to round(event.distance, 1)}\r\n {if distance = 1:\r\n {set distanceDesc to: {distance} 光年} \r\n |else:\r\n {set distanceDesc to: {distance} 光年}\r\n }\r\n {set details to cat(details, [distanceDesc])}\r\n}\r\n\r\n{_ Begin speaking }\r\n{if event.jumps > 0:\r\n {if reportDestination:\r\n 到 {P(event.route[event.jumps].systemname)}{if len(details) > 0:,}\r\n }的航线已{OneOf(\"被绘制完成\", \"经设置好\", \"设定\", \"被标定\")},\r\n {if len(details) > 0:\r\n 还有{List(details)} {OneOf(\"路程\", \"{if event.jumps > 1 || reportDistance: 剩余 |else: 剩余 }\")}\r\n }.\r\n}", - "default": true + "default": true, + "name": "Nav route", + "description": "Triggered when the navigation route is updated" }, "Near bookmark": { - "name": "Near bookmark", - "description": "Triggered when entering or departing the nearby radius of a bookmark", "enabled": true, "priority": 3, "responder": true, "script": "{if event.near:\r\n 已到达 \r\n|else:\r\n 正在离开\r\n}\r\n{if event.poi:\r\n {P(event.poi, 'station')}.\r\n|else:\r\n 书签位置.\r\n}", - "default": true + "default": true, + "name": "Near bookmark", + "description": "Triggered when entering or departing the nearby radius of a bookmark" }, "Near surface": { - "name": "Near surface", - "description": "Triggered when you enter or depart orbit around a surface", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Near surface", + "description": "Triggered when you enter or depart orbit around a surface" }, "Next destination": { - "name": "Next destination", - "description": "Triggered when selecting an in-system destination", "enabled": false, "priority": 3, "responder": true, "script": "{OneOf(\"现在的目的地是\", \"正在前往\")}\r\n{if event.isBody:\r\n\t{set reportBody to BodyDetails(event.name)}\r\n {reportBody.bodytype} {P(reportBody.shortname, 'body')}\r\n|elif event.isStation:\r\n {if event.localizedName: \r\n {event.localizedName} \r\n |else: \r\n {P(event.name, 'station')}\r\n }\r\n|else:\r\n {if event.localizedName: \r\n {event.localizedName} \r\n |else: \r\n {event.name}\r\n }\r\n}.", - "default": true + "default": true, + "name": "Next destination", + "description": "Triggered when selecting an in-system destination" }, "Next jump": { - "name": "Next jump", - "description": "Triggered when selecting a star system to jump to", "enabled": true, "priority": 3, "responder": true, "script": "{_ Next jump }\r\n{_ Triggered when selecting a star system to jump to }\r\n\r\n\r\n{_ Context }\r\n{SetState('eddi_context_remaining_jumps', event.remainingjumpsinroute)}\r\n{SetState('eddi_context_selected_system_name', event.system)}", - "default": true + "default": true, + "name": "Next jump", + "description": "Triggered when selecting a star system to jump to" }, "NPC attack commenced": { - "name": "NPC attack commenced", - "description": "Triggered when an attack on your ship by an NPC is detected", "enabled": true, "priority": 3, "responder": true, "script": "警告:检测到来自 \r\n{if event.by:\r\n {event.by} \r\n}\r\n的攻击.", - "default": true + "default": true, + "name": "NPC attack commenced", + "description": "Triggered when an attack on your ship by an NPC is detected" }, "NPC cargo scan commenced": { - "name": "NPC cargo scan commenced", - "description": "Triggered when a cargo scan on your ship by an NPC is detected", "enabled": true, "priority": 3, "responder": true, "script": "{_ See if we are carrying non-limpet cargo}\r\n{set carryingvaluablecargo to 0}\r\n{for cargo in ship.cargo:\r\n {if cargo.commodity != 'Limpet':\r\n {set carryingvaluablecargo to 1}\r\n }\r\n}\r\n\r\n{if carryingvaluablecargo = 1:\r\n 请注意:检测到\r\n {if event.by:\r\n by {event.by} \r\n }\r\n {OneOf(\"正在扫描我们的货仓\",\"的货仓扫描\")}.\r\n}\r\n", - "default": true + "default": true, + "name": "NPC cargo scan commenced", + "description": "Triggered when a cargo scan on your ship by an NPC is detected" }, "NPC interdiction commenced": { - "name": "NPC interdiction commenced", - "description": "Triggered when an interdiction attempt on your ship by an NPC is detected", "enabled": true, "priority": 3, "responder": true, "script": "警告:检测到来自\r\n{if event.by:\r\n by {event.by} \r\n}\r\n的超巡拦截!请立即查看信息!\r\n\r\n{Occasionally(3, \"视情况选择遵从或逃脱.\")}", - "default": true + "default": true, + "name": "NPC interdiction commenced", + "description": "Triggered when an interdiction attempt on your ship by an NPC is detected" }, "Passengers": { - "name": "Passengers", - "description": "Triggered at session start from Passengers event", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Passengers", + "description": "Triggered at session start from Passengers event" }, "Permit acquired": { - "name": "Permit acquired", - "description": "Triggered when you acquire a permit from the mission board", "enabled": true, "priority": 3, "responder": true, "script": "{event.faction} 已经授予您新的许可.", - "default": true + "default": true, + "name": "Permit acquired", + "description": "Triggered when you acquire a permit from the mission board" }, "Power commodity delivered": { - "name": "Power commodity delivered", - "description": "Triggered when a commander delivers a commodity to a power", "enabled": true, "priority": 3, "responder": true, "script": "{Occasionally(2, \"为{P(event.power, 'power')}搜集的\")}{event.amount} 个 {event.commodity}被送达.", - "default": true + "default": true, + "name": "Power commodity delivered", + "description": "Triggered when a commander delivers a commodity to a power" }, "Power commodity fast tracked": { - "name": "Power commodity fast tracked", - "description": "Triggered when a commander fast tracks a commodity of a power", "enabled": true, "priority": 3, "responder": true, "script": "花费了{event.amount}信用点, 用于 {Occasionally(2, \"向 {P(event.power, 'power')}\")}快速追踪货物 .", - "default": true + "default": true, + "name": "Power commodity fast tracked", + "description": "Triggered when a commander fast tracks a commodity of a power" }, "Power commodity obtained": { - "name": "Power commodity obtained", - "description": "Triggered when a commander obtains a commodity from a power", "enabled": true, "priority": 3, "responder": true, "script": "已获取{event.amount}个{event.commodity}, {Occasionally(2, \"可用以向 {P(event.power, 'power')}提供\")}.", - "default": true + "default": true, + "name": "Power commodity obtained", + "description": "Triggered when a commander obtains a commodity from a power" }, "Power defected": { - "name": "Power defected", - "description": "Triggered when you defect from one power to another", "enabled": true, "priority": 3, "responder": true, "script": "您以选择背叛 {P(event.frompower, \"power\")} ,转而投靠 {P(event.topower, \"power\")}.", - "default": true + "default": true, + "name": "Power defected", + "description": "Triggered when you defect from one power to another" }, "Power expansion vote cast": { - "name": "Power expansion vote cast", - "description": "Triggered when a commander votes for system expansion", "enabled": true, "priority": 3, "responder": true, "script": "投票\r\n{OneOf(\"被接受\", \"被登记\")}.", - "default": true + "default": true, + "name": "Power expansion vote cast", + "description": "Triggered when a commander votes for system expansion" }, "Power joined": { - "name": "Power joined", - "description": "Triggered when you join a power", "enabled": true, "priority": 3, "responder": true, "script": "您已投靠 {P(event.power, \"power\")}.", - "default": true + "default": true, + "name": "Power joined", + "description": "Triggered when you join a power" }, "Power left": { - "name": "Power left", - "description": "Triggered when you leave a power", "enabled": true, "priority": 3, "responder": true, "script": "您已离开 {P(event.power, \"power\")}的势力.", - "default": true + "default": true, + "name": "Power left", + "description": "Triggered when you leave a power" }, "Power preparation vote cast": { - "name": "Power preparation vote cast", - "description": "Triggered when a commander votes for system preparation", "enabled": true, "priority": 3, "responder": true, "script": "投票\r\n{OneOf(\"被接受\", \"被登记\")}.", - "default": true + "default": true, + "name": "Power preparation vote cast", + "description": "Triggered when a commander votes for system preparation" }, "Power salary claimed": { - "name": "Power salary claimed", - "description": "Triggered when a commander claims salary from a power", "enabled": true, "priority": 3, "responder": true, "script": "已领取{Occasionally(2, \" {P(event.power, 'power')发的}\")}政治势力周薪, 共计 {event.amount} 信用点 .", - "default": true + "default": true, + "name": "Power salary claimed", + "description": "Triggered when a commander claims salary from a power" }, "Power voucher received": { - "name": "Power voucher received", - "description": "Triggered when a commander turns in combat vouchers against an opposing power", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Power voucher received", + "description": "Triggered when a commander turns in combat vouchers against an opposing power" }, "Powerplay": { - "name": "Powerplay", - "description": "Triggered periodically when pledged to a power", "enabled": true, "priority": 3, "responder": true, "script": "您在 {P(event.power, \"power\")}的麾下. \r\n您已经为其服务了 \r\n{if event.timepledgedweeks > 1:\r\n {event.timepledgedweeks} 周 \r\n|elif event.timepledgedweeks = 1:\r\n 一周 \r\n|elif event.timepledgeddays > 1:\r\n {event.timepledgeddays} 天\r\n|elif event.timepledgeddays = 1:\r\n 天\r\n|else:\r\n 不到一天\r\n}\r\n,您目前的阶级为 {event.rank}级 , \r\n{if event.merits > 0:\r\n 拥有{event.merits}\r\n|else:\r\n 没有\r\n}\r\nMerits点数.\r\n", - "default": true + "default": true, + "name": "Powerplay", + "description": "Triggered periodically when pledged to a power" }, "Repair drone": { - "name": "Repair drone", - "description": "Triggered when your ship is repaired via a repair limpet controller", "enabled": true, "priority": 3, "responder": true, "script": "{set systemsrepaired to []}\r\n\r\n{if event.hull:\r\n {set systemsrepaired to cat(systemsrepaired, [\"船体\"])} \r\n}\r\n{if event.cockpit:\r\n {set systemsrepaired to cat(systemsrepaired, [\"驾驶舱\"])} \r\n}\r\n{if event.corrosion:\r\n {set systemsrepaired to cat(systemsrepaired, [OneOf(\"被腐蚀的系统\", \"被腐蚀影响的系统\")])} \r\n}\r\n\r\n{if len(systemsrepaired) > 0:\r\n\r\n {set remote to Occasionally(2, \"遥控\")}\r\n {set sequence to OneOf(\"程序\", \"进程\")}\r\n {OneOf(\r\n \"无人机已经完成了{remote}任务:修理\", \r\n \"{remote} {sequence} 完成, 已修理\"\r\n )}\r\n\r\n {set cur to 0}\r\n {while cur < len(systemsrepaired):\r\n {if cur = 0:\r\n |elif cur < len(systemsrepaired) - 1:\r\n , \r\n |else:\r\n 和\r\n }\r\n {systemsrepaired[cur]}\r\n {set cur to cur + 1}\r\n }\r\n}.\r\n", - "default": true + "default": true, + "name": "Repair drone", + "description": "Triggered when your ship is repaired via a repair limpet controller" }, "Repeat last speech": { - "name": "Repeat last speech", - "description": "Repeat the last thing said", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{state.eddi_context_last_speech}", - "default": true + "default": true, + "name": "Repeat last speech", + "description": "Repeat the last thing said" }, "Report last scan value": { - "name": "Report last scan value", - "description": "Report the estimated value of the last body scanned", "enabled": true, "priority": null, "responder": false, "script": "{_ Preferences }\r\n{set minScanValue to 5000} {_ Set the minimum credit value that should be voiced _}\r\n\r\n{_ Context }\r\n{set scanValue to state.eddi_context_last_scan_estimated_value}\r\n\r\n{if scanValue >= minScanValue:\r\n {OneOf(\"这\", \"这个数据\", \"这次扫描\")} \r\n {OneOf(\"可以\", \"可能\", \"能够\", \"应该\") } \r\n {OneOf(\"价值\", \"值\", \"给你带来\", \"可以卖\")}\r\n {scanValue} 信用点.\r\n}\r\n", - "default": true + "default": true, + "name": "Report last scan value", + "description": "Report the estimated value of the last body scanned" }, "Respawned": { - "name": "Respawned", - "description": "Triggered when you respawn (either after injury or after handing yourself in to local authorities)", "enabled": true, "priority": 3, "responder": true, "script": "{if state.eddi_context_srv_deployed_id:\r\n {SetState('eddi_context_srv_deployed_id', \"\")}\r\n}", - "default": true + "default": true, + "name": "Respawned", + "description": "Triggered when you respawn (either after injury or after handing yourself in to local authorities)" }, "Ring hotspots detected": { - "name": "Ring hotspots detected", - "description": "Triggered when hotspots are detected in a ring", "enabled": true, "priority": 3, "responder": true, "script": "{if ship.Role.invariantName = \"Mining\" || ship.Role.invariantName = \"Multipurpose\":\r\n {set hotspots to []}\r\n {for hotspot in event.hotspots: \r\n {set hotspot_desc to: \r\n {hotspot.amount} of {hotspot.commodity}\r\n }\r\n {set hotspots to cat(hotspots, [hotspot_desc])}\r\n }\r\n\r\n 检测到采矿热点如下:\r\n {List(hotspots)}\r\n}", - "default": true + "default": true, + "name": "Ring hotspots detected", + "description": "Triggered when hotspots are detected in a ring" }, "Ring mapped": { - "name": "Ring mapped", - "description": "Triggered after mapping a ring with the Surface Area Analysis scanner", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context}\r\n{SetState('eddi_context_last_action', 'scan')}\r\n{SetState('eddi_context_last_subject', 'ring')}\r\n{SetState('eddi_context_body_system', system.name)}\r\n{SetState('eddi_context_ring_name', event.ringname)}\r\n\r\n{_ Process the event _}\r\n\r\n{if ship.Role.edname = \"Exploration\" || ship.Role.edname = \"Multipurpose\":\r\n\r\n {Pause(3000)}\r\n \r\n\t对{event.reserves} {event.composition} 星环的\r\n {OneOf(\"测绘\", \"探测\", \"扫描\")}\r\n {OneOf(\"已经\", \"现已\")}\r\n {OneOf(\"完成\", \"结束\")}.\r\n}", - "default": true + "default": true, + "name": "Ring mapped", + "description": "Triggered after mapping a ring with the Surface Area Analysis scanner" }, "Route details": { - "name": "Route details", - "description": "Triggered when a route has been generated or updated", "enabled": true, "priority": 3, "responder": true, "script": "{_ Route details _}\r\n{_ Triggered when a route has been generated or updated _}\r\n\r\n\r\n{_ Context _}\r\n{SetState('eddi_context_search_system', event.system)}\r\n{SetState('eddi_context_search_station', event.station)}\r\n{SetState('eddi_context_search_distance', event.distance)}\r\n{SetState('eddi_context_search_count', event.count)}\r\n\r\n{set clip_notify to false}\r\n{set type to event.routetype}\r\n{if type = \"encoded\" || type = \"facilitator\" || type = \"guardian\"\r\n || type = \"human\" || type = \"manufactured\" || type = \"raw\":\r\n\r\n {if type = \"facilitator\":\r\n {set service to \"interstellar factors contact\"}\r\n |elif type = \"encoded\" || type = \"manufactured\" || type = \"raw\":\r\n {set service to cat(type, \" materials trader\")}\r\n |elif type = \"guardian\" || type = \"human\":\r\n {set service to cat(type, \" technology broker\")}\r\n }\r\n\r\n {if event.system && event.system != \"\":\r\n 最近的 {service} 位于\r\n {if event.system = system.name:\r\n 本星系\r\n |else:\r\n {set clip_notify to true}\r\n {round(event.distance, 1)}光年外的{P(event.system, \"starsystem\")}星系\r\n }\r\n 中的{P(event.station, \"station\")}\r\n .\r\n |else:\r\n 传感器范围内找不到{service} .\r\n }\r\n|elif type = \"cancel\":\r\n {if !va_active:\r\n {if event.system && event.system != \"\":\r\n 取消了设在 {P(event.system, \"starsystem\")} 星系的目的地.\r\n }\r\n }\r\n|elif type = \"expiring\":\r\n {if event.system && event.system != \"\":\r\n {set mission to MissionDetails(event.missionids[0])}\r\n\r\n {if find(mission.invariantTags, \"Transport\") > -1:\r\n {set type to \"运输 \"}\r\n {set type to cat(type, mission.passengertype)}\r\n |else:\r\n {set type to mission.tags[0]}\r\n }\r\n {set type to cat(type, \" 任务\")}\r\n {if mission.destinationsystem: 位于\r\n {if mission.destinationsystem = system.name:\r\n 目前的\r\n |else:\r\n {set clip_notify to true}\r\n {P(mission.destinationsystem, \"starsystem\")}\r\n } 星系中的 {if mission.faction: 由 {P(mission.faction, \"faction\")}提供的}\r\n {type}\r\n\r\n } 即将过期.\r\n |else:\r\n 没有待完成的任务.\r\n }\r\n|elif type = \"farthest\":\r\n {if event.system && event.system != \"\":\r\n 您 {if missionsCount = 1: 的 |else: 最远的}\r\n 任务目标位于\r\n {if event.system = system.name:\r\n 当前星系.\r\n |else:\r\n {set clip_notify to true}\r\n {round(event.distance, 1)} 光年以外的{P(event.system, \"starsystem\")} 星系. \r\n }.\r\n |else:\r\n 任务详情不包含目的地.\r\n }\r\n|elif type = \"most\":\r\n {if missionsCount = 1:\r\n 您的任务目标 {Occasionally(2,\"被定\")} 位于\r\n {if missions[0].destinationsystem = \"\":\r\n 一个未知\r\n |elif missions[0].destinationsystem = system.name:\r\n 当前\r\n |else:\r\n the {P(missions[0].destinationsystem, \"starsystem\")}\r\n }\r\n 星系.\r\n |elif event.system && event.system != \"\":\r\n {set systems to split(event.route, \"_\")}\r\n {set systems_count to len(systems)}\r\n\r\n {if systems_count = 1:\r\n {if event.system = system.name:\r\n {set system_most to \"当前星系\"}\r\n |else:\r\n {set clip_notify to true}\r\n {set system_most to cat(\" \", P(event.system, 'starsystem'), \" 星系\")}\r\n }\r\n {OneOf(\"您的大多是任务 {Occasionally(2,'被定')} 位于 {system_most}\",\r\n \"{system_most} 里有 {OneOf('大多数您的','您大多数的')} 任务\",\r\n \"{system_most} 有您最多的待完成任务\")}.\r\n |elif systems_count > 2:\r\n 您有 {event.count}个任务目标分别位于\r\n\r\n {_ Don't include the home system from the route list _}\r\n {set cur to 0}\r\n {set systems_count to systems_count - 1}\r\n {while cur < len(systems_count):\r\n {P(systems[cur], \"starsystem\")}\r\n {set cur to cur + 1}\r\n {if cur = systems_count-1: and |elif cur < systems_count: ,}\r\n } 星系中.\r\n }\r\n |else:\r\n 任务详情不包含目的地.\r\n }\r\n|elif type = \"nearest\":\r\n {if event.system && event.system != \"\":\r\n {if missionsCount = 1: 您|else: 距离您最近的}\r\n 任务目标位于\r\n {if event.system = system.name:\r\n 当前星系\r\n |else:\r\n {set clip_notify to true}\r\n {round(event.distance, 1)}光年外的{P(event.system, \"starsystem\")} 星系,\r\n }.\r\n |else:\r\n 任务详情不包含目的地..\r\n }\r\n|elif type = \"route\":\r\n {if event.system && event.system != \"\":\r\n 任务路线已计算,包含 {event.count} 个星系.\r\n 总路程为 {round(event.routedistance, 1)} 光年.\r\n 第一个目的地为 {round(event.distance, 1)} 光年外的{P(event.system, \"starsystem\")}.\r\n {set clip_notify to true}\r\n |else:\r\n 无法演算任务路线.\r\n }\r\n|elif type = \"set\":\r\n {if !va_active:\r\n {if event.system && event.system != \"\":\r\n 目的地设为{round(event.distance, 1)} 光年外的 {P(event.system, \"starsystem\")} 星系 .\r\n |else:\r\n 无法设定目的地. \r\n }\r\n }\r\n|elif type = \"source\":\r\n {if event.count > 0:\r\n {set systems to split(event.route, \"_\")}\r\n\r\n {set pos to 0}\r\n {while pos < event.count:\r\n\r\n {set source_cargo to []}\r\n {for missionid in event.missionids:\r\n {set haulage to HaulageDetails(missionid)}\r\n {if haulage.sourcesystem = systems[pos]:\r\n {set cargo to CargoDetails(missionid)}\r\n {if find(source_cargo, cargo.name) = -1:\r\n {set source_cargo to cat(source_cargo, [cargo.name])}\r\n }\r\n }\r\n }\r\n\r\n {if pos = 0:\r\n {if event.count = 1: 您的 |else: 距离您最近的}\r\n |elif pos = 1:\r\n 另外,您的\r\n |elif pos = event.count - 1:\r\n 最后,您的\r\n |else:\r\n 您的\r\n }\r\n\r\n 任务要求搜集的货源\r\n {set cur to 0}\r\n {while cur < len(source_cargo):\r\n {source_cargo[cur]}\r\n {set cur to cur + 1}\r\n {if cur = len(source_cargo) - 1: 和 |elif cur < len(source_cargo): ,}\r\n }\r\n\r\n 位于\r\n {if systems[pos] = system.name:\r\n 本星系\r\n |else:\r\n {set clip_notify to true}\r\n {set distance to Distance(system.name, systems[pos])}\r\n {round(distance, 1)} 光年以外的\r\n {P(systems[pos], \"starsystem\")}星系,\r\n \r\n }.\r\n {set pos to pos + 1}\r\n }\r\n {SetState('eddi_context_cargo_source', event.route)}\r\n |else:\r\n 指定目标星系无法找到货源.\r\n }\r\n|elif type = \"update\":\r\n {if event.system && event.system != \"\":\r\n 下一个任务目的地为 {round(event.distance, 1)} 光年以外的{P(event.system, \"starsystem\")} .\r\n {set clip_notify to true}\r\n }\r\n}\r\n\r\n{if clip_notify && !va_active:\r\n {Pause(1000)}\r\n 剪贴板上有目标系统.\r\n}\r\n\r\n", - "default": true + "default": true, + "name": "Route details", + "description": "Triggered when a route has been generated or updated" }, "Safe": { - "name": "Safe", - "description": "Triggered when you are no longer in danger", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Safe", + "description": "Triggered when you are no longer in danger" }, "Screenshot": { - "name": "Screenshot", - "description": "Triggered when you take a screenshot", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Screenshot", + "description": "Triggered when you take a screenshot" }, "Search and rescue": { - "name": "Search and rescue", - "description": "Triggered when delivering items to a Search and Rescue contact", "enabled": true, "priority": 3, "responder": true, "script": "{event.amount} \r\n{if event.commodity.rare: rare}\r\n\r\n{if event.commodity.name = \"Black Box\":\r\n {OneOf(\"个飞行记录储存器\", \"个黑匣子\")}\r\n\r\n|elif event.commodity.name = \"Damaged Escape Pod\":\r\n {OneOf(\"个损坏的逃生舱\", \"个损坏的逃生胶囊\")}\r\n\r\n|elif event.commodity.name = \"Occupied Escape Pod\":\r\n {OneOf(\"个被捕获的逃生舱\", \"个被捕获的逃生胶囊\")}\r\n\r\n|elif event.commodity.name = \"Personal Effects\":\r\n {OneOf(\"堆\", \"些\")}\r\n {OneOf(\"个人财物\", \"私人物品\")}\r\n\r\n|elif event.commodity.name = \"Salvageable Wreckage\":\r\n {set wreckage to OneOf(\"残骸\", \"漂浮物\")}\r\n {set fragment to OneOf(\"断片\", \"小片\", \"小块\")}\r\n {OneOf(\"个单位{wreckage}的{fragment}\", \r\n \"个单位{wreckage} {fragment}\")}\r\n\r\n|elif event.commodity.name = \"Hostage\":\r\n 名人质\r\n\r\n|else:\r\n {event.commodity.name}\r\n}\r\n\r\n{OneOf(\"被找回\", \"被交付\")},你获得了\r\n{event.reward} 信用点作为感谢.\r\n", - "default": true + "default": true, + "name": "Search and rescue", + "description": "Triggered when delivering items to a Search and Rescue contact" }, "Security presence report": { - "name": "Security presence report", - "description": "Function to report on the details of system security", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{if system.population > 0:\r\n {OneOf(\"这里\", \"在本星系\", \"此处\")}\r\n {if system.security = \"None\":\r\n 没有\r\n |elif system.security = \"Low\":\r\n {OneOf(\"有最低限度的\", \"有低的\", \"有弱的\")}\r\n |elif system.security = \"Medium\":\r\n {OneOf(\"有标准的\", \"有中等的\", \"平均水平的\")}\r\n |elif system.security = \"High\":\r\n {OneOf(\"有高标准的\", \"有高等的\", \"有高水平的\")}\r\n |else:\r\n {system.security}\r\n }\r\n {OneOf(\"警察系统\", \"安全度\", \"法律设施\")} .\r\n}", - "default": true + "default": true, + "name": "Security presence report", + "description": "Function to report on the details of system security" }, "Self destruct": { - "name": "Self destruct", - "description": "Triggered when you start the self destruct sequence", "enabled": true, "priority": 3, "responder": true, "script": "自毁程序启动,主动散热系统已关闭.", - "default": true + "default": true, + "name": "Self destruct", + "description": "Triggered when you start the self destruct sequence" }, "Settlement approached": { - "name": "Settlement approached", - "description": "Triggered when you approach a settlement", "enabled": true, "priority": 3, "responder": true, "script": "{_ Settlement approached }\r\n{_ Triggered when you approach a settlement }\r\n\r\n\r\n{_ Context }\r\n{SetState('eddi_context_last_subject', 'settlement')}\r\n{SetState('eddi_context_last_action', 'approach')}\r\n{SetState('eddi_context_last_settlement', event.name)}\r\n{SetState('eddi_context_approach_time', SecondsSince(0))}\r\n", - "default": true + "default": true, + "name": "Settlement approached", + "description": "Triggered when you approach a settlement" }, "Shields down": { - "name": "Shields down", - "description": "Triggered when your ship's shields go offline", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Shields down", + "description": "Triggered when your ship's shields go offline" }, "Shields up": { - "name": "Shields up", - "description": "Triggered when your ship's shields come online", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Shields up", + "description": "Triggered when your ship's shields come online" }, "Ship arrived": { - "name": "Ship arrived", - "description": "Triggered when you complete a ship transfer", "enabled": true, "priority": 3, "responder": true, "script": "{Occasionally(2, '{F(\\'Honorific\\')}, ')}\r\n{ShipName(event.shipid, event.ship)} \r\n已经送到 \r\n{if station.name != event.station && event.station:\r\n {if system.name != event.system && event.system:\r\n in the {P(event.system, \"starsystem\")} 星系\r\n }{P(event.station, \"station\")}\r\n \r\n{if station.name != event.station && event.station: 了}\r\n}.", - "default": true + "default": true, + "name": "Ship arrived", + "description": "Triggered when you complete a ship transfer" }, "Ship delivered": { - "name": "Ship delivered", - "description": "Triggered when your newly-purchased ship is delivered to you", "enabled": true, "priority": 3, "responder": true, - "script": "{ShipCallsign()} 交接已完成.", - "default": true + "script": "您的新船:{ShipCallsign()} 的交接已完成.", + "default": true, + "name": "Ship delivered", + "description": "Triggered when your newly-purchased ship is delivered to you" }, "Ship fsd": { - "name": "Ship fsd", - "description": "Triggered when there is a change to the status of your ship's fsd", "enabled": true, "priority": 3, "responder": true, "script": "{set hazardDistance to 100} {_ Warn me when hazardous stars are within this distance (in ls) from the main star }\r\n\r\n{_ Fetch from context _}\r\n{if state.eddi_context_next_system_name:\r\n {set reportSystem to SystemDetails(state.eddi_context_selected_system_name)}\r\n|else:\r\n {set reportSystem to nextsystem}\r\n}\r\n\r\n{if event.fsd_status = 'charging' && event.hyperdrive_charging: \r\n {if len(reportSystem.systemname) > 0:\r\n \r\n {Pause(2000)}\r\n \r\n {if reportSystem.systemname != homesystem.systemname:\r\n {for compartment in ship.compartments:\r\n {if compartment.module.invariantName = 'Fuel Scoop':\r\n {set scoop_present to true}\r\n }\r\n } \r\n \r\n {set scoop_present to true}\r\n\r\n {set nearbyWhiteDwarfStars to []}\r\n {set nearbyNeutronStars to []}\r\n {set nearbyBlackHolesStars to []}\r\n {for aBody in reportSystem.bodies:\r\n {if aBody.bodyType.invariantName = 'Star':\r\n {if aBody.mainstar:\r\n {set mainstar to aBody}\r\n |elif scoop_present && aBody.scoopable && aBody.distance < secondaryScoopStar.distance:\r\n {set secondaryScoopStar to aBody)}\r\n }\r\n {if slice(aBody.stellarclass, 0, 1) = \"D\" && aBody.distance < hazardDistance:\r\n {set nearbyWhiteDwarfStars to cat(nearbyWhiteDwarfStars, [aBody])} \r\n |elif aBody.stellarclass = 'N' && aBody.distance < hazardDistance:\r\n {set nearbyNeutronStars to cat(nearbyNeutronStars, [aBody])}\r\n |elif aBody.stellarclass = 'H' && aBody.distance < hazardDistance: \r\n {set nearbyBlackHolesStars to cat(nearbyBlackHolesStars, [aBody])}\r\n }\r\n }\r\n }\r\n \r\n {set nearbyHazards to []} \r\n {if len(nearbyWhiteDwarfStars) > 0:\r\n {set hazard to: 白矮星}\r\n {set nearbyHazards to cat(nearbyHazards, [hazard])}\r\n }\r\n {if len(nearbyNeutronStars) > 0:\r\n {set hazard to: 中子星}\r\n {set nearbyHazards to cat(nearbyHazards, [hazard])}\r\n }\r\n {if len(nearbyBlackHolesStars) > 0:\r\n {set hazard to: 黑洞}\r\n {set nearbyHazards to cat(nearbyHazards, [hazard])}\r\n }\r\n \r\n {if len(nearbyHazards) > 0:\r\n 注意: 侦测到 {List(nearbyHazards)}. \r\n }\r\n\r\n {if scoop_present && mainstar && !mainstar.scoopable && !secondaryScoopStar:\r\n {if len(nearbyHazards) = 0: {Occasionally(2, \"警报: \")}}\r\n 即将到达的星系中没有可用于加油的恒星.\r\n }\r\n }\r\n }\r\n}", - "default": true + "default": true, + "name": "Ship fsd", + "description": "Triggered when there is a change to the status of your ship's fsd" }, "Ship interdicted": { - "name": "Ship interdicted", - "description": "Triggered when your ship is interdicted by another ship", "enabled": true, "priority": 3, "responder": true, - "script": "{if event.succeeded:\r\n Alert! Interdiction by\r\n {if event.rating:\r\n {event.rating} ranked\r\n }\r\n {if event.iscommander:\r\n commander {event.interdictor}. \r\n |elif event.isthargoid:\r\n Thargoid interceptor.\r\n |else:\r\n {event.interdictor}. \r\n }\r\n|else:\r\n Interdiction evaded.\r\n}", - "default": true + "script": "{if event.succeeded:\r\n 警告!正在被\r\n {if event.rating:\r\n {event.rating} ranked\r\n }\r\n {if event.iscommander:\r\n 指挥官 {event.interdictor}超巡拦截. \r\n |elif event.isthargoid:\r\n 八角拦截器拦截.\r\n |else:\r\n {event.interdictor}. \r\n }\r\n|else:\r\n 拦截已逃脱.\r\n}", + "default": true, + "name": "Ship interdicted", + "description": "Triggered when your ship is interdicted by another ship" }, "Ship interdiction": { - "name": "Ship interdiction", - "description": "Triggered when you interdict another ship", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Ship interdiction", + "description": "Triggered when you interdict another ship" }, "Ship loadout": { - "name": "Ship loadout", - "description": "Triggered when you obtain the loadout of your ship", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Ship loadout", + "description": "Triggered when you obtain the loadout of your ship" }, "Ship locker": { - "name": "Ship locker", - "description": "Triggered when you obtain the contents of your ship's micro-resource materials locker", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Ship locker", + "description": "Triggered when you obtain the contents of your ship's micro-resource materials locker" }, "Ship purchased": { - "name": "Ship purchased", - "description": "Triggered when you purchase a ship", "enabled": true, "priority": 3, "responder": true, "script": "已购买{P(event.ship, \"shipmodel\")} .", - "default": true + "default": true, + "name": "Ship purchased", + "description": "Triggered when you purchase a ship" }, "Ship rebooted": { - "name": "Ship rebooted", - "description": "Triggered when you run reboot/repair on your ship", "enabled": true, "priority": 3, "responder": true, "script": "{if len(event.modules) > 0:\r\n 对{List(event.modules)}的紧急修理已\r\n {OneOf(\"启用\", \"开始\")}\r\n .\r\n}", - "default": true + "default": true, + "name": "Ship rebooted", + "description": "Triggered when you run reboot/repair on your ship" }, "Ship refuelled": { - "name": "Ship refuelled", - "description": "Triggered when you refuel your ship", "enabled": true, "priority": 3, "responder": true, "script": "{if event.source = \"Scoop\":\r\n {SetState('eddi_context_fuel_remaining', event.total)}\r\n|elif event.full:\r\n {SetState('eddi_context_fuel_remaining', ship.fueltanktotalcapacity)}\r\n|else:\r\n {SetState('eddi_context_fuel_remaining', state.eddi_context_fuel_remaining + event.amount)}\r\n}\r\n\r\n{Pause(2000)}\r\n{if event.full:\r\n {set refueled_desc to OneOf(\"燃料加注完成\", \"燃料箱已满\",\"燃料量已达百分之百\")}\r\n {OneOf(\"停止加注燃料\", \"燃料达到最大值\", \"燃料加注完成\", \"{ShipName()}的{refueled_desc}\" )}\r\n|else:\r\n {if event.amount <= 5.0000:\r\n {F('Fuel check')}\r\n }\r\n}", - "default": true + "default": true, + "name": "Ship refuelled", + "description": "Triggered when you refuel your ship" }, "Ship renamed": { - "name": "Ship renamed", - "description": "Triggered when you rename a ship", "enabled": true, "priority": 3, "responder": true, "script": "{ShipName()}注册在了{P(system.faction, \"faction\")}. \r\n\r\n{set ICAO_ID to ICAO(event.ident)}\r\n{if len(ICAO_ID) > 0:\r\n 舷号为 {ICAO_ID}.\r\n|else:\r\n 小提示:您选择了在标准无线电字母表中无法发音的船舶 ID。\r\n}\r\n", - "default": true + "default": true, + "name": "Ship renamed", + "description": "Triggered when you rename a ship" }, "Ship repaired": { - "name": "Ship repaired", - "description": "Triggered when you repair your ship", "enabled": true, "priority": 3, "responder": true, "script": "{set repairedSystems to []}\r\n{if len(event.items) > 0:\r\n {for item in event.items:\r\n {if item = \"Paint\":\r\n {set systemDescription to cat(Occasionally(2, \"{ShipName()}的\"), \" 涂装 \", OneOf(\"已恢复.\", \"已粉刷一新.\")))}\r\n {set repairedSystems to cat(repairedSystems, [systemDescription])} \r\n |elif item = \"Ship Integrity\" || item = \"Wear\":\r\n {set systemDescription to cat(Occasionally(2, \"{ShipName()}的\"), \" \", Occasionally(2, '{OneOf(\\\"进阶\\\", \\\"结构\\\")}'),\" 维护已完成.\"))}\r\n {set repairedSystems to cat(repairedSystems, [systemDescription])} \r\n }\r\n }\r\n}\r\n\r\n{set repairedModules to []}\r\n{if len(event.modules) > 0:\r\n {for module in event.modules:\r\n {if len(module.localizedmount) > 0:\r\n {_ This is a weapon. We'll identify the class, grade, and mount}\r\n {set weaponDescription to cat(module.class, \" \", module.grade, \" \", module.mount, \" \", module.name)}\r\n {set repairedModules to cat(repairedModules, [weaponDescription])}\r\n |elif find(module.invariantName, \"Cockpit\") > -1:\r\n {_ This isn't a weapon. We've matched it to the name of our cockpit module}\r\n {set repairedModules to cat(repairedModules, [OneOf(\"挡风玻璃\", \"驾驶舱\")])} \r\n |else:\r\n {_ This isn't a weapon. We haven't matched it to the name of any particular module}\r\n {set repairedModules to cat(repairedModules, [module.name])}\r\n }\r\n }\r\n}\r\n\r\n{if len(repairedSystems) > 0:\r\n {List(repairedSystems)}.\r\n}\r\n{if len(repairedModules) > 0:\r\n {List(repairedModules)} 已修复.\r\n}\r\n{if len(repairedSystems) = 0 && len(repairedModules) = 0:\r\n {ShipName()} 修复完成.\r\n}", - "default": true + "default": true, + "name": "Ship repaired", + "description": "Triggered when you repair your ship" }, "Ship restocked": { - "name": "Ship restocked", - "description": "Triggered when you restock your ship's ammunition", "enabled": true, "priority": 3, "responder": true, "script": "{ShipName()} {OneOf(\"弹药补充完成\",\"满弹挂载\")}.", - "default": true + "default": true, + "name": "Ship restocked", + "description": "Triggered when you restock your ship's ammunition" }, "Ship shutdown": { "enabled": true, @@ -2181,157 +2173,157 @@ "description": "Triggered when your ship's system reboots after a forced shutdown" }, "Ship sold": { - "name": "Ship sold", - "description": "Triggered when you sell a ship", "enabled": true, "priority": 3, "responder": true, "script": "{OneOf(\"{ShipName(event.shipid, event.ship)} 已被除役\",\r\n \" {ShipName(event.shipid, event.ship)}已退役\",\r\n \"已售出 {ShipName(event.shipid, event.ship)}\")}\r\n", - "default": true + "default": true, + "name": "Ship sold", + "description": "Triggered when you sell a ship" }, "Ship sold on rebuy": { - "name": "Ship sold on rebuy", - "description": "Triggered when you sell a ship to raise funds on the insurance / rebuy screen", "enabled": true, "priority": 3, "responder": true, "script": "舷号为 {event.shipid}的{P(event.ship, \"shipmodel\")}, 在 {P(event.system, \"starsystem\")}星系以 {Humanise(event.price)}信用点 被卖出.", - "default": true + "default": true, + "name": "Ship sold on rebuy", + "description": "Triggered when you sell a ship to raise funds on the insurance / rebuy screen" }, "Ship swapped": { - "name": "Ship swapped", - "description": "Triggered when you swap a ship", "enabled": true, "priority": 3, "responder": true, "script": "{if event.storedship:\r\n 您{OneOf(\"储存了\", \"封存了\", \"停泊了\")} {ShipName(event.storedshipid, event.storedship)}, \r\n|elif event.soldship:\r\n 您卖出了 {ShipName(event.soldshipid, event.soldship)} \r\n}\r\n以换成{ShipName(event.shipid, event.ship)}.\r\n\r\n{F(\"Limpet check\")}\r\n{F(\"Launchbay report\")}\r\n\r\n{set fighterhangar to false}\r\n{for compartment in ship.compartments:\r\n {if find(compartment.module.name, \"Fighter Hangar\") != -1:\r\n {set fighterhangar to true}\r\n }\r\n}\r\n{if fighterhangar = true:\r\n 提醒:您需要为舰载机分配一名机组人员。\r\n}\r\n", - "default": true + "default": true, + "name": "Ship swapped", + "description": "Triggered when you swap a ship" }, "Ship targeted": { - "name": "Ship targeted", - "description": "Triggered when the player selects a non-Thargoid target", "enabled": true, "priority": 3, "responder": true, "script": "{_ Ship targeted }\r\n{_ Triggered when the player selects a non-Thargoid target }\r\n\r\n{_ event Parameters: targetlocked - bool (ie false when losing target) _}\r\n{_ If target locked: name (of ship), scanstage (ie 0, 1, 2, 3) _}\r\n{_ If Scan stage >= 1: name (of pilot), rank (of pilot) _}\r\n{_ If scan stage >= 2: shieldhealth, hullhealth (both 0-100) _}\r\n{_ If scan stage >= 3: faction, power (if player is pledged to a power), _}\r\n{_ legalstatus (ie clean, wanted, etc), bounty (if applicable), _}\r\n{_ subsystem (ie FSD, power plant, etc), subsystemhealth (0-100) _}\r\n\r\n\r\n{_ Context }\r\n{SetState('eddi_context_last_subject', 'ship')}\r\n{SetState('eddi_context_last_action', 'targeted')}\r\n\r\n{if event.targetlocked && event.scanstage > 2 && !event.subsystem:\r\n {set legalstatus to event.legalstatus}\r\n {if legalstatus = \"Wanted\" || legalstatus = \"Wanted Enemy\" || legalstatus = \"Warrant\":\r\n {set wanted_list to split(state.eddi_context_wanted_list, \"+=\")}\r\n {if find(wanted_list, event.name) < 0:\r\n {event.name} {OneOf(\"身上有悬赏\", \"是合法的目标\")}.\r\n {if len(wanted_list) = 0: {set sep to \"\"} |else: {set sep to \"+=\"}}\r\n {set wanted_list to cat(wanted_list, [event.name])}\r\n {SetState('eddi_context_wanted_list', join(wanted_list, sep))}\r\n } \r\n }\r\n}\r\n", - "default": true + "default": true, + "name": "Ship targeted", + "description": "Triggered when the player selects a non-Thargoid target" }, "Ship transfer initiated": { - "name": "Ship transfer initiated", - "description": "Triggered when you initiate a ship transfer", "enabled": true, "priority": 3, "responder": true, "script": "{ShipName(event.shipid, event.ship)} {OneOf(\"在路上了\",\"正在被运输\", \"的运输已开始\")}, 发出第为 {P(event.system, \"starsystem\")}星系\r\n\r\n{if event.transfercost: 这花费了 {Humanise(event.price)} 信用点.}\r\n\r\n{set t_remaining to event.time}\r\n\r\n{if t_remaining:\r\n\r\n {Pause(1000)}\r\n 预计将在:\r\n\r\n {if t_remaining > (60*60*24):\r\n {set t_days to floor(t_remaining/(60*60*24))}\r\n {if t_days > 1:\r\n {t_days} 天\r\n |else:\r\n 一天\r\n }\r\n {set t_remaining to t_remaining-(t_days*(60*60*24))}\r\n }\r\n\r\n {if t_remaining > 3600:\r\n {set t_hours to floor(t_remaining/3600)}\r\n {if t_hours > 1:\r\n {t_hours} 小时\r\n |else:\r\n 一小时\r\n }\r\n {set t_remaining to t_remaining-(t_hours*(60*60))}\r\n }\r\n\r\n {if t_remaining > 60:\r\n {if t_days || t_hours: and}\r\n {set t_minutes to round(t_remaining/(60),0)}\r\n {if t_minutes > 1:\r\n {t_minutes} 分钟\r\n |else:\r\n 一分钟\r\n }\r\n }后到达.\r\n}", - "default": true + "default": true, + "name": "Ship transfer initiated", + "description": "Triggered when you initiate a ship transfer" }, "Shutdown": { - "name": "Shutdown", - "description": "Triggered on a clean shutdown of the game", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Shutdown", + "description": "Triggered on a clean shutdown of the game" }, "Signal detected": { - "name": "Signal detected", - "description": "Triggered when a signal source is detected", "enabled": true, "priority": 3, "responder": true, - "script": "{_ Edit the true/false values of `spokenSources` to identify signal types that should be announced whenever they are first detected within a system (otherwise, only signal sources detected while in fss or saa mode will be taken into account. _}\r\n\r\n{set spokenSources to [\r\n \"Anomaly\": true,\r\n \"AX Conflict Zone\": true,\r\n \"Capitol Ship\": false,\r\n \"Ceremonial Comms\": false,\r\n \"Combat Aftermath\": false,\r\n \"Compromised Nav Beacon\": false,\r\n \"Convoy Dispersal Pattern Detected\": false,\r\n \"Degraded Emissions\": false,\r\n \"Distress Call\": true,\r\n \"Encoded Emissions\": false,\r\n \"Hazardous Resource Extraction Site\": false,\r\n \"High Grade Emissions\": false,\r\n \"High Intensity Conflict Zone\": false,\r\n \"High Intensity Resource Extraction Site\": false,\r\n \"Listening Post\": true,\r\n \"Low Intensity Conflict Zone\": false,\r\n \"Low Intensity Resource Extraction Site\": false,\r\n \"Medium Intensity Conflict Zone\": false,\r\n \"Mission Target\": true,\r\n \"Nav Beacon\": false,\r\n \"Non-Human Signal Source\": false,\r\n \"Notable Stellar Phenomena\": true,\r\n \"Resource Extraction Site\": false,\r\n \"Trading Beacon\": false,\r\n \"Unidentified Signal Source\": false,\r\n \"Unregistered Comms Beacon\": true,\r\n \"Weapons Fire\": false,\r\n]}\r\n\r\n{if status.gui_focus = \"fss mode\" || status.gui_focus = \"saa mode\" || \r\n(spokenSources[event.source] = true && event.unique):\r\n {if event.source && !event.stationsignal:\r\n {if event.threatlevel > 0:\r\n 侦测到来自{if event.faction != \"None\":\r\n for {P(event.faction, \"faction\")}\r\n }的{event.threatlevel} 级\r\n }\r\n {event.source} \r\n \r\n .\r\n }\r\n}", - "default": true + "script": "{_ Edit the true/false values of `spokenSources` to identify signal types that should be announced whenever they are first detected within a system (otherwise, only signal sources detected while in fss or saa mode will be taken into account. _}\r\n\r\n{set spokenSources to [\r\n \"Anomaly\": true,\r\n \"AX Conflict Zone\": true,\r\n \"Capitol Ship\": false,\r\n \"Ceremonial Comms\": false,\r\n \"Combat Aftermath\": false,\r\n \"Compromised Nav Beacon\": true,\r\n \"Convoy Dispersal Pattern\": false,\r\n \"Degraded Emissions\": false,\r\n \"Distress Call\": true,\r\n \"Encoded Emissions\": false,\r\n \"Hazardous Resource Extraction Site\": false,\r\n \"High Grade Emissions\": false,\r\n \"High Intensity Conflict Zone\": false,\r\n \"High Intensity Resource Extraction Site\": false,\r\n \"Listening Post\": true,\r\n \"Low Intensity Conflict Zone\": false,\r\n \"Low Intensity Resource Extraction Site\": false,\r\n \"Medium Intensity Conflict Zone\": false,\r\n \"Mission Target\": true,\r\n \"Nav Beacon\": false,\r\n \"Non-Human Signal Source\": false,\r\n \"Notable Stellar Phenomena\": true,\r\n \"Resource Extraction Site\": false,\r\n \"Trading Beacon\": false,\r\n \"Unidentified Signal Source\": false,\r\n \"Unregistered Comms Beacon\": true,\r\n \"Weapons Fire\": false,\r\n]}\r\n\r\n{if status.gui_focus = \"fss mode\" || status.gui_focus = \"saa mode\" || \r\n(spokenSources[event.source] = true && event.unique):\r\n {if event.source && !event.stationsignal:\r\n {if event.threatlevel > 0:\r\n 侦测到来自{if event.faction != \"None\":\r\n for {P(event.faction, \"faction\")}\r\n }的{event.threatlevel} 级\r\n }\r\n {event.source} \r\n \r\n .\r\n }\r\n}", + "default": true, + "name": "Signal detected", + "description": "Triggered when a signal source is detected" }, "Silent running": { - "name": "Silent running", - "description": "Triggered when you activate or deactivate silent running", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Silent running", + "description": "Triggered when you activate or deactivate silent running" }, "Squadron rank": { - "name": "Squadron rank", - "description": "Triggered when your rank with a squadron has changed", "enabled": true, "priority": 3, "responder": true, "script": "{_ Squadron rank }\r\n{_ Triggered when your rank with a squadron has changed }\r\n\r\n\r\n您在{event.name}中队中已被\r\n{if event.newrank > event.oldrank:\r\n 晋升 \r\n|else:\r\n 降职\r\n}\r\n为 {cmdr.squadronrank.name}.\r\n", - "default": true + "default": true, + "name": "Squadron rank", + "description": "Triggered when your rank with a squadron has changed" }, "Squadron status": { - "name": "Squadron status", - "description": "Triggered when your status with a squadron has changed", "enabled": true, "priority": 3, "responder": true, "script": "{_ Squadron status }\r\n{_ Triggered when your status with a squadron changes }\r\n\r\n\r\n{if event.status = \"applied\":\r\n 您已申请加入 {event.name} 中队.\r\n|elif event.status = \"created\":\r\n 您已创立 {event.name} 中队.\r\n|elif event.status = \"disbanded\":\r\n {event.name} 中队已被解散.\r\n|elif event.status = \"invited\":\r\n 您已收到来自 {event.name} 中队的邀请.\r\n|elif event.status = \"joined\":\r\n 您已加入 {event.name} 中队.\r\n|elif event.status = \"kicked\":\r\n 您已被踢出 {event.name} 中队.\r\n|elif event.status = \"left\":\r\n 您已经离开 {event.name} 中队.\r\n}\r\n", - "default": true + "default": true, + "name": "Squadron status", + "description": "Triggered when your status with a squadron has changed" }, "SRV docked": { - "name": "SRV docked", - "description": "Triggered when you dock an SRV with your ship", "enabled": true, "priority": 3, "responder": true, "script": "{if state.eddi_context_srv_deployed_id = event.id:\r\n {SetState('eddi_context_srv_deployed_id', \"\")}\r\n}\r\n\r\n{OneOf(\"月球车\", \"SRV\")}已回收.", - "default": true + "default": true, + "name": "SRV docked", + "description": "Triggered when you dock an SRV with your ship" }, "SRV launched": { - "name": "SRV launched", - "description": "Triggered when you launch an SRV from your ship", "enabled": true, "priority": 3, "responder": true, "script": "{SetState('eddi_context_srv_deployed_id', event.id)}\r\n\r\n{OneOf(\"月球车\", \"SRV\")} {OneOf(\"已出发\", \"出发\")}.", - "default": true + "default": true, + "name": "SRV launched", + "description": "Triggered when you launch an SRV from your ship" }, "SRV turret": { - "name": "SRV turret", - "description": "Triggered when you deploy or retract your SRV's turret", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "SRV turret", + "description": "Triggered when you deploy or retract your SRV's turret" }, "SRV turret deployable": { - "name": "SRV turret deployable", - "description": "Triggered when your SRV enters or leaves the restriction zone around a ship.", "enabled": true, "priority": 3, "responder": true, "script": "{if !event.deployable:\r\n 到达母船安全距离,{OneOf(\"月球车\", \"SRV\")} 炮塔权限已变更.\r\n}", - "default": true + "default": true, + "name": "SRV turret deployable", + "description": "Triggered when your SRV enters or leaves the restriction zone around a ship." }, "Star habitable zone": { - "name": "Star habitable zone", - "description": "Report on the habitable zone around a star", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{_ Fetch from context }\r\n{if event: {set reportbody to event} }\r\n{if !event: {set reportbody to BodyDetails(state.eddi_context_star_star, state.eddi_context_star_system)}}\r\n\r\n{if !reportbody.name || reportbody.name = \"\":\r\n 我不清楚您询问的是哪个恒星.\r\n|else:\r\n {if (reportbody.estimatedhabzoneinner && reportbody.estimatedhabzoneouter) && \r\n (reportbody.estimatedhabzoneinner > 0 && reportbody.estimatedhabzoneouter> 0):\r\n 宜居带\r\n {Occasionally(2, OneOf(\"根据计算\", \"根据计算应该\"))}: \r\n 位于距离恒星{Humanise(reportbody.estimatedhabzoneinner)}\r\n 到 {Humanise(reportbody.estimatedhabzoneouter)} \r\n 光秒之间.\r\n |elif reportbody.estimatedhabzoneouter && reportbody.estimatedhabzoneouter > 0:\r\n 宜居带\r\n {Occasionally(2, OneOf(\"根据计算\", \"根据计算应该\"))}: \r\n 位于最多{Humanise(reportbody.estimatedhabzoneouter)} \r\n 光秒处.\r\n }\r\n}", - "default": false + "default": true, + "name": "Star habitable zone", + "description": "Report on the habitable zone around a star" }, "Star report": { - "name": "Star report", - "description": "Function to report on the details of the contextual body", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{_ Preferences _}\r\n{set reportAge to 1} {_ Set to 1 to report the star's age. _}\r\n{set reportRareStarClasses to 1} {_ Set to 1 to report when rare star classes are found _}\r\n{set reportMass to 1} {_ Set to 1 to report stars with abnormal mass _}\r\n{set reportRadius to 1} {_ Set to 1 to report stars with abnormal radii _}\r\n{set reportRotation to 1} {_ Set to 1 to report stars with abnormal rotational periods _}\r\n{set reportTemps to 1} {_ Set to 1 to report stars with abnormal surface temperatures _}\r\n{set reportDensity to 1} {_ Set to 1 to report notable densities (in kilograms per cubic meter) _}\r\n{set reportAbsMagnitude to 1} {_ Set to 1 to report stars with abnormal absolute magnitude (lower is brighter) _}\r\n{set reportRingedStars to 1} {_ Set to 1 to report when ringed stars are found _}\r\n{set reportChromaticity to 1} {_ Set to 1 to report the star's colour. _}\r\n{set reportClass to 1} {_ Set to 1 to report the stellar class. _}\r\n{set reportSubClass to 0} {_ Set to 1 to report the stellar sub class (if reportClass is also 1) _}\r\n{set reportScanValue to 0} {_ Set to 1 to report the scan value. _}\r\n{set reportHabZone to 0} {_ Set to 1 to report habitable zone details for the primary star. _}\r\n{set mainSequenceFrequency to 4} {_ Set to determine the frequency (1 chance in n) for describing applicable stars as \"main sequence\" _}\r\n{set reportRapidRotation to 1} {_ Reports very fast rotating bodies _}\r\n\r\n{_ Fetch from context }\r\n{set reportbody to BodyDetails(state.eddi_context_star_star, state.eddi_context_star_system)}\r\n{if !reportbody: {set reportbody to BodyDetails(state.eddi_context_star_star)}}\r\n{if !reportbody && event: {set reportbody to event.star}}\r\n\r\n{if !reportbody.name || reportbody.name = \"\":\r\n\r\n 您在 {OneOf(\"寻问\", \"咨询\")}有关哪个恒星的信息?\r\n\r\n|else:\r\n\r\n {_ Set up a list of notable star characteristics _}\r\n {set notables to []}\r\n\r\n {_ Set up various groups of stars _}\r\n {set mainsequence to [\"O\", \"B\", \"A\", \"F\", \"G\", \"K\", \"M\"]}\r\n {set fastburning to [\"WC\", \"WN\", \"WO\", \"WNC\", \"W\"]}\r\n {set browndwarves to [\"L\", \"T\", \"Y\"]}\r\n\r\n {for starclass in mainsequence:\r\n {if reportbody.stellarclass = starclass:\r\n {set mainsequence to Occasionally(mainSequenceFrequency, \"mainsequence\")}\r\n }\r\n } \r\n {for starclass in browndwarves:\r\n {if reportbody.stellarclass = starclass:\r\n {set browndwarf to 1}\r\n }\r\n } \r\n {for starclass in fastburning:\r\n {if reportbody.stellarclass = starclass: \r\n {set fastburning to 1}\r\n }\r\n }\r\n\r\n {_ Is this a rare class of star? _}\r\n {if reportRareStarClasses:\r\n {if reportbody.starClass.percentage < 0.01:\r\n {set rarity to \"难以置信的稀有\"}\r\n |elif reportbody.starClass.percentage < 0.1:\r\n {set rarity to \"非常稀有\"}\r\n |elif reportbody.starClass.percentage < 1.0:\r\n {set rarity to \"稀有\"}\r\n |elif reportbody.starClass.percentage < 5:\r\n {set rarity to \"不常见\"}\r\n }\r\n }\r\n\r\n {_ Is the star notable in some other way? _}\r\n\r\n {if reportAge:\r\n {set ageInYears to reportbody.age * 1000000}\r\n {if ageInYears <= 1000000:\r\n {set ps to \", 它是银河系中最年轻的恒星之一\"}\r\n |elif ageInYears >= 13000000000:\r\n {set ps to \", 它是银河系中最古老的恒星之一\"}\r\n }\r\n {if reportbody.ageprobability:\r\n {if reportbody.ageprobability < 0.01:\r\n {set notables to cat(notables, [cat(\",它难以置信地年轻,只有 \", Humanise(ageInYears), \" 岁\", ps)])}\r\n |elif reportbody.ageprobability < 0.1:\r\n {set notables to cat(notables, [cat(\",它极为年轻,有 \", Humanise(ageInYears), \" 岁\", ps)])}\r\n |elif reportbody.ageprobability < 5:\r\n {set notables to cat(notables, [cat(\",它很年轻,为 \", Humanise(ageInYears), \" 岁\", ps)])}\r\n |elif reportbody.ageprobability > 99.99:\r\n {set notables to cat(notables, [cat(\",它难以置信地古老,足足有 \", Humanise(ageInYears), \" 岁s\", ps)])}\r\n |elif reportbody.ageprobability > 99.9:\r\n {set notables to cat(notables, [cat(\",它极为古老,有 \", Humanise(ageInYears), \" 岁\", ps)])}\r\n |elif reportbody.ageprobability > 95:\r\n {set notables to cat(notables, [cat(\",很古老,为 \", Humanise(ageInYears), \" 岁\", ps)])}\r\n }\r\n }\r\n }\r\n\r\n {if reportMass && reportbody.massprobability:\r\n {if reportbody.massprobability < 0.01:\r\n {set notables to cat(notables, [cat(\",他的质量不可思议的小,只有太阳质量的 \",Humanise(reportbody.solarmass), \" 倍\")])}\r\n |elif reportbody.massprobability < 0.1:\r\n {set notables to cat(notables, [cat(\",他的质量极小,有太阳质量的 \",Humanise(reportbody.solarmass), \" 倍\")])}\r\n |elif reportbody.massprobability < 1:\r\n {set notables to cat(notables, [cat(\",他的质量很小,为太阳质量的 \",Humanise(reportbody.solarmass), \" 倍\")])}\r\n |elif reportbody.massprobability > 99.99:\r\n {set notables to cat(notables, [cat(\",他的质量不可思议的大,足足有太阳质量的 \",Humanise(reportbody.solarmass), \" 倍\")])}\r\n |elif reportbody.massprobability > 99.9:\r\n {set notables to cat(notables, [cat(\",他的极大,有太阳质量的 \",Humanise(reportbody.solarmass), \" 倍\")])}\r\n |elif reportbody.massprobability > 99:\r\n {set notables to cat(notables, [cat(\",他的质量为太阳质量的 \",Humanise(reportbody.solarmass), \" 倍\")])}\r\n }\r\n }\r\n\r\n {if reportRadius && reportbody.radiusprobability:\r\n {if reportbody.radiusprobability < 0.01:\r\n {set notables to cat(notables, [cat(\",它的半径难以置信地小,只有太阳的\", Humanise(reportbody.solarradius), \" 倍\")])}\r\n |elif reportbody.radiusprobability < 0.1:\r\n {set notables to cat(notables, [cat(\",它的半径极小,只有太阳的\", Humanise(reportbody.solarradius), \" 倍\")])}\r\n |elif reportbody.radiusprobability < 5:\r\n {set notables to cat(notables, [cat(\",它的半径很小,为太阳的\", Humanise(reportbody.solarradius), \" 倍\")])}\r\n |elif reportbody.radiusprobability > 99.99:\r\n {set notables to cat(notables, [cat(\",它的半径难以置信地大,足足有太阳的\", Humanise(reportbody.solarradius), \" 倍\")])}\r\n |elif reportbody.radiusprobability > 99.9:\r\n {set notables to cat(notables, [cat(\",它的半径极大,足足有太阳的\", Humanise(reportbody.solarradius), \" 倍\")])}\r\n |elif reportbody.radiusprobability > 95:\r\n {set notables to cat(notables, [cat(\",它的半径为太阳的\", Humanise(reportbody.solarradius), \" 倍\")])}\r\n }\r\n }\r\n\r\n {if reportRotation && reportbody.rotationalperiodprobability:\r\n {if reportbody.rotationalperiodprobability > 99.99:\r\n {set notables to cat(notables, [cat(\",它有不可思议的 \", OneOf(\"快的\", \"高的\"), \" 转速,周期只有 \", reportbody.rotationalperiod, \" 天 \", Occasionally(2, \"每转\"))])}\r\n |elif reportbody.rotationalperiodprobability > 99.9:\r\n {set notables to cat(notables, [cat(\",它有极\", OneOf(\"快的\", \"高的\"), \" 转速,周期只有 \", reportbody.rotationalperiod, \" 天 \", Occasionally(2, \"每转\"))])}\r\n |elif reportbody.rotationalperiodprobability > 99:\r\n {set notables to cat(notables, [cat(\",它有很 \", OneOf(\"快的\", \"高的\"), \" 转速,周期只有 \", reportbody.rotationalperiod, \" 天 \", Occasionally(2, \"每转\"))])}\r\n |elif reportbody.rotationalperiodprobability > 95:\r\n {set notables to cat(notables, [cat(\",它有高转速,周期只有 \", Humanise(reportbody.rotationalperiod), \" 天 \", Occasionally(2, \" 每转\"))])}\r\n }\r\n }\r\n\r\n {if reportTemps && reportbody.tempprobability:\r\n {if reportbody.tempprobability < 0.01:\r\n {set notables to cat(notables, [cat(\",它的表面温度不可思议的低,只有 \", Humanise(reportbody.temperature), \" 开尔文\")])}\r\n |elif reportbody.tempprobability < 0.1:\r\n {set notables to cat(notables, [cat(\",它的表面温度极低,只有 \", Humanise(reportbody.temperature), \" 开尔文\")])}\r\n |elif reportbody.tempprobability < 1:\r\n {set notables to cat(notables, [cat(\",它的表面温度很低\")])}\r\n |elif reportbody.tempprobability < 5:\r\n {set notables to cat(notables, [cat(\",它的表面温度低于平均值\")])}\r\n |elif reportbody.tempprobability > 99.99:\r\n {set notables to cat(notables, [cat(\",它的表面温度不可思议的高,足足有 \", Humanise(reportbody.temperature), \" 开尔文\")])}\r\n |elif reportbody.tempprobability > 99.9:\r\n {set notables to cat(notables, [cat(\",它的表面温度极高,足足有 \", Humanise(reportbody.temperature), \" 开尔文\")])}\r\n |elif reportbody.tempprobability > 99:\r\n {set notables to cat(notables, [cat(\",它的表面温度很高\")])}\r\n |elif reportbody.tempprobability > 95:\r\n {set notables to cat(notables, [cat(\",它的表面温度高于平均值\")])}\r\n }\r\n }\r\n\r\n {if reportDensity && reportbody.densityprobability:\r\n {if reportbody.densityprobability < 0.01:\r\n {set notables to cat(notables, [cat(\",它有不可思议的低的密度,只有 \", Humanise(reportbody.density), \" 千克每立方米\")])}\r\n |elif reportbody.densityprobability < 0.1:\r\n {set notables to cat(notables, [cat(\",它有极低的密度,只有 \", Humanise(reportbody.density), \" 千克每立方米\")])}\r\n |elif reportbody.densityprobability < 1:\r\n {set notables to cat(notables, [cat(\",它有很低的密度\")])}\r\n |elif reportbody.densityprobability < 5:\r\n {set notables to cat(notables, [cat(\",它的密度低于平均值\")])}\r\n |elif reportbody.densityprobability > 99.99:\r\n {set notables to cat(notables, [cat(\",它有不可思议的高的密度,足足有 \", Humanise(reportbody.density), \" 千克每立方米\")])}\r\n |elif reportbody.densityprobability > 99.9:\r\n {set notables to cat(notables, [cat(\",它有极高的密度,足足有 \", Humanise(reportbody.density), \" 千克每立方米\")])}\r\n |elif reportbody.densityprobability > 99:\r\n {set notables to cat(notables, [cat(\",它有很高的密度\")])}\r\n |elif reportbody.densityprobability > 95:\r\n {set notables to cat(notables, [cat(\",它的密度高于平均值\")])}\r\n }\r\n }\r\n\r\n {if reportRapidRotation && reportbody.rotationalperiodprobability:\r\n {if reportbody.rotationalperiodprobability < 0.1:\r\n {set notables to cat(notables, [cat(\",它有不可思议的短的旋转周期,只有 \", reportbody.rotationalperiod, \" 天\")])}\r\n |elif reportbody.rotationalperiodprobability < 1:\r\n {set notables to cat(notables, [cat(\",它有极短的旋转周期,只有 \", Humanise(reportbody.rotationalperiod), \" 天\")])}\r\n |elif reportbody.rotationalperiodprobability < 3:\r\n {set notables to cat(notables, [cat(\",它有很短的旋转周期,只有 \", Humanise(reportbody.rotationalperiod), \" 天\")])}\r\n }\r\n }\r\n\r\n {if reportAbsMagnitude && reportbody.absolutemagnitudeprobability:\r\n {if reportbody.absolutemagnitudeprobability < 0.01:\r\n {set notables to cat(notables, [cat(OneOf(\",它不可思议的明亮\", \",它有不可思议的亮度\"))])}\r\n |elif reportbody.absolutemagnitudeprobability < 0.1:\r\n {set notables to cat(notables, [cat(OneOf(\",它极为明亮\", \",它有极高的亮度\"))])}\r\n |elif reportbody.absolutemagnitudeprobability < 1:\r\n {set notables to cat(notables, [cat(OneOf(\",它很明亮\", \",它有很高的亮度\"))])}\r\n |elif reportbody.absolutemagnitudeprobability < 5:\r\n {set notables to cat(notables, [cat(OneOf(\",它比较亮\", \",它有较高的亮度\"))])}\r\n }\r\n }\r\n\r\n {_ Is the star ringed? _}\r\n {if reportRingedStars:\r\n {if reportbody.rings:\r\n {set ringcompositions to []}\r\n {set cur to 0}\r\n {for ring in reportbody.rings:\r\n {if find(ring.name, \"Ring\") > -1:\r\n {if find(ringcompositions, ring.composition) = -1:\r\n {set ringcompositions to cat(ringcompositions, [cat(ring.composition)])}\r\n }\r\n }\r\n {set cur to cur + 1}\r\n }\r\n {set cur to 0}\r\n {set length to len(ringcompositions) - 1}\r\n {while cur < len(ringcompositions):\r\n {set ringsdescription to cat(ringsdescription, ringcompositions[cur])}\n {set cur to cur + 1}\n {if cur = length: \r\n {set ringsdescription to cat(ringsdescription, \" 和 \")}\n |elif cur < length:\r\n {set ringsdecription to cat(ringsdescription, \", \")}\n }\n }\r\n {if ringsdescription:\r\n {if len(ringcompositions) = 1:\r\n {if StartsWithVowel(reportbody.reserves): \r\n {set a to \"它有一个 \"} \r\n |else: \r\n {set a to \"它有一个 \"}\r\n }\r\n {set rings to \"星环\"}\r\n |else:\r\n {set rings to \"星环\"} \r\n }\r\n {if reportbody.reserveLevel.invariantName != \"None\": \r\n {set reserves to reportbody.reserves}\r\n }\r\n {set notables to cat(notables, [cat(a, \" \", reserves, \" \", ringsdescription, \" \", rings)])}\r\n }\r\n }\r\n }\r\n\r\n {_ Report notable stars _}\r\n\r\n {if len(notables) > 0:\r\n\r\n {_ Setup descriptions for our star _}\r\n\r\n {if find([\"L\", \"T\", \"Y\"], reportbody.stellarclass) > -1:\r\n {set shortdescription to \"褐矮星\"}\r\n |elif reportbody.stellarclass = \"TTS\":\r\n {set shortdescription to \"金牛T星\"}\r\n {set desc2 to Occasionally(2, \"正处于引力收缩过程中\")}\r\n |elif reportbody.stellarclass = \"AEBE\":\r\n {set age to \"很年轻的\"}\r\n {set shortdescription to \"原恒星\"}\r\n {set desc2 to Occasionally(2, \"还未进入主序期 {Occasionally(2, \\\"但正在成为A级到B级恒星\\\")}\")}\r\n |elif reportbody.stellarclass = \"WC\":\r\n {set desc1 to \"富碳的\"}\r\n {set shortdescription to \"沃尔夫–拉叶变星\"}\r\n {set desc2 to Occasionally(2, \", 脱落了相当大的质量并且暴露出核心中离子态的碳, \")}\r\n |elif reportbody.stellarclass = \"WN\":\r\n {set desc1 to \"富氦和氮的\"}\r\n {set shortdescription to \"沃尔夫–拉叶变星\"}\r\n {set desc2 to Occasionally(2, \", 脱落了相当大的质量并且暴露出核心中离子态的氦和氮, \")}\r\n |elif reportbody.stellarclass = \"WO\":\r\n {set desc1 to \"富氧的\"}\r\n {set shortdescription to \"沃尔夫–拉叶变星\"}\r\n {set desc2 to Occasionally(2, \", 脱落了相当大的质量并且暴露出核心中离子态的氧, \")}\r\n |elif reportbody.stellarclass = \"WNC\":\r\n {set shortdescription to \"沃尔夫–拉叶变星\"}\r\n {set desc2 to Occasionally(2, \", 脱落了相当大的质量并且暴露出核心中离子态的氮,碳,氧和氦, \")}\r\n |elif reportbody.stellarclass = \"W\":\r\n {set shortdescription to \"沃尔夫–拉叶变星\"} \r\n {set desc2 to Occasionally(2, \", 脱落了相当大的质量并且暴露出核心中的重元素, \")}\r\n |elif reportbody.stellarclass = \"CS\":\r\n {set shortdescription to \"碳星\"}\r\n |elif find([\"C\", \"CN\", \"CH\", \"CHd\"], reportbody.stellarclass) > -1:\r\n {set age to Occasionally(2, \"主序晚期\")} \r\n {set shortdescription to \"富碳星\"}\r\n |elif reportbody.stellarclass = \"CJ\":\r\n {set age to Occasionally(2, \"主序晚期\")} \r\n {set shortdescription to \"碳星\"}\r\n {set desc2 to Occasionally(2, \"含有高水平的碳13\")}\r\n |elif find([\"MS\", \"S\"], reportbody.stellarclass) > -1:\r\n {set age to Occasionally(2, \"主序晚期\")} \r\n {set shortdescription to \"恒星\"}\r\n {set desc2 to Occasionally(4, \"那曾经是一颗M级恒星,而现在正在变为一颗碳星\")}\r\n |elif reportbody.stellarclass = \"DA\":\r\n {set shortdescription to \"白矮星\"}\r\n {set desc2 to Occasionally(4, \"它是富氢的\")}\r\n |elif reportbody.stellarclass = \"DAB\":\r\n {set shortdescription to \"白矮星\"}\r\n {set desc2 to Occasionally(4, \"它是富氢富氦的\")}\r\n |elif slice(reportbody.stellarclass, 0, 1) = \"D\":\r\n {set shortdescription to \"白矮星\"}\r\n |elif slice(reportbody.stellarclass, 0, 1) = \"N\":\r\n {set shortdescription to \"中子星\"}\r\n {set desc2 to Occasionally(4, \"它具有一个极度危险的极高密度核心,其中所有的物质被引力撕裂为中子\")}\r\n |elif reportbody.stellarclass = \"H\":\r\n {set shortdescription to \"黑洞\"}\r\n |elif reportbody.stellarclass = \"X\":\r\n {set shortdescription to \"奇异恒星级实体\"}\r\n |elif reportbody.stellarclass = \"SuperMassiveBlackHole\":\r\n {set shortdescription to \"超大质量黑洞\"}\r\n |elif reportbody.stellarclass = \"A_BlueWhiteSuperGiant\":\r\n {set class to \"{Spacialise(\\\"A\\\")}\"}\r\n {set shortdescription to \"蓝白超巨星\"}\r\n {set desc2 to Occasionally(4, \"它正在扩张为红超巨星\")}\r\n |elif reportbody.stellarclass = \"F_WhiteSuperGiant\":\r\n {set class to \"{Spacialise(\\\"F\\\")}\"} \r\n {set shortdescription to \"黄白超巨星\"}\r\n {set desc2 to Occasionally(4, \"他正在扩张为红超巨星\")}\r\n |elif reportbody.stellarclass = \"M_RedSuperGiant\":\r\n {set class to \"{Spacialise(\\\"M\\\")}\"} \r\n {set shortdescription to \"红超巨星\"}\r\n {set desc2 to Occasionally(4, \"它处于氦燃烧阶段\")}\r\n |elif reportbody.stellarclass = \"M_RedGiant\":\r\n {set class to \"{Spacialise(\\\"M\\\")}\"} \r\n {set shortdescription to \"红巨星\"}\r\n {set desc2 to Occasionally(4, \"它正在扩张成为红超巨星\")}\r\n |elif reportbody.stellarclass = \"K_OrangeGiant\":\r\n {set class to \"{Spacialise(\\\"M\\\")}\"} \r\n {set shortdescription to \"橙巨星\"}\r\n {set desc2 to Occasionally(4, \"它正在走向生命的尽头\")}\r\n |elif reportbody.stellarclass = \"RoguePlanet\":\r\n {set class to \"\"} \r\n {set shortdescription to \"流浪星球\"}\r\n |elif reportbody.stellarclass = \"Nebula\":\r\n {set class to \"\"} \r\n {set shortdescription to \"星云\"}\r\n |elif reportbody.stellarclass = \"StellarRemnantNebula\":\r\n {set class to \"\"} \r\n {set shortdescription to \"星云残骸\"}\r\n }\r\n\r\n {if !shortdescription:\r\n {set shortdescription to \"恒星\"}\r\n }\r\n {set description to shortdescription}\r\n {if desc1: \r\n {set description to cat(desc1, \" \", description)}\r\n }\r\n {if desc2: \r\n {set description to cat(description, \" \", desc2)}\r\n }\r\n\r\n {_ Set additional common elements _}\r\n\r\n {if !class:\r\n {set class to Spacialise(reportbody.stellarclass)}\r\n }\r\n\r\n {_ Begin speaking _}\r\n\r\n {if len(notables) > 0:\r\n {if reportbody.shortname != reportbody.systemname:\r\n {if fastburning = 1: {Occasionally(2, \"快速燃烧的\")}}\r\n {mainsequence}\r\n {shortdescription}\r\n {P(reportbody.shortname, \"body\")} 是\r\n |else:\r\n 这\r\n {if fastburning = 1: {Occasionally(2, \"快速燃烧的\")}}\r\n {mainsequence}\r\n {shortdescription} 是\r\n }\r\n\r\n {if rarity:\r\n {rarity}{if reportbody.chromaticity: \", \"} 而且\r\n }\r\n\r\n {if len(notables) = 1:\r\n 值得注意的,\r\n |elif len(notables) = 2:\r\n {OneOf('有趣的,', 'notable', '亮眼的')}\r\n |elif len(notables) = 3:\r\n {OneOf('特殊的,', '卓越的,')}\r\n |elif len(notables) = 4:\r\n {OneOf('非凡的,')}\r\n |elif len(notables) >= 5:\r\n {OneOf('举世无双的,', '独一无二的,')}\r\n }\r\n\r\n {if reportClass = 1 && len(class) > 0: \r\n {set class to cat(\"class\", \" \", class)}\r\n {if reportSubClass && reportbody.stellarsubclass:\r\n {set class to cat(class, \" \", reportbody.stellarsubclass)}\r\n }\r\n }\r\n {Occasionally(3, \"相对于相似的 {class} {shortdescription},\")}\r\n\r\n {if len(notables) > 0:\r\n {List(notables)}.\r\n }\r\n\r\n {if reportbody.chromaticity && reportChromaticity = 1:\r\n 如你所见,他发出 \r\n {if StartsWithVowel(reportbody.chromaticity): |else: } \r\n {reportbody.chromaticity} 光. \r\n }\r\n }\r\n } \r\n\r\n {if reportScanValue: {F(\"Report last scan value\")} }\r\n\r\n {if reportHabZone && event.mainstar: {F(\"Star habitable zone\")} }\r\n}", - "default": false + "default": true, + "name": "Star report", + "description": "Function to report on the details of the contextual body" }, "Star scanned": { - "name": "Star scanned", - "description": "Triggered when you complete a scan of a stellar body", "enabled": true, "priority": 3, "responder": true, - "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'star')}\r\n{SetState('eddi_context_last_action', 'scan')}\r\n{SetState('eddi_context_star_system', system.name)}\r\n{SetState('eddi_context_star_star', event.name)}\r\n{SetState('eddi_context_last_scan_estimated_value', event.estimatedvalue)}\r\n\r\n{if ship.Role.edname = \"Exploration\" || ship.Role.edname = \"Multipurpose\":\r\n {F(\"Star report\")}\r\n}", - "default": true + "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'star')}\r\n{SetState('eddi_context_last_action', 'scan')}\r\n{SetState('eddi_context_star_system', system.name)}\r\n{SetState('eddi_context_star_star', event.name)}\r\n{SetState('eddi_context_last_scan_estimated_value', event.estimatedvalue)}\r\n\r\n{if ship.Role.edname = \"Exploration\" || ship.Role.edname = \"Multipurpose\":\r\n\r\n {if event.mainstar && !event.alreadydiscovered && event.scantype = \"AutoScan\":\r\n 这个星系 \r\n {OneOf(\r\n \" {Occasionally(2, '还')} 没有被注册到\",\r\n \"没有登记在\"\r\n \"还没有被登记在\",\r\n \"没有注册到\"\r\n )}\r\n Universal Cartographics.\r\n {Pause(500)}\r\n }\r\n\r\n {F(\"Star report\")}\r\n}", + "default": true, + "name": "Star scanned", + "description": "Triggered when you complete a scan of a stellar body" }, "Station mailslot": { "enabled": true, @@ -2343,211 +2335,211 @@ "description": "Triggered when your ship enters through a station's mailslot without the aid of a docking computer" }, "Station no fire zone entered": { - "name": "Station no fire zone entered", - "description": "Triggered when your ship enters a station's no fire zone", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Station no fire zone entered", + "description": "Triggered when your ship enters a station's no fire zone" }, "Station no fire zone exited": { - "name": "Station no fire zone exited", - "description": "Triggered when your ship exits a station's no fire zone", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Station no fire zone exited", + "description": "Triggered when your ship exits a station's no fire zone" }, "Station report": { - "name": "Station report", - "description": "Function to report on the details of the current station", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "这里没有什么有用的信息.", - "default": true + "default": true, + "name": "Station report", + "description": "Function to report on the details of the current station" }, "Statistics": { - "name": "Statistics", - "description": "Statistics provided at the beginning of a game session", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Statistics", + "description": "Statistics provided at the beginning of a game session" }, "Suit purchased": { - "name": "Suit purchased", - "description": "Triggered when you buy a space suit", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Suit purchased", + "description": "Triggered when you buy a space suit" }, "Surface signals detected": { - "name": "Surface signals detected", - "description": "Triggered when surface signal sources are detected", "enabled": true, "priority": 3, "responder": true, "script": "{set surfacesignals to []}\r\n{for signal in event.surfacesignals: \r\n {set surfacesignals_desc to: \r\n {signal.amount} {signal.source}{if signal.amount > 1:s}\r\n }\r\n {set surfacesignals to cat(surfacesignals, [surfacesignals_desc])}\r\n}\r\n\r\n已发现{List(surfacesignals)}.", - "default": true + "default": true, + "name": "Surface signals detected", + "description": "Triggered when surface signal sources are detected" }, "Swapout check": { - "name": "Swapout check", - "description": "Check to see if any fitted modules are available more cheaply here", "enabled": true, - "priority": null, + "priority": 3, "responder": false, - "script": "{_ Function to find a given module in outfitting}\r\n{set outfitting(module) to:\r\n {for outfittingmodule in station.outfitting:\r\n {if outfittingmodule.EDName = module.EDName:\r\n {return outfittingmodule}\r\n }\r\n }\r\n}\r\n\r\n{_ Function to report if a module is cheaper in outfitting that on the ship}\r\n{set reportIfCheaper(shipmodule) to:\r\n {_ Only consider if this has no modifications and is not a specialized Guardian module}\r\n {if !shipmodule.modified && find(module.edname, \"Guardian\") = -1:\r\n {set outfittingmodule to outfitting(shipmodule)}\r\n {if outfittingmodule:\r\n {if outfittingmodule.price > 0 && outfittingmodule.price < shipmodule.price:\r\n {set saving to shipmodule.price - outfittingmodule.price}\r\n {_ Only bother if it's a relatively good saving... more than 2% of the ship value or more than 0.1% of the commander's credit balance}\r\n {if saving / ship.value > 0.02 || (cmdr.credits > 0 && saving / cmdr.credits > 0.001):\r\n 您可以通过换掉您船上的{shipmodule.name}来降低{Humanise(round(saving * cmdr.insurance))}点飞船重购保险费。\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n{reportIfCheaper(ship.powerplant)}\r\n{reportIfCheaper(ship.thrusters)}\r\n{reportIfCheaper(ship.frameshiftdrive)}\r\n{reportIfCheaper(ship.lifesupport)}\r\n{reportIfCheaper(ship.powerdistributor)}\r\n{reportIfCheaper(ship.sensors)}\r\n{for hardpoint in ship.hardpoints:\r\n {if hardpoint.module:\r\n {reportIfCheaper(hardpoint.module)}\r\n }\r\n}\r\n{for compartment in ship.compartments:\r\n {if compartment.module:\r\n {reportIfCheaper(compartment.module)}\r\n }\r\n}\r\n", - "default": true + "script": "{_ Function to find a given module in outfitting}\r\n{set outfitting(module) to:\r\n {for outfittingmodule in station.outfitting:\r\n {if outfittingmodule.EDName = module.EDName:\r\n {return outfittingmodule}\r\n }\r\n }\r\n}\r\n\r\n{_ Function to report if a module is cheaper in outfitting that on the ship}\r\n{set reportIfCheaper(shipmodule) to:\r\n {_ Only consider if this has no modifications and is not a specialized Guardian module}\r\n {if !shipmodule.modified && find(module.edname, \"Guardian\") = -1:\r\n {set outfittingmodule to outfitting(shipmodule)}\r\n {if outfittingmodule:\r\n {if outfittingmodule.price > 0 && outfittingmodule.price < shipmodule.price:\r\n {set saving to shipmodule.price - outfittingmodule.price}\r\n {_ Only bother if it's a relatively good saving... more than 20% of the ship value or more than 1% of the commander's credit balance}\r\n {if saving / ship.value > 0.2 || (cmdr.credits > 0 && saving / cmdr.credits > 0.01):\r\n 您可以通过换掉您船上的{shipmodule.name}来降低{Humanise(round(saving * cmdr.insurance))}点飞船重购保险费。\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n{reportIfCheaper(ship.powerplant)}\r\n{reportIfCheaper(ship.thrusters)}\r\n{reportIfCheaper(ship.frameshiftdrive)}\r\n{reportIfCheaper(ship.lifesupport)}\r\n{reportIfCheaper(ship.powerdistributor)}\r\n{reportIfCheaper(ship.sensors)}\r\n{for hardpoint in ship.hardpoints:\r\n {if hardpoint.module:\r\n {reportIfCheaper(hardpoint.module)}\r\n }\r\n}\r\n{for compartment in ship.compartments:\r\n {if compartment.module:\r\n {reportIfCheaper(compartment.module)}\r\n }\r\n}\r\n", + "default": true, + "name": "Swapout check", + "description": "Check to see if any fitted modules are available more cheaply here" }, "Synthesised": { - "name": "Synthesised", - "description": "Triggered when you synthesise something from materials", "enabled": true, "priority": 3, "responder": true, "script": "完成合成.", - "default": true + "default": true, + "name": "Synthesised", + "description": "Triggered when you synthesise something from materials" }, "System distance report": { - "name": "System distance report", - "description": "Function to report on the distance to the contextual system", "enabled": true, "priority": null, "responder": false, "script": "{_ Fetch from context }\r\n{set reportsystem to SystemDetails(state.eddi_context_system_system)}\r\n\r\n{if !reportsystem.name || reportsystem.name = \"\":\r\n 我不确定您问的是哪个星系.\r\n|else:\r\n 到 {P(reportsystem.name, \"星系\")} 的距离为 {Humanise(Distance(reportsystem.x, reportsystem.y, reportsystem.z, system.x, system.y, system.z))} 光年.\r\n}", - "default": true + "default": true, + "name": "System distance report", + "description": "Function to report on the distance to the contextual system" }, "System faction changed": { - "name": "System faction changed", - "description": "Triggered when there is a change in the controlling faction of a watched system", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "System faction changed", + "description": "Triggered when there is a change in the controlling faction of a watched system" }, "System materials report": { - "name": "System materials report", - "description": "Report on the materials available from the contextual system", "enabled": true, "priority": 3, "responder": false, - "script": "{_ Preferences _}\r\n{set reportMats to 1} {_ Set to 0 to hear about materials below your minimum inventory level _}\r\n {_ Set to 1 to hear about materials below your desired inventory level _}\r\n {_ Set to 2 to hear about all materials irrespective of inventory levels _}\r\n\r\n{set reportMatConc to 1} {_ Set to 0 if you only want to hear about great material concentrations _}\r\n {_ Set to 1 if you want to hear about good and great material concentrations _}\r\n {_ Set to 2 if you want to hear about all material concentrations _}\r\n\r\n{_ Fetch from context _}\r\n{if state.eddi_context_system_name:\r\n {set reportSystem to SystemDetails(state.eddi_context_system_name)}\r\n|else:\r\n {set reportSystem to SystemDetails(system.systemname)}\r\n}\r\n\r\n{set bodyMaterials to []}\r\n{set signalMaterials to []}\r\n{set bodyDescriptions to []}\r\n{set signalDescriptions to []}\r\n\r\n{_ Define various functions to help with this script _}\r\n{set addBodyMaterial(details, bodyName) to:\r\n {set bodyName to:\r\n {if details.bodyname != details.bodyshortname: body} {details.bodyshortname}\r\n }\r\n {if has(bodyMaterials, bodyName):\r\n {if find(bodyMaterials[bodyName], details.localizedName) = -1:\r\n {set newMats to cat(bodyMaterials[bodyName], [details.localizedName])} \r\n {set bodyMaterials to union(bodyMaterials, [bodyName: newMats])}\r\n }\r\n |else:\r\n {set bodyMaterials to union(bodyMaterials, [bodyName: [details.localizedName]])}\r\n }\r\n}\r\n\r\n{set addSignalMaterial(materialName, signalSourceType) to:\r\n {if has(signalMaterials, materialName):\r\n {if find(signalMaterials[materialName], signalSourceType) = -1:\r\n {set locations to cat(signalMaterials[materialName], [signalSourceType])}\r\n {set signalMaterials to union(signalMaterials, [materialName:locations])}\r\n }\r\n |else:\r\n {set signalMaterials to union(signalMaterials, [materialName: [signalSourceType]])}\r\n }\r\n}\r\n\r\n{set isConcentrated(materialPresence) to:\r\n {if (reportMatConc >= 0 && materialPresence.percentage >= materialPresence.definition.greatpctbody)\r\n || (reportMatConc >= 1 && materialPresence.percentage >= materialPresence.definition.goodpctbody)\r\n || (reportMatConc >= 2):\r\n {return 1}\r\n }\r\n {return 0}\r\n}\r\n\r\n{set isSeleniumSpecialCase(materialPresence, bodyName, reportSystem) to:\r\n {_ Special case Selenium, which is bugged to appear in crystalline fragments _}\r\n {_ (i.e. with common elements) rather than crystalline shards (i.e. with rare elements) _}\r\n {_ when surface prospecting geological sites _}\r\n {if materialPresence.name = \"Selenium\" && isVolcanic(bodyName, reportSystem):\r\n {set commonMaterialPercentages to 0}\r\n {for m in reportbody.materials:\r\n {_ Sum up the percentages of common elements so that we can _}\r\n {_ calculate the relative chance of Selenium being present _}\r\n {if m.definition.Rarity.invariantName = \"common\":\r\n {set commonMaterialPercentages to commonMaterialPercentages + m.percentage}\r\n }\r\n }\r\n {if reportMatConc >= 0 && materialPresence.percentage > commonMaterialPercentages:\r\n {_ More than a 50% chance to drop Selenium from crystalline fragments _}\r\n {return 1} \r\n |elif reportMatConc >= 1\r\n && materialPresence.percentage > commonMaterialPercentages / 2:\r\n {_ More than a 33% chance to drop Selenium from crystalline fragments _}\r\n {return 1} \r\n }\r\n }\r\n {return 0}\r\n}\r\n\r\n{set isNeeded(invMaterial) to:\r\n {if (reportMats >= 0 && invMaterial.minimum && invMaterial.amount < invMaterial.minimum)\r\n || (reportMats >= 1 && invMaterial.desired && invMaterial.amount < invMaterial.desired)\r\n || (reportMats >= 2):\r\n {return 1}\r\n }\r\n {return 0}\r\n}\r\n\r\n{set isVolcanic(bodyName, reportSystem) to:\r\n {for reportbody in reportSystem.bodies:\r\n {if reportbody.name = bodyName:\r\n {return reportBody.volcanism}\r\n }\r\n }\r\n}\r\n\r\n{set materialInventory(materialName) to:\r\n {for material in materials:\r\n {if material.material = materialName:\r\n {return material}\r\n }\r\n }\r\n}\r\n\r\n{set getMaterialPresence(materialName, bodyName, reportSystem) to:\r\n {for body in reportSystem.bodies:\r\n {for materialPresence in body.materials:\r\n {if body.name = bodyName && material.material = materialName: \r\n {return materialPresence}\r\n }\r\n }\r\n }\r\n}\r\n\r\n{_ Get information about populated system signal sources _}\r\n{if reportSystem.population > 0:\r\n {set sigMaterials to []}\r\n {set signalsType to [\"Encoded Emissions\", \"High Grade Emissions\"]}\r\n\r\n {for sigType in signalsType:\r\n {if sigType = \"Encoded Emissions\":\r\n {if reportSystem.Faction.Allegiance.invariantName = \"Federation\":\r\n {set sigMaterials to cat(sigMaterials, [\"Proprietary Composites\"])}\r\n }\r\n |elif sigType = \"High Grade Emissions\":\r\n {if reportSystem.Faction.Allegiance.invariantName = \"Federation\":\r\n {set sigMaterials to cat(sigMaterials, [\"Core Dynamics Composites\"])}\r\n {set sigMaterials to cat(sigMaterials, [\"Proprietary Composites\"])}\r\n |elif reportSystem.Faction.Allegiance.invariantName = \"Empire\":\r\n {set sigMaterials to cat(sigMaterials, [\"Imperial Shielding\"])}\r\n }\r\n {for faction in reportSystem.factions:\r\n {for factionPresence in faction.presences:\r\n {if reportSystem.systemname = factionPresence.systemName && factionPresence.influence >= 25:\r\n {for state in factionPresence.ActiveStates:\r\n {if state.invariantName = \"Civil Unrest\":\r\n {set sigMaterials to cat(sigMaterials, [\"Improvised Components\"])}\r\n |elif state.invariantName = \"Civil War\" || state.invariantName = \"War\":\r\n {set sigMaterials to cat(sigMaterials, [\"Military Grade Alloys\", \r\n \"Military Supercapacitors\"])}\r\n |elif state.invariantName = \"Outbreak\":\r\n {set sigMaterials to cat(sigMaterials, [\"Pharmaceutical Isolators\"])}\r\n |elif state.invariantName = \"Boom\":\r\n {set sigMaterials to cat(sigMaterials, [\"Proto Heat Radiators\",\r\n \"Proto Light Alloys\",\r\n \"Proto Radiolic Alloys\"])}\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n {_ Add material if it is 'needed' and the signal type is not already added for it _}\r\n {for invariantMaterial in sigMaterials:\r\n {set details to MaterialDetails(invariantMaterial)}\r\n {if isNeeded(materialInventory(details.localizedName)):\r\n {if !has(signalMaterials[details.localizedName], sigType):\r\n {addSignalMaterial(details.localizedName, sigType)}\r\n }\r\n }\r\n }\r\n {_ Reset sigMaterials array _}\r\n {set sigMaterials to []}\r\n }\r\n\r\n {_ Reorganise signals array -> 'material':'sources' _}\r\n {set signalsOrganised to []}\r\n {for mat, sig in signalMaterials:\r\n {set sig to List(sig)}\r\n {set matList to []}\r\n {if has(signalsOrganised, sig):\r\n {set matList to cat(signalsOrganised[sig], [mat])}\r\n {set signalsOrganised to union(signalsOrganised, [sig:matList])}\r\n |else:\r\n {set signalsOrganised to union(signalsOrganised, [sig:[mat]])}\r\n }\r\n }\r\n {set signalMaterials to signalsOrganised}\r\n\r\n {_ Sort materials into alphabetical order _}\r\n {for signalType, mats in signalMaterials:\r\n {set sortMats to []}\r\n {for item in sort(mats, cmp(a, b)):\r\n {set sortMats to cat(sortMats, [item])}\r\n }\r\n {set signalDescriptions to cat(signalDescriptions, [cat(List(sortMats),\r\n \" may be found in \", signalType, \" signal sources\")])}\r\n }\r\n}\r\n\r\n{for compartment in ship.compartments:\r\n {if compartment.module.invariantName = \"Planetary Vehicle Hangar\":\r\n {set hasSRV to true}\r\n }\r\n}\r\n\r\n{if hasSRV:\r\n {_ Get information about body surface prospecting materials _}\r\n {for material in reportSystem.surfaceelements:\r\n {set detail to MaterialDetails(material, reportSystem.systemname)}\r\n {if detail.bodyname:\r\n {if isNeeded(materialInventory(detail.localizedName)):\r\n {set materialPresence to getMaterialPresence(material.name, detail.bodyname, reportSystem)}\r\n {if isConcentrated(materialPresence)\r\n || isSeleniumSpecialCase(materialPresence, detail.bodyname, reportSystem):\r\n {addBodyMaterial(detail)}\r\n }\r\n }\r\n }\r\n }\r\n\r\n {for bodyName, mats in bodyMaterials:\r\n {_ Sort materials into alphanumerical order _}\r\n {set sortMats to []}\r\n {for item in sort(mats, cmp(a, b)):\r\n {set sortMats to cat(sortMats, [item])}\r\n }\r\n {set bodyDescriptions to cat(bodyDescriptions, [\r\n cat(List(sortMats),\r\n when(len(sortMats) > 1, \" are \", \" is \"),\r\n when(len(mats) > 1, OneOf(\"most prevalent\", \"most abundant\"), \"found\"), \r\n \" on \" P(bodyName, 'body')\r\n )])}\r\n }\r\n\r\n {_ Sort bodies into alphanumerical order _}\r\n {declare check(a, b) as:\r\n {set body1 to token(a, \" on \", 1)}\r\n {set body2 to token(b, \" on \", 1)}\r\n {return cmp(body1, body2)}\r\n }\r\n {set sortDesc to []}\r\n {for item in sort(bodyDescriptions, check):\r\n {set sortDesc to cat(sortDesc, [item])}\r\n }\r\n {set bodyDescriptions to cat(sortDesc)}\r\n}\r\n\r\n{if len(signalMaterials) > 0 && len(bodyMaterials) > 0:\r\n {set break to OneOf(\". \", \". Additionally, \")}\r\n}\r\n\r\n{set descriptions to cat(List(signalDescriptions), break, List(bodyDescriptions))}\r\n{if len(descriptions) > 0:\r\n {descriptions} in this system.\r\n}", - "default": true + "script": "{_ Preferences _}\r\n{set reportMats to 1} {_ Set to 0 to hear about materials below your minimum inventory level _}\r\n {_ Set to 1 to hear about materials below your desired inventory level _}\r\n {_ Set to 2 to hear about all materials irrespective of inventory levels _}\r\n\r\n{set reportMatConc to 1} {_ Set to 0 if you only want to hear about great material concentrations _}\r\n {_ Set to 1 if you want to hear about good and great material concentrations _}\r\n {_ Set to 2 if you want to hear about all material concentrations _}\r\n\r\n{_ Fetch from context _}\r\n{if state.eddi_context_system_name:\r\n {set reportSystem to SystemDetails(state.eddi_context_system_name)}\r\n|else:\r\n {set reportSystem to SystemDetails(system.systemname)}\r\n}\r\n\r\n{set bodyMaterials to []}\r\n{set signalMaterials to []}\r\n{set bodyDescriptions to []}\r\n{set signalDescriptions to []}\r\n\r\n{_ Define various functions to help with this script _}\r\n{set addBodyMaterial(details, bodyName) to:\r\n {set bodyName to:\r\n {if details.bodyname != details.bodyshortname: body} {details.bodyshortname}\r\n }\r\n {if has(bodyMaterials, bodyName):\r\n {if find(bodyMaterials[bodyName], details.localizedName) = -1:\r\n {set newMats to cat(bodyMaterials[bodyName], [details.localizedName])} \r\n {set bodyMaterials to union(bodyMaterials, [bodyName: newMats])}\r\n }\r\n |else:\r\n {set bodyMaterials to union(bodyMaterials, [bodyName: [details.localizedName]])}\r\n }\r\n}\r\n\r\n{set addSignalMaterial(materialName, signalSourceType) to:\r\n {if has(signalMaterials, materialName):\r\n {if find(signalMaterials[materialName], signalSourceType) = -1:\r\n {set locations to cat(signalMaterials[materialName], [signalSourceType])}\r\n {set signalMaterials to union(signalMaterials, [materialName:locations])}\r\n }\r\n |else:\r\n {set signalMaterials to union(signalMaterials, [materialName: [signalSourceType]])}\r\n }\r\n}\r\n\r\n{set isConcentrated(materialPresence) to:\r\n {if (reportMatConc >= 0 && materialPresence.percentage >= materialPresence.definition.greatpctbody)\r\n || (reportMatConc >= 1 && materialPresence.percentage >= materialPresence.definition.goodpctbody)\r\n || (reportMatConc >= 2):\r\n {return 1}\r\n }\r\n {return 0}\r\n}\r\n\r\n{set isSeleniumSpecialCase(materialPresence, bodyName, reportSystem) to:\r\n {_ Special case Selenium, which is bugged to appear in crystalline fragments _}\r\n {_ (i.e. with common elements) rather than crystalline shards (i.e. with rare elements) _}\r\n {_ when surface prospecting geological sites _}\r\n {if materialPresence.name = \"Selenium\" && isVolcanic(bodyName, reportSystem):\r\n {set commonMaterialPercentages to 0}\r\n {for m in reportbody.materials:\r\n {_ Sum up the percentages of common elements so that we can _}\r\n {_ calculate the relative chance of Selenium being present _}\r\n {if m.definition.Rarity.invariantName = \"common\":\r\n {set commonMaterialPercentages to commonMaterialPercentages + m.percentage}\r\n }\r\n }\r\n {if reportMatConc >= 0 && materialPresence.percentage > commonMaterialPercentages:\r\n {_ More than a 50% chance to drop Selenium from crystalline fragments _}\r\n {return 1} \r\n |elif reportMatConc >= 1\r\n && materialPresence.percentage > commonMaterialPercentages / 2:\r\n {_ More than a 33% chance to drop Selenium from crystalline fragments _}\r\n {return 1} \r\n }\r\n }\r\n {return 0}\r\n}\r\n\r\n{set isNeeded(invMaterial) to:\r\n {if (reportMats >= 0 && invMaterial.minimum && invMaterial.amount < invMaterial.minimum)\r\n || (reportMats >= 1 && invMaterial.desired && invMaterial.amount < invMaterial.desired)\r\n || (reportMats >= 2):\r\n {return 1}\r\n }\r\n {return 0}\r\n}\r\n\r\n{set isVolcanic(bodyName, reportSystem) to:\r\n {for reportbody in reportSystem.bodies:\r\n {if reportbody.name = bodyName:\r\n {return reportBody.volcanism}\r\n }\r\n }\r\n}\r\n\r\n{set inventory(materialName) to:\r\n {for material in materials:\r\n {if material.material = materialName:\r\n {return material}\r\n }\r\n }\r\n}\r\n\r\n{set getMaterialPresence(materialName, bodyName, reportSystem) to:\r\n {for body in reportSystem.bodies:\r\n {for materialPresence in body.materials:\r\n {if body.name = bodyName && material.material = materialName: \r\n {return materialPresence}\r\n }\r\n }\r\n }\r\n}\r\n\r\n{_ Get information about populated system signal sources _}\r\n{if reportSystem.population > 0:\r\n {set sigMaterials to []}\r\n {set signalsType to [\"Encoded Emissions\", \"High Grade Emissions\"]}\r\n\r\n {for sigType in signalsType:\r\n {if sigType = \"Encoded Emissions\":\r\n {if reportSystem.Faction.Allegiance.invariantName = \"Federation\":\r\n {set sigMaterials to cat(sigMaterials, [\"专有复合材料\"])}\r\n }\r\n |elif sigType = \"High Grade Emissions\":\r\n {if reportSystem.Faction.Allegiance.invariantName = \"Federation\":\r\n {set sigMaterials to cat(sigMaterials, [\"核心动力学复合材料\"])}\r\n {set sigMaterials to cat(sigMaterials, [\"专有复合材料\"])}\r\n |elif reportSystem.Faction.Allegiance.invariantName = \"Empire\":\r\n {set sigMaterials to cat(sigMaterials, [\"帝国护盾\"])}\r\n }\r\n {for faction in reportSystem.factions:\r\n {for factionPresence in faction.presences:\r\n {if reportSystem.systemname = factionPresence.systemName && factionPresence.influence >= 25:\r\n {for state in factionPresence.ActiveStates:\r\n {if state.invariantName = \"Civil Unrest\":\r\n {set sigMaterials to cat(sigMaterials, [\"简易组件\"])}\r\n |elif state.invariantName = \"Civil War\" || state.invariantName = \"War\":\r\n {set sigMaterials to cat(sigMaterials, [\"军用级合金\", \r\n \"Military Supercapacitors\"])}\r\n |elif state.invariantName = \"Outbreak\":\r\n {set sigMaterials to cat(sigMaterials, [\"药用隔离器\"])}\r\n |elif state.invariantName = \"Boom\":\r\n {set sigMaterials to cat(sigMaterials, [\"原型热辐射器\",\r\n \"原型轻合金\",\r\n \"原型放射性合金\"])}\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n {_ Add material if it is 'needed' and the signal type is not already added for it _}\r\n {for invariantMaterial in sigMaterials:\r\n {set details to MaterialDetails(invariantMaterial)}\r\n {if isNeeded(inventory(details.localizedName)):\r\n {if !has(signalMaterials[details.localizedName], sigType):\r\n {addSignalMaterial(details.localizedName, sigType)}\r\n }\r\n }\r\n }\r\n {_ Reset sigMaterials array _}\r\n {set sigMaterials to []}\r\n }\r\n\r\n {_ Reorganise signals array -> 'material':'sources' _}\r\n {set signalsOrganised to []}\r\n {for mat, sig in signalMaterials:\r\n {set sig to List(sig)}\r\n {set matList to []}\r\n {if has(signalsOrganised, sig):\r\n {set matList to cat(signalsOrganised[sig], [mat])}\r\n {set signalsOrganised to union(signalsOrganised, [sig:matList])}\r\n |else:\r\n {set signalsOrganised to union(signalsOrganised, [sig:[mat]])}\r\n }\r\n }\r\n {set signalMaterials to signalsOrganised}\r\n\r\n {_ Sort materials into alphabetical order _}\r\n {for signalType, mats in signalMaterials:\r\n {set sortMats to []}\r\n {for item in sort(mats, cmp(a, b)):\r\n {set sortMats to cat(sortMats, [item])}\r\n }\r\n {set signalDescriptions to cat(signalDescriptions, [cat(List(sortMats),\r\n \" 可以在 \", signalType, \" 信号源中被找到\")])}\r\n }\r\n}\r\n\r\n{for compartment in ship.compartments:\r\n {if compartment.module.invariantName = \"月球车舱\":\r\n {set hasSRV to true}\r\n }\r\n}\r\n\r\n{if hasSRV:\r\n {_ Get information about body surface prospecting materials _}\r\n {for material in reportSystem.surfaceelements:\r\n {set detail to MaterialDetails(material, reportSystem.systemname)}\r\n {if detail.bodyname:\r\n {if isNeeded(inventory(detail.localizedName)):\r\n {set materialPresence to getMaterialPresence(material.name, detail.bodyname, reportSystem)}\r\n {if isConcentrated(materialPresence)\r\n || isSeleniumSpecialCase(materialPresence, detail.bodyname, reportSystem):\r\n {addBodyMaterial(detail)}\r\n }\r\n }\r\n }\r\n }\r\n\r\n {for bodyName, mats in bodyMaterials:\r\n {_ Sort materials into alphanumerical order _}\r\n {set sortMats to []}\r\n {for item in sort(mats, cmp(a, b)):\r\n {set sortMats to cat(sortMats, [item])}\r\n }\r\n {set bodyDescriptions to cat(bodyDescriptions, [\r\n cat(List(sortMats),\r\n when(len(sortMats) > 1, \" 在 \", \" 在 \"),\r\n P(bodyName, 'body') \" 上 \" \r\n when(len(mats) > 1, OneOf(\"很普遍\", \"很好找\"), \"被发现\"), \r\n )])}\r\n }\r\n\r\n {_ Sort bodies into alphanumerical order _}\r\n {declare check(a, b) as:\r\n {set body1 to token(a, \" on \", 1)}\r\n {set body2 to token(b, \" on \", 1)}\r\n {return cmp(body1, body2)}\r\n }\r\n {set sortDesc to []}\r\n {for item in sort(bodyDescriptions, check):\r\n {set sortDesc to cat(sortDesc, [item])}\r\n }\r\n {set bodyDescriptions to cat(sortDesc)}\r\n}\r\n\r\n{if len(signalMaterials) > 0 && len(bodyMaterials) > 0:\r\n {set break to OneOf(\". \", \". Additionally, \")}\r\n}\r\n\r\n{set descriptions to cat(List(signalDescriptions), break, List(bodyDescriptions))}\r\n{if len(descriptions) > 0:\r\n {descriptions} in this system.\r\n}", + "default": true, + "name": "System materials report", + "description": "Report on the materials available from the contextual system" }, "System report": { - "name": "System report", - "description": "Function to report on the details of the contextual star system", "enabled": true, "priority": null, "responder": false, "script": "{_ Fetch from Context, if a context is set _}\r\n{if state.eddi_context_system_name:\r\n {set reportSystem to SystemDetails(state.eddi_context_system_name)}\r\n|else:\r\n {set reportSystem to SystemDetails(system.systemname)}\r\n}\r\n\r\n{if !reportSystem.name || reportSystem.name = \"\":\r\n 我不太确定您问的是哪个星系\r\n|else:\r\n {P(reportSystem.name, \"starsystem\")} 是\r\n {if reportSystem.population && reportSystem.population > 0:\r\n {if reportSystem.security = \"High\":\r\n {OneOf(\"高安全度的\", \"治理得很好的\")}\r\n |elif reportSystem.security = \"Low\":\r\n {OneOf(\"低安全度的\", \"警力稀少的\")}\r\n |elif reportSystem.security = \"Anarchy\":\r\n {OneOf(\"无秩序的\", \"处于无政府状态的\")}\r\n |else:\r\n {if reportSystem.allegiance = \"Federation\": 一个 |else: 一个 }\r\n }\r\n {if reportSystem.allegiance = \"Federation\":\r\n 联邦星系\r\n |elif reportSystem.allegiance = \"Empire\":\r\n 帝国星系\r\n |else:\r\n 独立星系\r\n }\r\n {if reportSystem.government != \"None\":\r\n {reportSystem.government}\r\n |else:\r\n 星系\r\n }\r\n {OneOf(\"其拥有人口\" )} {Humanise(reportSystem.population)} {OneOf(\"人,\")}\r\n {if reportSystem.powerState.invariantName != \"None\":\r\n {if reportSystem.powerState.invariantName = \"Home System\":\r\n 而且这是 {P(reportSystem.power, \"power\")}的母星系\r\n |elif reportSystem.powerState.invariantName = \"Control\":\r\n 而且其被 {P(reportSystem.power, \"power\")} {OneOf(\"控制\", \"\t所掌控\")}\r\n |elif reportSystem.powerState.invariantName = \"Exploited\":\r\n 而且其处于{P(reportSystem.power, \"power\")} {OneOf(\"的轻度掌控下\", \"的影响之下\")} \r\n |elif reportSystem.powerState.invariantName = \"Contested\":\r\n 而且其正处于多个派系的复杂影响下\r\n }\r\n }.\r\n\r\n {if reportSystem.faction:\r\n {P(reportSystem.faction, \"faction\")} 是 {OneOf(\"当权\")} {OneOf(\"力量\", \"派系\")}.\r\n }\r\n\r\n {if len(reportSystem.stations) = 0:\r\n 这里没有任何站点\r\n |else:\r\n {set systemStations to []}\r\n {if len(reportSystem.orbitalstations) = 1:\r\n {set orbitalStationDesc to: \r\n 这个星系中 {OneOf( \"只有一个\", \"有一个\")} 空间站\r\n }\r\n |elif len(reportSystem.orbitalstations) > 1:\r\n {set orbitalStationDesc to: \r\n 这个星系中有 {len(reportSystem.orbitalstations)} 个空间站\r\n }\r\n }\r\n {if len(reportSystem.planetarystations) = 1:\r\n {set planetaryStationDesc to: \r\n {if len(reportSystem.orbitalstations) = 0: 这个星系中}\r\n {OneOf(\"只有一个\", \"有一个\", \"只拥有一个\")} 地面站\r\n }\r\n |elif len(reportSystem.planetarystations) > 1:\r\n {set planetaryStationDesc to: \r\n {if len(reportSystem.orbitalstations) = 0: 这个星系中有}\r\n {len(reportSystem.planetarystations)} 个地面站\r\n }\r\n }\r\n {if len(reportSystem.carriersignalsources) = 1:\r\n {set fleetCarrierDesc to:\r\n {if len(reportSystem.orbitalstations) = 0 && len(reportSystem.planetarystations) = 0: 这个星系中}\r\n {OneOf(\"有一艘\", \"只有一艘\")} 舰队航母\r\n }\r\n |elif len(reportSystem.carriersignalsources) > 1:\r\n {set fleetCarrierDesc to: \r\n {if len(reportSystem.orbitalstations) = 0 && len(reportSystem.planetarystations) = 0: 这个星系中有}\r\n {len(reportSystem.carriersignalsources)} 艘舰队航母\r\n }\r\n }\r\n {if orbitalStationDesc:\r\n {set systemStations to cat(systemStations, [orbitalStationDesc])}\r\n }\r\n {if planetaryStationDesc:\r\n {set systemStations to cat(systemStations, [planetaryStationDesc])}\r\n }\r\n {if fleetCarrierDesc:\r\n {set systemStations to cat(systemStations, [fleetCarrierDesc])}\r\n }\r\n {List(systemStations)}\r\n }\r\n |else:\r\n 无人居住\r\n }.\r\n}", - "default": true + "default": true, + "name": "System report", + "description": "Function to report on the details of the contextual star system" }, "System scan complete": { - "name": "System scan complete", - "description": "Triggered after having identified all bodies in the system", "enabled": true, "priority": 3, "responder": true, "script": "{_ Preferences _}\r\n{set reportGreenSystems to true} {_ if true, reports systems containing all fsd synthesis elements. _}\r\n{set reportGoldSystems to true} {_ if true, reports systems containing all surface prospectable elements. _}\r\n{set reportBodiesToMap to true} {_ If true, recommends bodies to map using the `Bodies to map` script. _}\r\n\r\n{if ship.Role.edname = \"Exploration\" || ship.Role.edname = \"Multipurpose\":\r\n {for compartment in ship.compartments:\r\n {if compartment.module.invariantName = \"Planetary Vehicle Hangar\":\r\n {set hasSRV to true}\r\n }\r\n }\r\n {if hasSRV:\r\n {if system.isgold:\r\n {if reportGoldSystems:\r\n 本星系 \r\n {OneOf(\"含有\", \"拥有\", \"被发现有\")} \r\n {OneOf(\"在星球表面上\", \"从地表探测中\")}\r\n {OneOf(\"可以找到的\", \"可用的\")}\r\n 的所有元素.\r\n 对探索的帮助等级为: 黄金级.\r\n }\r\n |elif system.isgreen:\r\n {if reportGreenSystems:\r\n 本星系 \r\n {OneOf(\"含有\", \"拥有\", \"被发现有\")}\r\n {Occasionally(2, \"可能被\")} \r\n {OneOf(\"跃迁增程\", \"跃迁boost\")} \r\n 所需要的所有元素. \r\n\r\n 对探索的帮助等级为: 绿灯级.\r\n }\r\n }\r\n }\r\n\r\n {if reportBodiesToMap:\r\n {set bodiesToMap to F(\"Bodies to map\")}\r\n {if bodiesToMap:\r\n {Pause(2000)}\r\n {bodiesToMap}\r\n }\r\n }\r\n}", - "default": true + "default": true, + "name": "System scan complete", + "description": "Triggered after having identified all bodies in the system" }, "System state changed": { - "name": "System state changed", - "description": "Triggered when there is a change in the state of a watched system", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'system')}\r\n{SetState('eddi_context_last_action', 'change_state')}\r\n{SetState('eddi_context_system', event.system)}\r\n{SetState('eddi_context_system_system', event.system)}\r\n\r\n{_ Set up our system name}\r\n{if event.system = homesystem.name:\r\n {set system to OneOf('{P(event.system, \"starsystem\")}',\r\n '您的家乡星系')}\r\n|elif event.system = system.name:\r\n {set system to OneOf('{P(event.system, \"starsystem\")}',\r\n '这个星系')}\r\n|else:\r\n {set system to OneOf('{P(event.system, \"starsystem\")} 星系',\r\n '{P(event.system, \"starsystem\")}')}\r\n}\r\n\r\n{if event.newstate != 'None':\r\n {_ System has entered a new state}\r\n {OneOf('本地传输报告说', '通讯: ', '已截获通讯,其内容表明 ')}\r\n {if event.newstate = 'Boom':\r\n {OneOf('{system} 正在经历商业繁荣',\r\n '{system} 正在进入商业成功期')}\r\n |elif event.newstate = 'Bust':\r\n {system} 正经历经济硬着陆\r\n |elif event.newstate = 'Civil Unrest':\r\n {OneOf('{system} 正在经历内乱',\r\n '在 {system} 星系中发生内乱')}\r\n |elif event.newstate = 'Civil War':\r\n {OneOf('{system} 正与同星系其他派系交战',\r\n '在星系 {system} 中正发生内战',\r\n '{system} 已堕入内战中',\r\n '敌对行动在 {system}星系中爆发')}\r\n |elif event.newstate = 'Election':\r\n {system} 星系正在进行选举s\r\n |elif event.newstate = 'Expansion':\r\n {OneOf(\" {system}星系中的一个派系正在尝试向邻近系统武力扩张\",\r\n \" {system}星系中的一个派系正在准备向邻近系统武力扩张\")}\r\n |elif event.newstate = 'Famine':\r\n {system} 正在遭受饥荒\r\n |elif event.newstate = 'Investment':\r\n {system}的当权派正在大搞基建\r\n |elif event.newstate = 'Lockdown':\r\n {system} 的安全性因封城而提高\r\n |elif event.newstate = 'Outbreak':\r\n {system} 正在发生疾病大爆发\r\n |elif event.newstate = 'Retreat':\r\n {system} 的当权派系正在撤离该星系\r\n |elif event.newstate = 'War':\r\n {system} 正在与邻近星系交战\r\n |else:\r\n {OneOf('{system} 已经进入 {event.state} 状态',\r\n '{system} 现在处于 {event.state}状态')}\r\n }.\r\n}\r\n\r\n", - "default": true + "default": true, + "name": "System state changed", + "description": "Triggered when there is a change in the state of a watched system" }, "System state report": { - "name": "System state report", - "description": "Report on the current state of the contextual system", "enabled": true, - "priority": null, + "priority": 3, "responder": false, "script": "{_ Fetch from Context, if a context is set _}\r\n{if state.eddi_context_system_name:\r\n {set reportSystem to SystemDetails(state.eddi_context_system_name)}\r\n|else:\r\n {set reportSystem to SystemDetails(system.systemname)}\r\n}\r\n\r\n{if !reportSystem.name || reportSystem.name = \"\":\r\n\r\n 我不确定您问的是哪个星系\r\n\r\n|else:\r\n\r\n {_ Report any ongoing conflicts _}\r\n {set conflictfactions to []}\r\n {if reportSystem.conflicts != null:\r\n {for conflict in reportSystem.conflicts:\r\n {P(conflict.faction1, \"faction\")}\r\n {if conflict.status = \"active\":\r\n 正在\r\n |elif conflict.status = \"pending\":\r\n 快要\r\n |else:\r\n 已结束\r\n }\r\n {if conflict.faction1dayswon > conflict.faction2dayswon:\r\n {if conflict.margin >= 3:\r\n 支配竞争\r\n |elif conflict.margin = 2:\r\n 获胜\r\n |else:\r\n 领先对手\r\n }\r\n |elif conflict.faction2dayswon > conflict.faction1dayswon:\r\n {if conflict.margin >= 2:\r\n 输掉\r\n |else:\r\n 紧跟对手\r\n }\r\n |else:\r\n 僵持\r\n }\r\n {if StartsWithVowel(conflict.state): a |else: a }\r\n {conflict.state}\r\n 与 \r\n {P(conflict.faction2, \"阵营\")}\r\n {if conflict.stake:\r\n 他们为了争夺 {P(conflict.stake, \"站点\")}而斗争\r\n }\r\n 。\r\n {set conflictfactions to cat(conflictfactions, [conflict.faction1])}\r\n {set conflictfactions to cat(conflictfactions, [conflict.faction2])}\r\n }\r\n }\r\n\r\n {_ List our non-conflict faction states _}\r\n {set otherstates to []}\r\n {for faction in reportSystem.factions:\r\n {if faction.influence > 0 && find(conflictfactions, faction.name) = -1:\r\n {for presence in faction.presences:\r\n {if presence.systemName = reportSystem.name:\r\n {if presence.FactionState.invariantName != \"None\":\r\n\r\n {_ Note our controlling faction, if present in our `otherstates` list. _}\r\n {if faction.name = reportSystem.faction:\r\n {set factions to token(factions, \"\", index, \"controlling \")}\r\n }\r\n\r\n {_ Add the faction to our list _}\r\n {if has(otherstates, presence.state):\r\n {set factions to otherstates[presence.state])}\r\n {set factions to cat(factions, \",\", P(faction.name, \"阵营\"))}\r\n {set otherstates to union(otherstates, [presence.state: factions])}\r\n |else:\r\n {set otherstates to union(otherstates, [presence.state: P(faction.name, \"阵营\")])}\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n {_ Sort from most factions with each state to least factions with each state. _}\r\n {declare by_items(a, b) as:\r\n {return cmp(len(split(b, \",\")), len(split(a, \",\")))}\r\n }\r\n {sort(otherstates, by_items)}\r\n\r\n {_ Prepare summaries for each state _}\r\n {set statesummaries to []}\r\n {for state, factions in otherstates:\r\n\r\n {set factions to split(factions, \",\")}\r\n\r\n {set statesummary to:\r\n {if len(factions) > 1:\r\n {List(factions)} 正在\r\n |else:\r\n {factions[0]} 正在\r\n }\r\n {if state = \"Retreat\":\r\n 撤退\r\n |elif state = \"War\":\r\n 战争中\r\n |elif state = \"Boom\":\r\n 繁荣期\r\n |elif state = \"Civil Liberty\":\r\n 享受高度公民自由时期\r\n |elif state = \"Civil Unrest\":\r\n 经历内乱\r\n |elif state = \"Civil War\":\r\n 内战\r\n |elif state = \"Famine\":\r\n 发生饥荒\r\n |elif state = \"Lockdown\":\r\n 封城\r\n |elif state = \"Outbreak\":\r\n 尝试控制一种疾病的爆发\r\n |elif state = \"Expansion\":\r\n 谋求武力扩张\r\n |elif state = \"Bust\":\r\n 经济萧条\r\n |elif state = \"Election\":\r\n 选举新领袖\r\n |elif state = \"Investment\":\r\n 投资基建\r\n |elif state = \"Incursion\":\r\n 被八角攻击\r\n |elif state = \"Pirate Attack\":\r\n 被海盗洗劫\r\n |elif state = \"Blight\":\r\n 应对枯萎病蔓延\r\n |else: {_ catch-all, worded to avoid deciding between a/an}\r\n in a state of {state}\r\n }\r\n }\r\n {set statesummaries to cat(statesummaries, [statesummary])}\r\n }\r\n\r\n {_ Describe our non-conflict states _}\r\n {if len(statesummaries) > 0:\r\n {Pause(100)}\r\n {List(statesummaries)}\r\n }\r\n\r\n}", - "default": true + "default": true, + "name": "System state report", + "description": "Report on the current state of the contextual system" }, "Technology broker": { - "name": "Technology broker", - "description": "Triggered when using the Technology Broker to unlock new purchasable technology", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Technology broker", + "description": "Triggered when using the Technology Broker to unlock new purchasable technology" }, "Touchdown": { - "name": "Touchdown", - "description": "Triggered when your ship touches down on a planet's surface", "enabled": true, "priority": 3, "responder": true, - "script": "{_ Touchdown _}\r\n{_ Triggered when your ship touches down on a planet's surface _}\r\n\r\n\r\n{set body to BodyDetails(state.eddi_context_body_name, state.eddi_context_system_name)}\r\n\r\n{if event.playercontrolled = true && state.eddi_context_last_subject != 'location':\r\n 成功降落 \r\n {if body.name: 在 {P(body.name, \"body\")} 上}。\r\n|else:\r\n {ShipName()}已降落\r\n {if body.name: 在 {P(body.name, \"body\")} 上}。\r\n}\r\n\r\n{Pause(2000)}\r\n\r\n{if type(event.latitude) != \"void\" && type(event.longitude) != \"void\" :\r\n 降落处坐标为纬线{round(event.latitude, 2)}度, 经线{round(event.longitude, 2)}度。\r\n}\r\n\r\n{_ Context }\r\n{SetState('eddi_context_last_subject', 'ship')}\r\n{SetState('eddi_context_last_action', 'land')}\r\n", - "default": true + "script": "{_ Touchdown _}\r\n{_ Triggered when your ship touches down on a planet's surface _}\r\n\r\n\r\n{set body to BodyDetails(state.eddi_context_body_name, state.eddi_context_system_name)}\r\n\r\n{if event.playercontrolled = true && state.eddi_context_last_subject != 'location':\r\n 成功降落 \r\n {if body.name: 在 {P(body.name, \"body\")} 上}。\r\n|else:\r\n {ShipName()}已降落\r\n {if body.name: 在 {P(body.name, \"body\")} 上}。\r\n}\r\n\r\n{Pause(2000)}\r\n\r\n{if type(event.latitude) != \"void\" && type(event.longitude) != \"void\" :\r\n 降落处坐标为纬线{round(event.latitude, 2)}度, 经线{round(event.longitude, 2)}度。\r\n}\r\n\r\n{if reportTemperature && odyssey && state.eddi_context_touchdown_body_name != event.bodyname:\r\n {_ Convert to desired temperature scale _}\r\n {if reportTempScale = 0:\r\n {set surfTemp to round(reportBody.temperature, 0)}\r\n {set tempScale to \" 开尔文 \"}\r\n |elif reportTempScale = 1:\r\n {set surfTemp to round(reportBody.temperature - 273.15, 0)}\r\n {set tempScale to \" 摄氏度 \"}\r\n |elif reportTempScale = 2:\r\n {set surfTemp to round((reportBody.temperature - 273.15) * 9 / 5 + 32, 0)}\r\n {set tempScale to \" 华氏度 \"}\r\n }\r\n\r\n {_ Report dangerous surface temperatures for on-foot expeditions _}\r\n {set hazardousHighTemp to reportBody.temperature > 426}\r\n {set hazardousLowTemp to reportBody.temperature < 150}\r\n {if hazardousHighTemp || hazardousLowTemp:\r\n 警告: 这个 {reportBody.bodytype} 的 {Occasionally(3, \"平均\")}\r\n 表面温度 \r\n {OneOf(\"极度危险地\", \"危险地\")}\r\n {if hazardousHighTemp: 高 |else: 低 }\r\n ,为 {surfTemp} {tempScale}.\r\n }\r\n}\r\n\r\n{_ Context }\r\n{SetState('eddi_context_last_subject', 'ship')}\r\n{SetState('eddi_context_last_action', 'land')}\r\n{SetState('eddi_context_touchdown_body_name', event.bodyname)}", + "default": true, + "name": "Touchdown", + "description": "Triggered when your ship touches down on a planet's surface" }, "Trade data purchased": { - "name": "Trade data purchased", - "description": "Triggered when you purchase trade data", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'tradedata')}\r\n{SetState('eddi_context_last_action', 'buy')}\r\n{SetState('eddi_context_tradedata_name', event.system)}\r\n\r\n{OneOf(\"已购买星系 {P(event.system, 'starsystem')}的贸易数据\",\r\n \"星系 {P(event.system, 'starsystem')}的贸易数据已可用\",\r\n \"已从站点服务收到星系 {P(event.system, 'starsystem')}的贸易数据\",\r\n \"确认接收星系 {P(event.system, 'starsystem')}的贸易数据\")}。", - "default": true + "default": true, + "name": "Trade data purchased", + "description": "Triggered when you purchase trade data" }, "Trade voucher redeemed": { - "name": "Trade voucher redeemed", - "description": "Triggered when you redeem a trade voucher", "enabled": true, "priority": 3, "responder": true, "script": "{_ Context }\r\n{SetState('eddi_context_last_subject', 'trade_voucher')}\r\n{SetState('eddi_context_last_action', 'redeem')}\r\n{SetState('eddi_context_trade_voucher_amount', event.amount)}\r\n\r\n已兑换 {Humanise(event.amount)} 点贸易代金券\r\n{Occasionally(2, \"\r\n {if len(event.rewards) = 1:\r\n by {P(event.rewards[0].faction, \"faction\")}\r\n |else:\r\n by\r\n {set cur to 0}\r\n {while cur < len(event.rewards):\r\n {if cur = 0:\r\n |elif cur < len(event.rewards) - 1:\r\n , \r\n |else:\r\n and\r\n }\r\n {P(event.rewards[cur].faction, \"faction\")}\r\n {set cur to cur + 1}\r\n }\r\n }\r\n\")}.\r\n", - "default": true + "default": true, + "name": "Trade voucher redeemed", + "description": "Triggered when you redeem a trade voucher" }, "Under attack": { - "name": "Under attack", - "description": "Triggered when under fire (same time as the Under Attack voice message)", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "Under attack", + "description": "Triggered when under fire (same time as the Under Attack voice message)" }, "Undocked": { - "name": "Undocked", - "description": "Triggered when your ship undocks from a station or outpost", "enabled": true, "priority": 3, "responder": true, "script": "{OneOf(\"您已接管飞船控制\", \"对接已分离\", \"已断开站点网络\")}.\r\n\r\n{set limpetcheck to F(\"Limpet check\")}\r\n\r\n{if limpetcheck:\r\n {Pause(5000)}\r\n {limpetcheck}\r\n}\r\n", - "default": true + "default": true, + "name": "Undocked", + "description": "Triggered when your ship undocks from a station or outpost" }, "VA initialized": { - "name": "VA initialized", - "description": "Triggered when the VoiceAttack plugin is initialized", "enabled": true, "priority": 3, "responder": true, "script": null, - "default": true + "default": true, + "name": "VA initialized", + "description": "Triggered when the VoiceAttack plugin is initialized" }, "Vehicle destroyed": { - "name": "Vehicle destroyed", - "description": "Triggered when your vehicle is destroyed", "enabled": true, "priority": 3, "responder": true, "script": "{if state.eddi_context_srv_deployed_id = event.id:\r\n {SetState('eddi_context_srv_deployed_id', \"\")}\r\n}\r\n\r\n{Pause(2000)}\r\n{OneOf(\"神经连接\", \"连接\", \"上行链路\")} {OneOf(\"发生终断\", \"已终止\")}.", - "default": true + "default": true, + "name": "Vehicle destroyed", + "description": "Triggered when your vehicle is destroyed" } } -} \ No newline at end of file +}