mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-22 16:12:19 +00:00
VueUI 2 Part 2 - Reporting tool (#10850)
This commit is contained in:
2
tools/vueui-report/.gitignore
vendored
Normal file
2
tools/vueui-report/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
node_modules
|
||||||
|
report.htm
|
||||||
7
tools/vueui-report/.prettierrc.js
Normal file
7
tools/vueui-report/.prettierrc.js
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
module.exports = {
|
||||||
|
trailingComma: 'es5',
|
||||||
|
tabWidth: 2,
|
||||||
|
semi: false,
|
||||||
|
singleQuote: true,
|
||||||
|
printWidth: 120,
|
||||||
|
}
|
||||||
19
tools/vueui-report/README.md
Normal file
19
tools/vueui-report/README.md
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# VueUI report generator
|
||||||
|
This program is used to make reports for VueUI. Reports include varius checks.
|
||||||
|
## How to add a check stage
|
||||||
|
Stages are sequential, they run one after each other. To add stage copy `00_null` stage and modify it's code. And finally add appropriate require to `stages/index.js`.
|
||||||
|
## How to use
|
||||||
|
1. Get Node.js 10.0.0 or newer.
|
||||||
|
0. Run `npm install`
|
||||||
|
0. Run `node .`
|
||||||
|
0. Wait for all stages to finish
|
||||||
|
0. Look at `report.htm` in same directory.
|
||||||
|
## How to add more UI tests to Puppeteer report?
|
||||||
|
Create a json file somewhere under `/vueui/tests` folder with containing following object
|
||||||
|
```JSON
|
||||||
|
{
|
||||||
|
"size": [100, 100],
|
||||||
|
"data": ...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
`size` specifies width and height of UI while data determines root UI data to be used. It is same data that is shown in debug section of VueUI.
|
||||||
35
tools/vueui-report/config.js
Normal file
35
tools/vueui-report/config.js
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
module.exports = {
|
||||||
|
vueui: '../../vueui',
|
||||||
|
themes: ['vueui theme-nano dark-theme', 'vueui theme-nano-light', 'vueui theme-basic', 'vueui theme-basic-dark dark-theme'],
|
||||||
|
template: (theme, data) => `<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||||
|
<meta charset="UTF-8"/>
|
||||||
|
<meta id="vueui:windowId" content="TEST"/>
|
||||||
|
<link rel="stylesheet" type="text/css" href="app.css"/>
|
||||||
|
</head>
|
||||||
|
<body class="${theme}">
|
||||||
|
<div id="header">
|
||||||
|
<header-default></header-default>
|
||||||
|
<header-handles></header-handles>
|
||||||
|
</div>
|
||||||
|
<div id="app">
|
||||||
|
Javascript file has failed to load. <a href="?src=\ref&vueuiforceresource=1">Click here to force load resources</a>
|
||||||
|
</div>
|
||||||
|
<div id="dapp">
|
||||||
|
</div>
|
||||||
|
<noscript>
|
||||||
|
<div id='uiNoScript'>
|
||||||
|
<h2>JAVASCRIPT REQUIRED</h2>
|
||||||
|
<p>Your Internet Explorer's Javascript is disabled (or broken).<br/>
|
||||||
|
Enable Javascript and then open this UI again.</p>
|
||||||
|
</div>
|
||||||
|
</noscript>
|
||||||
|
</body>
|
||||||
|
<script type="application/json" id="initialstate">
|
||||||
|
${JSON.stringify(data)}
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript" src="app.js"></script>
|
||||||
|
</html>`
|
||||||
|
}
|
||||||
48
tools/vueui-report/index.js
Normal file
48
tools/vueui-report/index.js
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
const { Signale } = require('signale')
|
||||||
|
const Vue = require('vue')
|
||||||
|
const fs = require('fs-extra')
|
||||||
|
|
||||||
|
const stages = require('./stages')
|
||||||
|
|
||||||
|
|
||||||
|
// run
|
||||||
|
const mainLogger = new Signale({scope: 'main'})
|
||||||
|
var states = {}
|
||||||
|
async function runStages () {
|
||||||
|
mainLogger.time('All Stages')
|
||||||
|
for (const [i, stage] of stages.entries()) {
|
||||||
|
const name = stage.name()
|
||||||
|
const subLogger = mainLogger.scope('stage', name)
|
||||||
|
mainLogger.time(name)
|
||||||
|
let result = await Promise.resolve(stage.run(subLogger))
|
||||||
|
mainLogger.timeEnd(name)
|
||||||
|
states[i] = result
|
||||||
|
}
|
||||||
|
mainLogger.timeEnd('All Stages')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Build HTML
|
||||||
|
|
||||||
|
async function generateHTML() {
|
||||||
|
const app = new Vue(require('./src/app')(states, stages))
|
||||||
|
const renderer = require('vue-server-renderer').createRenderer()
|
||||||
|
|
||||||
|
await fs.outputFile('report.htm', await renderer.renderToString(app))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
await runStages()
|
||||||
|
await generateHTML()
|
||||||
|
}
|
||||||
|
|
||||||
|
main()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
1201
tools/vueui-report/package-lock.json
generated
Normal file
1201
tools/vueui-report/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
17
tools/vueui-report/package.json
Normal file
17
tools/vueui-report/package.json
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"name": "vueui-report",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "Tools for building VueUI BYOND UI framework reports.",
|
||||||
|
"main": "index.mjs",
|
||||||
|
"author": "Karolis K.",
|
||||||
|
"dependencies": {
|
||||||
|
"ansi-to-html": "^0.6.14",
|
||||||
|
"express": "^4.17.1",
|
||||||
|
"fs-extra": "^9.0.1",
|
||||||
|
"klaw": "^3.0.0",
|
||||||
|
"puppeteer": "^5.5.0",
|
||||||
|
"signale": "^1.4.0",
|
||||||
|
"vue": "^2.6.12",
|
||||||
|
"vue-server-renderer": "^2.6.12"
|
||||||
|
}
|
||||||
|
}
|
||||||
38
tools/vueui-report/src/app.js
Normal file
38
tools/vueui-report/src/app.js
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
module.exports = function (states, stages) {
|
||||||
|
var components = stages.map((stage, i) => ({i, n: stage.name(), c: stage.component(states[i])}))
|
||||||
|
return ({
|
||||||
|
template: `<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
|
||||||
|
<!-- Bootstrap CSS -->
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
|
||||||
|
<style>
|
||||||
|
.error-info {
|
||||||
|
white-space: normal;
|
||||||
|
color: darkred;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<title>VueUI report</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<h1>VueUi Report</h1>
|
||||||
|
<div v-for="stage in stages" :key="stage.i">
|
||||||
|
<h2>{{ stage.n }}</h2>
|
||||||
|
<component v-bind:is="stage.c"></component>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-ygbV9kiqUc6oa4msXn9868pTtWMgiQaeYH7/t7LECLbyPA2x65Kgf80OJFdroafW" crossorigin="anonymous"></script>
|
||||||
|
</body>
|
||||||
|
</html>`,
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
stages: components
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
15
tools/vueui-report/src/processPromisify.js
Normal file
15
tools/vueui-report/src/processPromisify.js
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
const child_process = require('child_process')
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
exec(command, options = {}) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
child_process.exec(command, options, (error, stdout, stderr) => {
|
||||||
|
if (error) {
|
||||||
|
reject({ error, stdout, stderr })
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resolve({ stdout, stderr })
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
}
|
||||||
5
tools/vueui-report/stages/00_null/index.js
Normal file
5
tools/vueui-report/stages/00_null/index.js
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
module.exports = {
|
||||||
|
name: () => 'null',
|
||||||
|
run: (signale) => ({result: 'fail'}),
|
||||||
|
component: (state) => ({template: '<div>{{ $data }}</div>'})
|
||||||
|
}
|
||||||
31
tools/vueui-report/stages/01_build/component.js
Normal file
31
tools/vueui-report/stages/01_build/component.js
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
var Convert = require('ansi-to-html');
|
||||||
|
var convert = new Convert();
|
||||||
|
module.exports = function (state) {
|
||||||
|
return ({
|
||||||
|
template: `<div>
|
||||||
|
<h3>npm install</h3>
|
||||||
|
<pre v-html="installOut"></pre>
|
||||||
|
<h3>npm run build-dev</h3>
|
||||||
|
<pre v-html="buildOut"></pre>
|
||||||
|
</div>`,
|
||||||
|
data() {
|
||||||
|
return state
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
installOut() {
|
||||||
|
if(this.install)
|
||||||
|
{
|
||||||
|
return convert.toHtml(this.install)
|
||||||
|
}
|
||||||
|
return ''
|
||||||
|
},
|
||||||
|
buildOut() {
|
||||||
|
if(this.build)
|
||||||
|
{
|
||||||
|
return convert.toHtml(this.build.stdout)
|
||||||
|
}
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
7
tools/vueui-report/stages/01_build/index.js
Normal file
7
tools/vueui-report/stages/01_build/index.js
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
const run = require('./run')
|
||||||
|
const component = require('./component')
|
||||||
|
module.exports = {
|
||||||
|
name: () => 'Build',
|
||||||
|
run,
|
||||||
|
component
|
||||||
|
}
|
||||||
24
tools/vueui-report/stages/01_build/run.js
Normal file
24
tools/vueui-report/stages/01_build/run.js
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
const config = require('../../config')
|
||||||
|
const processPromisify = require('../../src/processPromisify')
|
||||||
|
const path = require('path')
|
||||||
|
const vueuiPath = path.resolve(config.vueui)
|
||||||
|
module.exports = async function (signale) {
|
||||||
|
try {
|
||||||
|
const { stdout, stderr } = await processPromisify.exec('npm install --colors', {
|
||||||
|
cwd: vueuiPath,
|
||||||
|
})
|
||||||
|
signale.debug("Install done. Building...")
|
||||||
|
const build = await processPromisify.exec('npm run build-dev --colors',
|
||||||
|
{
|
||||||
|
cwd: vueuiPath,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
signale.debug("Build done.")
|
||||||
|
return {
|
||||||
|
install: stdout,
|
||||||
|
build
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
return {fail: error}
|
||||||
|
}
|
||||||
|
}
|
||||||
21
tools/vueui-report/stages/02_lint/component.js
Normal file
21
tools/vueui-report/stages/02_lint/component.js
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
var Convert = require('ansi-to-html');
|
||||||
|
var convert = new Convert();
|
||||||
|
module.exports = function (state) {
|
||||||
|
return ({
|
||||||
|
template: `<div>
|
||||||
|
<pre v-html="lintOut"></pre>
|
||||||
|
</div>`,
|
||||||
|
data() {
|
||||||
|
return state
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
lintOut() {
|
||||||
|
if(this.lint)
|
||||||
|
{
|
||||||
|
return convert.toHtml(this.lint)
|
||||||
|
}
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
7
tools/vueui-report/stages/02_lint/index.js
Normal file
7
tools/vueui-report/stages/02_lint/index.js
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
const run = require('./run')
|
||||||
|
const component = require('./component')
|
||||||
|
module.exports = {
|
||||||
|
name: () => 'Lint',
|
||||||
|
run,
|
||||||
|
component
|
||||||
|
}
|
||||||
16
tools/vueui-report/stages/02_lint/run.js
Normal file
16
tools/vueui-report/stages/02_lint/run.js
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
const config = require('../../config')
|
||||||
|
const processPromisify = require('../../src/processPromisify')
|
||||||
|
const path = require('path')
|
||||||
|
const vueuiPath = path.resolve(config.vueui)
|
||||||
|
module.exports = async function (signale) {
|
||||||
|
try {
|
||||||
|
const { stdout, stderr } = await processPromisify.exec('npm run lint --colors', {
|
||||||
|
cwd: vueuiPath,
|
||||||
|
})
|
||||||
|
return {
|
||||||
|
lint: stdout,
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
return {lint_error: error}
|
||||||
|
}
|
||||||
|
}
|
||||||
17
tools/vueui-report/stages/03_puppeteer/component.js
Normal file
17
tools/vueui-report/stages/03_puppeteer/component.js
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
module.exports = function (state) {
|
||||||
|
return ({
|
||||||
|
template: `<div>
|
||||||
|
<div class="row" v-for="(r, path) in results" :key="path">
|
||||||
|
<h5>{{ path }}</h5>
|
||||||
|
<div class="col-3" v-for="(data, theme) in r" :key="theme">
|
||||||
|
<img :src="'data:image/png;base64,' + data.image" class="img-fluid"><br/>
|
||||||
|
<pre class="error-info" v-for="err in data.errors">{{ err }}</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>`,
|
||||||
|
data() {
|
||||||
|
return state
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
7
tools/vueui-report/stages/03_puppeteer/index.js
Normal file
7
tools/vueui-report/stages/03_puppeteer/index.js
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
const run = require('./run')
|
||||||
|
const component = require('./component')
|
||||||
|
module.exports = {
|
||||||
|
name: () => 'Puppeteer',
|
||||||
|
run,
|
||||||
|
component
|
||||||
|
}
|
||||||
92
tools/vueui-report/stages/03_puppeteer/run.js
Normal file
92
tools/vueui-report/stages/03_puppeteer/run.js
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
const config = require('../../config')
|
||||||
|
const path = require('path')
|
||||||
|
const fs = require('fs-extra')
|
||||||
|
const vueuiTestsPath = path.resolve(config.vueui, './tests')
|
||||||
|
const vueuiDistPath = path.resolve(config.vueui, './dist')
|
||||||
|
const klaw = require('klaw')
|
||||||
|
const express = require('express')
|
||||||
|
const puppeteer = require('puppeteer')
|
||||||
|
const app = express()
|
||||||
|
|
||||||
|
app.use(express.static(vueuiDistPath))
|
||||||
|
|
||||||
|
app.use('/tmpl', async (req, res) => {
|
||||||
|
const file = req.query.test
|
||||||
|
const theme = req.query.theme
|
||||||
|
const { data } = await fs.readJson(file)
|
||||||
|
res.send(config.template(theme, data))
|
||||||
|
})
|
||||||
|
|
||||||
|
module.exports = async function (signale) {
|
||||||
|
let tests = []
|
||||||
|
for await (const file of klaw(vueuiTestsPath)) {
|
||||||
|
if (!file.stats.isDirectory()) {
|
||||||
|
tests.push(file.path)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var server = app.listen(5221, () => {
|
||||||
|
signale.info(`Puppeteer web server listening at http://localhost:5221`)
|
||||||
|
})
|
||||||
|
|
||||||
|
// C:\Projektai\Aurora.3\vueui\tests\manifest.json
|
||||||
|
|
||||||
|
// http://localhost:5221/tmpl?test=C:\Projektai\Aurora.3\vueui\tests\manifest.json&theme=vueui%20theme-nano%20dark-theme
|
||||||
|
|
||||||
|
const browser = await puppeteer.launch({headless: false});
|
||||||
|
const page = await browser.newPage();
|
||||||
|
|
||||||
|
let results = {}
|
||||||
|
|
||||||
|
for (const testFile of tests) {
|
||||||
|
const { size } = await fs.readJson(testFile)
|
||||||
|
results[testFile] = {}
|
||||||
|
for (const theme of config.themes) {
|
||||||
|
results[testFile][theme] = {errors: []}
|
||||||
|
|
||||||
|
const ConsoleHandler = (message) => {
|
||||||
|
const type = message.type().substr(0, 3).toUpperCase()
|
||||||
|
if(type == 'ERR')
|
||||||
|
{
|
||||||
|
results[testFile][theme].errors.push(`${message._text}`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const PageErrorHandler = ({ message }) => {
|
||||||
|
results[testFile][theme].errors.push(`${message}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
page.on('console', ConsoleHandler)
|
||||||
|
page.on('pageerror', PageErrorHandler)
|
||||||
|
|
||||||
|
await page.goto(`http://localhost:5221/tmpl?test=${encodeURI(testFile)}&theme=${encodeURI(theme)}`)
|
||||||
|
await page.setViewport({
|
||||||
|
width: size[0],
|
||||||
|
height: size[1],
|
||||||
|
deviceScaleFactor: 1,
|
||||||
|
})
|
||||||
|
const screen = await page.screenshot({encoding: 'base64'})
|
||||||
|
results[testFile][theme].image = screen
|
||||||
|
|
||||||
|
// await new Promise((resolve, reject) => {
|
||||||
|
// setTimeout(() => {
|
||||||
|
// resolve()
|
||||||
|
// }, 3000)
|
||||||
|
// })
|
||||||
|
|
||||||
|
page.off('console', ConsoleHandler)
|
||||||
|
page.off('pageerror', PageErrorHandler)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// await new Promise((resolve, reject) => {
|
||||||
|
// setTimeout(() => {
|
||||||
|
// resolve()
|
||||||
|
// }, 1000 * 60)
|
||||||
|
// })
|
||||||
|
|
||||||
|
await browser.close()
|
||||||
|
server.close()
|
||||||
|
return {results}
|
||||||
|
}
|
||||||
5
tools/vueui-report/stages/index.js
Normal file
5
tools/vueui-report/stages/index.js
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
module.exports = [
|
||||||
|
require('./01_build'),
|
||||||
|
require('./02_lint'),
|
||||||
|
require('./03_puppeteer'),
|
||||||
|
]
|
||||||
559
vueui/tests/ghost spawners.json
Normal file
559
vueui/tests/ghost spawners.json
Normal file
@@ -0,0 +1,559 @@
|
|||||||
|
{
|
||||||
|
"size": [950, 700],
|
||||||
|
"data": {
|
||||||
|
"state": {
|
||||||
|
"spawnpoint": null,
|
||||||
|
"current_tag": "All",
|
||||||
|
"spawners": {
|
||||||
|
"ertcommander": {
|
||||||
|
"name": "ERT Commander",
|
||||||
|
"desc": "Command the response team from Central Command",
|
||||||
|
"cant_spawn": 0,
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 1,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 0,
|
||||||
|
"tags": ["Admin"],
|
||||||
|
"spawnpoints": null
|
||||||
|
},
|
||||||
|
"legionlegate": {
|
||||||
|
"name": "TCFL Legate",
|
||||||
|
"desc": "Command the TCFL onboard BLV The Tower, a legion patrolship from where Task Force XIII - Fortune operates from.",
|
||||||
|
"cant_spawn": 0,
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 1,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 0,
|
||||||
|
"tags": ["Admin"],
|
||||||
|
"spawnpoints": null
|
||||||
|
},
|
||||||
|
"cciaagent": {
|
||||||
|
"name": "CCIA Agent",
|
||||||
|
"desc": "Board the Aurora, annoy crew with your interviews and get squashed by your own shuttle.",
|
||||||
|
"cant_spawn": 0,
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 1,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 0,
|
||||||
|
"tags": ["Admin"],
|
||||||
|
"spawnpoints": null
|
||||||
|
},
|
||||||
|
"cciaescort": {
|
||||||
|
"name": "CCIA Escort",
|
||||||
|
"desc": "Escort a CCIA Agent to the station, watch them annoy the crew and prevent them from throwing themselves under their own shuttle. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 1,
|
||||||
|
"tags": ["Admin"],
|
||||||
|
"spawnpoints": null
|
||||||
|
},
|
||||||
|
"checkpointsec_prepatory": {
|
||||||
|
"name": "Aurora Prepatory Wing Security",
|
||||||
|
"desc": "Act as an Odin security officer, guide lost newcomers onto the arrivals shuttle if the need arises.",
|
||||||
|
"cant_spawn": 0,
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 1,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 3,
|
||||||
|
"tags": ["Admin"],
|
||||||
|
"spawnpoints": ["OdinPrepatory"]
|
||||||
|
},
|
||||||
|
"checkpointsec": {
|
||||||
|
"name": "Odin Checkpoint Security",
|
||||||
|
"desc": "Secure the Odin checkpoint. Verify the identity of everyone passing through, perform random searches on \"suspicious\" crew. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 4,
|
||||||
|
"tags": ["Admin"],
|
||||||
|
"spawnpoints": ["OdinCheckpoint"]
|
||||||
|
},
|
||||||
|
"odindoc": {
|
||||||
|
"name": "Odin Medical Doctor",
|
||||||
|
"desc": "Provide medical assistance for those arriving on the Odin. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 4,
|
||||||
|
"tags": ["Admin"],
|
||||||
|
"spawnpoints": ["OdinDoctor"]
|
||||||
|
},
|
||||||
|
"odinpharm": {
|
||||||
|
"name": "Odin Pharmacist",
|
||||||
|
"desc": "Provide medication for the Doctors on the Odin and those in need. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 1,
|
||||||
|
"tags": ["Admin"],
|
||||||
|
"spawnpoints": ["OdinPharm"]
|
||||||
|
},
|
||||||
|
"odinchef": {
|
||||||
|
"name": "Odin Chef",
|
||||||
|
"desc": "Feed starving crew members on the Odin. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 2,
|
||||||
|
"tags": ["Admin"],
|
||||||
|
"spawnpoints": ["OdinChef"]
|
||||||
|
},
|
||||||
|
"odinbartender": {
|
||||||
|
"name": "Odin Bartender",
|
||||||
|
"desc": "Ensure enough drinks are available to the crew on the Odin. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 1,
|
||||||
|
"tags": ["Admin"],
|
||||||
|
"spawnpoints": ["OdinBartender"]
|
||||||
|
},
|
||||||
|
"odinjanitor": {
|
||||||
|
"name": "Odin Sanitation Specialist",
|
||||||
|
"desc": "You are a expert in your field. A true authority. The crew looks to you when they get into a sticky situation. You are a janitor on the Odin. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 1,
|
||||||
|
"tags": ["Admin"],
|
||||||
|
"spawnpoints": ["OdinJanitor"]
|
||||||
|
},
|
||||||
|
"tcflsentinel": {
|
||||||
|
"name": "TCFL Sentinel",
|
||||||
|
"desc": "Secure BLV The Tower from any would-be interlopers, provide assistance to returning personnel and/or evacuees. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 4,
|
||||||
|
"tags": ["Admin"],
|
||||||
|
"spawnpoints": ["TCFLSentinel"]
|
||||||
|
},
|
||||||
|
"fibescort": {
|
||||||
|
"name": "FIB Escort",
|
||||||
|
"desc": "Protect the agents of the Federal Investigations Bureau while on the field. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 1,
|
||||||
|
"tags": ["Admin"],
|
||||||
|
"spawnpoints": null
|
||||||
|
},
|
||||||
|
"fib": {
|
||||||
|
"name": "FIB Agent",
|
||||||
|
"desc": "Investigate issues related to crimes under the jurisdiction of the Federal Investigations Bureau.",
|
||||||
|
"cant_spawn": 0,
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 1,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 0,
|
||||||
|
"tags": ["Admin"],
|
||||||
|
"spawnpoints": null
|
||||||
|
},
|
||||||
|
"burglarpod": {
|
||||||
|
"name": "Burglar",
|
||||||
|
"desc": "Your last attempt at petty theft went awry, and now you're heading toward an asteroid in a ratty escape pod. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 1,
|
||||||
|
"tags": ["External"],
|
||||||
|
"spawnpoints": null
|
||||||
|
},
|
||||||
|
"rescuepodsurv": {
|
||||||
|
"name": "Rescue Pod Survivor",
|
||||||
|
"desc": "You managed to get into a rescue pod and landed somewhere on an asteroid. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 1,
|
||||||
|
"tags": ["External"],
|
||||||
|
"spawnpoints": null
|
||||||
|
},
|
||||||
|
"merchantass": {
|
||||||
|
"name": "Merchants Assistant",
|
||||||
|
"desc": "Assist the Merchant with their duties. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 1,
|
||||||
|
"tags": ["External"],
|
||||||
|
"spawnpoints": ["MerchantAss"]
|
||||||
|
},
|
||||||
|
"visitor": {
|
||||||
|
"name": "Visitor",
|
||||||
|
"desc": "You are a random visitor that boarded the NSS Aurora, visiting for any reason you can think of. You do not have any records, as you are not a Nanotrasen employee. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 1,
|
||||||
|
"tags": ["External"],
|
||||||
|
"spawnpoints": null
|
||||||
|
},
|
||||||
|
"ntapl": {
|
||||||
|
"name": "NT Asset Protection Leader",
|
||||||
|
"desc": "Leader of NT's Asset Protection team. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 1,
|
||||||
|
"tags": ["Response Teams"],
|
||||||
|
"spawnpoints": ["DeathERTSpawn"]
|
||||||
|
},
|
||||||
|
"ntaps": {
|
||||||
|
"name": "NT Asset Protection Specialist",
|
||||||
|
"desc": "Protectors of NanoTrasen's bottom line. The last thing you never see. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 3,
|
||||||
|
"tags": ["Response Teams"],
|
||||||
|
"spawnpoints": ["DeathERTSpawn"]
|
||||||
|
},
|
||||||
|
"iacbodyguard": {
|
||||||
|
"name": "IAC Bodyguard",
|
||||||
|
"desc": "A highly trained bodyguard. Sticks close to the medics while they work. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 2,
|
||||||
|
"tags": ["Response Teams"],
|
||||||
|
"spawnpoints": ["ERTSpawn"]
|
||||||
|
},
|
||||||
|
"iacparamedic": {
|
||||||
|
"name": "IAC Paramedic",
|
||||||
|
"desc": "A highly trained paramedic. You grab injured people and bring them to the doctor. You are trained in nursing duties as well. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 2,
|
||||||
|
"tags": ["Response Teams"],
|
||||||
|
"spawnpoints": ["ERTSpawn"]
|
||||||
|
},
|
||||||
|
"iacdoctor": {
|
||||||
|
"name": "IAC Doctor",
|
||||||
|
"desc": "A highly trained doctor. Can do most medical procedures even under severe stress. The de-facto lead of the IAC response team. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 3,
|
||||||
|
"tags": ["Response Teams"],
|
||||||
|
"spawnpoints": ["ERTSpawn"]
|
||||||
|
},
|
||||||
|
"katspec": {
|
||||||
|
"name": "Kataphract-Hopeful Specialist",
|
||||||
|
"desc": "A Zo'saa (squire) trained in medicine from the local Kataphract guild. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 1,
|
||||||
|
"tags": ["Response Teams"],
|
||||||
|
"spawnpoints": ["ERTSpawn"]
|
||||||
|
},
|
||||||
|
"katlead": {
|
||||||
|
"name": "Kataphract Knight",
|
||||||
|
"desc": "A brave Saa (Knight) of the local Kataphract Guild. Two together operate as leaders of the team. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 2,
|
||||||
|
"tags": ["Response Teams"],
|
||||||
|
"spawnpoints": ["ERTSpawn"]
|
||||||
|
},
|
||||||
|
"kathope": {
|
||||||
|
"name": "Kataphract-Hopeful",
|
||||||
|
"desc": "A Zo'saa (squire) of the local Kataphract Guild. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 2,
|
||||||
|
"tags": ["Response Teams"],
|
||||||
|
"spawnpoints": ["ERTSpawn"]
|
||||||
|
},
|
||||||
|
"eridanidocbodyguard": {
|
||||||
|
"name": "Eridani Medical Contractor Bodyguard",
|
||||||
|
"desc": "A highly trained bodyguard. Sticks close to the medics while they work. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 2,
|
||||||
|
"tags": ["Response Teams"],
|
||||||
|
"spawnpoints": ["ERTSpawn"]
|
||||||
|
},
|
||||||
|
"eridaniparamedic": {
|
||||||
|
"name": "Eridani Medical Contractor Paramedic",
|
||||||
|
"desc": "A highly trained paramedic. You grab injured people and bring them to the medical doctor. You are trained in nursing duties as well. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 2,
|
||||||
|
"tags": ["Response Teams"],
|
||||||
|
"spawnpoints": ["ERTSpawn"]
|
||||||
|
},
|
||||||
|
"eridanidoctor": {
|
||||||
|
"name": "Eridani Medical Contractor Doctor",
|
||||||
|
"desc": "A highly trained Eridani contractor doctor medical doctor. Can do most medical procedures even under severe stress. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 2,
|
||||||
|
"tags": ["Response Teams"],
|
||||||
|
"spawnpoints": ["ERTSpawn"]
|
||||||
|
},
|
||||||
|
"mercs": {
|
||||||
|
"name": "Mercenary Medical Specialist",
|
||||||
|
"desc": "The only medic of the freelancer mercenary team. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 1,
|
||||||
|
"tags": ["Response Teams"],
|
||||||
|
"spawnpoints": ["ERTSpawn"]
|
||||||
|
},
|
||||||
|
"merce": {
|
||||||
|
"name": "Mercenary Combat Engineer",
|
||||||
|
"desc": "The only dedicated engineer of the freelancer mercenary team. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 1,
|
||||||
|
"tags": ["Response Teams"],
|
||||||
|
"spawnpoints": ["ERTSpawn"]
|
||||||
|
},
|
||||||
|
"mercl": {
|
||||||
|
"name": "Mercenary Leader",
|
||||||
|
"desc": "The leader of the freelancer mercenary team. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 1,
|
||||||
|
"tags": ["Response Teams"],
|
||||||
|
"spawnpoints": ["ERTSpawn"]
|
||||||
|
},
|
||||||
|
"mercr": {
|
||||||
|
"name": "Mercenary Responder",
|
||||||
|
"desc": "Rank and file of a freelancer mercenary team. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 2,
|
||||||
|
"tags": ["Response Teams"],
|
||||||
|
"spawnpoints": ["ERTSpawn"]
|
||||||
|
},
|
||||||
|
"ntmed": {
|
||||||
|
"name": "Nanotrasen Medical Specialist",
|
||||||
|
"desc": "A medical specialist of the Nanotrasen Phoenix ERT. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 1,
|
||||||
|
"tags": ["Response Teams"],
|
||||||
|
"spawnpoints": ["NTERTSpawn"]
|
||||||
|
},
|
||||||
|
"nteng": {
|
||||||
|
"name": "Nanotrasen Engineering Specialist",
|
||||||
|
"desc": "An engineering specialist of the Nanotrasen Phoenix ERT. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 1,
|
||||||
|
"tags": ["Response Teams"],
|
||||||
|
"spawnpoints": ["NTERTSpawn"]
|
||||||
|
},
|
||||||
|
"ntlead": {
|
||||||
|
"name": "Nanotrasen Leader",
|
||||||
|
"desc": "The leader of the Nanotrasen Phoenix ERT. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 1,
|
||||||
|
"tags": ["Response Teams"],
|
||||||
|
"spawnpoints": ["NTERTSpawn"]
|
||||||
|
},
|
||||||
|
"ntert": {
|
||||||
|
"name": "Nanotrasen Responder",
|
||||||
|
"desc": "A responder of the Nanotrasen Phoenix ERT. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 2,
|
||||||
|
"tags": ["Response Teams"],
|
||||||
|
"spawnpoints": ["NTERTSpawn"]
|
||||||
|
},
|
||||||
|
"syndl": {
|
||||||
|
"name": "Syndicate Commando Leader",
|
||||||
|
"desc": "The leader of the Syndicate's elite commandos. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 1,
|
||||||
|
"tags": ["Response Teams"],
|
||||||
|
"spawnpoints": ["SyndERTSpawn"]
|
||||||
|
},
|
||||||
|
"syndc": {
|
||||||
|
"name": "Syndicate Commando",
|
||||||
|
"desc": "Well-equipped commandos of the criminal Syndicate. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 3,
|
||||||
|
"tags": ["Response Teams"],
|
||||||
|
"spawnpoints": ["SyndERTSpawn"]
|
||||||
|
},
|
||||||
|
"tcfls": {
|
||||||
|
"name": "TCFL Legionnaire",
|
||||||
|
"desc": "An experienced Legionnaire of the TCFL. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 2,
|
||||||
|
"tags": ["Response Teams"],
|
||||||
|
"spawnpoints": ["TCFLERTSpawn"]
|
||||||
|
},
|
||||||
|
"tcfll": {
|
||||||
|
"name": "TCFL Prefect",
|
||||||
|
"desc": "A leader of Task Force XIII - Fortune. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 1,
|
||||||
|
"tags": ["Response Teams"],
|
||||||
|
"spawnpoints": ["TCFLERTSpawn - Prefect"]
|
||||||
|
},
|
||||||
|
"tcflpl": {
|
||||||
|
"name": "TCFL Dropship Pilot",
|
||||||
|
"desc": "A dropship pilot of the TCFL. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 1,
|
||||||
|
"tags": ["Response Teams"],
|
||||||
|
"spawnpoints": ["TCFLERTSpawn - Pilot"]
|
||||||
|
},
|
||||||
|
"tcflr": {
|
||||||
|
"name": "TCFL Volunteer",
|
||||||
|
"desc": "The Tau Ceti Foreign Legion's rank and file. (This spawner is not enabled.)",
|
||||||
|
"cant_spawn": "This spawner is not enabled.",
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 0,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 3,
|
||||||
|
"tags": ["Response Teams"],
|
||||||
|
"spawnpoints": ["TCFLERTSpawn"]
|
||||||
|
},
|
||||||
|
"maintdrone": {
|
||||||
|
"name": "Maintenance Drone",
|
||||||
|
"desc": "Maintain and Improve the Systems on the Aurora.",
|
||||||
|
"cant_spawn": 0,
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 1,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 0,
|
||||||
|
"tags": ["Simple Mobs"],
|
||||||
|
"spawnpoints": ["the plating", "the plating"]
|
||||||
|
},
|
||||||
|
"rat": {
|
||||||
|
"name": "Rat",
|
||||||
|
"desc": "Join as a Rat on the aurora, a common nuisance to the crew.",
|
||||||
|
"cant_spawn": 0,
|
||||||
|
"can_edit": 1,
|
||||||
|
"enabled": 1,
|
||||||
|
"count": 0,
|
||||||
|
"spawnatoms": 0,
|
||||||
|
"max_count": 0,
|
||||||
|
"tags": ["Simple Mobs"],
|
||||||
|
"spawnpoints": null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"assets": [],
|
||||||
|
"active": "misc-ghostspawner",
|
||||||
|
"uiref": "[0x0]",
|
||||||
|
"status": 2,
|
||||||
|
"title": "Ghost Role Spawner",
|
||||||
|
"wtime": 0,
|
||||||
|
"debug": 1,
|
||||||
|
"roundstart_hour": 15
|
||||||
|
}
|
||||||
|
}
|
||||||
201
vueui/tests/join meniu.json
Normal file
201
vueui/tests/join meniu.json
Normal file
@@ -0,0 +1,201 @@
|
|||||||
|
{
|
||||||
|
"size": [330, 720],
|
||||||
|
"data": {
|
||||||
|
"state": {
|
||||||
|
"round_duration": "01:14",
|
||||||
|
"alert_level": "Green",
|
||||||
|
"character_name": "Hadriana Antonia",
|
||||||
|
"shuttle_status": "",
|
||||||
|
"unique_role_available": 0,
|
||||||
|
"jobs_available": 27,
|
||||||
|
"jobs_list": {
|
||||||
|
"Command": [],
|
||||||
|
"Security": {
|
||||||
|
"Warden": {
|
||||||
|
"title": "Warden",
|
||||||
|
"head": 0,
|
||||||
|
"total_positions": 1,
|
||||||
|
"current_positions": 0
|
||||||
|
},
|
||||||
|
"Detective": {
|
||||||
|
"title": "Detective",
|
||||||
|
"head": 0,
|
||||||
|
"total_positions": 1,
|
||||||
|
"current_positions": 0
|
||||||
|
},
|
||||||
|
"Security Officer": {
|
||||||
|
"title": "Security Officer",
|
||||||
|
"head": 0,
|
||||||
|
"total_positions": 4,
|
||||||
|
"current_positions": 1
|
||||||
|
},
|
||||||
|
"Security Cadet": {
|
||||||
|
"title": "Security Cadet",
|
||||||
|
"head": 0,
|
||||||
|
"total_positions": 2,
|
||||||
|
"current_positions": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Engineering": {
|
||||||
|
"Station Engineer": {
|
||||||
|
"title": "Station Engineer",
|
||||||
|
"head": 0,
|
||||||
|
"total_positions": 5,
|
||||||
|
"current_positions": 3
|
||||||
|
},
|
||||||
|
"Atmospheric Technician": {
|
||||||
|
"title": "Atmospheric Technician",
|
||||||
|
"head": 0,
|
||||||
|
"total_positions": 3,
|
||||||
|
"current_positions": 0
|
||||||
|
},
|
||||||
|
"Engineering Apprentice": {
|
||||||
|
"title": "Engineering Apprentice",
|
||||||
|
"head": 0,
|
||||||
|
"total_positions": 3,
|
||||||
|
"current_positions": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Medical": {
|
||||||
|
"Physician": {
|
||||||
|
"title": "Physician",
|
||||||
|
"head": 0,
|
||||||
|
"total_positions": 4,
|
||||||
|
"current_positions": 1
|
||||||
|
},
|
||||||
|
"Pharmacist": {
|
||||||
|
"title": "Pharmacist",
|
||||||
|
"head": 0,
|
||||||
|
"total_positions": 2,
|
||||||
|
"current_positions": 1
|
||||||
|
},
|
||||||
|
"First Responder": {
|
||||||
|
"title": "First Responder",
|
||||||
|
"head": 0,
|
||||||
|
"total_positions": 2,
|
||||||
|
"current_positions": 1
|
||||||
|
},
|
||||||
|
"Medical Intern": {
|
||||||
|
"title": "Medical Intern",
|
||||||
|
"head": 0,
|
||||||
|
"total_positions": 3,
|
||||||
|
"current_positions": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Science": {
|
||||||
|
"Roboticist": {
|
||||||
|
"title": "Roboticist",
|
||||||
|
"head": 0,
|
||||||
|
"total_positions": 2,
|
||||||
|
"current_positions": 1
|
||||||
|
},
|
||||||
|
"Lab Assistant": {
|
||||||
|
"title": "Lab Assistant",
|
||||||
|
"head": 0,
|
||||||
|
"total_positions": 3,
|
||||||
|
"current_positions": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Cargo": {
|
||||||
|
"Quartermaster": {
|
||||||
|
"title": "Quartermaster",
|
||||||
|
"head": 1,
|
||||||
|
"total_positions": 1,
|
||||||
|
"current_positions": 0
|
||||||
|
},
|
||||||
|
"Cargo Technician": {
|
||||||
|
"title": "Cargo Technician",
|
||||||
|
"head": 0,
|
||||||
|
"total_positions": 4,
|
||||||
|
"current_positions": 1
|
||||||
|
},
|
||||||
|
"Shaft Miner": {
|
||||||
|
"title": "Shaft Miner",
|
||||||
|
"head": 0,
|
||||||
|
"total_positions": 4,
|
||||||
|
"current_positions": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Civilian": {
|
||||||
|
"Assistant": {
|
||||||
|
"title": "Assistant",
|
||||||
|
"head": 0,
|
||||||
|
"total_positions": -1,
|
||||||
|
"current_positions": 0
|
||||||
|
},
|
||||||
|
"Visitor": {
|
||||||
|
"title": "Visitor",
|
||||||
|
"head": 0,
|
||||||
|
"total_positions": -1,
|
||||||
|
"current_positions": 0
|
||||||
|
},
|
||||||
|
"Bartender": {
|
||||||
|
"title": "Bartender",
|
||||||
|
"head": 0,
|
||||||
|
"total_positions": 2,
|
||||||
|
"current_positions": 0
|
||||||
|
},
|
||||||
|
"Chef": {
|
||||||
|
"title": "Chef",
|
||||||
|
"head": 0,
|
||||||
|
"total_positions": 2,
|
||||||
|
"current_positions": 1
|
||||||
|
},
|
||||||
|
"Gardener": {
|
||||||
|
"title": "Gardener",
|
||||||
|
"head": 0,
|
||||||
|
"total_positions": 2,
|
||||||
|
"current_positions": 0
|
||||||
|
},
|
||||||
|
"Janitor": {
|
||||||
|
"title": "Janitor",
|
||||||
|
"head": 0,
|
||||||
|
"total_positions": 2,
|
||||||
|
"current_positions": 0
|
||||||
|
},
|
||||||
|
"Corporate Reporter": {
|
||||||
|
"title": "Corporate Reporter",
|
||||||
|
"head": 0,
|
||||||
|
"total_positions": 1,
|
||||||
|
"current_positions": 0
|
||||||
|
},
|
||||||
|
"Librarian": {
|
||||||
|
"title": "Librarian",
|
||||||
|
"head": 0,
|
||||||
|
"total_positions": 1,
|
||||||
|
"current_positions": 0
|
||||||
|
},
|
||||||
|
"Chaplain": {
|
||||||
|
"title": "Chaplain",
|
||||||
|
"head": 0,
|
||||||
|
"total_positions": 1,
|
||||||
|
"current_positions": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Equipment": {
|
||||||
|
"AI": {
|
||||||
|
"title": "AI",
|
||||||
|
"head": 1,
|
||||||
|
"total_positions": 1,
|
||||||
|
"current_positions": 0
|
||||||
|
},
|
||||||
|
"Cyborg": {
|
||||||
|
"title": "Cyborg",
|
||||||
|
"head": 0,
|
||||||
|
"total_positions": 2,
|
||||||
|
"current_positions": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Miscellaneous": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"assets": { "character": { "ref": "0x0" } },
|
||||||
|
"active": "late-choices",
|
||||||
|
"uiref": "[0x0]",
|
||||||
|
"status": 2,
|
||||||
|
"title": "Late-Join Choices",
|
||||||
|
"wtime": 0,
|
||||||
|
"debug": 0,
|
||||||
|
"roundstart_hour": 11
|
||||||
|
}
|
||||||
|
}
|
||||||
165
vueui/tests/manifest.json
Normal file
165
vueui/tests/manifest.json
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
{
|
||||||
|
"size": [580, 700],
|
||||||
|
"data": {
|
||||||
|
"state": {
|
||||||
|
"manifest": {
|
||||||
|
"Command": [
|
||||||
|
{
|
||||||
|
"name": "Xiao Zemin",
|
||||||
|
"rank": "Research Director",
|
||||||
|
"active": "Active",
|
||||||
|
"head": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Security": [
|
||||||
|
{
|
||||||
|
"name": "Idus Martiae",
|
||||||
|
"rank": "Forensic Technician",
|
||||||
|
"active": "Active",
|
||||||
|
"head": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Ronald Monday",
|
||||||
|
"rank": "Security Officer",
|
||||||
|
"active": "Active",
|
||||||
|
"head": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Engineering": [
|
||||||
|
{
|
||||||
|
"name": "Yeva Petrova",
|
||||||
|
"rank": "Station Engineer",
|
||||||
|
"active": "Active",
|
||||||
|
"head": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Valetzrhonaja Nayrragh'Rakhan",
|
||||||
|
"rank": "Station Engineer",
|
||||||
|
"active": "Active",
|
||||||
|
"head": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Julian Chet",
|
||||||
|
"rank": "Station Engineer",
|
||||||
|
"active": "Active",
|
||||||
|
"head": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Medical": [
|
||||||
|
{
|
||||||
|
"name": "Odessa Arenth",
|
||||||
|
"rank": "Medical Intern",
|
||||||
|
"active": "Active",
|
||||||
|
"head": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Sanaa Al-Mansoor",
|
||||||
|
"rank": "Physician",
|
||||||
|
"active": "Active",
|
||||||
|
"head": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Imari Mneme",
|
||||||
|
"rank": "First Responder",
|
||||||
|
"active": "Active",
|
||||||
|
"head": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jared Looper",
|
||||||
|
"rank": "Pharmacist",
|
||||||
|
"active": "Active",
|
||||||
|
"head": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Eric Foster",
|
||||||
|
"rank": "Surgeon",
|
||||||
|
"active": "Active",
|
||||||
|
"head": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Science": [
|
||||||
|
{
|
||||||
|
"name": "Xiao Zemin",
|
||||||
|
"rank": "Research Director",
|
||||||
|
"active": "Active",
|
||||||
|
"head": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Sezrak Han'San",
|
||||||
|
"rank": "Anomalist",
|
||||||
|
"active": "Active",
|
||||||
|
"head": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Astra Zemin",
|
||||||
|
"rank": "Xenobotanist",
|
||||||
|
"active": "Active",
|
||||||
|
"head": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Tavarr Batov",
|
||||||
|
"rank": "Scientist",
|
||||||
|
"active": "Active",
|
||||||
|
"head": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Sam Chalegre",
|
||||||
|
"rank": "Roboticist",
|
||||||
|
"active": "Active",
|
||||||
|
"head": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jack Monroe",
|
||||||
|
"rank": "Anomalist",
|
||||||
|
"active": "Active",
|
||||||
|
"head": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Zeya Zemphir",
|
||||||
|
"rank": "Xenobiologist",
|
||||||
|
"active": "Active",
|
||||||
|
"head": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Cargo": [
|
||||||
|
{
|
||||||
|
"name": "Safaa Sadar",
|
||||||
|
"rank": "Cargo Technician",
|
||||||
|
"active": "Active",
|
||||||
|
"head": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Joe Harry",
|
||||||
|
"rank": "Shaft Miner",
|
||||||
|
"active": "Active",
|
||||||
|
"head": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "To Arrange The Gifts Of Those Above",
|
||||||
|
"rank": "Cargo Technician",
|
||||||
|
"active": "Active",
|
||||||
|
"head": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Civilian": [
|
||||||
|
{
|
||||||
|
"name": "Huey Richter",
|
||||||
|
"rank": "Chef",
|
||||||
|
"active": "Active",
|
||||||
|
"head": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Equipment": [],
|
||||||
|
"Miscellaneous": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"assets": [],
|
||||||
|
"active": "manifest",
|
||||||
|
"uiref": "[0x0]",
|
||||||
|
"status": 2,
|
||||||
|
"title": "Crew Manifest",
|
||||||
|
"wtime": 0,
|
||||||
|
"debug": 0,
|
||||||
|
"roundstart_hour": 11
|
||||||
|
}
|
||||||
|
}
|
||||||
25
vueui/tests/vote.json
Normal file
25
vueui/tests/vote.json
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"size": [400, 500],
|
||||||
|
"data": {
|
||||||
|
"state": {
|
||||||
|
"choices": [],
|
||||||
|
"mode": null,
|
||||||
|
"voted": null,
|
||||||
|
"endtime": 1894,
|
||||||
|
"allow_vote_restart": 1,
|
||||||
|
"allow_vote_mode": 0,
|
||||||
|
"allow_extra_antags": 0,
|
||||||
|
"question": "",
|
||||||
|
"is_code_red": 0,
|
||||||
|
"isstaff": 0
|
||||||
|
},
|
||||||
|
"assets": [],
|
||||||
|
"active": "misc-voting",
|
||||||
|
"uiref": "[0x0]",
|
||||||
|
"status": 2,
|
||||||
|
"title": "Voting panel",
|
||||||
|
"wtime": 0,
|
||||||
|
"debug": 0,
|
||||||
|
"roundstart_hour": 11
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user